-- TODO
-- Common syntax.

module A201607.BasicT.Syntax.Common where

open import A201607.Common.Context public


-- Types, or propositions.

infixl 9 _∧_
infixr 7 _▻_
data Ty : Set where
  α_   : Atom  Ty
  _▻_  : Ty  Ty  Ty
  _∧_  : Ty  Ty  Ty
     : Ty
  BOOL : Ty
  NAT  : Ty


-- Additional useful types.

infix 7 _▻◅_
_▻◅_ : Ty  Ty  Ty
A ▻◅ B = (A  B)  (B  A)

infixr 7 _▻⋯▻_
_▻⋯▻_ : Cx Ty  Ty  Ty
       ▻⋯▻ B = B
(Ξ , A) ▻⋯▻ B = Ξ ▻⋯▻ (A  B)

infixr 7 _▻⋯▻⋆_
_▻⋯▻⋆_ : Cx Ty  Cx Ty  Ty
Γ ▻⋯▻⋆        = 
Γ ▻⋯▻⋆ (Ξ , A) = (Γ ▻⋯▻⋆ Ξ)  (Γ ▻⋯▻ A)