Package it.unive.lisa.analysis.numeric
Class Parity
- java.lang.Object
-
- it.unive.lisa.analysis.numeric.Parity
-
- All Implemented Interfaces:
it.unive.lisa.analysis.BaseLattice<Parity>,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.BaseNonRelationalValueDomain<Parity>,it.unive.lisa.analysis.nonrelational.value.NonRelationalValueDomain<Parity>,it.unive.lisa.analysis.SemanticEvaluator
public class Parity extends java.lang.Object implements 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 src, it.unive.lisa.program.cfg.ProgramPoint dest)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 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, evalTernaryExpression, evalTypeCast, evalTypeConv, satisfies, satisfiesAbstractValue, satisfiesBinaryExpression, satisfiesNonNullConstant, satisfiesNullConstant, satisfiesTernaryExpression, satisfiesUnaryExpression, tracksIdentifiers
-
-
-
-
Method Detail
-
bottom
public Parity bottom()
- Specified by:
bottomin interfaceit.unive.lisa.analysis.Lattice<Parity>
-
representation
public it.unive.lisa.analysis.representation.DomainRepresentation representation()
-
evalNullConstant
public Parity evalNullConstant(it.unive.lisa.program.cfg.ProgramPoint pp)
- Specified by:
evalNullConstantin interfaceit.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)
- Specified by:
evalNonNullConstantin interfaceit.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)
- Specified by:
evalUnaryExpressionin interfaceit.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)
- Specified by:
evalBinaryExpressionin interfaceit.unive.lisa.analysis.nonrelational.value.BaseNonRelationalValueDomain<Parity>
-
lubAux
public Parity lubAux(Parity other) throws it.unive.lisa.analysis.SemanticException
- Specified by:
lubAuxin interfaceit.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 interfaceit.unive.lisa.analysis.BaseLattice<Parity>- Throws:
it.unive.lisa.analysis.SemanticException
-
hashCode
public int hashCode()
- Specified by:
hashCodein interfaceit.unive.lisa.analysis.BaseLattice<Parity>- Overrides:
hashCodein classjava.lang.Object
-
equals
public boolean equals(java.lang.Object obj)
- Specified by:
equalsin interfaceit.unive.lisa.analysis.BaseLattice<Parity>- Overrides:
equalsin classjava.lang.Object
-
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 src, it.unive.lisa.program.cfg.ProgramPoint dest) throws it.unive.lisa.analysis.SemanticException
- Specified by:
assumeBinaryExpressionin interfaceit.unive.lisa.analysis.nonrelational.value.BaseNonRelationalValueDomain<Parity>- Throws:
it.unive.lisa.analysis.SemanticException
-
-