Class PropXplusYeqZ

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

    public class PropXplusYeqZ
    extends Propagator<IntVar>
    A propagator to ensure that X + Y = Z holds, where X, Y and Z are IntVar. This propagator ensures AC when all variables are enumerated, BC otherwise.

    Project: choco.

    Charles Prud'homme
    • Constructor Detail

      • PropXplusYeqZ

        public PropXplusYeqZ​(IntVar X,
                             IntVar Y,
                             IntVar Z,
                             boolean enableAC)
        Create propagator for ternary sum: X + Y =Z
        X - an integer variable
        Y - an integer variable
        Z - an integer variable
    • 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<IntVar>
        evtmask - type of propagation event this must consider.
        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<IntVar>
        ESat.TRUE if entailed, ESat.FALSE if not entailed, ESat.UNDEFINED if unknown
      • explain

        public void explain​(ExplanationForSignedClause explanation,
                            ValueSortedMap<IntVar> front,
                            Implications ig,
                            int p)
        Description copied from interface: ICause
        Clausal explanation for this cause.

        This method must filled explanations with inferred literals. These literals are inferred from the analysis of (a subset of) conflicting nodes stored in front, the implication graph ig and the current node in conflict, not yet contained in front.

        Optionally, this method can update front by looking for a predecessor of any node that seems more relevant than the declared one.

        Specified by:
        explain in interface ICause
        explain in class Propagator<IntVar>
        explanation - explanation to compute
        front - ordered map of (variable,node> in the conflict frontier of the implication graph.
        ig - an implication graph
        p - the pivot node out of front