-
Notifications
You must be signed in to change notification settings - Fork 681
BreakOut 2020 12 01 envs
present: Gaëtan, Emilio, Enrico, PMP
We discussed how kernel environments are handled in interactive proofs.
Let st
denote states, containing the global env, then we have this situation:
:st0
Lemma foo : T.
by tac1; abstract tac2
:stP
{Qed,Defined}
:st1
-
1st question: how are the situations on Defined / Qed different?
-
Qed:
-
in
stP
: runclose_proof
-
in
st0
declare / Qed the constant side effects get inlinedExtra Q: what happens with universe declarations, are they handled correctly by inlining?
-
-
Defined:
-
in
stP
: runclose_proof
-
still in
stP
: declare / Qed side effects are still in the envis it still necessary to call export_private_constants in this case?
- the the STM calls Proof.save with
st0
instead ofstP
, so in this case yes - we could drop that requirement, however PMP notes that spurious constants registered during backtracing would arise
- Note that the STM replays imperative vernacs over
st0
, which is an issue
- the the STM calls Proof.save with
-
-
-
2nd question: is it feasible to get rid of sideff inlining? GG: need private constants (sub constants?)
-
3 ideas:
- move the
st
handling logic to declare, if still usingst0
forDefined
, that would require exporting the effects, and handling nested proofs. Seems tricky but still better than having the client do it. - remove side-effect replay and use
stP
? Doable. - handling
Defined
asQed
? Could lead to issues due inlining / increase checking time. PMP makes a point about transparent abstract
- move the
Next discussion was about Safe_typing.push_private_constants
, whose
use in refine.ml
adds loads of duplicated side-effects. PR to assess
CI impact submitted https://github.com/coq/coq/pull/13536, discussion
still ongoing. Only impacts Rewriter, likely due to wrong tactic code?
To the extent possible under law, the contributors of the Rocq wiki have waived all copyright and related or neighboring rights to their contributions.
By contributing to the Rocq wiki, you agree that you hold the copyright and you agree to license your contribution under the CC0 license or you agree that you have permission to distribute your contribution under the CC0 license.