1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
open Pp
type goal = Evar.t
let pr_goal e = str "GOAL:" ++ Pp.int (Evar.repr e)
let uid e = string_of_int (Evar.repr e)
module V82 = struct
let env evars gl =
let env = Global.env () in
let evi = Evd.find evars gl in
Evd.evar_filtered_env env evi
let hyps evars gl =
let evi = Evd.find evars gl in
Evd.evar_filtered_hyps evi
let nf_hyps evars gl =
let hyps = Environ.named_context_of_val (hyps evars gl) in
Environ.val_of_named_context (Evarutil.nf_named_context_evar evars hyps)
let concl evars gl =
let evi = Evd.find evars gl in
evi.Evd.evar_concl
let mk_goal evars hyps concl =
let evars = Evd.push_future_goals evars in
let inst = EConstr.identity_subst_val hyps in
let identity = Evd.Identity.make inst in
let (evars,evk) =
Evarutil.new_pure_evar ~src:(Loc.tag Evar_kinds.GoalEvar) ~typeclass_candidate:false ~identity hyps evars concl
in
let _, evars = Evd.pop_future_goals evars in
let ev = EConstr.mkEvar (evk,inst) in
(evk, ev, evars)
let partial_solution env sigma evk c =
let _ =
if not (Evarutil.occur_evar_upto sigma evk c) then ()
else Pretype_errors.error_occur_check env sigma evk c
in
Evd.define evk c sigma
let nf_evar sigma gl =
let evi = Evd.find sigma gl in
let evi = Evarutil.nf_evar_info sigma evi in
let sigma = Evd.add sigma gl evi in
(gl, sigma)
end
module Set = Evar.Set