Class NonInterference

    • Constructor Detail

      • NonInterference

        public NonInterference()
        Builds a new instance of non interference, referring to the top element of the lattice.
    • Method Detail

      • top

        public NonInterference top()
        Description copied from interface: Lattice
        Yields the top element of this lattice. The returned element should be unique across different calls to this method, since Lattice.isTop() uses reference equality by default. If the value returned by this method is not a singleton, override Lattice.isTop() accordingly to provide a coherent test.
        Returns:
        the top element
      • isTop

        public boolean isTop()
        Description copied from interface: Lattice
        Yields true if and only if this object represents the top of the lattice. The default implementation of this method uses reference equality between this and the value returned by Lattice.top(), thus assuming that the top element is a singleton. If this is not the case, override this method accordingly to provide a coherent test.
        Returns:
        true if this is the top of the lattice
      • bottom

        public NonInterference bottom()
        Description copied from interface: Lattice
        Yields the bottom element of this lattice. The returned element should be unique across different calls to this method, since Lattice.isBottom() uses reference equality by default. If the value returned by this method is not a singleton, override Lattice.isBottom() accordingly to provide a coherent test.
        Returns:
        the bottom element
      • isBottom

        public boolean isBottom()
        Description copied from interface: Lattice
        Yields true if and only if this object represents the bottom of the lattice. The default implementation of this method uses reference equality between this and the value returned by Lattice.bottom(), thus assuming that the bottom element is a singleton. If this is not the case, override this method accordingly to provide a coherent test.
        Returns:
        true if this is the bottom of the lattice
      • isHighConfidentiality

        public boolean isHighConfidentiality()
        Yields true if and only if this instance represents a high value for the confidentiality non interference analysis.
        Returns:
        true if this is a high confidentiality element
      • isLowConfidentiality

        public boolean isLowConfidentiality()
        Yields true if and only if this instance represents a low value for the confidentiality non interference analysis.
        Returns:
        true if this is a low confidentiality element
      • isHighIntegrity

        public boolean isHighIntegrity()
        Yields true if and only if this instance represents a high value for the integrity non interference analysis.
        Returns:
        true if this is a high integrity element
      • isLowIntegrity

        public boolean isLowIntegrity()
        Yields true if and only if this instance represents a low value for the integrity non interference analysis.
        Returns:
        true if this is a low integrity element
      • lubAux

        protected NonInterference lubAux​(NonInterference other)
                                  throws SemanticException
        Description copied from class: BaseLattice
        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:
        • other is not null
        • other is neither top nor bottom
        • this is neither top nor bottom
        • this and other are not the same object (according both to == and to Object.equals(Object))
        Specified by:
        lubAux in class BaseLattice<NonInterference>
        Parameters:
        other - the other lattice element
        Returns:
        the least upper bound between this and other
        Throws:
        SemanticException - if an error occurs during the computation
      • wideningAux

        protected NonInterference wideningAux​(NonInterference other)
                                       throws SemanticException
        Description copied from class: BaseLattice
        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:
        • other is not null
        • other is neither top nor bottom
        • this is neither top nor bottom
        • this and other are not the same object (according both to == and to Object.equals(Object))
        Specified by:
        wideningAux in class BaseLattice<NonInterference>
        Parameters:
        other - the other lattice element
        Returns:
        the widening between this and other
        Throws:
        SemanticException - if an error occurs during the computation
      • lessOrEqualAux

        protected boolean lessOrEqualAux​(NonInterference other)
                                  throws SemanticException
        Description copied from class: BaseLattice
        Yields true if 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:
        • other is not null
        • other is neither top nor bottom
        • this is neither top nor bottom
        • this and other are not the same object (according both to == and to Object.equals(Object))
        Specified by:
        lessOrEqualAux in class BaseLattice<NonInterference>
        Parameters:
        other - the other lattice element
        Returns:
        true if and only if that condition holds
        Throws:
        SemanticException - if an error occurs during the computation
      • variable

        public NonInterference variable​(Identifier id,
                                        ProgramPoint pp)
        Description copied from interface: NonRelationalElement
        Yields a fixed abstraction of the given variable. The abstraction does not depend on the abstract values that get assigned to the variable, but is instead fixed among all possible execution paths. If this method does not return the bottom element (as the default implementation does), then Environment.assign(Identifier, SymbolicExpression, ProgramPoint) will store that abstract element instead of the one computed starting from the expression.
        Parameters:
        id - The identifier representing the variable being assigned
        pp - the program point that where this operation is being evaluated
        Returns:
        the fixed abstraction of the variable
      • tracksIdentifiers

        public boolean tracksIdentifiers​(Identifier id)
        Description copied from interface: SemanticEvaluator
        Yields true if the domain tracks information on the identifier id, false otherwise.
        Parameters:
        id - the identifier
        Returns:
        true if the domain tracks information on the identifier id, false otherwise
      • canProcess

        public boolean canProcess​(SymbolicExpression expression)
        Description copied from interface: SemanticEvaluator
        Yields true if the domain can process expression, false otherwise.
        Parameters:
        expression - the expression
        Returns:
        true if the domain can process expression, false otherwise.