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.
This PR contains a number of cleanings that bring the PulseCore formalization closer to our written account.
meta
flag on cells.Heap.heap
(as described in Section 3.1)free_above
predicates are removed (made possible by sinking the high water mark)BaseHeapSig.mem
no longer needs to add counters and is defined directly asHeap2.heap
Heap2.heap u#3
as the timeless heap and store small values usingPulse.Lib.PCM.Raise
In total, the PulseCore LOC count shrinks by 35%. The CI runtime decreases by roughly 10%.
Removing predicative invariants does not significantly reduce the expressivity of PulseCore: impredicative invariants storing timeless predicates offer the same API as the predicative invariants on the lowest level. I expect most nested invariants can be encoded with flags (like cancellable invariants).