implicitt/lib/Core/Value.ml

37 lines
705 B
OCaml
Raw Normal View History

2022-08-25 20:29:55 +02:00
module T = Term
2023-01-31 19:51:46 +01:00
module C = Common
2022-08-25 20:29:55 +02:00
2023-01-31 19:51:46 +01:00
type lvl = Lvl of int
2022-08-25 20:29:55 +02:00
2022-08-30 16:12:47 +02:00
type closure = C of env * T.term
and closure2 = C2 of env * T.term (* 2 variables missing *)
2022-08-25 20:29:55 +02:00
and env = value list
and value
= Type
| T0
| T1
| T1vl
| TNat
| Suc of value
| Zero
| TBool
| True
| False
| Pi of value * closure
| Lam of closure
| Sg of value * closure
| Pair of value * value
| Stuck of stuck * value (* second arg is type *)
and stuck
= Var of lvl
2023-01-31 19:51:46 +01:00
| Meta of C.meta
2022-08-25 20:29:55 +02:00
| Ind0 of closure * stuck
2022-08-30 16:12:47 +02:00
| IndN of closure * value * closure2 * stuck
2022-08-25 20:29:55 +02:00
| IndB of closure * value * value * stuck
| App of stuck * value * value (* fn; val; type of fn *)
| Fst of stuck
| Snd of stuck