public class CachingOptimizationProverEnvironment extends Object implements OptimizationProverEnvironment
OptimizationProverEnvironment.OptStatus| Constructor and Description |
|---|
CachingOptimizationProverEnvironment(OptimizationProverEnvironment pDelegate,
Map<OptimizationQuery,OptimizationResult> pCache,
OptimizationCacheStatistics pStatistics) |
| Modifier and Type | Method and Description |
|---|---|
Void |
addConstraint(BooleanFormula constraint)
Add constraint to the context.
|
OptimizationProverEnvironment.OptStatus |
check()
Optimize the objective function subject to the previously
imposed constraints.
|
void |
close()
Closes the prover environment.
|
Model |
getModel()
Get a satisfying assignment.
|
ImmutableList<Model.ValueAssignment> |
getModelAssignments()
Get a list of satisfying assignments.
|
boolean |
isUnsat()
Check whether the conjunction of all formulas on the stack is unsatisfiable.
|
Optional<Rational> |
lower(int handle,
Rational epsilon) |
int |
maximize(Formula objective)
Add the maximization
objective. |
int |
minimize(Formula objective)
Add minimization
objective. |
void |
pop()
Remove one formula from the environment stack.
|
void |
push()
Create backtracking point.
|
Void |
push(BooleanFormula f)
Push a backtracking point and
add a formula to the environment stack, asserting it.
|
String |
toString() |
Optional<Rational> |
upper(int handle,
Rational epsilon) |
public CachingOptimizationProverEnvironment(OptimizationProverEnvironment pDelegate, Map<OptimizationQuery,OptimizationResult> pCache, OptimizationCacheStatistics pStatistics)
public int maximize(Formula objective)
OptimizationProverEnvironmentobjective.
Note: push/pop may be used for switching objectivesmaximize in interface OptimizationProverEnvironmentpublic int minimize(Formula objective)
OptimizationProverEnvironmentobjective.
Note: push/pop may be used for switching objectivesminimize in interface OptimizationProverEnvironment@Nullable public Void addConstraint(BooleanFormula constraint)
BasicProverEnvironmentaddConstraint in interface BasicProverEnvironment<Void>@Nullable public Void push(BooleanFormula f)
BasicProverEnvironmentpush in interface BasicProverEnvironment<Void>public void push()
BasicProverEnvironmentpush in interface BasicProverEnvironment<Void>public void pop()
BasicProverEnvironmentpop in interface BasicProverEnvironment<Void>public OptimizationProverEnvironment.OptStatus check() throws InterruptedException, SolverException
OptimizationProverEnvironmentcheck in interface OptimizationProverEnvironmentInterruptedExceptionSolverExceptionpublic Optional<Rational> upper(int handle, Rational epsilon)
upper in interface OptimizationProverEnvironmentepsilon - Value to substitute for the epsilon.public Optional<Rational> lower(int handle, Rational epsilon)
lower in interface OptimizationProverEnvironmentepsilon - Value to substitute for the epsilon.public boolean isUnsat()
throws SolverException,
InterruptedException
BasicProverEnvironmentisUnsat in interface BasicProverEnvironment<Void>SolverExceptionInterruptedExceptionpublic Model getModel() throws SolverException
BasicProverEnvironmentBasicProverEnvironment.isUnsat() call
that returned false.
A model might contain additional symbols with their evaluation,
if a solver uses its own temporary symbols.
There should be at least an value-assignment for each free symbol.getModel in interface BasicProverEnvironment<Void>SolverExceptionpublic ImmutableList<Model.ValueAssignment> getModelAssignments() throws SolverException
BasicProverEnvironmentImmutableList.copyOf(getModel()),
but removes the need for calling Model.close().
Note that if you need to iterate multiple times over the model
it may be more efficient to use this method instead of BasicProverEnvironment.getModel()
(depending on the solver).
getModelAssignments in interface BasicProverEnvironment<Void>SolverExceptionpublic void close()
BasicProverEnvironmentclose in interface AutoCloseableclose in interface BasicProverEnvironment<Void>