Package it.unive.lisa.analysis
Class BaseLattice<L extends BaseLattice<L>>
- java.lang.Object
-
- it.unive.lisa.analysis.BaseLattice<L>
-
- Type Parameters:
L- the concreteBaseLatticeinstance
- All Implemented Interfaces:
Lattice<L>
- Direct Known Subclasses:
AnalysisState,BaseHeapDomain,BaseInferredValue,BaseNonRelationalValueDomain,DataflowDomain,FunctionalLattice,InferredValue.InferredPair,InverseSetLattice,SetLattice,SimpleAbstractState
public abstract class BaseLattice<L extends BaseLattice<L>> extends java.lang.Object implements Lattice<L>
-
-
Field Summary
-
Fields inherited from interface it.unive.lisa.analysis.Lattice
BOTTOM_REPR, BOTTOM_STRING, TOP_REPR, TOP_STRING
-
-
Constructor Summary
Constructors Constructor Description BaseLattice()
-
Method Summary
All Methods Instance Methods Abstract Methods Concrete Methods Modifier and Type Method Description abstract booleanequals(java.lang.Object obj)abstract inthashCode()booleanlessOrEqual(L other)Yieldstrueif and only if this lattice element is in relation with (usually represented through ≤) the given one.protected abstract booleanlessOrEqualAux(L other)Yieldstrueif and only if this lattice element is in relation with (usually represented through ≤) the given one, assuming that base cases have already been handled.Llub(L other)Performs the least upper bound operation between this lattice element and the given one.protected abstract LlubAux(L other)Performs the least upper bound operation between this lattice element and the given one, assuming that base cases have already been handled.abstract java.lang.StringtoString()Lwidening(L other)Performs the widening operation between this lattice element and the given one.protected abstract LwideningAux(L other)Performs the widening operation between this lattice element and the given one, assuming that base cases have already been handled.
-
-
-
Method Detail
-
lub
public final L lub(L other) throws SemanticException
Description copied from interface:LatticePerforms the least upper bound operation between this lattice element and the given one. This operation is commutative.- Specified by:
lubin interfaceLattice<L extends BaseLattice<L>>- Parameters:
other- the other lattice element- Returns:
- the least upper bound
- Throws:
SemanticException- if an error occurs during the computation
-
lubAux
protected abstract L lubAux(L other) throws SemanticException
Performs the least upper bound operation between this lattice element and the given one, assuming that base cases have already been handled. In particular, it is guaranteed that:otheris notnullotheris neither top nor bottomthisis neither top nor bottomthisandotherare not the same object (according both to==and toObject.equals(Object))
- Parameters:
other- the other lattice element- Returns:
- the least upper bound between this and other
- Throws:
SemanticException- if an error occurs during the computation
-
widening
public final L widening(L other) throws SemanticException
Description copied from interface:LatticePerforms the widening operation between this lattice element and the given one. This operation is not commutative.- Specified by:
wideningin interfaceLattice<L extends BaseLattice<L>>- Parameters:
other- the other lattice element- Returns:
- the widening between this and other
- Throws:
SemanticException- if an error occurs during the computation
-
wideningAux
protected abstract L wideningAux(L other) throws SemanticException
Performs the widening operation between this lattice element and the given one, assuming that base cases have already been handled. In particular, it is guaranteed that:otheris notnullotheris neither top nor bottomthisis neither top nor bottomthisandotherare not the same object (according both to==and toObject.equals(Object))
- Parameters:
other- the other lattice element- Returns:
- the widening between this and other
- Throws:
SemanticException- if an error occurs during the computation
-
lessOrEqual
public final boolean lessOrEqual(L other) throws SemanticException
Description copied from interface:LatticeYieldstrueif and only if this lattice element is in relation with (usually represented through ≤) the given one. This operation is not commutative.- Specified by:
lessOrEqualin interfaceLattice<L extends BaseLattice<L>>- Parameters:
other- the other lattice element- Returns:
trueif and only if that condition holds- Throws:
SemanticException- if an error occurs during the computation
-
lessOrEqualAux
protected abstract boolean lessOrEqualAux(L other) throws SemanticException
Yieldstrueif and only if this lattice element is in relation with (usually represented through ≤) the given one, assuming that base cases have already been handled. In particular, it is guaranteed that:otheris notnullotheris neither top nor bottomthisis neither top nor bottomthisandotherare not the same object (according both to==and toObject.equals(Object))
- Parameters:
other- the other lattice element- Returns:
trueif and only if that condition holds- Throws:
SemanticException- if an error occurs during the computation
-
equals
public abstract boolean equals(java.lang.Object obj)
- Overrides:
equalsin classjava.lang.Object
-
hashCode
public abstract int hashCode()
- Overrides:
hashCodein classjava.lang.Object
-
toString
public abstract java.lang.String toString()
- Overrides:
toStringin classjava.lang.Object
-
-