Package it.unive.lisa.analysis.numeric
Class IntegerConstantPropagation
- java.lang.Object
-
- it.unive.lisa.analysis.BaseLattice<T>
-
- it.unive.lisa.analysis.nonrelational.value.BaseNonRelationalValueDomain<IntegerConstantPropagation>
-
- it.unive.lisa.analysis.numeric.IntegerConstantPropagation
-
- All Implemented Interfaces:
it.unive.lisa.analysis.Lattice<IntegerConstantPropagation>,it.unive.lisa.analysis.nonrelational.NonRelationalDomain<IntegerConstantPropagation,it.unive.lisa.symbolic.value.ValueExpression,it.unive.lisa.analysis.nonrelational.value.ValueEnvironment<IntegerConstantPropagation>>,it.unive.lisa.analysis.nonrelational.NonRelationalElement<IntegerConstantPropagation,it.unive.lisa.symbolic.value.ValueExpression,it.unive.lisa.analysis.nonrelational.value.ValueEnvironment<IntegerConstantPropagation>>,it.unive.lisa.analysis.nonrelational.value.NonRelationalValueDomain<IntegerConstantPropagation>,it.unive.lisa.analysis.SemanticEvaluator
public class IntegerConstantPropagation extends it.unive.lisa.analysis.nonrelational.value.BaseNonRelationalValueDomain<IntegerConstantPropagation>
The overflow-insensitive basic integer constant propagation abstract domain, tracking if a certain integer value has constant value or not, 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), respectively.
-
-
Constructor Summary
Constructors Constructor Description IntegerConstantPropagation()Builds the top abstract value.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description protected it.unive.lisa.analysis.nonrelational.value.ValueEnvironment<IntegerConstantPropagation>assumeBinaryExpression(it.unive.lisa.analysis.nonrelational.value.ValueEnvironment<IntegerConstantPropagation> 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)IntegerConstantPropagationbottom()booleanequals(java.lang.Object obj)protected IntegerConstantPropagationevalBinaryExpression(it.unive.lisa.symbolic.value.operator.binary.BinaryOperator operator, IntegerConstantPropagation left, IntegerConstantPropagation right, it.unive.lisa.program.cfg.ProgramPoint pp)protected IntegerConstantPropagationevalNonNullConstant(it.unive.lisa.symbolic.value.Constant constant, it.unive.lisa.program.cfg.ProgramPoint pp)protected IntegerConstantPropagationevalNullConstant(it.unive.lisa.program.cfg.ProgramPoint pp)protected IntegerConstantPropagationevalTernaryExpression(it.unive.lisa.symbolic.value.operator.ternary.TernaryOperator operator, IntegerConstantPropagation left, IntegerConstantPropagation middle, IntegerConstantPropagation right, it.unive.lisa.program.cfg.ProgramPoint pp)protected IntegerConstantPropagationevalUnaryExpression(it.unive.lisa.symbolic.value.operator.unary.UnaryOperator operator, IntegerConstantPropagation arg, it.unive.lisa.program.cfg.ProgramPoint pp)inthashCode()booleanisTop()protected booleanlessOrEqualAux(IntegerConstantPropagation other)protected IntegerConstantPropagationlubAux(IntegerConstantPropagation other)it.unive.lisa.analysis.representation.DomainRepresentationrepresentation()protected it.unive.lisa.analysis.SemanticDomain.SatisfiabilitysatisfiesBinaryExpression(it.unive.lisa.symbolic.value.operator.binary.BinaryOperator operator, IntegerConstantPropagation left, IntegerConstantPropagation right, it.unive.lisa.program.cfg.ProgramPoint pp)IntegerConstantPropagationtop()protected IntegerConstantPropagationwideningAux(IntegerConstantPropagation other)-
Methods inherited from class it.unive.lisa.analysis.nonrelational.value.BaseNonRelationalValueDomain
assume, assumeTernaryExpression, assumeUnaryExpression, canProcess, eval, evalIdentifier, evalPushAny, evalTypeCast, evalTypeConv, glb, glbAux, satisfies, satisfiesAbstractValue, satisfiesNonNullConstant, satisfiesNullConstant, satisfiesTernaryExpression, satisfiesUnaryExpression, toString, tracksIdentifiers
-
Methods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
-
-
-
-
Method Detail
-
top
public IntegerConstantPropagation top()
-
isTop
public boolean isTop()
-
bottom
public IntegerConstantPropagation bottom()
-
representation
public it.unive.lisa.analysis.representation.DomainRepresentation representation()
-
evalNullConstant
protected IntegerConstantPropagation evalNullConstant(it.unive.lisa.program.cfg.ProgramPoint pp)
- Overrides:
evalNullConstantin classit.unive.lisa.analysis.nonrelational.value.BaseNonRelationalValueDomain<IntegerConstantPropagation>
-
evalNonNullConstant
protected IntegerConstantPropagation evalNonNullConstant(it.unive.lisa.symbolic.value.Constant constant, it.unive.lisa.program.cfg.ProgramPoint pp)
- Overrides:
evalNonNullConstantin classit.unive.lisa.analysis.nonrelational.value.BaseNonRelationalValueDomain<IntegerConstantPropagation>
-
evalUnaryExpression
protected IntegerConstantPropagation evalUnaryExpression(it.unive.lisa.symbolic.value.operator.unary.UnaryOperator operator, IntegerConstantPropagation arg, it.unive.lisa.program.cfg.ProgramPoint pp)
- Overrides:
evalUnaryExpressionin classit.unive.lisa.analysis.nonrelational.value.BaseNonRelationalValueDomain<IntegerConstantPropagation>
-
evalBinaryExpression
protected IntegerConstantPropagation evalBinaryExpression(it.unive.lisa.symbolic.value.operator.binary.BinaryOperator operator, IntegerConstantPropagation left, IntegerConstantPropagation right, it.unive.lisa.program.cfg.ProgramPoint pp)
- Overrides:
evalBinaryExpressionin classit.unive.lisa.analysis.nonrelational.value.BaseNonRelationalValueDomain<IntegerConstantPropagation>
-
evalTernaryExpression
protected IntegerConstantPropagation evalTernaryExpression(it.unive.lisa.symbolic.value.operator.ternary.TernaryOperator operator, IntegerConstantPropagation left, IntegerConstantPropagation middle, IntegerConstantPropagation right, it.unive.lisa.program.cfg.ProgramPoint pp)
- Overrides:
evalTernaryExpressionin classit.unive.lisa.analysis.nonrelational.value.BaseNonRelationalValueDomain<IntegerConstantPropagation>
-
lubAux
protected IntegerConstantPropagation lubAux(IntegerConstantPropagation other) throws it.unive.lisa.analysis.SemanticException
- Specified by:
lubAuxin classit.unive.lisa.analysis.BaseLattice<IntegerConstantPropagation>- Throws:
it.unive.lisa.analysis.SemanticException
-
wideningAux
protected IntegerConstantPropagation wideningAux(IntegerConstantPropagation other) throws it.unive.lisa.analysis.SemanticException
- Specified by:
wideningAuxin classit.unive.lisa.analysis.BaseLattice<IntegerConstantPropagation>- Throws:
it.unive.lisa.analysis.SemanticException
-
lessOrEqualAux
protected boolean lessOrEqualAux(IntegerConstantPropagation other) throws it.unive.lisa.analysis.SemanticException
- Specified by:
lessOrEqualAuxin classit.unive.lisa.analysis.BaseLattice<IntegerConstantPropagation>- Throws:
it.unive.lisa.analysis.SemanticException
-
hashCode
public int hashCode()
- Specified by:
hashCodein classit.unive.lisa.analysis.BaseLattice<IntegerConstantPropagation>
-
equals
public boolean equals(java.lang.Object obj)
- Specified by:
equalsin classit.unive.lisa.analysis.BaseLattice<IntegerConstantPropagation>
-
satisfiesBinaryExpression
protected it.unive.lisa.analysis.SemanticDomain.Satisfiability satisfiesBinaryExpression(it.unive.lisa.symbolic.value.operator.binary.BinaryOperator operator, IntegerConstantPropagation left, IntegerConstantPropagation right, it.unive.lisa.program.cfg.ProgramPoint pp)- Overrides:
satisfiesBinaryExpressionin classit.unive.lisa.analysis.nonrelational.value.BaseNonRelationalValueDomain<IntegerConstantPropagation>
-
assumeBinaryExpression
protected it.unive.lisa.analysis.nonrelational.value.ValueEnvironment<IntegerConstantPropagation> assumeBinaryExpression(it.unive.lisa.analysis.nonrelational.value.ValueEnvironment<IntegerConstantPropagation> 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<IntegerConstantPropagation>- Throws:
it.unive.lisa.analysis.SemanticException
-
-