Class NQueensEnumeratingPropagator
- All Implemented Interfaces:
UserPropagator
- Direct Known Subclasses:
NQueensConstraintPropagator
-
Field Summary
FieldsModifier and TypeFieldDescriptionprotected final Map<BooleanFormula,Boolean> protected final Deque<BooleanFormula>protected final Set<Map<BooleanFormula,Integer>> -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionintvoidinitializeWithBackend(PropagatorBackend backend) This method is invoked after the user propagator is registered viaBasicProverEnvironment.registerUserPropagator(UserPropagator).voidThis callback is invoked when the solver finds a complete satisfying assignment.voidonKnownValue(BooleanFormula var, boolean value) This callback is invoked if the solver gets to know the value of a registered expression (UserPropagator.registerExpression(org.sosy_lab.java_smt.api.BooleanFormula)).voidonPop(int numPoppedLevel) This callback is invoked when the solver backtracks.voidonPush()This callback is invoked whenever the solver creates a new decision level.Methods inherited from class org.sosy_lab.java_smt.basicimpl.AbstractUserPropagator
getBackend, onDecision, registerExpression
-
Field Details
-
fixedCount
-
fixedVariables
-
currentModel
-
modelSet
-
-
Constructor Details
-
NQueensEnumeratingPropagator
public NQueensEnumeratingPropagator()
-
-
Method Details
-
getNumOfSolutions
public int getNumOfSolutions() -
onPush
public void onPush()Description copied from interface:UserPropagatorThis callback is invoked whenever the solver creates a new decision level. A user propagator should maintain backtracking points on each push to enable later backtracking.The onPush or onPop operation refers to internal state of the SMT/SAT solver while running a SAT check. This does not relate to Prover operations in the SMT-based API, such as
BasicProverEnvironment.push(org.sosy_lab.java_smt.api.BooleanFormula)orBasicProverEnvironment.pop().- Specified by:
onPushin interfaceUserPropagator- Overrides:
onPushin classAbstractUserPropagator
-
onPop
public void onPop(int numPoppedLevel) Description copied from interface:UserPropagatorThis callback is invoked when the solver backtracks. The solver can backtrack multiple levels simultaneously.The onPush or onPop operation refers to internal state of the SMT/SAT solver while running a SAT check. This does not relate to Prover operations in the SMT-based API, such as
BasicProverEnvironment.push(org.sosy_lab.java_smt.api.BooleanFormula)orBasicProverEnvironment.pop().- Specified by:
onPopin interfaceUserPropagator- Overrides:
onPopin classAbstractUserPropagator- Parameters:
numPoppedLevel- The number of levels to backtrack (~ number of pushes to backtrack).
-
onFinalCheck
public void onFinalCheck()Description copied from interface:UserPropagatorThis callback is invoked when the solver finds a complete satisfying assignment. The user can check the found model for consistency and potentially raise conflicts viaPropagatorBackend.propagateConflict(BooleanFormula[]).Note: This callback is only invoked if the user propagator enabled it via
PropagatorBackend.notifyOnFinalCheck().- Specified by:
onFinalCheckin interfaceUserPropagator- Overrides:
onFinalCheckin classAbstractUserPropagator
-
onKnownValue
Description copied from interface:UserPropagatorThis callback is invoked if the solver gets to know the value of a registered expression (UserPropagator.registerExpression(org.sosy_lab.java_smt.api.BooleanFormula)). Within the callback, the user can raise conflicts viaPropagatorBackend.propagateConflict(org.sosy_lab.java_smt.api.BooleanFormula[]), propagate consequences viaPropagatorBackend.propagateConsequence(org.sosy_lab.java_smt.api.BooleanFormula[], org.sosy_lab.java_smt.api.BooleanFormula), or influence the solvers decision heuristics viaPropagatorBackend.propagateNextDecision(org.sosy_lab.java_smt.api.BooleanFormula, java.util.Optional<java.lang.Boolean>).The reported value is only known on the current and later push levels, but will get invalidated when backtracking.
Note: This callback is only invoked if the user propagator enabled it via
PropagatorBackend.notifyOnKnownValue().- Specified by:
onKnownValuein interfaceUserPropagator- Overrides:
onKnownValuein classAbstractUserPropagator- Parameters:
var- The expressions whose value is known.value- The value of the expression.
-
initializeWithBackend
Description copied from interface:UserPropagatorThis method is invoked after the user propagator is registered viaBasicProverEnvironment.registerUserPropagator(UserPropagator). The user can enable notifications by accessing the providedPropagatorBackend.Warning: During its lifetime, a user propagator shall only be registered once via
BasicProverEnvironment.registerUserPropagator(UserPropagator)for otherwise unexpected errors can occur. Implementations are advised to throw exceptions if this method is called multiple times.- Specified by:
initializeWithBackendin interfaceUserPropagator- Overrides:
initializeWithBackendin classAbstractUserPropagator
-