refactor: Hyps optimisations (experiment) - #572
Draft
alvinylt wants to merge 3 commits into
Draft
Conversation
Contributor
Author
|
!bench |
|
Benchmark results for 790a068 against 4d8eee8 are in. No significant results found. @alvinylt
Small changes (1🟥)
|
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.
Description
There are many ways to potentially optimise the Iris Proof Mode, especially regarding how the spatial and intuitionistic contexts are organised using
HypsinProofMode/Expr.lean. To name a few:Hyps.spatialIVarIdsandHyps.intuitionisticIVarIdsuse list concatenation (++): quadratic complexity due to repeated copying of lists. This can easily be optimised using an accumulator (commit 24db6ec).Hyps.adddoes not perform balancing. It will be interesting to see whether having a balanced tree enables notable optimisations. Otherwise, we might instead simply have two separate lists (as in Rocq), one for spatial hypotheses and another for intuitionistic hypotheses. This would avoid complications (e.g. inHyps.buildAccuProof) such as having multiple trees representing the same context (with the same order of hypotheses).Hyps.select) instead of repeatedisDefEq.It will also be helpful to think through how the optimisations can be evaluated.
Checklist
authorssection of any appropriate files