Package it.unive.lisa.analysis
Interface AbstractState<A extends AbstractState<A>>
-
- Type Parameters:
A
- the concrete type of theAbstractState
- All Superinterfaces:
Lattice<A>
,MemoryOracle
,ScopedObject<A>
,SemanticDomain<A,SymbolicExpression,Identifier>
,SemanticOracle
,StructuredObject
,TypeOracle
,ValueOracle
public interface AbstractState<A extends AbstractState<A>> extends SemanticOracle, Lattice<A>, SemanticDomain<A,SymbolicExpression,Identifier>
An abstract state of the analysis, composed by a heap state modeling the memory layout and a value state modeling values of program variables and memory locations. An abstract state also wraps a domain to reason about runtime types of such variables.
-
-
Field Summary
-
Fields inherited from interface it.unive.lisa.analysis.Lattice
BOTTOM_STRING, TOP_STRING
-
-
Method Summary
All Methods Instance Methods Abstract Methods Modifier and Type Method Description A
withTopMemory()
Yields a copy of this state, but with its memory abstraction set to top.A
withTopTypes()
Yields a copy of this state, but with its type abstraction set to top.A
withTopValues()
Yields a copy of this state, but with its value abstraction set to top.-
Methods inherited from interface it.unive.lisa.analysis.Lattice
bottom, glb, isBottom, isTop, lessOrEqual, lub, narrowing, top, widening
-
Methods inherited from interface it.unive.lisa.analysis.heap.MemoryOracle
alias, areMutuallyReachable, isReachableFrom, reachableFrom, rewrite, rewrite
-
Methods inherited from interface it.unive.lisa.analysis.ScopedObject
popScope, pushScope
-
Methods inherited from interface it.unive.lisa.analysis.SemanticDomain
assign, assume, forgetIdentifier, forgetIdentifiers, forgetIdentifiersIf, getAllDomainInstances, getDomainInstance, knowsIdentifier, satisfies, smallStepSemantics
-
Methods inherited from interface it.unive.lisa.util.representation.StructuredObject
representation
-
Methods inherited from interface it.unive.lisa.analysis.type.TypeOracle
getDynamicTypeOf, getRuntimeTypesOf
-
-
-
-
Method Detail
-
withTopMemory
A withTopMemory()
Yields a copy of this state, but with its memory abstraction set to top. This is useful to represent effects of unknown calls that arbitrarily manipulate the memory.- Returns:
- the copy with top memory
-
withTopValues
A withTopValues()
Yields a copy of this state, but with its value abstraction set to top. This is useful to represent effects of unknown calls that arbitrarily manipulate the values of variables.- Returns:
- the copy with top values
-
withTopTypes
A withTopTypes()
Yields a copy of this state, but with its type abstraction set to top. This is useful to represent effects of unknown calls that arbitrarily manipulate the values of variables (and their type accordingly).- Returns:
- the copy with top types
-
-