-
Notifications
You must be signed in to change notification settings - Fork 13
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
Better property handling #10
Merged
Merged
Conversation
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
The goal is to refactor assertions so that each one corresponds to a property. Properties can be toggled - this allowed finer grained control over which properties TriCera checks. After the refactor is complete, it should also be clear which property an input program does not satisfy. - Added properties package. - Refactored Main to collect properties from YAML files in a more structured way. - Started refactoring of existing memsafety properties.
Non-heap allocated pointers now throw an error as soon as they are tried to be freed. They are no longer automatically freed - this was done for memvalid-track, but that will now be implemented in another way, so freeing non-heap pointers is no longer necessary. Also added regression tests for memvalid-free.
- Adds CLI options for specifying properties. - Fixes valid-deref properties always being added. - Formatting of CLI help text.
- Fixes the regression tests based on properties, removing redundant ones. - Fixes a bug where valid-cleanup ghost variable was initialized twice. - Fixes a bug in printing contracts for void functions. - Makes printing of solutions more robust by replacing string replacement with term rewriting.
- Fixes how certain properties are checked. - It is now possible to check each property separately. - Updates regression tests. - Many other changes related to properties.
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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 is a large PR adding support for checking SV-COMP style properties in TriCera.
Checked properties can now also be toggled, or using the
-splitProperties
option checked individually in sequence.Properties to check can be specified using SV-COMP's task definition format, or passed through the command-line interface. Explicit
assert
statements are always checked, and if no properties are specified, the unreachability of the error functionreach_error
is checked by default.Memory safety properties are not checked by default now, which was the case before. See the properties section of TriCera help documentation.
The PR also fixes a few lingering issues and improves on others: