aboutsummaryrefslogtreecommitdiffhomepage
path: root/pretyping/cases.ml
diff options
context:
space:
mode:
Diffstat (limited to 'pretyping/cases.ml')
-rw-r--r--pretyping/cases.ml51
1 files changed, 26 insertions, 25 deletions
diff --git a/pretyping/cases.ml b/pretyping/cases.ml
index 1db3fac52..b56d5947c 100644
--- a/pretyping/cases.ml
+++ b/pretyping/cases.ml
@@ -1923,11 +1923,12 @@ let eq_id avoid id =
let hid' = next_ident_away hid avoid in
hid'
-let mk_eq typ x y = mkApp (delayed_force coq_eq_ind, [| typ; x ; y |])
-let mk_eq_refl typ x = mkApp (delayed_force coq_eq_refl, [| typ; x |])
-let mk_JMeq typ x typ' y =
- mkApp (delayed_force coq_JMeq_ind, [| typ; x ; typ'; y |])
-let mk_JMeq_refl typ x = mkApp (delayed_force coq_JMeq_refl, [| typ; x |])
+let mk_eq evdref typ x y = papp evdref coq_eq_ind [| typ; x ; y |]
+let mk_eq_refl evdref typ x = papp evdref coq_eq_refl [| typ; x |]
+let mk_JMeq evdref typ x typ' y =
+ papp evdref coq_JMeq_ind [| typ; x ; typ'; y |]
+let mk_JMeq_refl evdref typ x =
+ papp evdref coq_JMeq_refl [| typ; x |]
let hole = GHole (Loc.ghost, Evar_kinds.QuestionMark (Evar_kinds.Define true), None)
@@ -1987,7 +1988,7 @@ let constr_of_pat env evdref arsign pat avoid =
let env = push_rel_context sign env in
evdref := the_conv_x_leq (push_rel_context sign env)
(lift (succ m) ty) (lift 1 apptype) !evdref;
- let eq_t = mk_eq (lift (succ m) ty)
+ let eq_t = mk_eq evdref (lift (succ m) ty)
(mkRel 1) (* alias *)
(lift 1 app) (* aliased term *)
in
@@ -2048,7 +2049,7 @@ let rec is_included x y =
Hence pats is already typed in its
full signature. However prevpatterns are in the original one signature per pattern form.
*)
-let build_ineqs prevpatterns pats liftsign =
+let build_ineqs evdref prevpatterns pats liftsign =
let _tomatchs = List.length pats in
let diffs =
List.fold_left
@@ -2070,11 +2071,11 @@ let build_ineqs prevpatterns pats liftsign =
lift_rel_context len ppat_sign @ sign,
len',
succ n, (* nth pattern *)
- mkApp (delayed_force coq_eq_ind,
- [| lift (len' + liftsign) curpat_ty;
- liftn (len + liftsign) (succ lens) ppat_c ;
- lift len' curpat_c |]) ::
- List.map (lift lens (* Jump over this prevpat signature *)) c)
+ (papp evdref coq_eq_ind
+ [| lift (len' + liftsign) curpat_ty;
+ liftn (len + liftsign) (succ lens) ppat_c ;
+ lift len' curpat_c |]) ::
+ List.map (lift lens (* Jump over this prevpat signature *)) c)
in Some acc
else None)
(Some ([], 0, 0, [])) eqnpats pats
@@ -2122,7 +2123,7 @@ let constrs_of_pats typing_fun env evdref eqns tomatchs sign neqs arity =
(s, List.map (lift n) args), p) :: pats, len + n))
([], 0) pats
in
- let ineqs = build_ineqs prevpatterns pats signlen in
+ let ineqs = build_ineqs evdref prevpatterns pats signlen in
let rhs_rels' = rels_of_patsign rhs_rels in
let _signenv = push_rel_context rhs_rels' env in
let arity =
@@ -2203,7 +2204,7 @@ let abstract_tomatch env tomatchs tycon =
([], [], [], tycon) tomatchs
in List.rev prev, ctx, tycon
-let build_dependent_signature env evars avoid tomatchs arsign =
+let build_dependent_signature env evdref avoid tomatchs arsign =
let avoid = ref avoid in
let arsign = List.rev arsign in
let allnames = List.rev_map (List.map pi1) arsign in
@@ -2227,19 +2228,19 @@ let build_dependent_signature env evars avoid tomatchs arsign =
let env', nargeqs, argeqs, refl_args, slift, argsign' =
List.fold_left2
(fun (env, nargeqs, argeqs, refl_args, slift, argsign') arg (name, b, t) ->
- let argt = Retyping.get_type_of env evars arg in
+ let argt = Retyping.get_type_of env !evdref arg in
let eq, refl_arg =
- if Reductionops.is_conv env evars argt t then
- (mk_eq (lift (nargeqs + slift) argt)
+ if Reductionops.is_conv env !evdref argt t then
+ (mk_eq evdref (lift (nargeqs + slift) argt)
(mkRel (nargeqs + slift))
(lift (nargeqs + nar) arg),
- mk_eq_refl argt arg)
+ mk_eq_refl evdref argt arg)
else
- (mk_JMeq (lift (nargeqs + slift) t)
+ (mk_JMeq evdref (lift (nargeqs + slift) t)
(mkRel (nargeqs + slift))
(lift (nargeqs + nar) argt)
(lift (nargeqs + nar) arg),
- mk_JMeq_refl argt arg)
+ mk_JMeq_refl evdref argt arg)
in
let previd, id =
let name =
@@ -2256,13 +2257,13 @@ let build_dependent_signature env evars avoid tomatchs arsign =
(Name id, b, t) :: argsign'))
(env, neqs, [], [], slift, []) args argsign
in
- let eq = mk_JMeq
+ let eq = mk_JMeq evdref
(lift (nargeqs + slift) appt)
(mkRel (nargeqs + slift))
(lift (nargeqs + nar) ty)
(lift (nargeqs + nar) tm)
in
- let refl_eq = mk_JMeq_refl ty tm in
+ let refl_eq = mk_JMeq_refl evdref ty tm in
let previd, id = make_prime avoid appn in
(((Name (eq_id avoid previd), None, eq) :: argeqs) :: eqs,
succ nargeqs,
@@ -2276,11 +2277,11 @@ let build_dependent_signature env evars avoid tomatchs arsign =
let arsign' = (Name id, b, typ) in
let tomatch_ty = type_of_tomatch ty in
let eq =
- mk_eq (lift nar tomatch_ty)
+ mk_eq evdref (lift nar tomatch_ty)
(mkRel slift) (lift nar tm)
in
([(Name (eq_id avoid previd), None, eq)] :: eqs, succ neqs,
- (mk_eq_refl tomatch_ty tm) :: refl_args,
+ (mk_eq_refl evdref tomatch_ty tm) :: refl_args,
pred slift, (arsign' :: []) :: arsigns))
([], 0, [], nar, []) tomatchs arsign
in
@@ -2317,7 +2318,7 @@ let compile_program_cases loc style (typing_function, evdref) tycon env
(* Build the dependent arity signature, the equalities which makes
the first part of the predicate and their instantiations. *)
let avoid = [] in
- build_dependent_signature env ( !evdref) avoid tomatchs arsign
+ build_dependent_signature env evdref avoid tomatchs arsign
in
let tycon, arity =