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

Goal metadata #1679

Merged
merged 12 commits into from
Jun 2, 2022
Merged

Goal metadata #1679

merged 12 commits into from
Jun 2, 2022

Conversation

robdockins
Copy link
Contributor

This PR improves the metadata attached to goals, and implements a system whereby user-defined "tags" can be associated with specification conditions in the setup phase. Later, in proof tactics, goals can be filtered by what tags they have associated. This should give users a less-fragile way to filter goals for special handling.

The system may need additional refinement going forward, but this seems like good step in the right direction. One thing I notice is that a single specification statement can produce multiple goals (e.g., a points-to requires both that the a memory read succeeds, and that the resulting value is the one expected), each of which have the same tags.

@robdockins robdockins requested a review from chameco June 2, 2022 16:03
currently tracks the location a condition was asserted
(in the proof script), and user-specified "tags"
that can be associated. The condition metadata is
threaded through symbolic exeuction and attached to
the resulting verification goals.  Then, tactics
can query the tags associated to goals in order
to filter them and take different actions.

Currently, only the LLVM verification method threads
through metadata information; the JVM and X86 verification
modules need to be modified in a similar way.
apply after structural matching. In this (common) special case,
we can have a more natural handling of function preconditions
which allows us to retain better metadata about them.
Override preconditions are still not currently handled.
with an option.

Changing the number/order of goals generated seems like it was
disrupting some preexisting proofs.
Copy link
Contributor

@chameco chameco left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks good overall, this is exciting. We should open an issue detailing any missing JVM functionality.

src/SAWScript/Crucible/Common/Setup/Type.hs Outdated Show resolved Hide resolved
src/SAWScript/Crucible/JVM/ResolveSetupValue.hs Outdated Show resolved Hide resolved
src/SAWScript/X86.hs Show resolved Hide resolved
@robdockins robdockins added the PR: ready to merge Magic flag for pull requests to ask Mergify to merge given an approval and a successful CI run label Jun 2, 2022
@mergify mergify bot merged commit 54d8f45 into master Jun 2, 2022
@mergify mergify bot deleted the rwd/goal-metadata branch June 2, 2022 23:14
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
PR: ready to merge Magic flag for pull requests to ask Mergify to merge given an approval and a successful CI run
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants