Package it.unive.lisa.analysis.numeric
Class Parity
- java.lang.Object
-
- it.unive.lisa.analysis.BaseLattice<T>
-
- it.unive.lisa.analysis.nonrelational.value.BaseNonRelationalValueDomain<Parity>
-
- it.unive.lisa.analysis.numeric.Parity
-
- All Implemented Interfaces:
it.unive.lisa.analysis.Lattice<Parity>,it.unive.lisa.analysis.nonrelational.NonRelationalDomain<Parity,it.unive.lisa.symbolic.value.ValueExpression,it.unive.lisa.analysis.nonrelational.value.ValueEnvironment<Parity>>,it.unive.lisa.analysis.nonrelational.NonRelationalElement<Parity,it.unive.lisa.symbolic.value.ValueExpression,it.unive.lisa.analysis.nonrelational.value.ValueEnvironment<Parity>>,it.unive.lisa.analysis.nonrelational.value.NonRelationalValueDomain<Parity>,it.unive.lisa.analysis.SemanticEvaluator
public class Parity extends it.unive.lisa.analysis.nonrelational.value.BaseNonRelationalValueDomain<Parity>
The overflow-insensitive Parity abstract domain, tracking if a numeric value is even or odd, 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 bound, widening and less or equals operations are handled byBaseLatticeinBaseLattice.lub(L),BaseLattice.widening(L)andBaseLattice.lessOrEqual(L)methods, respectively.
-
-
Constructor Summary
Constructors Constructor Description Parity()Builds the parity abstract domain, representing the top of the parity abstract domain.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description protected it.unive.lisa.analysis.nonrelational.value.ValueEnvironment<Parity>assumeBinaryExpression(it.unive.lisa.analysis.nonrelational.value.ValueEnvironment<Parity> 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)Paritybottom()booleanequals(java.lang.Object obj)protected ParityevalBinaryExpression(it.unive.lisa.symbolic.value.operator.binary.BinaryOperator operator, Parity left, Parity right, it.unive.lisa.program.cfg.ProgramPoint pp)protected ParityevalNonNullConstant(it.unive.lisa.symbolic.value.Constant constant, it.unive.lisa.program.cfg.ProgramPoint pp)protected ParityevalNullConstant(it.unive.lisa.program.cfg.ProgramPoint pp)protected ParityevalUnaryExpression(it.unive.lisa.symbolic.value.operator.unary.UnaryOperator operator, Parity arg, it.unive.lisa.program.cfg.ProgramPoint pp)inthashCode()protected booleanlessOrEqualAux(Parity other)protected ParitylubAux(Parity other)it.unive.lisa.analysis.representation.DomainRepresentationrepresentation()Paritytop()protected ParitywideningAux(Parity 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, satisfiesBinaryExpression, 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 Parity top()
-
bottom
public Parity bottom()
-
representation
public it.unive.lisa.analysis.representation.DomainRepresentation representation()
-
evalNullConstant
protected Parity evalNullConstant(it.unive.lisa.program.cfg.ProgramPoint pp)
- Overrides:
evalNullConstantin classit.unive.lisa.analysis.nonrelational.value.BaseNonRelationalValueDomain<Parity>
-
evalNonNullConstant
protected Parity evalNonNullConstant(it.unive.lisa.symbolic.value.Constant constant, it.unive.lisa.program.cfg.ProgramPoint pp)
- Overrides:
evalNonNullConstantin classit.unive.lisa.analysis.nonrelational.value.BaseNonRelationalValueDomain<Parity>
-
evalUnaryExpression
protected Parity evalUnaryExpression(it.unive.lisa.symbolic.value.operator.unary.UnaryOperator operator, Parity arg, it.unive.lisa.program.cfg.ProgramPoint pp)
- Overrides:
evalUnaryExpressionin classit.unive.lisa.analysis.nonrelational.value.BaseNonRelationalValueDomain<Parity>
-
evalBinaryExpression
protected Parity evalBinaryExpression(it.unive.lisa.symbolic.value.operator.binary.BinaryOperator operator, Parity left, Parity right, it.unive.lisa.program.cfg.ProgramPoint pp)
- Overrides:
evalBinaryExpressionin classit.unive.lisa.analysis.nonrelational.value.BaseNonRelationalValueDomain<Parity>
-
lubAux
protected Parity lubAux(Parity other) throws it.unive.lisa.analysis.SemanticException
- Specified by:
lubAuxin classit.unive.lisa.analysis.BaseLattice<Parity>- Throws:
it.unive.lisa.analysis.SemanticException
-
wideningAux
protected Parity wideningAux(Parity other) throws it.unive.lisa.analysis.SemanticException
- Specified by:
wideningAuxin classit.unive.lisa.analysis.BaseLattice<Parity>- Throws:
it.unive.lisa.analysis.SemanticException
-
lessOrEqualAux
protected boolean lessOrEqualAux(Parity other) throws it.unive.lisa.analysis.SemanticException
- Specified by:
lessOrEqualAuxin classit.unive.lisa.analysis.BaseLattice<Parity>- Throws:
it.unive.lisa.analysis.SemanticException
-
hashCode
public int hashCode()
- Specified by:
hashCodein classit.unive.lisa.analysis.BaseLattice<Parity>
-
equals
public boolean equals(java.lang.Object obj)
- Specified by:
equalsin classit.unive.lisa.analysis.BaseLattice<Parity>
-
assumeBinaryExpression
protected it.unive.lisa.analysis.nonrelational.value.ValueEnvironment<Parity> assumeBinaryExpression(it.unive.lisa.analysis.nonrelational.value.ValueEnvironment<Parity> 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<Parity>- Throws:
it.unive.lisa.analysis.SemanticException
-
-