Skip to content

Commit f08b8eb

Browse files
author
Lucie
committed
Deduplicate sort and others
1 parent a5d5a91 commit f08b8eb

File tree

1 file changed

+8
-48
lines changed

1 file changed

+8
-48
lines changed

src/rocq_elpi_HOAS.ml

Lines changed: 8 additions & 48 deletions
Original file line numberDiff line numberDiff line change
@@ -174,53 +174,6 @@ let isuniv, univout, univino, (univ : Univ.Universe.t API.Conversion.t) =
174174
end
175175
}
176176

177-
let propc = E.Constants.declare_global_symbol "prop"
178-
let spropc = E.Constants.declare_global_symbol "sprop"
179-
let typc = E.Constants.declare_global_symbol "typ"
180-
181-
let sort =
182-
let open API.AlgebraicData in declare {
183-
ty = API.Conversion.TyName "sort";
184-
doc = "Sorts (kinds of types)";
185-
pp = (fun fmt -> function
186-
| Sorts.Type _ -> Format.fprintf fmt "Type"
187-
| Sorts.Set -> Format.fprintf fmt "Set"
188-
| Sorts.Prop -> Format.fprintf fmt "Prop"
189-
| Sorts.SProp -> Format.fprintf fmt "SProp"
190-
| Sorts.QSort _ -> Format.fprintf fmt "Type");
191-
constructors = [
192-
K("prop","impredicative sort of propositions",N,
193-
B Sorts.prop,
194-
M (fun ~ok ~ko -> function Sorts.Prop -> ok | _ -> ko ()));
195-
K("sprop","impredicative sort of propositions with definitional proof irrelevance",N,
196-
B Sorts.sprop,
197-
M (fun ~ok ~ko -> function Sorts.SProp -> ok | _ -> ko ()));
198-
K("typ","predicative sort of data (carries a universe level)",A(univ,N),
199-
B (fun x -> Sorts.sort_of_univ x),
200-
M (fun ~ok ~ko -> function
201-
| Sorts.Type x -> ok x
202-
| Sorts.Set -> ok Univ.Universe.type0
203-
| _ -> ko ()));
204-
K("uvar","",A(F.uvar,N),
205-
BS (fun (k,_) state ->
206-
let m = S.get um state in
207-
try
208-
let u = UM.host k m in
209-
state, Sorts.sort_of_univ u
210-
with Not_found ->
211-
let state, (_,u) = new_univ_level_variable state in
212-
let state = S.update um state (UM.add k u) in
213-
state, Sorts.sort_of_univ u),
214-
M (fun ~ok ~ko _ -> ko ()));
215-
]
216-
} |> API.ContextualConversion.(!<)
217-
218-
let ast_sort ~loc = function
219-
| Sorts.Prop -> A.mkGlobal ~loc propc
220-
| Sorts.SProp -> A.mkGlobal ~loc spropc
221-
| Sorts.Set -> A.mkAppGlobal ~loc typc (A.mkOpaque ~loc @@ univino Univ.Universe.type0) []
222-
| Sorts.Type u -> A.mkAppGlobal ~loc typc (A.mkOpaque ~loc @@ univino u) []
223-
| _ -> assert false
224177

225178
let universe_level_variable =
226179
let { CD.cin = levelin }, universe_level_variable_to_patch = CD.declare {
@@ -477,6 +430,14 @@ let sort : (Sorts.t, _ coq_context, API.Data.constraints) API.ContextualConversi
477430
| _ -> raise API.Conversion.(TypeErr(TyName"sort",depth,t)));
478431
}
479432

433+
let ast_sort ~loc = function
434+
| Sorts.Prop -> A.mkGlobal ~loc propc
435+
| Sorts.SProp -> A.mkGlobal ~loc spropc
436+
| Sorts.Set -> A.mkAppGlobal ~loc typc (A.mkOpaque ~loc @@ univino Univ.Universe.type0) []
437+
| Sorts.Type u -> A.mkAppGlobal ~loc typc (A.mkOpaque ~loc @@ univino u) []
438+
| _ -> assert false
439+
440+
480441
let in_coq_fresh ~id_only =
481442
let mk_fresh dbl =
482443
Id.of_string_soft
@@ -1107,7 +1068,6 @@ let section_ids env =
11071068
~init:[] named_ctx
11081069

11091070
let sortc = E.Constants.declare_global_symbol "sort"
1110-
let typc = E.Constants.declare_global_symbol "typ"
11111071

11121072
let force_level_of_universe state u =
11131073
match Univ.Universe.level u with

0 commit comments

Comments
 (0)