Reject duplicate mir_points_to
statements in a precondition
#1956
Labels
subsystem: crucible-mir
Issues related to Rust verification with crucible-mir and/or mir-json
type: feature request
Issues requesting a new feature or capability
The LLVM backend tracks writes in a precondition made through
llvm_points_to
statements and will throw an error if the same location is written to twice. For example:When SAW symbolically executes
f
, should it use27
or42
as the argument? It's not clear, as the order in whichllvm_points_to
statements appear is not supposed to matter. Because of this ambiguity, SAW will reject this specification:The
Multiple points-to preconditions on same pointer
check is not currently implemented for the MIR backend, however. SAW does verify this program:But this is brittle: the only reason that this works is that SAW just so happens to order the side effectful operations in the precondition such that
27
is the last value written tox
before invoking the symbolic simulator. If42
had instead been the last value written, this this would have failed.This issue exists to track the idea of porting the LLVM backend's duplicate
points_to
check over to the MIR backend. Note that we will need to be careful in how this interacts with themir_ref_value
command, asmir_ref_value
is meant to allocate and initialize a reference. We want to ensure that the initialization step (1) happens before anymir_points_to
statements are executed, and (2) is ignored by the duplicate check.The text was updated successfully, but these errors were encountered: