Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Civl] Improvements to pool-based quantifier instantiation #862

Merged
merged 5 commits into from
Apr 6, 2024

Conversation

shazqadeer
Copy link
Contributor

@shazqadeer shazqadeer commented Apr 4, 2024

  • 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 of success 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.

@shazqadeer shazqadeer requested a review from bkragl April 4, 2024 17:32
@shazqadeer shazqadeer changed the title [Civl] Change signature of AtomicAlloc [Civl] Improvements to pool-based quantifier instantiation Apr 6, 2024
@shazqadeer shazqadeer merged commit db550f9 into master Apr 6, 2024
5 checks passed
keyboardDrummer added a commit that referenced this pull request Aug 13, 2024
### Changes
- Made a change to the Dispose method of
`CustomStackSizePoolTaskScheduler.cs`, so it now interrupts all its
thread instead of joining them. I think this was causing the entire
Boogie process to hang after it was finished, causing tests to deadlock.
- Add `blame-hang-timeout` to the `dotnet test` invocation that runs the
NUnit tests, which allows identifying which test fails when the unit
tests timeout.
- Add an undocumented option `/processTimeLimit` that can be used by
tests to let Boogie stop itself after a certain timespan, allowing
developers to get a stacktrace of where Boogie was at the point of
timeout.
- Remove APIs for cancelling requests, which were only available
programmatically and not used by Dafny.
- Fix a bug that could cause a concurrency related exception in
`QuantifierInstantiationInfo`, which was introduced by
#862.
- Use an invariant culture somewhere in printing debug output, so the
Boogie tests locally pass on my machine, despite my European culture.
- Some renaming of variations of VerifyImplementation, to make the
differences more clear.
- Configure a 30 seconds timelimit per VC for all Boogie tests by
default. Added an exception for a few slow tests
- Let Boogie cancel checking of a VC after its timelimit has passed,
regardless of what the solver is doing

### Testing
- Did not add any additional tests
- Let the test-suite succeed without retries 4 times, in an attempt to
determine that it resolves the test instabilities we've had.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant