- typ_var (Γ : context) (x : ℕ) (T : Typ) : valid_ctx Γ → binds x T Γ → typing Γ ($x) T
- typ_abs (L : Finset ℕ) (Γ : context) (t : Trm) (T1 T2 : Typ) : (∀ x ∉ L, typing ((x, T1) :: Γ) (t.open₀ ($x)) T2) → typing Γ (λ T1,t) (T1 -> T2)
- typ_app (Γ : context) (t₁ t₂ : Trm) (T1 T2 : Typ) : typing Γ t₁ (T1 -> T2) → typing Γ t₂ T1 → typing Γ (t₁ @ t₂) T2