Interface BooleanFormulaManager

    • Method Detail

      • makeBoolean

        default BooleanFormula makeBoolean​(boolean value)
        Returns a BooleanFormula representing the given value.
        Parameters:
        value - the boolean value the returned Formula should represent
        Returns:
        a Formula representing the given value
      • makeFalse

        BooleanFormula makeFalse()
        Shortcut for makeBoolean(false).
      • equivalence

        BooleanFormula equivalence​(BooleanFormula formula1,
                                   BooleanFormula formula2)
        Creates a formula representing an equivalence of the two arguments.
        Parameters:
        formula1 - a Formula
        formula2 - a Formula
        Returns:
        formula1 <-> formula2
      • isTrue

        boolean isTrue​(BooleanFormula formula)
        Check, if the formula is the formula "TRUE". This does not include a satisfiability check, but only a syntactical matching. However, depending on the SMT solver, there might be some pre-processing of formulas such that trivial cases like "1==1" are recognized and rewritten as "TRUE", and thus such formulas might also be matched.
      • isFalse

        boolean isFalse​(BooleanFormula formula)
        Check, if the formula is the formula "FALSE". This does not include a satisfiability check, but only a syntactical matching. However, depending on the SMT solver, there might be some pre-processing of formulas such that trivial cases like "1==2" are recognized and rewritten as "FALSE", and thus such formulas might also be matched.
      • ifThenElse

        <T extends Formula> T ifThenElse​(BooleanFormula cond,
                                         T f1,
                                         T f2)
        Creates a formula representing IF cond THEN f1 ELSE f2.
        Parameters:
        cond - a Formula
        f1 - a Formula
        f2 - a Formula
        Returns:
        (IF cond THEN f1 ELSE f2)
      • not

        BooleanFormula not​(BooleanFormula bits)
        Creates a formula representing a negation of the argument.
        Parameters:
        bits - a Formula
        Returns:
        !bits
      • visitRecursively

        void visitRecursively​(BooleanFormula f,
                              BooleanFormulaVisitor<TraversalProcess> rFormulaVisitor)
        Visit the formula recursively with a given BooleanFormulaVisitor.

        This method guarantees that the traversal is done iteratively, without using Java recursion, and thus is not prone to StackOverflowErrors.

        Furthermore, this method also guarantees that every equal part of the formula is visited only once. Thus, it can be used to traverse DAG-like formulas efficiently.

      • transformRecursively

        BooleanFormula transformRecursively​(BooleanFormula f,
                                            BooleanFormulaTransformationVisitor pVisitor)
        Visit the formula recursively with a given BooleanFormulaVisitor. The arguments each visitor method receives are already transformed.

        This method guarantees that the traversal is done iteratively, without using Java recursion, and thus is not prone to StackOverflowErrors.

        Furthermore, this method also guarantees that every equal part of the formula is visited only once. Thus, it can be used to traverse DAG-like formulas efficiently.

      • toConjunctionArgs

        Set<BooleanFormula> toConjunctionArgs​(BooleanFormula f,
                                              boolean flatten)
        Return a set of formulas such that a conjunction over them is equivalent to the input formula.

        Example output:

        • For conjunction A /\ B /\ C: A, B, C
        • For "true": empty set.
        • For anything else: singleton set consisting of the input formula.
        Parameters:
        flatten - If true, flatten recursively.
      • toDisjunctionArgs

        Set<BooleanFormula> toDisjunctionArgs​(BooleanFormula f,
                                              boolean flatten)
        Return a set of formulas such that a disjunction over them is equivalent to the input formula.

        Example output:

        • For conjunction A \/ B \/ C: A, B, C
        • For "false": empty set.
        • For anything else: singleton set consisting of the input formula.
        Parameters:
        flatten - If true, flatten recursively.