Class DebuggingModel

java.lang.Object
org.sosy_lab.java_smt.delegate.debugging.DebuggingModel
All Implemented Interfaces:
AutoCloseable, Iterable<Model.ValueAssignment>, Evaluator, Model

public class DebuggingModel extends Object implements Model
  • Constructor Details

    • DebuggingModel

      public DebuggingModel(Model pDelegate, org.sosy_lab.java_smt.delegate.debugging.DebuggingAssertions pDebugging)
  • Method Details

    • eval

      public <T extends Formula> @Nullable T eval(T formula)
      Description copied from interface: Evaluator
      Evaluate a given formula substituting the values from the model and return it as formula.

      If a value is not relevant to the satisfiability result, the solver can choose either to insert an arbitrary value (e.g., the value 0 for the matching type) or just return null.

      The formula does not need to be a variable, we also allow complex expression. The solver will replace all symbols from the formula with their model values and then simplify the formula into a simple formula, e.g., consisting only of a numeral expression.

      Specified by:
      eval in interface Evaluator
      Parameters:
      formula - Input formula to be evaluated.
      Returns:
      evaluation of the given formula or null if the solver does not provide a better evaluation.
    • evaluate

      public @Nullable Object evaluate(Formula formula)
      Description copied from interface: Evaluator
      Evaluate a given formula substituting the values from the model.

      If a value is not relevant to the satisfiability result, the model can choose either an arbitrary value (e.g., the value 0 for the matching type) or just return null.

      The formula does not need to be a variable, we also allow complex expression.

      Specified by:
      evaluate in interface Evaluator
      Parameters:
      formula - Input formula
      Returns:
      Either of: - Number (Rational/Double/BigInteger/Long/Integer) - Boolean
    • evaluate

      public @Nullable BigInteger evaluate(NumeralFormula.IntegerFormula formula)
      Description copied from interface: Evaluator
      Type-safe evaluation for integer formulas.

      The formula does not need to be a variable, we also allow complex expression.

      Specified by:
      evaluate in interface Evaluator
    • evaluate

      public @Nullable Rational evaluate(NumeralFormula.RationalFormula formula)
      Description copied from interface: Evaluator
      Type-safe evaluation for rational formulas.

      The formula does not need to be a variable, we also allow complex expression.

      Specified by:
      evaluate in interface Evaluator
    • evaluate

      public @Nullable Boolean evaluate(BooleanFormula formula)
      Description copied from interface: Evaluator
      Type-safe evaluation for boolean formulas.

      The formula does not need to be a variable, we also allow complex expression.

      Specified by:
      evaluate in interface Evaluator
    • evaluate

      public @Nullable BigInteger evaluate(BitvectorFormula formula)
      Description copied from interface: Evaluator
      Type-safe evaluation for bitvector formulas.

      The formula does not need to be a variable, we also allow complex expression.

      Specified by:
      evaluate in interface Evaluator
    • evaluate

      public @Nullable String evaluate(StringFormula formula)
      Description copied from interface: Evaluator
      Type-safe evaluation for string formulas.

      The formula does not need to be a variable, we also allow complex expression.

      Specified by:
      evaluate in interface Evaluator
    • evaluate

      public @Nullable String evaluate(EnumerationFormula formula)
      Description copied from interface: Evaluator
      Type-safe evaluation for enumeration formulas.

      The formula does not need to be a variable, we also allow complex expression.

      Specified by:
      evaluate in interface Evaluator
    • evaluate

      public @Nullable FloatingPointNumber evaluate(FloatingPointFormula formula)
      Description copied from interface: Evaluator
      Type-safe evaluation for floating-point formulas.

      The formula does not need to be a variable, we also allow complex expression.

      Specified by:
      evaluate in interface Evaluator
    • asList

      Description copied from interface: Model
      Build a list of assignments that stays valid after closing the model.
      Specified by:
      asList in interface Model
    • close

      public void close()
      Description copied from interface: Model
      Free resources associated with this model (existing Model.ValueAssignment instances stay valid, but Evaluator.evaluate(Formula) etc. and Model.iterator() must not be called again).
      Specified by:
      close in interface AutoCloseable
      Specified by:
      close in interface Evaluator
      Specified by:
      close in interface Model