diff options
| author | Matthieu Sozeau | 2014-05-26 13:58:56 +0200 |
|---|---|---|
| committer | Matthieu Sozeau | 2014-05-26 14:16:26 +0200 |
| commit | 15999903f875f4b5dbb3d5240d2ca39acc3cd777 (patch) | |
| tree | 9906d3cf7d95d4d3f0e996811aa429532b825f0d /toplevel | |
| parent | d8176e6baaa33692ed82b9ac3c6e57e85f51dff0 (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.ml | 9 |
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 -> |
