Extend the formalization to shift/reset#4
Merged
VietAnh1010 merged 12 commits intoctx-equivfrom Dec 10, 2025
Merged
Conversation
…x-equiv-Binding Merge with upstream
The reason for this "cheat" is that, in the proof of completeness, given any arbitrary V, we may not be able to construct ctxr V \empty to instantiate the hypothesis. We need the two "cheating" constructor to get around this issue.
The main change is to add meta-context, and update the logrels to accommodate the addition of meta-context.
The main insight is that: the proof of unique decomposition basically contains an algorithm to "construct" the unique decomposition: forall e, (exists v, e = v) \/ (exists! M R e', e = meta_rplug M (rplug R e')) Notice the quantifier `exists`. In Rocq, we prove `exists` by giving the witness, and we can only give the witness if we can construct it. Therefore, a better idea is to extract the decomposition as a separate function, which is much easier to study; and is useful to state our other lemmas as well. After obtaining the decomposition function, we prove unique decomposition by "delegating" to this decomposing function. We just need to prove that, given a redex, an evaluation context and a meta context, plugging them and decomposing them is identity. The prove is by pure equational reasoning (!) and it much easier to understand.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Extend the language and the logical relations with shift/reset. Here are some notable observations:
consthe current inside-out context to the front of the current inside-out meta-context, and we set the inside-out context tohole. If we work with outside-in representations instead, we need toappendthe current outside-in context to the back of the current outside-in meta-context, which complicates reasoning.plugfunction are structurally recursive without accumulator.fmapandbindof outside-in program contexts are corrected, which allows us to writectxr_compthat composes two program contexts and simplifies reasoning.