pub enum SmtObligation {
Aligned {
place: PlaceKey,
align: u64,
ty_name: String,
},
NonZero {
place: PlaceKey,
},
Range {
value: PlaceKey,
lower: i128,
upper: Option<i128>,
},
InBounds {
place: PlaceKey,
ty_name: String,
elem_size: u64,
access_count: SmtTerm,
},
PointerRangeInBounds {
place: PlaceKey,
ty_name: String,
lower_delta: SmtTerm,
upper_delta: SmtTerm,
},
Initialized {
place: PlaceKey,
ty_name: String,
elements: SmtTerm,
elem_size: Option<u64>,
array_elem_size: Option<u64>,
array_len_term: Option<SmtTerm>,
},
Allocated {
place: PlaceKey,
ty_name: String,
elements: SmtTerm,
},
NonOverlapping {
left: PlaceKey,
right: PlaceKey,
left_count: SmtTerm,
right_count: SmtTerm,
elem_size: u64,
},
Predicate {
predicates: Vec<SmtPredicate>,
},
}Expand description
General SMT obligation produced by an SP-specific lowering.
Variants§
Aligned
Prove that the address denoted by place is aligned to align bytes.
NonZero
Future form for non-zero integer/address requirements.
Range
Future form for interval/bounds requirements.
InBounds
Prove that place points to access_count elements inside its object.
PointerRangeInBounds
Prove that pointer arithmetic starting at place stays inside the
matched object for the whole delta range.
Initialized
Prove that place denotes initialized memory for elements elements.
Fields
Allocated
Prove that place points to elements elements in one live allocation.
NonOverlapping
Prove that two pointer ranges do not overlap.
Predicate
Prove one or more numeric predicates.
Fields
§
predicates: Vec<SmtPredicate>Implementations§
Trait Implementations§
Source§impl Clone for SmtObligation
impl Clone for SmtObligation
Source§fn clone(&self) -> SmtObligation
fn clone(&self) -> SmtObligation
Returns a duplicate of the value. Read more
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source. Read moreAuto Trait Implementations§
impl Freeze for SmtObligation
impl RefUnwindSafe for SmtObligation
impl Send for SmtObligation
impl Sync for SmtObligation
impl Unpin for SmtObligation
impl UnwindSafe for SmtObligation
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more