{-# OPTIONS --allow-unsolved-metas #-}
module A201602.Try4 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)
infixl 4 _β_ _βΒ²_ _βΒ³_
infixr 3 π_ πΒ²_ πΒ³_
infixl 2 _β§_
infixr 1 _β_
infixr 0 _β_β’_ _β©_ βͺ_
infixr 0 _β_β’_β·_ _β©_β·_ βͺ_β·_
infixr 0 _β_β’_β·_β·_ _β©_β·_β·_ βͺ_β·_β·_
data Ty : Set where
β₯ : Ty
_β_ : Ty β Ty β Ty
_β§_ : Ty β Ty β Ty
Cx : β β Set
Cx = Vec Ty
data _β_β’_ {k n : β} (Ξ¦ : Cx k) (Ξ : Cx n) : Ty β Set where
π_ : β{A}
β A β Ξ¦
β Ξ¦ β Ξ β’ A
π£_ : β{A}
β A β Ξ
β Ξ¦ β Ξ β’ A
π_ : β{A B}
β Ξ¦ β Ξ , A β’ B
β Ξ¦ β Ξ β’ A β B
_β_ : β{A B}
β Ξ¦ β Ξ β’ A β B β Ξ¦ β Ξ β’ A
β Ξ¦ β Ξ β’ B
πβ¨_,_β© : β{A B}
β Ξ¦ β Ξ β’ A β Ξ¦ β Ξ β’ B
β Ξ¦ β Ξ β’ A β§ B
πβ_ : β{A B}
β Ξ¦ β Ξ β’ A β§ B
β Ξ¦ β Ξ β’ A
πβ_ : β{A B}
β Ξ¦ β Ξ β’ A β§ B
β Ξ¦ β Ξ β’ B
_β©_ : β{k} β Cx k β Ty β Set
Ξ¦ β© A = β{n} {Ξ : Cx n} β Ξ¦ β Ξ β’ A
βͺ_ : Ty β Set
βͺ A = β{k} {Ξ¦ : Cx k} β Ξ¦ β© A
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 = π π π (π£ S S Z β π£ Z) β (π£ S Z β π£ Z)
data _β_β’_β·_ {k n : β} (Ξ¦ : Cx k) (Ξ : Cx n) : (A : Ty) β Ξ¦ β Ξ β’ A β Set where
πΒ²_ : β{A x}
β A β Ξ¦
β Ξ¦ β Ξ β’ A β· π x
π£Β²_ : β{A}
β (x : A β Ξ)
β Ξ¦ β Ξ β’ A β· π£ x
πΒ²_ : β{A B t}
β Ξ¦ β Ξ , A β’ B β· t
β Ξ¦ β Ξ β’ A β B β· π t
_βΒ²_ : β{A B t s}
β Ξ¦ β Ξ β’ A β B β· t β Ξ¦ β Ξ β’ A β· s
β Ξ¦ β Ξ β’ B β· t β s
πΒ²β¨_,_β© : β{A B t s}
β Ξ¦ β Ξ β’ A β· t β Ξ¦ β Ξ β’ B β· s
β Ξ¦ β Ξ β’ A β§ B β· πβ¨ t , s β©
πβΒ²_ : β{A B t}
β Ξ¦ β Ξ β’ A β§ B β· t
β Ξ¦ β Ξ β’ A β· πβ t
πβΒ²_ : β{A B t}
β Ξ¦ β Ξ β’ A β§ B β· t
β Ξ¦ β Ξ β’ B β· πβ t
!_ : β{A t}
β Ξ¦ β Ξ β’ A β· t
β Ξ¦ β Ξ β’ A β· t
_β©_β·_ : β{k} (Ξ¦ : Cx k) (A : Ty) β Ξ¦ β© A β Set
Ξ¦ β© A β· t = β{n} {Ξ : Cx n} β Ξ¦ β Ξ β’ A β· t
βͺ_β·_ : (A : Ty) β βͺ A β Set
βͺ A β· t = β{k} {Ξ¦ : Cx k} β Ξ¦ β© A β· t
tIΒ² : β{A}
β βͺ A β A
β· π π£ Z
tIΒ² = πΒ² (π£Β² Z)
tKΒ² : β{A B}
β βͺ A β B β A
β· π π π£ S Z
tKΒ² = πΒ² πΒ² π£Β² S Z
tSΒ² : β{A B C}
β βͺ (A β B β C) β (A β B) β A β C
β· π π π (π£ S S Z β π£ Z) β (π£ S Z β π£ Z)
tSΒ² = πΒ² πΒ² πΒ² (π£Β² S S Z βΒ² π£Β² Z) βΒ² (π£Β² S Z βΒ² π£Β² Z)
data _β_β’_β·_β·_ {k n : β} (Ξ¦ : Cx k) (Ξ : Cx n) : (A : Ty) β (t : Ξ¦ β Ξ β’ A) β Ξ¦ β Ξ β’ A β· t β Set where
πΒ³_ : β{A x}
β A β Ξ¦
β Ξ¦ β Ξ β’ A β· π x β· πΒ² x
π£Β³_ : β{A}
β (x : A β Ξ)
β Ξ¦ β Ξ β’ A β· π£ x β· π£Β² x
πΒ³_ : β{A B t tβ}
β Ξ¦ β Ξ , A β’ B β· t β· tβ
β Ξ¦ β Ξ β’ A β B β· π t β· πΒ² tβ
_βΒ³_ : β{A B t tβ s sβ}
β Ξ¦ β Ξ β’ A β B β· t β· tβ β Ξ¦ β Ξ β’ A β· s β· sβ
β Ξ¦ β Ξ β’ B β· t β s β· tβ βΒ² sβ
πΒ³β¨_,_β© : β{A B t tβ s sβ}
β Ξ¦ β Ξ β’ A β· t β· tβ β Ξ¦ β Ξ β’ B β· s β· sβ
β Ξ¦ β Ξ β’ A β§ B β· πβ¨ t , s β© β· πΒ²β¨ tβ , sβ β©
πβΒ³_ : β{A B t tβ}
β Ξ¦ β Ξ β’ A β§ B β· t β· tβ
β Ξ¦ β Ξ β’ A β· πβ t β· πβΒ² tβ
πβΒ³_ : β{A B t tβ}
β Ξ¦ β Ξ β’ A β§ B β· t β· tβ
β Ξ¦ β Ξ β’ B β· πβ t β· πβΒ² tβ
!_ : β{A t tβ}
β Ξ¦ β Ξ β’ A β· t β· tβ
β Ξ¦ β Ξ β’ A β· t β· tβ
β_ : β{k n} {Ξ¦ : Cx k} {Ξ : Cx n} {A : Ty} {u : Ξ¦ β Ξ β’ A}
β (x : Ξ¦ β Ξ β’ A β· u)
β Ξ¦ β Ξ β’ A β· u β· (! x)
β_ = {!!}
β_ : β{k n} {Ξ¦ : Cx k} {Ξ : Cx n} {A : Ty} {u : Ξ¦ β Ξ β’ A}
β Ξ¦ β Ξ β’ A β· u
β Ξ¦ β Ξ β’ A
β_ {u = u} = Ξ» _ β u
_β©_β·_β·_ : β{k} (Ξ¦ : Cx k) (A : Ty) (t : Ξ¦ β© A) β Ξ¦ β© A β· t β Set
Ξ¦ β© A β· t β· tβ = β{n} {Ξ : Cx n} β Ξ¦ β Ξ β’ A β· t β· tβ
βͺ_β·_β·_ : (A : Ty) (t : βͺ A) β βͺ A β· t β Set
βͺ A β· t β· tβ = β{k} {Ξ¦ : Cx k} β Ξ¦ β© A β· t β· tβ
tIΒ³ : β{A} β βͺ A β A
β· π π£ Z
β· πΒ² π£Β² Z
tIΒ³ = πΒ³ π£Β³ Z
tKΒ³ : β{A B} β βͺ A β B β A
β· π π π£ S Z
β· πΒ² πΒ² π£Β² S Z
tKΒ³ = πΒ³ πΒ³ π£Β³ S Z
tSΒ³ : β{A B C} β βͺ (A β B β C) β (A β B) β A β C
β· π π π (π£ S S Z β π£ Z) β (π£ S Z β π£ Z)
β· πΒ² πΒ² πΒ² (π£Β² S S Z βΒ² π£Β² Z) βΒ² (π£Β² S Z βΒ² π£Β² Z)
tSΒ³ = πΒ³ πΒ³ πΒ³ (π£Β³ S S Z βΒ³ π£Β³ Z) βΒ³ (π£Β³ S Z βΒ³ π£Β³ Z)