Package it.unive.lisa.analysis
Class SimpleAbstractState<H extends it.unive.lisa.analysis.heap.HeapDomain<H>,V extends it.unive.lisa.analysis.value.ValueDomain<V>,T extends it.unive.lisa.analysis.value.TypeDomain<T>>
- java.lang.Object
-
- it.unive.lisa.analysis.SimpleAbstractState<H,V,T>
-
- Type Parameters:
H- the type ofHeapDomainembedded in this stateV- the type ofValueDomainembedded in this stateT- the type ofTypeDomainembedded in this state
- All Implemented Interfaces:
it.unive.lisa.analysis.AbstractState<SimpleAbstractState<H,V,T>,H,V,T>,it.unive.lisa.analysis.BaseLattice<SimpleAbstractState<H,V,T>>,it.unive.lisa.analysis.Lattice<SimpleAbstractState<H,V,T>>,it.unive.lisa.analysis.SemanticDomain<SimpleAbstractState<H,V,T>,it.unive.lisa.symbolic.SymbolicExpression,it.unive.lisa.symbolic.value.Identifier>
public class SimpleAbstractState<H extends it.unive.lisa.analysis.heap.HeapDomain<H>,V extends it.unive.lisa.analysis.value.ValueDomain<V>,T extends it.unive.lisa.analysis.value.TypeDomain<T>> extends java.lang.Object implements it.unive.lisa.analysis.BaseLattice<SimpleAbstractState<H,V,T>>, it.unive.lisa.analysis.AbstractState<SimpleAbstractState<H,V,T>,H,V,T>
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.
-
-
Constructor Summary
Constructors Constructor Description SimpleAbstractState(H heapState, V valueState, T typeState)Builds a new abstract state.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description SimpleAbstractState<H,V,T>assign(it.unive.lisa.symbolic.value.Identifier id, it.unive.lisa.symbolic.SymbolicExpression expression, it.unive.lisa.program.cfg.ProgramPoint pp)SimpleAbstractState<H,V,T>assume(it.unive.lisa.symbolic.SymbolicExpression expression, it.unive.lisa.program.cfg.ProgramPoint src, it.unive.lisa.program.cfg.ProgramPoint dest)SimpleAbstractState<H,V,T>bottom()booleanequals(java.lang.Object obj)SimpleAbstractState<H,V,T>forgetIdentifier(it.unive.lisa.symbolic.value.Identifier id)SimpleAbstractState<H,V,T>forgetIdentifiersIf(java.util.function.Predicate<it.unive.lisa.symbolic.value.Identifier> test)<D extends it.unive.lisa.analysis.SemanticDomain<?,?,?>>
java.util.Collection<D>getAllDomainInstances(java.lang.Class<D> domain)HgetHeapState()TgetTypeState()VgetValueState()SimpleAbstractState<H,V,T>glbAux(SimpleAbstractState<H,V,T> other)inthashCode()booleanisBottom()booleanisTop()booleanlessOrEqualAux(SimpleAbstractState<H,V,T> other)SimpleAbstractState<H,V,T>lubAux(SimpleAbstractState<H,V,T> other)SimpleAbstractState<H,V,T>narrowingAux(SimpleAbstractState<H,V,T> other)SimpleAbstractState<H,V,T>popScope(it.unive.lisa.analysis.ScopeToken scope)SimpleAbstractState<H,V,T>pushScope(it.unive.lisa.analysis.ScopeToken scope)it.unive.lisa.analysis.representation.DomainRepresentationrepresentation()it.unive.lisa.analysis.SemanticDomain.Satisfiabilitysatisfies(it.unive.lisa.symbolic.SymbolicExpression expression, it.unive.lisa.program.cfg.ProgramPoint pp)SimpleAbstractState<H,V,T>smallStepSemantics(it.unive.lisa.symbolic.SymbolicExpression expression, it.unive.lisa.program.cfg.ProgramPoint pp)SimpleAbstractState<H,V,T>top()java.lang.StringtoString()SimpleAbstractState<H,V,T>wideningAux(SimpleAbstractState<H,V,T> other)SimpleAbstractState<H,V,T>withTopHeap()SimpleAbstractState<H,V,T>withTopType()SimpleAbstractState<H,V,T>withTopValue()-
Methods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
-
-
-
-
Constructor Detail
-
SimpleAbstractState
public SimpleAbstractState(H heapState, V valueState, T typeState)
Builds a new abstract state.- Parameters:
heapState- the domain containing information regarding heap structuresvalueState- the domain containing information regarding values of program variables and concretized memory locationstypeState- the domain containing information regarding runtime types of program variables and concretized memory locations
-
-
Method Detail
-
getHeapState
public H getHeapState()
- Specified by:
getHeapStatein interfaceit.unive.lisa.analysis.AbstractState<SimpleAbstractState<H extends it.unive.lisa.analysis.heap.HeapDomain<H>,V extends it.unive.lisa.analysis.value.ValueDomain<V>,T extends it.unive.lisa.analysis.value.TypeDomain<T>>,H extends it.unive.lisa.analysis.heap.HeapDomain<H>,V extends it.unive.lisa.analysis.value.ValueDomain<V>,T extends it.unive.lisa.analysis.value.TypeDomain<T>>
-
getValueState
public V getValueState()
- Specified by:
getValueStatein interfaceit.unive.lisa.analysis.AbstractState<SimpleAbstractState<H extends it.unive.lisa.analysis.heap.HeapDomain<H>,V extends it.unive.lisa.analysis.value.ValueDomain<V>,T extends it.unive.lisa.analysis.value.TypeDomain<T>>,H extends it.unive.lisa.analysis.heap.HeapDomain<H>,V extends it.unive.lisa.analysis.value.ValueDomain<V>,T extends it.unive.lisa.analysis.value.TypeDomain<T>>
-
getTypeState
public T getTypeState()
- Specified by:
getTypeStatein interfaceit.unive.lisa.analysis.AbstractState<SimpleAbstractState<H extends it.unive.lisa.analysis.heap.HeapDomain<H>,V extends it.unive.lisa.analysis.value.ValueDomain<V>,T extends it.unive.lisa.analysis.value.TypeDomain<T>>,H extends it.unive.lisa.analysis.heap.HeapDomain<H>,V extends it.unive.lisa.analysis.value.ValueDomain<V>,T extends it.unive.lisa.analysis.value.TypeDomain<T>>
-
assign
public SimpleAbstractState<H,V,T> assign(it.unive.lisa.symbolic.value.Identifier id, it.unive.lisa.symbolic.SymbolicExpression expression, it.unive.lisa.program.cfg.ProgramPoint pp) throws it.unive.lisa.analysis.SemanticException
-
smallStepSemantics
public SimpleAbstractState<H,V,T> smallStepSemantics(it.unive.lisa.symbolic.SymbolicExpression expression, it.unive.lisa.program.cfg.ProgramPoint pp) throws it.unive.lisa.analysis.SemanticException
-
assume
public SimpleAbstractState<H,V,T> assume(it.unive.lisa.symbolic.SymbolicExpression expression, it.unive.lisa.program.cfg.ProgramPoint src, it.unive.lisa.program.cfg.ProgramPoint dest) throws it.unive.lisa.analysis.SemanticException
-
satisfies
public it.unive.lisa.analysis.SemanticDomain.Satisfiability satisfies(it.unive.lisa.symbolic.SymbolicExpression expression, it.unive.lisa.program.cfg.ProgramPoint pp) throws it.unive.lisa.analysis.SemanticException
-
pushScope
public SimpleAbstractState<H,V,T> pushScope(it.unive.lisa.analysis.ScopeToken scope) throws it.unive.lisa.analysis.SemanticException
-
popScope
public SimpleAbstractState<H,V,T> popScope(it.unive.lisa.analysis.ScopeToken scope) throws it.unive.lisa.analysis.SemanticException
-
lubAux
public SimpleAbstractState<H,V,T> lubAux(SimpleAbstractState<H,V,T> other) throws it.unive.lisa.analysis.SemanticException
-
glbAux
public SimpleAbstractState<H,V,T> glbAux(SimpleAbstractState<H,V,T> other) throws it.unive.lisa.analysis.SemanticException
-
wideningAux
public SimpleAbstractState<H,V,T> wideningAux(SimpleAbstractState<H,V,T> other) throws it.unive.lisa.analysis.SemanticException
-
narrowingAux
public SimpleAbstractState<H,V,T> narrowingAux(SimpleAbstractState<H,V,T> other) throws it.unive.lisa.analysis.SemanticException
-
lessOrEqualAux
public boolean lessOrEqualAux(SimpleAbstractState<H,V,T> other) throws it.unive.lisa.analysis.SemanticException
-
top
public SimpleAbstractState<H,V,T> top()
-
bottom
public SimpleAbstractState<H,V,T> bottom()
-
isTop
public boolean isTop()
-
isBottom
public boolean isBottom()
-
forgetIdentifier
public SimpleAbstractState<H,V,T> forgetIdentifier(it.unive.lisa.symbolic.value.Identifier id) throws it.unive.lisa.analysis.SemanticException
-
forgetIdentifiersIf
public SimpleAbstractState<H,V,T> forgetIdentifiersIf(java.util.function.Predicate<it.unive.lisa.symbolic.value.Identifier> test) throws it.unive.lisa.analysis.SemanticException
-
hashCode
public int hashCode()
-
equals
public boolean equals(java.lang.Object obj)
-
representation
public it.unive.lisa.analysis.representation.DomainRepresentation representation()
-
toString
public java.lang.String toString()
-
getAllDomainInstances
public <D extends it.unive.lisa.analysis.SemanticDomain<?,?,?>> java.util.Collection<D> getAllDomainInstances(java.lang.Class<D> domain)
-
withTopHeap
public SimpleAbstractState<H,V,T> withTopHeap()
- Specified by:
withTopHeapin interfaceit.unive.lisa.analysis.AbstractState<SimpleAbstractState<H extends it.unive.lisa.analysis.heap.HeapDomain<H>,V extends it.unive.lisa.analysis.value.ValueDomain<V>,T extends it.unive.lisa.analysis.value.TypeDomain<T>>,H extends it.unive.lisa.analysis.heap.HeapDomain<H>,V extends it.unive.lisa.analysis.value.ValueDomain<V>,T extends it.unive.lisa.analysis.value.TypeDomain<T>>
-
withTopValue
public SimpleAbstractState<H,V,T> withTopValue()
- Specified by:
withTopValuein interfaceit.unive.lisa.analysis.AbstractState<SimpleAbstractState<H extends it.unive.lisa.analysis.heap.HeapDomain<H>,V extends it.unive.lisa.analysis.value.ValueDomain<V>,T extends it.unive.lisa.analysis.value.TypeDomain<T>>,H extends it.unive.lisa.analysis.heap.HeapDomain<H>,V extends it.unive.lisa.analysis.value.ValueDomain<V>,T extends it.unive.lisa.analysis.value.TypeDomain<T>>
-
withTopType
public SimpleAbstractState<H,V,T> withTopType()
- Specified by:
withTopTypein interfaceit.unive.lisa.analysis.AbstractState<SimpleAbstractState<H extends it.unive.lisa.analysis.heap.HeapDomain<H>,V extends it.unive.lisa.analysis.value.ValueDomain<V>,T extends it.unive.lisa.analysis.value.TypeDomain<T>>,H extends it.unive.lisa.analysis.heap.HeapDomain<H>,V extends it.unive.lisa.analysis.value.ValueDomain<V>,T extends it.unive.lisa.analysis.value.TypeDomain<T>>
-
-