Package it.unive.lisa.analysis.heap
Class MonolithicHeap
- java.lang.Object
-
- it.unive.lisa.analysis.heap.MonolithicHeap
-
- All Implemented Interfaces:
it.unive.lisa.analysis.BaseLattice<MonolithicHeap>
,it.unive.lisa.analysis.heap.BaseHeapDomain<MonolithicHeap>
,it.unive.lisa.analysis.heap.HeapDomain<MonolithicHeap>
,it.unive.lisa.analysis.heap.HeapSemanticOperation
,it.unive.lisa.analysis.heap.MemoryOracle
,it.unive.lisa.analysis.Lattice<MonolithicHeap>
,it.unive.lisa.analysis.ScopedObject<MonolithicHeap>
,it.unive.lisa.analysis.SemanticDomain<MonolithicHeap,it.unive.lisa.symbolic.SymbolicExpression,it.unive.lisa.symbolic.value.Identifier>
,it.unive.lisa.util.representation.StructuredObject
public class MonolithicHeap extends java.lang.Object implements it.unive.lisa.analysis.heap.BaseHeapDomain<MonolithicHeap>
A monolithic heap implementation that abstracts all heap locations to a unique identifier.
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static class
MonolithicHeap.Rewriter
ABaseHeapDomain.Rewriter
for theMonolithicHeap
domain.
-
Constructor Summary
Constructors Constructor Description MonolithicHeap()
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description it.unive.lisa.analysis.lattices.Satisfiability
alias(it.unive.lisa.symbolic.SymbolicExpression x, it.unive.lisa.symbolic.SymbolicExpression y, it.unive.lisa.program.cfg.ProgramPoint pp, it.unive.lisa.analysis.SemanticOracle oracle)
MonolithicHeap
assign(it.unive.lisa.symbolic.value.Identifier id, it.unive.lisa.symbolic.SymbolicExpression expression, it.unive.lisa.program.cfg.ProgramPoint pp, it.unive.lisa.analysis.SemanticOracle oracle)
MonolithicHeap
assume(it.unive.lisa.symbolic.SymbolicExpression expression, it.unive.lisa.program.cfg.ProgramPoint src, it.unive.lisa.program.cfg.ProgramPoint dest, it.unive.lisa.analysis.SemanticOracle oracle)
MonolithicHeap
bottom()
boolean
equals(java.lang.Object obj)
MonolithicHeap
forgetIdentifier(it.unive.lisa.symbolic.value.Identifier id)
MonolithicHeap
forgetIdentifiersIf(java.util.function.Predicate<it.unive.lisa.symbolic.value.Identifier> test)
java.util.List<it.unive.lisa.analysis.heap.HeapSemanticOperation.HeapReplacement>
getSubstitution()
MonolithicHeap
glbAux(MonolithicHeap other)
int
hashCode()
it.unive.lisa.analysis.lattices.Satisfiability
isReachableFrom(it.unive.lisa.symbolic.SymbolicExpression x, it.unive.lisa.symbolic.SymbolicExpression y, it.unive.lisa.program.cfg.ProgramPoint pp, it.unive.lisa.analysis.SemanticOracle oracle)
boolean
knowsIdentifier(it.unive.lisa.symbolic.value.Identifier id)
boolean
lessOrEqualAux(MonolithicHeap other)
MonolithicHeap
lubAux(MonolithicHeap other)
MonolithicHeap
mk(MonolithicHeap reference)
MonolithicHeap
mk(MonolithicHeap reference, java.util.List<it.unive.lisa.analysis.heap.HeapSemanticOperation.HeapReplacement> replacements)
it.unive.lisa.util.representation.StructuredRepresentation
representation()
it.unive.lisa.analysis.lattices.ExpressionSet
rewrite(it.unive.lisa.symbolic.SymbolicExpression expression, it.unive.lisa.program.cfg.ProgramPoint pp, it.unive.lisa.analysis.SemanticOracle oracle)
it.unive.lisa.analysis.lattices.Satisfiability
satisfies(it.unive.lisa.symbolic.SymbolicExpression expression, it.unive.lisa.program.cfg.ProgramPoint pp, it.unive.lisa.analysis.SemanticOracle oracle)
MonolithicHeap
semanticsOf(it.unive.lisa.symbolic.heap.HeapExpression expression, it.unive.lisa.program.cfg.ProgramPoint pp, it.unive.lisa.analysis.SemanticOracle oracle)
MonolithicHeap
top()
-
Methods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, toString, wait, wait, wait
-
Methods inherited from interface it.unive.lisa.analysis.heap.BaseHeapDomain
popScope, pushScope, smallStepSemantics
-
Methods inherited from interface it.unive.lisa.analysis.BaseLattice
glb, lessOrEqual, lub, narrowing, narrowingAux, toString, widening, wideningAux
-
-
-
-
Method Detail
-
rewrite
public it.unive.lisa.analysis.lattices.ExpressionSet rewrite(it.unive.lisa.symbolic.SymbolicExpression expression, it.unive.lisa.program.cfg.ProgramPoint pp, it.unive.lisa.analysis.SemanticOracle oracle) throws it.unive.lisa.analysis.SemanticException
- Specified by:
rewrite
in interfaceit.unive.lisa.analysis.heap.MemoryOracle
- Throws:
it.unive.lisa.analysis.SemanticException
-
getSubstitution
public java.util.List<it.unive.lisa.analysis.heap.HeapSemanticOperation.HeapReplacement> getSubstitution()
- Specified by:
getSubstitution
in interfaceit.unive.lisa.analysis.heap.HeapSemanticOperation
-
assign
public MonolithicHeap assign(it.unive.lisa.symbolic.value.Identifier id, it.unive.lisa.symbolic.SymbolicExpression expression, it.unive.lisa.program.cfg.ProgramPoint pp, it.unive.lisa.analysis.SemanticOracle oracle) throws it.unive.lisa.analysis.SemanticException
- Specified by:
assign
in interfaceit.unive.lisa.analysis.SemanticDomain<MonolithicHeap,it.unive.lisa.symbolic.SymbolicExpression,it.unive.lisa.symbolic.value.Identifier>
- Throws:
it.unive.lisa.analysis.SemanticException
-
mk
public MonolithicHeap mk(MonolithicHeap reference)
- Specified by:
mk
in interfaceit.unive.lisa.analysis.heap.BaseHeapDomain<MonolithicHeap>
-
mk
public MonolithicHeap mk(MonolithicHeap reference, java.util.List<it.unive.lisa.analysis.heap.HeapSemanticOperation.HeapReplacement> replacements)
- Specified by:
mk
in interfaceit.unive.lisa.analysis.heap.BaseHeapDomain<MonolithicHeap>
-
semanticsOf
public MonolithicHeap semanticsOf(it.unive.lisa.symbolic.heap.HeapExpression expression, it.unive.lisa.program.cfg.ProgramPoint pp, it.unive.lisa.analysis.SemanticOracle oracle)
- Specified by:
semanticsOf
in interfaceit.unive.lisa.analysis.heap.BaseHeapDomain<MonolithicHeap>
-
assume
public MonolithicHeap assume(it.unive.lisa.symbolic.SymbolicExpression expression, it.unive.lisa.program.cfg.ProgramPoint src, it.unive.lisa.program.cfg.ProgramPoint dest, it.unive.lisa.analysis.SemanticOracle oracle) throws it.unive.lisa.analysis.SemanticException
- Specified by:
assume
in interfaceit.unive.lisa.analysis.SemanticDomain<MonolithicHeap,it.unive.lisa.symbolic.SymbolicExpression,it.unive.lisa.symbolic.value.Identifier>
- Throws:
it.unive.lisa.analysis.SemanticException
-
satisfies
public it.unive.lisa.analysis.lattices.Satisfiability satisfies(it.unive.lisa.symbolic.SymbolicExpression expression, it.unive.lisa.program.cfg.ProgramPoint pp, it.unive.lisa.analysis.SemanticOracle oracle) throws it.unive.lisa.analysis.SemanticException
- Specified by:
satisfies
in interfaceit.unive.lisa.analysis.SemanticDomain<MonolithicHeap,it.unive.lisa.symbolic.SymbolicExpression,it.unive.lisa.symbolic.value.Identifier>
- Throws:
it.unive.lisa.analysis.SemanticException
-
forgetIdentifier
public MonolithicHeap forgetIdentifier(it.unive.lisa.symbolic.value.Identifier id) throws it.unive.lisa.analysis.SemanticException
- Specified by:
forgetIdentifier
in interfaceit.unive.lisa.analysis.SemanticDomain<MonolithicHeap,it.unive.lisa.symbolic.SymbolicExpression,it.unive.lisa.symbolic.value.Identifier>
- Throws:
it.unive.lisa.analysis.SemanticException
-
forgetIdentifiersIf
public MonolithicHeap forgetIdentifiersIf(java.util.function.Predicate<it.unive.lisa.symbolic.value.Identifier> test) throws it.unive.lisa.analysis.SemanticException
- Specified by:
forgetIdentifiersIf
in interfaceit.unive.lisa.analysis.SemanticDomain<MonolithicHeap,it.unive.lisa.symbolic.SymbolicExpression,it.unive.lisa.symbolic.value.Identifier>
- Throws:
it.unive.lisa.analysis.SemanticException
-
lubAux
public MonolithicHeap lubAux(MonolithicHeap other) throws it.unive.lisa.analysis.SemanticException
- Specified by:
lubAux
in interfaceit.unive.lisa.analysis.BaseLattice<MonolithicHeap>
- Throws:
it.unive.lisa.analysis.SemanticException
-
glbAux
public MonolithicHeap glbAux(MonolithicHeap other) throws it.unive.lisa.analysis.SemanticException
- Specified by:
glbAux
in interfaceit.unive.lisa.analysis.BaseLattice<MonolithicHeap>
- Throws:
it.unive.lisa.analysis.SemanticException
-
lessOrEqualAux
public boolean lessOrEqualAux(MonolithicHeap other) throws it.unive.lisa.analysis.SemanticException
- Specified by:
lessOrEqualAux
in interfaceit.unive.lisa.analysis.BaseLattice<MonolithicHeap>
- Throws:
it.unive.lisa.analysis.SemanticException
-
top
public MonolithicHeap top()
- Specified by:
top
in interfaceit.unive.lisa.analysis.Lattice<MonolithicHeap>
-
bottom
public MonolithicHeap bottom()
- Specified by:
bottom
in interfaceit.unive.lisa.analysis.Lattice<MonolithicHeap>
-
representation
public it.unive.lisa.util.representation.StructuredRepresentation representation()
- Specified by:
representation
in interfaceit.unive.lisa.util.representation.StructuredObject
-
hashCode
public int hashCode()
- Specified by:
hashCode
in interfaceit.unive.lisa.analysis.BaseLattice<MonolithicHeap>
- Overrides:
hashCode
in classjava.lang.Object
-
equals
public boolean equals(java.lang.Object obj)
- Specified by:
equals
in interfaceit.unive.lisa.analysis.BaseLattice<MonolithicHeap>
- Overrides:
equals
in classjava.lang.Object
-
knowsIdentifier
public boolean knowsIdentifier(it.unive.lisa.symbolic.value.Identifier id)
- Specified by:
knowsIdentifier
in interfaceit.unive.lisa.analysis.SemanticDomain<MonolithicHeap,it.unive.lisa.symbolic.SymbolicExpression,it.unive.lisa.symbolic.value.Identifier>
-
alias
public it.unive.lisa.analysis.lattices.Satisfiability alias(it.unive.lisa.symbolic.SymbolicExpression x, it.unive.lisa.symbolic.SymbolicExpression y, it.unive.lisa.program.cfg.ProgramPoint pp, it.unive.lisa.analysis.SemanticOracle oracle) throws it.unive.lisa.analysis.SemanticException
- Specified by:
alias
in interfaceit.unive.lisa.analysis.heap.MemoryOracle
- Throws:
it.unive.lisa.analysis.SemanticException
-
isReachableFrom
public it.unive.lisa.analysis.lattices.Satisfiability isReachableFrom(it.unive.lisa.symbolic.SymbolicExpression x, it.unive.lisa.symbolic.SymbolicExpression y, it.unive.lisa.program.cfg.ProgramPoint pp, it.unive.lisa.analysis.SemanticOracle oracle) throws it.unive.lisa.analysis.SemanticException
- Specified by:
isReachableFrom
in interfaceit.unive.lisa.analysis.heap.MemoryOracle
- Throws:
it.unive.lisa.analysis.SemanticException
-
-