Class 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
      A BaseHeapDomain.Rewriter for the MonolithicHeap domain.
      • Nested classes/interfaces inherited from interface it.unive.lisa.analysis.heap.HeapSemanticOperation

        it.unive.lisa.analysis.heap.HeapSemanticOperation.HeapReplacement
    • Field Summary

      • Fields inherited from interface it.unive.lisa.analysis.Lattice

        BOTTOM_STRING, TOP_STRING
    • 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
      • Methods inherited from interface it.unive.lisa.analysis.Lattice

        isBottom, isTop
      • Methods inherited from interface it.unive.lisa.analysis.heap.MemoryOracle

        areMutuallyReachable, reachableFrom, rewrite
      • Methods inherited from interface it.unive.lisa.analysis.SemanticDomain

        forgetIdentifiers, getAllDomainInstances, getDomainInstance
    • Constructor Detail

      • MonolithicHeap

        public MonolithicHeap()
    • 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 interface it.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 interface it.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 interface it.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,
                                 java.util.List<it.unive.lisa.analysis.heap.HeapSemanticOperation.HeapReplacement> replacements)
        Specified by:
        mk in interface it.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 interface it.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 interface it.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 interface it.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 interface it.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 interface it.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 interface it.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 interface it.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 interface it.unive.lisa.analysis.BaseLattice<MonolithicHeap>
        Throws:
        it.unive.lisa.analysis.SemanticException
      • representation

        public it.unive.lisa.util.representation.StructuredRepresentation representation()
        Specified by:
        representation in interface it.unive.lisa.util.representation.StructuredObject
      • hashCode

        public int hashCode()
        Specified by:
        hashCode in interface it.unive.lisa.analysis.BaseLattice<MonolithicHeap>
        Overrides:
        hashCode in class java.lang.Object
      • equals

        public boolean equals​(java.lang.Object obj)
        Specified by:
        equals in interface it.unive.lisa.analysis.BaseLattice<MonolithicHeap>
        Overrides:
        equals in class java.lang.Object
      • knowsIdentifier

        public boolean knowsIdentifier​(it.unive.lisa.symbolic.value.Identifier id)
        Specified by:
        knowsIdentifier in interface it.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 interface it.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 interface it.unive.lisa.analysis.heap.MemoryOracle
        Throws:
        it.unive.lisa.analysis.SemanticException