pub struct Model<'st> { /* private fields */ }
Expand description
A Model
contains the values of all named constants returned through
Solver::check_sat_with_model
or by calling Solver::get_model
.
The two most common usages of Model
is to:
- Extract values for constants using
Model::eval
. - Print out the produced model using
println!("{model}")
.
Implementations§
Source§impl<'st> Model<'st>
impl<'st> Model<'st>
Sourcepub fn eval<T: Sorted<'st>>(&self, x: Const<'st, T>) -> Option<T::Inner>
pub fn eval<T: Sorted<'st>>(&self, x: Const<'st, T>) -> Option<T::Inner>
Extract the value of a constant. Returns None
if the value was not
part of the model, which occurs if the constant was not part of any
expression asserted.
let x = Int::new_const(&st, "x");
solver.assert(x._eq(12))?;
let model = solver.check_sat_with_model()?.expect_sat()?;
match model.eval(x) {
Some(x) => println!("This is the value of x: {x}"),
None => panic!("Oh no! This should never happen, as x was part of an assert"),
}
Trait Implementations§
Auto Trait Implementations§
impl<'st> Freeze for Model<'st>
impl<'st> !RefUnwindSafe for Model<'st>
impl<'st> !Send for Model<'st>
impl<'st> !Sync for Model<'st>
impl<'st> Unpin for Model<'st>
impl<'st> !UnwindSafe for Model<'st>
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> 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 moreSource§impl<'st, T> IntoWithStorage<'st, T> for T
impl<'st, T> IntoWithStorage<'st, T> for T
Source§fn into_with_storage(self, _st: &'st Storage) -> T
fn into_with_storage(self, _st: &'st Storage) -> T
Construct a
STerm
with the presence of Storage