Package it.unive.lisa.analysis.numeric
Class Sign
- java.lang.Object
-
- it.unive.lisa.analysis.BaseLattice<T>
-
- it.unive.lisa.analysis.nonrelational.value.BaseNonRelationalValueDomain<Sign>
-
- it.unive.lisa.analysis.numeric.Sign
-
- All Implemented Interfaces:
it.unive.lisa.analysis.Lattice<Sign>,it.unive.lisa.analysis.nonrelational.NonRelationalDomain<Sign,it.unive.lisa.symbolic.value.ValueExpression,it.unive.lisa.analysis.nonrelational.value.ValueEnvironment<Sign>>,it.unive.lisa.analysis.nonrelational.NonRelationalElement<Sign,it.unive.lisa.symbolic.value.ValueExpression,it.unive.lisa.analysis.nonrelational.value.ValueEnvironment<Sign>>,it.unive.lisa.analysis.nonrelational.value.NonRelationalValueDomain<Sign>,it.unive.lisa.analysis.SemanticEvaluator
public class Sign extends it.unive.lisa.analysis.nonrelational.value.BaseNonRelationalValueDomain<Sign>
The basic overflow-insensitive Sign abstract domain, tracking zero, strictly positive and strictly negative integer values, implemented as aBaseNonRelationalValueDomain, handling top and bottom values for the expression evaluation and bottom values for the expression satisfiability. Top and bottom cases for least upper bounds, widening and less or equals operations are handled byBaseLatticeinBaseLattice.lub(L),BaseLattice.widening(L)andBaseLattice.lessOrEqual(L)methods, respectively.
-
-
Constructor Summary
Constructors Constructor Description Sign()Builds the sign abstract domain, representing the top of the sign abstract domain.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description protected it.unive.lisa.analysis.nonrelational.value.ValueEnvironment<Sign>assumeBinaryExpression(it.unive.lisa.analysis.nonrelational.value.ValueEnvironment<Sign> environment, it.unive.lisa.symbolic.value.operator.binary.BinaryOperator operator, it.unive.lisa.symbolic.value.ValueExpression left, it.unive.lisa.symbolic.value.ValueExpression right, it.unive.lisa.program.cfg.ProgramPoint pp)Signbottom()booleanequals(java.lang.Object obj)protected SignevalBinaryExpression(it.unive.lisa.symbolic.value.operator.binary.BinaryOperator operator, Sign left, Sign right, it.unive.lisa.program.cfg.ProgramPoint pp)protected SignevalNonNullConstant(it.unive.lisa.symbolic.value.Constant constant, it.unive.lisa.program.cfg.ProgramPoint pp)protected SignevalNullConstant(it.unive.lisa.program.cfg.ProgramPoint pp)protected SignevalUnaryExpression(it.unive.lisa.symbolic.value.operator.unary.UnaryOperator operator, Sign arg, it.unive.lisa.program.cfg.ProgramPoint pp)inthashCode()protected booleanlessOrEqualAux(Sign other)protected SignlubAux(Sign other)it.unive.lisa.analysis.representation.DomainRepresentationrepresentation()protected it.unive.lisa.analysis.SemanticDomain.SatisfiabilitysatisfiesBinaryExpression(it.unive.lisa.symbolic.value.operator.binary.BinaryOperator operator, Sign left, Sign right, it.unive.lisa.program.cfg.ProgramPoint pp)protected it.unive.lisa.analysis.SemanticDomain.SatisfiabilitysatisfiesTernaryExpression(it.unive.lisa.symbolic.value.operator.ternary.TernaryOperator operator, Sign left, Sign middle, Sign right, it.unive.lisa.program.cfg.ProgramPoint pp)Signtop()protected SignwideningAux(Sign other)-
Methods inherited from class it.unive.lisa.analysis.nonrelational.value.BaseNonRelationalValueDomain
assume, assumeTernaryExpression, assumeUnaryExpression, canProcess, eval, evalIdentifier, evalPushAny, evalTernaryExpression, evalTypeCast, evalTypeConv, glb, glbAux, satisfies, satisfiesAbstractValue, satisfiesNonNullConstant, satisfiesNullConstant, satisfiesUnaryExpression, toString, tracksIdentifiers
-
Methods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
-
-
-
-
Method Detail
-
top
public Sign top()
-
bottom
public Sign bottom()
-
representation
public it.unive.lisa.analysis.representation.DomainRepresentation representation()
-
evalNullConstant
protected Sign evalNullConstant(it.unive.lisa.program.cfg.ProgramPoint pp)
- Overrides:
evalNullConstantin classit.unive.lisa.analysis.nonrelational.value.BaseNonRelationalValueDomain<Sign>
-
evalNonNullConstant
protected Sign evalNonNullConstant(it.unive.lisa.symbolic.value.Constant constant, it.unive.lisa.program.cfg.ProgramPoint pp)
- Overrides:
evalNonNullConstantin classit.unive.lisa.analysis.nonrelational.value.BaseNonRelationalValueDomain<Sign>
-
evalUnaryExpression
protected Sign evalUnaryExpression(it.unive.lisa.symbolic.value.operator.unary.UnaryOperator operator, Sign arg, it.unive.lisa.program.cfg.ProgramPoint pp)
- Overrides:
evalUnaryExpressionin classit.unive.lisa.analysis.nonrelational.value.BaseNonRelationalValueDomain<Sign>
-
evalBinaryExpression
protected Sign evalBinaryExpression(it.unive.lisa.symbolic.value.operator.binary.BinaryOperator operator, Sign left, Sign right, it.unive.lisa.program.cfg.ProgramPoint pp)
- Overrides:
evalBinaryExpressionin classit.unive.lisa.analysis.nonrelational.value.BaseNonRelationalValueDomain<Sign>
-
lubAux
protected Sign lubAux(Sign other) throws it.unive.lisa.analysis.SemanticException
- Specified by:
lubAuxin classit.unive.lisa.analysis.BaseLattice<Sign>- Throws:
it.unive.lisa.analysis.SemanticException
-
wideningAux
protected Sign wideningAux(Sign other) throws it.unive.lisa.analysis.SemanticException
- Specified by:
wideningAuxin classit.unive.lisa.analysis.BaseLattice<Sign>- Throws:
it.unive.lisa.analysis.SemanticException
-
lessOrEqualAux
protected boolean lessOrEqualAux(Sign other) throws it.unive.lisa.analysis.SemanticException
- Specified by:
lessOrEqualAuxin classit.unive.lisa.analysis.BaseLattice<Sign>- Throws:
it.unive.lisa.analysis.SemanticException
-
hashCode
public int hashCode()
- Specified by:
hashCodein classit.unive.lisa.analysis.BaseLattice<Sign>
-
equals
public boolean equals(java.lang.Object obj)
- Specified by:
equalsin classit.unive.lisa.analysis.BaseLattice<Sign>
-
satisfiesBinaryExpression
protected it.unive.lisa.analysis.SemanticDomain.Satisfiability satisfiesBinaryExpression(it.unive.lisa.symbolic.value.operator.binary.BinaryOperator operator, Sign left, Sign right, it.unive.lisa.program.cfg.ProgramPoint pp)- Overrides:
satisfiesBinaryExpressionin classit.unive.lisa.analysis.nonrelational.value.BaseNonRelationalValueDomain<Sign>
-
satisfiesTernaryExpression
protected it.unive.lisa.analysis.SemanticDomain.Satisfiability satisfiesTernaryExpression(it.unive.lisa.symbolic.value.operator.ternary.TernaryOperator operator, Sign left, Sign middle, Sign right, it.unive.lisa.program.cfg.ProgramPoint pp)- Overrides:
satisfiesTernaryExpressionin classit.unive.lisa.analysis.nonrelational.value.BaseNonRelationalValueDomain<Sign>
-
assumeBinaryExpression
protected it.unive.lisa.analysis.nonrelational.value.ValueEnvironment<Sign> assumeBinaryExpression(it.unive.lisa.analysis.nonrelational.value.ValueEnvironment<Sign> environment, it.unive.lisa.symbolic.value.operator.binary.BinaryOperator operator, it.unive.lisa.symbolic.value.ValueExpression left, it.unive.lisa.symbolic.value.ValueExpression right, it.unive.lisa.program.cfg.ProgramPoint pp) throws it.unive.lisa.analysis.SemanticException
- Overrides:
assumeBinaryExpressionin classit.unive.lisa.analysis.nonrelational.value.BaseNonRelationalValueDomain<Sign>- Throws:
it.unive.lisa.analysis.SemanticException
-
-