[Civl] Improvements to pool-based quantifier instantiation #862
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.
Added a pool hint to nondeterministic output parameter of One_New. Since this procedure is polymorphic, the pool name "One_New" may correspond to many types. Therefore, pool-based quantifier instantiation is updated so that it can handle the same pool name attached to bound variables of several types. The main idea is to be permissive in the construction of instantiations but prune out illegal instances just before the instantiation.
Changed AtomicAllocNode in treiber-stack.bpl so that the output variable
success
is explicitly initialized. This prevents quantification over the initial (nondeterministic) value ofsuccess
in the construction of the gate of AtomicAllocNode. Ultimately, this results in better behaved VCs.Together the two changes above reduce flakiness in the proof of treiber-stack.bpl.