chore: remove [grind_norm]
attribute
#6692
Merged
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 removes the
[grind_norm]
attribute. The normalization theorems used bygrind
are now fixed and cannot be modified by users. We use normalization theorems to ensure the built-in procedures receive term wish expected "shapes". We use it for types that have built-in support in grind. Users could misuse this feature as a simplification rule. For example, consider the following example:In this example,
grind
starts by asserting the two propositions as expected:n = 0
, and¬replicate n xs = []
. The normalizer cannot reducereplicate n xs
as expected.Then, the E-matching module finds the instance
replicate 0 xs = []
for the equation theoremreplicate.eq_1
also as expected. But, then the normalizer kicks in and reduces the new instance toTrue
. By removing[grind_norm]
we elimninate this kind of misuse. Users that want to preprocess a formula before invokinggrind
should usesimp
instead.