------------------------------------------------------------------------
-- The type system of the simply type lambda calculus
------------------------------------------------------------------------

module HOAS.SimplyTyped.TypeSystem where

open import SimplyTyped.TypeSystem public using (Ty; base; _⟶_)

infixl 70 _·_
infix  50 ƛ_

-- Terms.

data Tm' (V : Ty  Set) : Ty  Set where
  var :  {σ}   (x : V σ)  Tm' V σ
  ƛ_  :  {σ τ} (t : V σ  Tm' V τ)  Tm' V (σ  τ)
  _·_ :  {σ τ} (t₁ : Tm' V (σ  τ)) (t₂ : Tm' V σ)  Tm' V τ

Tm : Ty  Set1
Tm σ =  {V}  Tm' V σ