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.
-
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description 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)ParityevalBinaryExpression(it.unive.lisa.symbolic.value.operator.binary.BinaryOperator operator, Parity left, Parity right, it.unive.lisa.program.cfg.ProgramPoint pp)ParityevalNonNullConstant(it.unive.lisa.symbolic.value.Constant constant, it.unive.lisa.program.cfg.ProgramPoint pp)ParityevalNullConstant(it.unive.lisa.program.cfg.ProgramPoint pp)ParityevalUnaryExpression(it.unive.lisa.symbolic.value.operator.unary.UnaryOperator operator, Parity arg, it.unive.lisa.program.cfg.ProgramPoint pp)inthashCode()booleanisEven()Yields whether or not this is the even parity.booleanisOdd()Yields whether or not this is the odd parity.booleanlessOrEqualAux(Parity other)ParitylubAux(Parity other)it.unive.lisa.analysis.representation.DomainRepresentationrepresentation()Paritytop()-
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 it.unive.lisa.analysis.BaseLattice
lessOrEqual, lub, widening, wideningAux
-
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
public Parity evalNullConstant(it.unive.lisa.program.cfg.ProgramPoint pp)
- Overrides:
evalNullConstantin classit.unive.lisa.analysis.nonrelational.value.BaseNonRelationalValueDomain<Parity>
-
evalNonNullConstant
public 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>
-
isEven
public boolean isEven()
Yields whether or not this is the even parity.- Returns:
trueif that condition holds
-
isOdd
public boolean isOdd()
Yields whether or not this is the odd parity.- Returns:
trueif that condition holds
-
evalUnaryExpression
public 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
public 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
public 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
-
lessOrEqualAux
public 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
public 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
-
-