Fix set extensionality issue with havoc assignments (#6304) #6305
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.
Summary
This PR fixes issue #6304 where set extensionality axioms could not be applied when sets were assigned using havoc operations.
Problem
When a set variable is assigned using havoc (e.g., ), the definite assignment tracker was being marked after the havoc operation. However, for set extensionality axioms to work properly, the type's where clause needs to be assumed before the havoc operation.
This caused issue #6305. There are surely other issues as well that this PR fixes, but we will discover this later.
Solution
The fix ensures that for havoc assignments to variables with definite assignment tracking, the definite assignment tracker is marked before the havoc operation. This allows:
Changes
Testing
Added integration test that demonstrates the fix working for both subset and equality assertions with havoc-assigned sets.
Fixes #6304