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 byBaseLattice
inBaseLattice.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)
Parity
bottom()
boolean
equals(java.lang.Object obj)
Parity
evalBinaryExpression(it.unive.lisa.symbolic.value.operator.binary.BinaryOperator operator, Parity left, Parity right, it.unive.lisa.program.cfg.ProgramPoint pp)
Parity
evalNonNullConstant(it.unive.lisa.symbolic.value.Constant constant, it.unive.lisa.program.cfg.ProgramPoint pp)
Parity
evalNullConstant(it.unive.lisa.program.cfg.ProgramPoint pp)
Parity
evalUnaryExpression(it.unive.lisa.symbolic.value.operator.unary.UnaryOperator operator, Parity arg, it.unive.lisa.program.cfg.ProgramPoint pp)
int
hashCode()
boolean
isEven()
Yields whether or not this is the even parity.boolean
isOdd()
Yields whether or not this is the odd parity.boolean
lessOrEqualAux(Parity other)
Parity
lubAux(Parity other)
it.unive.lisa.analysis.representation.DomainRepresentation
representation()
Parity
top()
-
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:
evalNullConstant
in 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:
evalNonNullConstant
in classit.unive.lisa.analysis.nonrelational.value.BaseNonRelationalValueDomain<Parity>
-
isEven
public boolean isEven()
Yields whether or not this is the even parity.- Returns:
true
if that condition holds
-
isOdd
public boolean isOdd()
Yields whether or not this is the odd parity.- Returns:
true
if 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:
evalUnaryExpression
in 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:
evalBinaryExpression
in classit.unive.lisa.analysis.nonrelational.value.BaseNonRelationalValueDomain<Parity>
-
lubAux
public Parity lubAux(Parity other) throws it.unive.lisa.analysis.SemanticException
- Specified by:
lubAux
in 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:
lessOrEqualAux
in classit.unive.lisa.analysis.BaseLattice<Parity>
- Throws:
it.unive.lisa.analysis.SemanticException
-
hashCode
public int hashCode()
- Specified by:
hashCode
in classit.unive.lisa.analysis.BaseLattice<Parity>
-
equals
public boolean equals(java.lang.Object obj)
- Specified by:
equals
in 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:
assumeBinaryExpression
in classit.unive.lisa.analysis.nonrelational.value.BaseNonRelationalValueDomain<Parity>
- Throws:
it.unive.lisa.analysis.SemanticException
-
-