|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Objectjif.types.Solver
jif.types.SolverGLB
public class SolverGLB
A solver of Jif constraints. Finds solution to constraints essentially by propogating lower bounds forwards.
Field Summary |
---|
Fields inherited from class jif.types.Solver |
---|
dynBounds, STATUS_NO_SOLUTION, STATUS_NOT_SOLVED, STATUS_SOLVED, STATUS_SOLVING, stop_constraint, ts |
Constructor Summary | |
---|---|
|
SolverGLB(JifTypeSystem ts,
java.lang.String solverName)
Constructor |
protected |
SolverGLB(SolverGLB js)
Constructor |
Method Summary | |
---|---|
protected void |
addDependencies(Equation eqn)
This method adds the correct dependencies from Equation eqn to varaiables occuring in eqn, and dependencies in the other direction (that is, from variables occuring in eqn to eqn). |
protected boolean |
allActivesAreMultiVarRHS()
return true if every active constraint has multi vars on the RHS. |
protected void |
checkEquation(Equation eqn)
Check that the equation eqn is satisfied. |
protected Equation |
findContradictiveEqn(LabelConstraint c)
Find a contradicting equation. |
protected ConfPolicy |
findNeeded(ConfPolicy lhs,
ConfPolicy rhs,
LabelEnv env)
|
protected IntegPolicy |
findNeeded(IntegPolicy lhs,
IntegPolicy rhs,
LabelEnv env)
|
protected Label |
findNeeded(Label lhs,
Label rhs,
LabelEnv env)
Return the most permissive label L such that lhs <= rhs join L |
protected Label |
getDefaultBound()
The default bound of variables in this solver is bottom |
protected void |
refineVariableEquation(VarLabel v,
Equation eqn)
Raise the bound on the label variable v, which is a component of the RHS of the equation eqn. |
protected void |
solve_eqn(Equation eqn)
This method changes the bounds of variables in the RHS of Equation eqn, to make the equation satisfied. |
Methods inherited from class jif.types.Solver |
---|
addConstraint, addDependency, addDependency, addEquationToQueue, addEquationToQueueHead, addTrace, applyBoundsTo, bounds, checkCandidateSolution, createGraph, errorMsg, errorShowConstraint, errorShowDefns, errorShowDetailMsg, errorShowTechnicalMsg, errorStringConstraint, errorStringDefns, findTrace, getQueue, inc_counter, report, reportError, reportTraces, setBound, setBounds, shouldReport, solve_bounds, solve, triggerTransforms, wakeUp |
Methods inherited from class java.lang.Object |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
Constructor Detail |
---|
public SolverGLB(JifTypeSystem ts, java.lang.String solverName)
protected SolverGLB(SolverGLB js)
Method Detail |
---|
protected void addDependencies(Equation eqn)
addDependencies
in class Solver
protected Label getDefaultBound()
getDefaultBound
in class Solver
protected void solve_eqn(Equation eqn) throws polyglot.types.SemanticException
solve_eqn
in class Solver
polyglot.types.SemanticException
protected boolean allActivesAreMultiVarRHS()
protected void refineVariableEquation(VarLabel v, Equation eqn) throws polyglot.types.SemanticException
polyglot.types.SemanticException
protected Label findNeeded(Label lhs, Label rhs, LabelEnv env)
protected ConfPolicy findNeeded(ConfPolicy lhs, ConfPolicy rhs, LabelEnv env)
protected IntegPolicy findNeeded(IntegPolicy lhs, IntegPolicy rhs, LabelEnv env)
protected void checkEquation(Equation eqn) throws polyglot.types.SemanticException
polyglot.types.SemanticException
- if eqn is not satisfied.
polyglot.util.InternalCompilerError
- if eqn contains variablesprotected Equation findContradictiveEqn(LabelConstraint c)
findContradictiveEqn
in class Solver
|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |