Package it.unive.lisa.analysis.numeric
Class IntegerConstantPropagation
- java.lang.Object
-
- it.unive.lisa.analysis.numeric.IntegerConstantPropagation
-
- All Implemented Interfaces:
it.unive.lisa.analysis.BaseLattice<IntegerConstantPropagation>,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.BaseNonRelationalValueDomain<IntegerConstantPropagation>,it.unive.lisa.analysis.nonrelational.value.NonRelationalValueDomain<IntegerConstantPropagation>,it.unive.lisa.analysis.SemanticEvaluator
public class IntegerConstantPropagation extends java.lang.Object implements 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.IntegerConstantPropagation(java.lang.Integer value)Builds the abstract value for the given constant.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description 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 src, it.unive.lisa.program.cfg.ProgramPoint dest)IntegerConstantPropagationbottom()booleanequals(java.lang.Object obj)IntegerConstantPropagationevalBinaryExpression(it.unive.lisa.symbolic.value.operator.binary.BinaryOperator operator, IntegerConstantPropagation left, IntegerConstantPropagation right, it.unive.lisa.program.cfg.ProgramPoint pp)IntegerConstantPropagationevalNonNullConstant(it.unive.lisa.symbolic.value.Constant constant, it.unive.lisa.program.cfg.ProgramPoint pp)IntegerConstantPropagationevalNullConstant(it.unive.lisa.program.cfg.ProgramPoint pp)IntegerConstantPropagationevalTernaryExpression(it.unive.lisa.symbolic.value.operator.ternary.TernaryOperator operator, IntegerConstantPropagation left, IntegerConstantPropagation middle, IntegerConstantPropagation right, it.unive.lisa.program.cfg.ProgramPoint pp)IntegerConstantPropagationevalUnaryExpression(it.unive.lisa.symbolic.value.operator.unary.UnaryOperator operator, IntegerConstantPropagation arg, it.unive.lisa.program.cfg.ProgramPoint pp)inthashCode()booleanisTop()booleanlessOrEqualAux(IntegerConstantPropagation other)IntegerConstantPropagationlubAux(IntegerConstantPropagation other)it.unive.lisa.analysis.representation.DomainRepresentationrepresentation()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()-
Methods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, toString, wait, wait, wait
-
Methods inherited from interface it.unive.lisa.analysis.BaseLattice
glb, glbAux, lessOrEqual, lub, narrowing, narrowingAux, toString, widening, wideningAux
-
Methods inherited from interface it.unive.lisa.analysis.nonrelational.value.BaseNonRelationalValueDomain
assume, assumeTernaryExpression, assumeUnaryExpression, canProcess, eval, evalIdentifier, evalPushAny, evalSkip, evalTypeCast, evalTypeConv, satisfies, satisfiesAbstractValue, satisfiesNonNullConstant, satisfiesNullConstant, satisfiesTernaryExpression, satisfiesUnaryExpression, tracksIdentifiers
-
-
-
-
Method Detail
-
top
public IntegerConstantPropagation top()
- Specified by:
topin interfaceit.unive.lisa.analysis.Lattice<IntegerConstantPropagation>
-
isTop
public boolean isTop()
- Specified by:
isTopin interfaceit.unive.lisa.analysis.Lattice<IntegerConstantPropagation>
-
bottom
public IntegerConstantPropagation bottom()
- Specified by:
bottomin interfaceit.unive.lisa.analysis.Lattice<IntegerConstantPropagation>
-
representation
public it.unive.lisa.analysis.representation.DomainRepresentation representation()
- Specified by:
representationin interfaceit.unive.lisa.analysis.nonrelational.NonRelationalElement<IntegerConstantPropagation,it.unive.lisa.symbolic.value.ValueExpression,it.unive.lisa.analysis.nonrelational.value.ValueEnvironment<IntegerConstantPropagation>>
-
evalNullConstant
public IntegerConstantPropagation evalNullConstant(it.unive.lisa.program.cfg.ProgramPoint pp)
- Specified by:
evalNullConstantin interfaceit.unive.lisa.analysis.nonrelational.value.BaseNonRelationalValueDomain<IntegerConstantPropagation>
-
evalNonNullConstant
public IntegerConstantPropagation evalNonNullConstant(it.unive.lisa.symbolic.value.Constant constant, it.unive.lisa.program.cfg.ProgramPoint pp)
- Specified by:
evalNonNullConstantin interfaceit.unive.lisa.analysis.nonrelational.value.BaseNonRelationalValueDomain<IntegerConstantPropagation>
-
evalUnaryExpression
public IntegerConstantPropagation evalUnaryExpression(it.unive.lisa.symbolic.value.operator.unary.UnaryOperator operator, IntegerConstantPropagation arg, it.unive.lisa.program.cfg.ProgramPoint pp)
- Specified by:
evalUnaryExpressionin interfaceit.unive.lisa.analysis.nonrelational.value.BaseNonRelationalValueDomain<IntegerConstantPropagation>
-
evalBinaryExpression
public IntegerConstantPropagation evalBinaryExpression(it.unive.lisa.symbolic.value.operator.binary.BinaryOperator operator, IntegerConstantPropagation left, IntegerConstantPropagation right, it.unive.lisa.program.cfg.ProgramPoint pp)
- Specified by:
evalBinaryExpressionin interfaceit.unive.lisa.analysis.nonrelational.value.BaseNonRelationalValueDomain<IntegerConstantPropagation>
-
evalTernaryExpression
public IntegerConstantPropagation evalTernaryExpression(it.unive.lisa.symbolic.value.operator.ternary.TernaryOperator operator, IntegerConstantPropagation left, IntegerConstantPropagation middle, IntegerConstantPropagation right, it.unive.lisa.program.cfg.ProgramPoint pp)
- Specified by:
evalTernaryExpressionin interfaceit.unive.lisa.analysis.nonrelational.value.BaseNonRelationalValueDomain<IntegerConstantPropagation>
-
lubAux
public IntegerConstantPropagation lubAux(IntegerConstantPropagation other) throws it.unive.lisa.analysis.SemanticException
- Specified by:
lubAuxin interfaceit.unive.lisa.analysis.BaseLattice<IntegerConstantPropagation>- Throws:
it.unive.lisa.analysis.SemanticException
-
lessOrEqualAux
public boolean lessOrEqualAux(IntegerConstantPropagation other) throws it.unive.lisa.analysis.SemanticException
- Specified by:
lessOrEqualAuxin interfaceit.unive.lisa.analysis.BaseLattice<IntegerConstantPropagation>- Throws:
it.unive.lisa.analysis.SemanticException
-
hashCode
public int hashCode()
- Specified by:
hashCodein interfaceit.unive.lisa.analysis.BaseLattice<IntegerConstantPropagation>- Overrides:
hashCodein classjava.lang.Object
-
equals
public boolean equals(java.lang.Object obj)
- Specified by:
equalsin interfaceit.unive.lisa.analysis.BaseLattice<IntegerConstantPropagation>- Overrides:
equalsin classjava.lang.Object
-
satisfiesBinaryExpression
public 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)- Specified by:
satisfiesBinaryExpressionin interfaceit.unive.lisa.analysis.nonrelational.value.BaseNonRelationalValueDomain<IntegerConstantPropagation>
-
assumeBinaryExpression
public 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 src, it.unive.lisa.program.cfg.ProgramPoint dest) throws it.unive.lisa.analysis.SemanticException
- Specified by:
assumeBinaryExpressionin interfaceit.unive.lisa.analysis.nonrelational.value.BaseNonRelationalValueDomain<IntegerConstantPropagation>- Throws:
it.unive.lisa.analysis.SemanticException
-
-