aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--pretyping/evarutil.ml27
-rw-r--r--pretyping/evarutil.mli8
-rw-r--r--pretyping/pretype_errors.ml23
-rw-r--r--pretyping/pretype_errors.mli14
-rw-r--r--pretyping/typing.ml4
-rw-r--r--toplevel/himsg.ml44
6 files changed, 54 insertions, 66 deletions
diff --git a/pretyping/evarutil.ml b/pretyping/evarutil.ml
index fcc284832..0c339df4e 100644
--- a/pretyping/evarutil.ml
+++ b/pretyping/evarutil.ml
@@ -36,11 +36,28 @@ let rec flush_and_check_evars sigma c =
| Some c -> flush_and_check_evars sigma c)
| _ -> map_constr (flush_and_check_evars sigma) c
-let nf_evar = Pretype_errors.nf_evar
-let j_nf_evar = Pretype_errors.j_nf_evar
-let jl_nf_evar = Pretype_errors.jl_nf_evar
-let jv_nf_evar = Pretype_errors.jv_nf_evar
-let tj_nf_evar = Pretype_errors.tj_nf_evar
+let nf_evar = Reductionops.nf_evar
+let j_nf_evar sigma j =
+ { uj_val = nf_evar sigma j.uj_val;
+ uj_type = nf_evar sigma j.uj_type }
+let j_nf_betaiotaevar sigma j =
+ { uj_val = nf_evar sigma j.uj_val;
+ uj_type = Reductionops.nf_betaiota sigma j.uj_type }
+let jl_nf_evar sigma jl = List.map (j_nf_evar sigma) jl
+let jv_nf_betaiotaevar sigma jl =
+ Array.map (j_nf_betaiotaevar sigma) jl
+let jv_nf_evar sigma = Array.map (j_nf_evar sigma)
+let tj_nf_evar sigma {utj_val=v;utj_type=t} =
+ {utj_val=nf_evar sigma v;utj_type=t}
+
+let env_nf_evar sigma env =
+ process_rel_context
+ (fun d e -> push_rel (map_rel_declaration (nf_evar sigma) d) e) env
+
+let env_nf_betaiotaevar sigma env =
+ process_rel_context
+ (fun d e ->
+ push_rel (map_rel_declaration (Reductionops.nf_betaiota sigma) d) e) env
let nf_named_context_evar sigma ctx =
Sign.map_named_context (Reductionops.nf_evar sigma) ctx
diff --git a/pretyping/evarutil.mli b/pretyping/evarutil.mli
index 9c6f1ad47..5c32a9a5c 100644
--- a/pretyping/evarutil.mli
+++ b/pretyping/evarutil.mli
@@ -184,6 +184,14 @@ val nf_evar_info : evar_map -> evar_info -> evar_info
val nf_evar_map : evar_map -> evar_map
val nf_evar_map_undefined : evar_map -> evar_map
+val env_nf_evar : evar_map -> env -> env
+val env_nf_betaiotaevar : evar_map -> env -> env
+
+val j_nf_betaiotaevar : evar_map -> unsafe_judgment -> unsafe_judgment
+val jv_nf_betaiotaevar :
+ evar_map -> unsafe_judgment array -> unsafe_judgment array
+(** Presenting terms without solved evars *)
+
(** Replacing all evars, possibly raising [Uninstantiated_evar] *)
exception Uninstantiated_evar of existential_key
val flush_and_check_evars : evar_map -> constr -> constr
diff --git a/pretyping/pretype_errors.ml b/pretyping/pretype_errors.ml
index ad6922dbe..19ccb2375 100644
--- a/pretyping/pretype_errors.ml
+++ b/pretyping/pretype_errors.ml
@@ -45,29 +45,6 @@ let precatchable_exception = function
Nametab.GlobalizationError _ | PretypeError _)) -> true
| _ -> false
-let nf_evar = Reductionops.nf_evar
-let j_nf_evar sigma j =
- { uj_val = nf_evar sigma j.uj_val;
- uj_type = nf_evar sigma j.uj_type }
-let j_nf_betaiotaevar sigma j =
- { uj_val = nf_evar sigma j.uj_val;
- uj_type = Reductionops.nf_betaiota sigma j.uj_type }
-let jl_nf_evar sigma jl = List.map (j_nf_evar sigma) jl
-let jv_nf_betaiotaevar sigma jl =
- Array.map (j_nf_betaiotaevar sigma) jl
-let jv_nf_evar sigma = Array.map (j_nf_evar sigma)
-let tj_nf_evar sigma {utj_val=v;utj_type=t} =
- {utj_val=nf_evar sigma v;utj_type=t}
-
-let env_nf_evar sigma env =
- process_rel_context
- (fun d e -> push_rel (map_rel_declaration (nf_evar sigma) d) e) env
-
-let env_nf_betaiotaevar sigma env =
- process_rel_context
- (fun d e ->
- push_rel (map_rel_declaration (Reductionops.nf_betaiota sigma) d) e) env
-
(* This simplifies the typing context of Cases clauses *)
(* hope it does not disturb other typing contexts *)
let contract env lc =
diff --git a/pretyping/pretype_errors.mli b/pretyping/pretype_errors.mli
index 558f3d5bb..3a4c6aad5 100644
--- a/pretyping/pretype_errors.mli
+++ b/pretyping/pretype_errors.mli
@@ -43,20 +43,6 @@ exception PretypeError of env * Evd.evar_map * pretype_error
val precatchable_exception : exn -> bool
-(** Presenting terms without solved evars *)
-val nf_evar : Evd.evar_map -> constr -> constr
-val j_nf_evar : Evd.evar_map -> unsafe_judgment -> unsafe_judgment
-val jl_nf_evar : Evd.evar_map -> unsafe_judgment list -> unsafe_judgment list
-val jv_nf_evar : Evd.evar_map -> unsafe_judgment array -> unsafe_judgment array
-val tj_nf_evar : Evd.evar_map -> unsafe_type_judgment -> unsafe_type_judgment
-
-val env_nf_evar : Evd.evar_map -> env -> env
-val env_nf_betaiotaevar : Evd.evar_map -> env -> env
-
-val j_nf_betaiotaevar : Evd.evar_map -> unsafe_judgment -> unsafe_judgment
-val jv_nf_betaiotaevar :
- Evd.evar_map -> unsafe_judgment array -> unsafe_judgment array
-
(** Raising errors *)
val error_actual_type_loc :
Loc.t -> env -> Evd.evar_map -> unsafe_judgment -> constr -> 'b
diff --git a/pretyping/typing.ml b/pretyping/typing.ml
index 0f9100e79..5ae04488f 100644
--- a/pretyping/typing.ml
+++ b/pretyping/typing.ml
@@ -205,12 +205,12 @@ let rec execute env evdref cstr =
(* Sort-polymorphism of inductive types *)
make_judge f
(inductive_type_knowing_parameters env ind
- (jv_nf_evar !evdref jl))
+ (Evarutil.jv_nf_evar !evdref jl))
| Const cst ->
(* Sort-polymorphism of inductive types *)
make_judge f
(constant_type_knowing_parameters env cst
- (jv_nf_evar !evdref jl))
+ (Evarutil.jv_nf_evar !evdref jl))
| _ ->
execute env evdref f
in
diff --git a/toplevel/himsg.ml b/toplevel/himsg.ml
index cfaea3d74..8e6ff1eb7 100644
--- a/toplevel/himsg.ml
+++ b/toplevel/himsg.ml
@@ -46,7 +46,7 @@ let explain_unbound_var env v =
str "No such section variable or assumption: " ++ var ++ str "."
let explain_not_type env sigma j =
- let j = j_nf_evar sigma j in
+ let j = Evarutil.j_nf_evar sigma j in
let pe = pr_ne_context_of (str "In environment") env in
let pc,pt = pr_ljudge_env env j in
pe ++ str "The term" ++ brk(1,1) ++ pc ++ spc () ++
@@ -106,7 +106,7 @@ let explain_elim_arity env ind sorts c pj okinds =
fnl () ++ msg
let explain_case_not_inductive env sigma cj =
- let cj = j_nf_evar sigma cj in
+ let cj = Evarutil.j_nf_evar sigma cj in
let env = make_all_name_different env in
let pc = pr_lconstr_env env cj.uj_val in
let pct = pr_lconstr_env env cj.uj_type in
@@ -119,7 +119,7 @@ let explain_case_not_inductive env sigma cj =
str "which is not a (co-)inductive type."
let explain_number_branches env sigma cj expn =
- let cj = j_nf_evar sigma cj in
+ let cj = Evarutil.j_nf_evar sigma cj in
let env = make_all_name_different env in
let pc = pr_lconstr_env env cj.uj_val in
let pct = pr_lconstr_env env cj.uj_type in
@@ -128,8 +128,8 @@ let explain_number_branches env sigma cj expn =
str "expects " ++ int expn ++ str " branches."
let explain_ill_formed_branch env sigma c ci actty expty =
- let simp t = Reduction.nf_betaiota (nf_evar sigma t) in
- let c = nf_evar sigma c in
+ let simp t = Reduction.nf_betaiota (Evarutil.nf_evar sigma t) in
+ let c = Evarutil.nf_evar sigma c in
let env = make_all_name_different env in
let pc = pr_lconstr_env env c in
let pa = pr_lconstr_env env (simp actty) in
@@ -150,7 +150,7 @@ let explain_generalization env (name,var) j =
spc () ++ str "which should be Set, Prop or Type."
let explain_actual_type env sigma j pt =
- let j = j_nf_betaiotaevar sigma j in
+ let j = Evarutil.j_nf_betaiotaevar sigma j in
let pt = Reductionops.nf_betaiota sigma pt in
let pe = pr_ne_context_of (str "In environment") env in
let (pc,pct) = pr_ljudge_env env j in
@@ -161,10 +161,10 @@ let explain_actual_type env sigma j pt =
str "while it is expected to have type" ++ brk(1,1) ++ pt ++ str "."
let explain_cant_apply_bad_type env sigma (n,exptyp,actualtyp) rator randl =
- let randl = jv_nf_betaiotaevar sigma randl in
- let exptyp = nf_evar sigma exptyp in
+ let randl = Evarutil.jv_nf_betaiotaevar sigma randl in
+ let exptyp = Evarutil.nf_evar sigma exptyp in
let actualtyp = Reductionops.nf_betaiota sigma actualtyp in
- let rator = j_nf_evar sigma rator in
+ let rator = Evarutil.j_nf_evar sigma rator in
let env = make_all_name_different env in
let nargs = Array.length randl in
(* let pe = pr_ne_context_of (str "in environment") env in*)
@@ -187,8 +187,8 @@ let explain_cant_apply_bad_type env sigma (n,exptyp,actualtyp) rator randl =
pr_lconstr_env env exptyp ++ str "."
let explain_cant_apply_not_functional env sigma rator randl =
- let randl = jv_nf_evar sigma randl in
- let rator = j_nf_evar sigma rator in
+ let randl = Evarutil.jv_nf_evar sigma randl in
+ let rator = Evarutil.j_nf_evar sigma rator in
let env = make_all_name_different env in
let nargs = Array.length randl in
(* let pe = pr_ne_context_of (str "in environment") env in*)
@@ -208,15 +208,15 @@ let explain_cant_apply_not_functional env sigma rator randl =
str " " ++ v 0 appl
let explain_unexpected_type env sigma actual_type expected_type =
- let actual_type = nf_evar sigma actual_type in
- let expected_type = nf_evar sigma expected_type in
+ let actual_type = Evarutil.nf_evar sigma actual_type in
+ let expected_type = Evarutil.nf_evar sigma expected_type in
let pract = pr_lconstr_env env actual_type in
let prexp = pr_lconstr_env env expected_type in
str "Found type" ++ spc () ++ pract ++ spc () ++
str "where" ++ spc () ++ prexp ++ str " was expected."
let explain_not_product env sigma c =
- let c = nf_evar sigma c in
+ let c = Evarutil.nf_evar sigma c in
let pr = pr_lconstr_env env c in
str "The type of this term is a product" ++ spc () ++
str "while it is expected to be" ++
@@ -306,8 +306,8 @@ let explain_ill_formed_rec_body env err names i fixenv vdefj =
with _ -> mt ())
let explain_ill_typed_rec_body env sigma i names vdefj vargs =
- let vdefj = jv_nf_evar sigma vdefj in
- let vargs = Array.map (nf_evar sigma) vargs in
+ let vdefj = Evarutil.jv_nf_evar sigma vdefj in
+ let vargs = Array.map (Evarutil.nf_evar sigma) vargs in
let env = make_all_name_different env in
let pvd,pvdt = pr_ljudge_env env (vdefj.(i)) in
let pv = pr_lconstr_env env vargs.(i) in
@@ -318,13 +318,13 @@ let explain_ill_typed_rec_body env sigma i names vdefj vargs =
str "while it should be" ++ spc () ++ pv ++ str "."
let explain_cant_find_case_type env sigma c =
- let c = nf_evar sigma c in
+ let c = Evarutil.nf_evar sigma c in
let env = make_all_name_different env in
let pe = pr_lconstr_env env c in
str "Cannot infer type of pattern-matching on" ++ ws 1 ++ pe ++ str "."
let explain_occur_check env sigma ev rhs =
- let rhs = nf_evar sigma rhs in
+ let rhs = Evarutil.nf_evar sigma rhs in
let env = make_all_name_different env in
let id = Evd.string_of_existential ev in
let pt = pr_lconstr_env env rhs in
@@ -369,7 +369,7 @@ let explain_evar_kind env evi = function
assert false
let explain_not_clean env sigma ev t k =
- let t = nf_evar sigma t in
+ let t = Evarutil.nf_evar sigma t in
let env = make_all_name_different env in
let id = Evd.string_of_existential ev in
let var = pr_lconstr_env env t in
@@ -414,8 +414,8 @@ let explain_wrong_case_info env ind ci =
spc () ++ pc ++ str "."
let explain_cannot_unify env sigma m n =
- let m = nf_evar sigma m in
- let n = nf_evar sigma n in
+ let m = Evarutil.nf_evar sigma m in
+ let n = Evarutil.nf_evar sigma n in
let pm = pr_lconstr_env env m in
let pn = pr_lconstr_env env n in
str "Impossible to unify" ++ brk(1,1) ++ pm ++ spc () ++
@@ -507,7 +507,7 @@ let explain_type_error env sigma err =
explain_wrong_case_info env ind ci
let explain_pretype_error env sigma err =
- let env = env_nf_betaiotaevar sigma env in
+ let env = Evarutil.env_nf_betaiotaevar sigma env in
let env = make_all_name_different env in
match err with
| CantFindCaseType c -> explain_cant_find_case_type env sigma c