2023-01-25 21:17:49 +01:00
|
|
|
type var = Ix of int
|
2022-09-03 12:41:54 +02:00
|
|
|
type name = string
|
|
|
|
|
2023-01-25 21:17:49 +01:00
|
|
|
type icit
|
2022-09-03 12:41:54 +02:00
|
|
|
= Imp
|
|
|
|
| Exp
|
2023-01-25 21:17:49 +01:00
|
|
|
|
|
|
|
type ast
|
|
|
|
= Var of var
|
|
|
|
|
2023-01-26 16:49:17 +01:00
|
|
|
| Test of A.exp
|
|
|
|
|
2023-01-25 21:17:49 +01:00
|
|
|
| Type
|
|
|
|
|
|
|
|
| T0
|
|
|
|
| Ind0 of ast * ast
|
|
|
|
|
|
|
|
| T1
|
|
|
|
| T1tr (* Unit eta rule instead of elimination principle *)
|
|
|
|
|
|
|
|
| TNat
|
|
|
|
| Zero
|
|
|
|
| Suc of ast
|
|
|
|
| IndN of ast * ast * ast * ast
|
|
|
|
|
|
|
|
| TBool
|
|
|
|
| True
|
|
|
|
| False
|
|
|
|
| IndB of ast * ast * ast * ast (* ordered true, false *)
|
|
|
|
|
|
|
|
| Pi of icit * ast * ast
|
|
|
|
| Lam of icit * ast
|
|
|
|
| App of icit * ast
|
|
|
|
|
|
|
|
| Sg of ast * ast
|
|
|
|
| Pair of ast * ast
|
|
|
|
| Fst of ast
|
|
|
|
| Snd of ast
|
|
|
|
|
|
|
|
| Let of ast * ast * ast (* tr : ty in sc *)
|