Class PropSat

    • Constructor Detail

      • PropSat

        public PropSat​(Model model)
        Create a (unique) propagator for clauses recording and propagation.
        Parameters:
        model - the solver that declares the propagator
    • 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.
      • propagate

        public void propagate​(int idxVarInProp,
                              int mask)
                       throws ContradictionException
        Description copied from class: Propagator
        Incremental filtering algorithm defined within the Propagator, called whenever the variable of index idxVarInProp has changed. This method calls a CUSTOM_PROPAGATION (coarse-grained) by default.

        This method should be overridden if the argument reactToFineEvt is set to true in the constructor. Otherwise, it executes propagate(PropagatorEventType.CUSTOM_PROPAGATION.getStrengthenedMask());

        Overrides:
        propagate in class Propagator<Variable>
        Parameters:
        idxVarInProp - index of the variable var in this
        mask - type of event
        Throws:
        ContradictionException - if a contradiction occurs
      • 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
      • getMiniSat

        public MiniSat getMiniSat()
        Returns:
        the underlying SAT solver
      • initialize

        public void initialize()
        Initializes this propagator
      • makeBool

        public int makeBool​(BoolVar expr)
        Creates, or returns if already existing, the SAT variable corresponding to this CP variable.
        Parameters:
        expr - a boolean variable
        Returns:
        its SAT twin
      • makeIntEq

        public int makeIntEq​(IntVar var,
                             int val)
        Creates, or returns if already existing, the SAT variable corresponding to the relationship var = val.
        Parameters:
        var - an integer variable
        val - an integer
        Returns:
        its SAT twin
      • makeIntLe

        public int makeIntLe​(IntVar var,
                             int val)
        Creates, or returns if already existing, the SAT variable corresponding to the relationship varval.
        Parameters:
        var - an integer variable
        val - an integer
        Returns:
        its SAT twin
      • makeSetIn

        public int makeSetIn​(SetVar var,
                             int val)
        Creates, or returns if already existing, the SAT variable corresponding to the relationship valvar.
        Parameters:
        var - an integer variable
        val - an integer
        Returns:
        its SAT twin
      • lazyAddVar

        public void lazyAddVar​(Variable var)
      • value

        protected ESat value​(int svar)
      • beforeAddingClauses

        public void beforeAddingClauses()
      • afterAddingClauses

        public void afterAddingClauses()
      • addClause

        public boolean addClause​(gnu.trove.list.TIntList lits)
        Add a clause to SAT solver
        Parameters:
        lits - clause
        Returns:
        false if failure is detected
      • addLearnt

        public void addLearnt​(int... lits)
        Add learnt clause to SAT solver
        Parameters:
        lits - clause