Class PropConditionnal

  • All Implemented Interfaces:
    Comparable<Propagator>, ICause, Identity

    public abstract class PropConditionnal
    extends Propagator<Variable>
    A specific propagator which posts constraint on condition.
    The user gives the condition, then
    if the condition returns ESat.TRUE, then posts temporarily the first propagator,
    if the condition returns Esat.FALSE, then it posts temporarily the second propagator,
    Otherwise wait for the condition to be fully (un)satisfied.
    Since:
    06/02/2014
    Author:
    Charles Prud'homme
    • Constructor Detail

      • PropConditionnal

        public PropConditionnal​(Variable[] vars2observe,
                                Constraint[] condTrue,
                                Constraint[] condFalse)
        Parameters:
        vars2observe - set of variables to observe, their modifications triggers the condition checking
        condTrue - the constraint to post if the condition is satisfied
        condFalse - the constraint to post if the condition is not satisfied
    • Method Detail

      • propagate

        public void propagate​(int evtmask)
                       throws ContradictionException
        Description copied from class: Propagator
        Call the main filtering algorithm to apply to the Domain of the Variable objects. It considers the current state of this objects to remove some values from domains and/or instantiate some variables. Calling this method is done from 2 (and only 2) steps:
        - at the initial propagation step,
        - when involved in a reified constraint.
        It should initialized the internal data structure and apply filtering algorithm from scratch.
        Specified by:
        propagate in class Propagator<Variable>
        Parameters:
        evtmask - type of propagation event this must consider.
        Throws:
        ContradictionException - when a contradiction occurs, like domain wipe out or other incoherencies.
      • isEntailed

        public ESat isEntailed()
        Description copied from class: Propagator
        Check wether this is entailed according to the current state of its internal structure. At least, should check the satisfaction of this (when all is instantiated).
        Specified by:
        isEntailed in class Propagator<Variable>
        Returns:
        ESat.TRUE if entailed, ESat.FALSE if not entailed, ESat.UNDEFINED if unknown
      • checkCondition

        public abstract ESat checkCondition()
        Check a specific condition.
        If the condition returns ESat.TRUE, then posts temporarily the first propagator,
        If the condition returns Esat.FALSE, then it posts temporarily the second propagator,
        Otherwise wait for the condition to be fully (un)satisfied.
        Returns:
        Esat