aboutsummaryrefslogtreecommitdiff
path: root/vernac/declareDef.ml
diff options
context:
space:
mode:
authorEmilio Jesus Gallego Arias2020-03-09 02:09:03 -0400
committerEmilio Jesus Gallego Arias2020-03-25 06:04:29 -0400
commitaffb6ac843380e8e134fd89380746f2f6f8c11de (patch)
treef66eb970c747c1f03a3c5fec6c7c2aaeb1d0a0b8 /vernac/declareDef.ml
parent09d6197bd11ed4a323b335118ae749d7caefeb55 (diff)
[proof] [mutual] Factorize mutual body construction.
Diffstat (limited to 'vernac/declareDef.ml')
-rw-r--r--vernac/declareDef.ml13
1 files changed, 13 insertions, 0 deletions
diff --git a/vernac/declareDef.ml b/vernac/declareDef.ml
index b3bcf58b4a..ba84734360 100644
--- a/vernac/declareDef.ml
+++ b/vernac/declareDef.ml
@@ -69,6 +69,19 @@ let declare_definition ~name ~scope ~kind ?hook_data ~ubind ~impargs ce =
end;
dref
+let mutual_make_bodies ~fixnames ~rec_declaration ~possible_indexes =
+ match possible_indexes with
+ | Some possible_indexes ->
+ let env = Global.env() in
+ let indexes = Pretyping.search_guard env possible_indexes rec_declaration in
+ let vars = Vars.universes_of_constr (Constr.mkFix ((indexes,0),rec_declaration)) in
+ let fixdecls = CList.map_i (fun i _ -> Constr.mkFix ((indexes,i),rec_declaration)) 0 fixnames in
+ vars, fixdecls, Some indexes
+ | None ->
+ let fixdecls = CList.map_i (fun i _ -> Constr.mkCoFix (i,rec_declaration)) 0 fixnames in
+ let vars = Vars.universes_of_constr (List.hd fixdecls) in
+ vars, fixdecls, None
+
let declare_mutually_recursive ~cofix ~indexes ~opaque ~univs ~scope ~kind ~ubind ~ntns fixnames fixdecls fixtypes fiximps =
let csts = CList.map4
(fun name body types impargs ->