aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--pretyping/coercion.ml2
-rw-r--r--pretyping/evarconv.ml16
-rw-r--r--pretyping/evd.ml15
-rw-r--r--pretyping/evd.mli6
4 files changed, 10 insertions, 29 deletions
diff --git a/pretyping/coercion.ml b/pretyping/coercion.ml
index e97e45580..70fc659cb 100644
--- a/pretyping/coercion.ml
+++ b/pretyping/coercion.ml
@@ -377,7 +377,7 @@ let inh_coerce_to_sort loc env evd j =
let typ = whd_betadeltaiota env evd j.uj_type in
match kind_of_term typ with
| Sort s -> (evd,{ utj_val = j.uj_val; utj_type = s })
- | Evar ev when not (is_defined_evar evd ev) ->
+ | Evar ev when not (is_defined evd (fst ev)) ->
let (evd',s) = define_evar_as_sort evd ev in
(evd',{ utj_val = j.uj_val; utj_type = s })
| _ ->
diff --git a/pretyping/evarconv.ml b/pretyping/evarconv.ml
index 39e262a3c..f859d0b42 100644
--- a/pretyping/evarconv.ml
+++ b/pretyping/evarconv.ml
@@ -257,16 +257,18 @@ let rec evar_conv_x ts env evd pbty term1 term2 =
destroy beta-redexes that can be used for 1st-order unification *)
let term1 = apprec_nohdbeta ts env evd term1 in
let term2 = apprec_nohdbeta ts env evd term2 in
- if is_undefined_evar evd term1 then
+ begin match kind_of_term term1, kind_of_term term2 with
+ | Evar ev, _ when Evd.is_undefined evd (fst ev) ->
solve_simple_eqn (evar_conv_x ts) env evd
- (position_problem true pbty,destEvar term1,term2)
- else if is_undefined_evar evd term2 then
+ (position_problem true pbty,ev,term2)
+ | _, Evar ev when Evd.is_undefined evd (fst ev) ->
solve_simple_eqn (evar_conv_x ts) env evd
- (position_problem false pbty,destEvar term2,term1)
- else
+ (position_problem false pbty,ev,term1)
+ | _ ->
evar_eqappr_x ts env evd pbty
(whd_nored_state evd (term1,empty_stack), Cst_stack.empty)
- (whd_nored_state evd (term2,empty_stack), Cst_stack.empty)
+ (whd_nored_state evd (term2,empty_stack), Cst_stack.empty)
+ end
and evar_eqappr_x ?(rhs_is_already_stuck = false) ts env evd pbty
((term1,sk1 as appr1),csts1) ((term2,sk2 as appr2),csts2) =
@@ -617,7 +619,7 @@ let first_order_unification ts env evd (ev1,l1) (term2,l2) =
(fun i ->
(* Then instantiate evar unless already done by unifying args *)
let t2 = applist(term2,deb2) in
- if is_defined_evar i ev1 then
+ if is_defined i (fst ev1) then
evar_conv_x ts env i CONV t2 (mkEvar ev1)
else
solve_simple_eqn ~choose:true (evar_conv_x ts) env i (None,ev1,t2))]
diff --git a/pretyping/evd.ml b/pretyping/evd.ml
index cc525dca1..6f56f1bfa 100644
--- a/pretyping/evd.ml
+++ b/pretyping/evd.ml
@@ -450,13 +450,6 @@ let evar_declare hyps evk ty ?(src=(Loc.ghost,Evar_kinds.InternalHole)) ?filter
evar_candidates = candidates;
evar_extra = Store.empty } }
-let is_defined_evar evd (evk,_) = EvarMap.is_defined evd.evars evk
-
-(* Does k corresponds to an (un)defined existential ? *)
-let is_undefined_evar evd c = match kind_of_term c with
- | Evar ev -> not (is_defined_evar evd ev)
- | _ -> false
-
(* extracts conversion problems that satisfy predicate p *)
(* Note: conv_pbs not satisying p are stored back in reverse order *)
let extract_conv_pbs evd p =
@@ -585,8 +578,6 @@ let set_eq_sort ({evars = (sigma, (us, sm))} as d) s1 s2 =
let meta_list evd = metamap_to_list evd.metas
-let find_meta evd mv = Metamap.find mv evd.metas
-
let undefined_metas evd =
let filter = function
| (n,Clval(_,_,typ)) -> None
@@ -595,12 +586,6 @@ let undefined_metas evd =
let m = List.map_filter filter (meta_list evd) in
List.sort (-) m
-let metas_of evd =
- List.map (function
- | (n,Clval(_,_,typ)) -> (n,typ.rebus)
- | (n,Cltyp (_,typ)) -> (n,typ.rebus))
- (meta_list evd)
-
let map_metas_fvalue f evd =
{ evd with metas =
Metamap.map
diff --git a/pretyping/evd.mli b/pretyping/evd.mli
index 49878ce8a..d3155201d 100644
--- a/pretyping/evd.mli
+++ b/pretyping/evd.mli
@@ -172,9 +172,6 @@ val subst_evar_defs_light : substitution -> evar_map -> evar_map
val evars_reset_evd : ?with_conv_pbs:bool -> evar_map -> evar_map -> evar_map
-(* spiwack: [is_undefined_evar] should be considered a candidate
- for moving to evarutils *)
-val is_undefined_evar : evar_map -> constr -> bool
val undefined_evars : evar_map -> evar_map
val defined_evars : evar_map -> evar_map
(* [fold_undefined f m] iterates ("folds") function [f] over the undefined
@@ -207,7 +204,6 @@ val evar_list : evar_map -> constr -> existential list
val collect_evars : constr -> ExistentialSet.t
(** Metas *)
-val find_meta : evar_map -> metavariable -> clbinding
val meta_list : evar_map -> (metavariable * clbinding) list
val meta_defined : evar_map -> metavariable -> bool
@@ -229,7 +225,6 @@ val meta_reassign : metavariable -> constr * instance_status -> evar_map -> eva
val meta_merge : evar_map -> evar_map -> evar_map
val undefined_metas : evar_map -> metavariable list
-val metas_of : evar_map -> meta_type_map
val map_metas_fvalue : (constr -> constr) -> evar_map -> evar_map
type metabinding = metavariable * constr * instance_status
@@ -279,6 +274,5 @@ val pr_metaset : Metaset.t -> Pp.std_ppcmds
create an [evar_map] with empty meta map: *)
val create_evar_defs : evar_map -> evar_map
val create_goal_evar_defs : evar_map -> evar_map
-val is_defined_evar : evar_map -> existential -> bool
val subst_evar_map : substitution -> evar_map -> evar_map
(*** /Deprecaded ***)