aboutsummaryrefslogtreecommitdiffhomepage
path: root/proofs/proof.mli
diff options
context:
space:
mode:
authorGravatar Enrico Tassi <enrico.tassi@inria.fr>2015-05-29 14:44:10 +0200
committerGravatar Enrico Tassi <enrico.tassi@inria.fr>2015-05-29 14:59:42 +0200
commitc47916933025a4853ed0b397d7476b844bb894a4 (patch)
tree904eb97b0301b6ce15cb011dbbc5855ea208e601 /proofs/proof.mli
parent5e873be3cdbdff6b9bad782ce88d2206b9053e14 (diff)
STM/Univ: save initial univs (the ones in the statement) in Proof.proof
This makes the treatment of universe constraints/normalization more understandable in the Sync/Async case: - if one has to keep the constraints of the body and the type of a lemma separate, then equations coming from the body are kept (see: 866c41 ) - if they can be merge then the equations (substituted on both the body and type) can be removed (one of the sides occurs nowhere) The result is that, semantically, the constraints of a lemma do not depend on weather it was produced asynchronously (v->vio->vo, or in a CoqIDE session) or synchronously (v->vo). Still the internal representation of the constraints changes to accommodate an optimization (to reduce the size of the constraint set): - in the synchronous case (some) equations are substituted (in both the type and body), hence they can be completely dropped from the constraint set - in the asynchronous case (some) equations are substituted in the body only (the type is fixed once and for all before the equations are discovered/generated), hence these equations are necessary to relate the type and the (optimized) body and are hence kept in the constraint set
Diffstat (limited to 'proofs/proof.mli')
-rw-r--r--proofs/proof.mli1
1 files changed, 1 insertions, 0 deletions
diff --git a/proofs/proof.mli b/proofs/proof.mli
index 2b85ec872..a2e10d813 100644
--- a/proofs/proof.mli
+++ b/proofs/proof.mli
@@ -69,6 +69,7 @@ val map_structured_proof : proof -> (Evd.evar_map -> Goal.goal -> 'a) -> ('a pre
val start : Evd.evar_map -> (Environ.env * Term.types) list -> proof
val dependent_start : Proofview.telescope -> proof
val initial_goals : proof -> (Term.constr * Term.types) list
+val initial_euctx : proof -> Evd.evar_universe_context
(* Returns [true] if the considered proof is completed, that is if no goal remain
to be considered (this does not require that all evars have been solved). *)