refactor: rephrase the register frame-condition precondition as non-membership in a list of modified registers #242
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:
We change the type of the non-effect hypothesis in
AxEffects
towhere
f₁, ⋯, fₙ
are the modified registers, replacing the current sequence of pre-conditionsf ≠ f₁ → f ≠ f₂ → … → f ≠ fₙ → …
.This change makes
sym_aggregate
slightly less powerful out of the box: it will no longer apply∀ (f : StateField), f ∉ [a, b] → ...
given an hypothesis likef ∉ [a, b, c]
with more information in the local context. Note that applications of the non-effects theorem to concrete registers are unaffected.We have to either break this hypothesis
f ∉ [a, b, c]
, and each of the non-effect preconditions, back down in terms of non-equalities (which is doable with a singlesimp only [...] at *
with the right lemmas, as I've done currently), or we could empowersym_aggregate
to seed its simpset with the sublist hypothesesf ∉ [b, c]
andf ∉ [c]
.Upside, though, is that this PR gives a slight speedup:
Compared to main
Testing:
What tests have been run? Did
make all
succeed for your changes? Wasconformance testing successful on an Aarch64 machine? Yes
Yes
License:
By submitting this pull request, I confirm that my contribution is
made under the terms of the Apache 2.0 license.