pub struct ExplanationContext<'a> { /* private fields */ }Expand description
The context that is available when lazily explaining propagations.
See [Propagator] for more information.
Implementations§
Source§impl<'a> ExplanationContext<'a>
impl<'a> ExplanationContext<'a>
pub fn get_predicate(&mut self, predicate_id: PredicateId) -> Predicate
Sourcepub fn working_nogood(&self) -> impl Iterator<Item = Predicate>
pub fn working_nogood(&self) -> impl Iterator<Item = Predicate>
Get the current working nogood.
The working nogood does not necessarily contain the predicate that is being explained. However, the explanation will be used to either resolve with the working nogood or minimize it some other way.
Sourcepub fn get_trail_position(&self) -> usize
pub fn get_trail_position(&self) -> usize
Returns the trail position before which the propagation took place.
For example, if the context is created for explaining a predicate [x >= v] at trail
position i, then this method will return i - 1
Trait Implementations§
Auto Trait Implementations§
impl<'a> Freeze for ExplanationContext<'a>
impl<'a> RefUnwindSafe for ExplanationContext<'a>
impl<'a> Send for ExplanationContext<'a>
impl<'a> Sync for ExplanationContext<'a>
impl<'a> Unpin for ExplanationContext<'a>
impl<'a> !UnwindSafe for ExplanationContext<'a>
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> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
Source§fn into_any(self: Box<T>) -> Box<dyn Any>
fn into_any(self: Box<T>) -> Box<dyn Any>
Convert
Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>. Box<dyn Any> can
then be further downcast into Box<ConcreteType> where ConcreteType implements Trait.Source§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Convert
Rc<Trait> (where Trait: Downcast) to Rc<Any>. Rc<Any> can then be
further downcast into Rc<ConcreteType> where ConcreteType implements Trait.Source§fn as_any(&self) -> &(dyn Any + 'static)
fn as_any(&self) -> &(dyn Any + 'static)
Convert
&Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &Any’s vtable from &Trait’s.Source§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
Convert
&mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &mut Any’s vtable from &mut Trait’s.Source§impl<T> DowncastSync for T
impl<T> DowncastSync for T
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<T> ProblemSolution for Twhere
T: HasAssignments,
impl<T> ProblemSolution for Twhere
T: HasAssignments,
Source§fn num_domains(&self) -> usize
fn num_domains(&self) -> usize
Returns the number of defined DomainIds.
fn get_integer_value<Var>(&self, var: Var) -> i32where
Var: IntegerVariable,
fn get_literal_value(&self, literal: Literal) -> bool
Source§impl<T> ReadDomains for Twhere
T: HasAssignments,
impl<T> ReadDomains for Twhere
T: HasAssignments,
Source§fn evaluate_predicate(&self, predicate: Predicate) -> Option<bool>
fn evaluate_predicate(&self, predicate: Predicate) -> Option<bool>
Returns whether the provided
Predicate is assigned (either true or false) or is
currently unassigned.Source§fn evaluate_literal(&self, literal: Literal) -> Option<bool>
fn evaluate_literal(&self, literal: Literal) -> Option<bool>
Returns whether the provided
Literal is assigned (either true or false) or is
currently unassigned.Source§fn get_holes_at_current_checkpoint<Var>(
&self,
var: &Var,
) -> impl Iterator<Item = i32>where
Var: IntegerVariable,
fn get_holes_at_current_checkpoint<Var>(
&self,
var: &Var,
) -> impl Iterator<Item = i32>where
Var: IntegerVariable,
Returns the holes in the domain which were created on the current checkpoint.
Source§fn get_holes<Var>(&self, var: &Var) -> impl Iterator<Item = i32>where
Var: IntegerVariable,
fn get_holes<Var>(&self, var: &Var) -> impl Iterator<Item = i32>where
Var: IntegerVariable,
Returns all of the holes (currently) in the domain of
var (including ones which were
created at previous decision levels).Source§fn is_fixed<Var>(&self, var: &Var) -> boolwhere
Var: IntegerVariable,
fn is_fixed<Var>(&self, var: &Var) -> boolwhere
Var: IntegerVariable,
Returns
true if the domain of the given variable is singleton (i.e., the variable is
fixed).Source§fn lower_bound<Var>(&self, var: &Var) -> i32where
Var: IntegerVariable,
fn lower_bound<Var>(&self, var: &Var) -> i32where
Var: IntegerVariable,
Returns the lowest value in the domain of
var.Source§fn lower_bound_at_trail_position<Var>(
&self,
var: &Var,
trail_position: usize,
) -> i32where
Var: IntegerVariable,
fn lower_bound_at_trail_position<Var>(
&self,
var: &Var,
trail_position: usize,
) -> i32where
Var: IntegerVariable,
Source§fn upper_bound<Var>(&self, var: &Var) -> i32where
Var: IntegerVariable,
fn upper_bound<Var>(&self, var: &Var) -> i32where
Var: IntegerVariable,
Returns the highest value in the domain of
var.Source§fn upper_bound_at_trail_position<Var>(
&self,
var: &Var,
trail_position: usize,
) -> i32where
Var: IntegerVariable,
fn upper_bound_at_trail_position<Var>(
&self,
var: &Var,
trail_position: usize,
) -> i32where
Var: IntegerVariable,
Source§fn contains<Var>(&self, var: &Var, value: i32) -> boolwhere
Var: IntegerVariable,
fn contains<Var>(&self, var: &Var, value: i32) -> boolwhere
Var: IntegerVariable,
Returns whether the provided
value is in the domain of var.Source§fn contains_at_trail_position<Var>(
&self,
var: &Var,
value: i32,
trail_position: usize,
) -> boolwhere
Var: IntegerVariable,
fn contains_at_trail_position<Var>(
&self,
var: &Var,
value: i32,
trail_position: usize,
) -> boolwhere
Var: IntegerVariable,
Source§fn iterate_domain<Var>(&self, var: &Var) -> impl Iterator<Item = i32>where
Var: IntegerVariable,
fn iterate_domain<Var>(&self, var: &Var) -> impl Iterator<Item = i32>where
Var: IntegerVariable,
Returns an
Iterator over the values in the domain of the provided var (including the
lower-bound and upper-bound values).Source§fn is_decision_predicate(&self, predicate: Predicate) -> bool
fn is_decision_predicate(&self, predicate: Predicate) -> bool
Source§fn is_initial_bound(&self, predicate: Predicate) -> bool
fn is_initial_bound(&self, predicate: Predicate) -> bool
Returns whether the provided
Predicate is an initial bound of its domain.Source§fn read_trailed_integer(&self, trailed_integer: TrailedInteger) -> i64
fn read_trailed_integer(&self, trailed_integer: TrailedInteger) -> i64
Returns the current value of the provided
TrailedInteger.Source§fn new_trailed_integer(&mut self, initial_value: i64) -> TrailedInteger
fn new_trailed_integer(&mut self, initial_value: i64) -> TrailedInteger
Creates a new
TrailedInteger assigned to the provided initial_value.Source§fn write_trailed_integer(&mut self, trailed_integer: TrailedInteger, value: i64)
fn write_trailed_integer(&mut self, trailed_integer: TrailedInteger, value: i64)
Assigns the provided
TrailedInteger to the provided value.Source§fn get_checkpoint(&self) -> usize
fn get_checkpoint(&self) -> usize
Returns the current checkpoint.
Source§fn initial_lower_bound(&self, var: DomainId) -> i32
fn initial_lower_bound(&self, var: DomainId) -> i32
Returns the lowest value in the domain of
var at the time of its creation.Source§fn initial_upper_bound(&self, var: DomainId) -> i32
fn initial_upper_bound(&self, var: DomainId) -> i32
Returns the highest value in the domain of
var at the time of its creation.Source§fn initial_holes(&self, var: DomainId) -> Vec<i32>
fn initial_holes(&self, var: DomainId) -> Vec<i32>
Returns all of the holes present at the time of thecreation of
var.Source§fn number_of_domains(&self) -> u32
fn number_of_domains(&self) -> u32
Returns the number of currently defined domains.