aboutsummaryrefslogtreecommitdiff
path: root/proofs/proofview.ml
diff options
context:
space:
mode:
authorMatthieu Sozeau2013-10-17 14:55:57 +0200
committerMatthieu Sozeau2014-05-06 09:58:53 +0200
commit84cbc09bd1400f732a6c70e8a840e4c13d018478 (patch)
treef6b3417e653bea9de8f0d8f510ad19ccdbb4840e /proofs/proofview.ml
parent57bee17f928fc67a599d2116edb42a59eeb21477 (diff)
Correct rebase on STM code. Thanks to E. Tassi for help on dealing with
latent universes. Now the universes in the type of a definition/lemma are eagerly added to the environment so that later proofs can be checked independently of the original (delegated) proof body. - Fixed firstorder, ring to work correctly with universe polymorphism. - Changed constr_of_global to raise an anomaly if side effects would be lost by turning a polymorphic constant into a constr. - Fix a non-termination issue in solve_evar_evar. -
Diffstat (limited to 'proofs/proofview.ml')
-rw-r--r--proofs/proofview.ml11
1 files changed, 6 insertions, 5 deletions
diff --git a/proofs/proofview.ml b/proofs/proofview.ml
index d0a477431f..291da4a983 100644
--- a/proofs/proofview.ml
+++ b/proofs/proofview.ml
@@ -26,7 +26,7 @@ open Util
type proofview = Proofview_monad.proofview
open Proofview_monad
-type entry = (Term.constr * Term.types) list
+type entry = (Term.constr * Term.types Univ.in_universe_context_set) list
let proofview p =
p.comb , p.solution
@@ -42,7 +42,7 @@ let init sigma =
let (e, _) = Term.destEvar econstr in
let new_defs = Evd.merge_context_set Evd.univ_rigid new_defs ctx in
let gl = Goal.build e in
- let entry = (econstr, typ) :: ret in
+ let entry = (econstr, (typ, ctx)) :: ret in
entry, { solution = new_defs; comb = gl::comb; }
in
fun l ->
@@ -52,17 +52,18 @@ let init sigma =
type telescope =
| TNil
- | TCons of Environ.env*Term.types*(Term.constr -> telescope)
+ | TCons of Environ.env * Term.types Univ.in_universe_context_set * (Term.constr -> telescope)
let dependent_init =
let rec aux sigma = function
| TNil -> [], { solution = sigma; comb = []; }
- | TCons (env, typ, t) ->
+ | TCons (env, (typ, ctx), t) ->
let (sigma, econstr ) = Evarutil.new_evar sigma env typ in
+ let sigma = Evd.merge_context_set Evd.univ_rigid sigma ctx in
let ret, { solution = sol; comb = comb } = aux sigma (t econstr) in
let (e, _) = Term.destEvar econstr in
let gl = Goal.build e in
- let entry = (econstr, typ) :: ret in
+ let entry = (econstr, (typ, ctx)) :: ret in
entry, { solution = sol; comb = gl :: comb; }
in
fun sigma t ->