aboutsummaryrefslogtreecommitdiff
path: root/toplevel
diff options
context:
space:
mode:
authorMatthieu Sozeau2014-05-26 13:58:56 +0200
committerMatthieu Sozeau2014-05-26 14:16:26 +0200
commit15999903f875f4b5dbb3d5240d2ca39acc3cd777 (patch)
tree9906d3cf7d95d4d3f0e996811aa429532b825f0d /toplevel
parentd8176e6baaa33692ed82b9ac3c6e57e85f51dff0 (diff)
- Fix in kernel conversion not folding the universe constraints
correctly when comparing stacks. - Disallow Type i <= Prop/Set constraints, that would otherwise allow constraints that make a universe lower than Prop. - Fix stm/lemmas that was pushing constraints to the global context, it is done depending on the constant/variable polymorphic status now. - Adapt generalized rewriting in Type code to these fixes.
Diffstat (limited to 'toplevel')
-rw-r--r--toplevel/obligations.ml9
1 files changed, 4 insertions, 5 deletions
diff --git a/toplevel/obligations.ml b/toplevel/obligations.ml
index cce5242ec4..91c58e60d8 100644
--- a/toplevel/obligations.ml
+++ b/toplevel/obligations.ml
@@ -831,9 +831,9 @@ let rec solve_obligation prg num tac =
let ctx = prg.prg_ctx in
let obl = subst_deps_obl prg.prg_subst obls obl in
let kind = kind_of_obligation (pi2 prg.prg_kind) obl.obl_status in
- Lemmas.start_proof obl.obl_name kind
+ Lemmas.start_proof_univs obl.obl_name kind
(Universes.subst_opt_univs_constr prg.prg_subst obl.obl_type, ctx)
- (fun strength gr ->
+ (fun (subst, ctx) strength gr ->
let cst = match gr with ConstRef cst -> cst | _ -> assert false in
let obl =
let transparent = evaluable_constant cst (Global.env ()) in
@@ -853,13 +853,12 @@ let rec solve_obligation prg num tac =
in
let obls = Array.copy obls in
let _ = obls.(num) <- obl in
-(* let ctx = Univ.ContextSet.of_context ctx in *)
- let subst = Univ.LMap.empty (** FIXME *) in
+ let ctx = Univ.ContextSet.of_context ctx in
let res =
try update_obls
{prg with prg_body = Universes.subst_opt_univs_constr subst prg.prg_body;
prg_type = Universes.subst_opt_univs_constr subst prg.prg_type;
- prg_ctx = ctx;
+ prg_ctx = Univ.ContextSet.union prg.prg_ctx ctx;
prg_subst = Univ.LMap.union prg.prg_subst subst}
obls (pred rem)
with e when Errors.noncritical e ->