{-# OPTIONS --allow-unsolved-metas #-}
module A201602.Try6 where
open import Data.Fin using (Fin; zero; suc; toβ)
open import Data.Nat using (β; zero; suc; _+_)
open import Data.Product using (Ξ£; _Γ_; _,_)
data Vec (X : Set) : β β Set where
β
: Vec X zero
_,_ : β{n} β Vec X n β X β Vec X (suc n)
data _β_ {X : Set} : β{n} β X β Vec X n β Set where
Z : β{n x} {xs : Vec X n}
β x β (xs , x)
S_ : β{n x y} {xs : Vec X n}
β x β xs
β x β (xs , y)
Pr : Set
Pr = β
Cx : β β Set
Cx = Vec Pr
mutual
infixl 7 _β_
infixr 5 π_
infixr 2 _β_
infixl 1 _β·_
infixr 0 _β_β’_
data Ty {m : β} (Ξ : Cx m) : Set where
Ξ±_ : Pr β Ty Ξ
_β_ : Ty Ξ β Ty Ξ β Ty Ξ
data Ass {n m : β} (Ξ : Cx m) (Ξ : Cx n) : Set where
Ο_ : Ty Ξ β Ass Ξ Ξ
_β·_ : (A : Ass Ξ Ξ) β Ξ β Ξ β’ A β Ass Ξ Ξ
data _β_β’_ {m n : β} (Ξ : Cx m) (Ξ : Cx n) : Ass Ξ Ξ β Set where
π_ : β{A}
β A β Ξ
β Ξ β Ξ β’ Ο Ξ± A
πΒ²_ : β{A}
β (x : A β Ξ)
β Ξ β Ξ β’ Ο Ξ± A β· π x
πΒ³_ : β{A}
β (x : A β Ξ)
β Ξ β Ξ β’ Ο Ξ± A β· π x β· πΒ² x
π£_ : β{A}
β A β Ξ
β Ξ β Ξ β’ Ο Ξ± A
π£Β²_ : β{A}
β (x : A β Ξ)
β Ξ β Ξ β’ Ο Ξ± A β· π£ x
π£Β³_ : β{A}
β (x : A β Ξ)
β Ξ β Ξ β’ Ο Ξ± A β· π£ x β· π£Β² x
π_ : β{A B}
β Ξ β Ξ , A β’ Ο B
β Ξ β Ξ β’ Ο (Ξ± A β B)
πΒ²_ : β{A B t}
β Ξ β Ξ , A β’ Ο B β· t
β Ξ β Ξ β’ Ο (Ξ± A β B) β· π t
πΒ³_ : β{A B t tβ}
β Ξ β Ξ , A β’ Ο B β· t β· tβ
β Ξ β Ξ β’ Ο (Ξ± A β B) β· π t β· πΒ² tβ
_β_ : β{A B}
β Ξ β Ξ β’ Ο (A β B) β Ξ β Ξ β’ Ο A
β Ξ β Ξ β’ Ο B
_βΒ²_ : β{A B t s}
β Ξ β Ξ β’ Ο (A β B) β· t β Ξ β Ξ β’ Ο A β· s
β Ξ β Ξ β’ Ο B β· t β s
_βΒ³_ : β{A B t tβ s sβ}
β Ξ β Ξ β’ Ο (A β B) β· t β· tβ β Ξ β Ξ β’ Ο A β· s β· sβ
β Ξ β Ξ β’ Ο B β· t β s β· tβ βΒ² sβ
tI : β{A} β β
β β
β’ Ο (Ξ± A β Ξ± A)
tI = π π£ Z
tK : β{A B} β β
β β
β’ Ο (Ξ± A β Ξ± B β Ξ± A)
tK = π π π£ S Z
tS : β{A B C} β β
β β
β’ Ο ((Ξ± A β Ξ± B β Ξ± C) β (Ξ± A β Ξ± B) β Ξ± A β Ξ± C)
tS = {!π ?!}