Packages

object dls

Uses the DLS algorithm to find a witness for formula equations of the form ∃X_1 ... ∃X_n φ where φ is a first order formula and X_1,...,X_n are second-order variables.

If the method succeeds, the return value is a tuple of a substitution of the second order variables in the formula equation and a first order formula such that applying the substitution to the first-order formula is a first-order formula which is equivalent to the given formula equation.

A sufficient criterion for the success of the method in the case of formula equations of the form ∃X φ is that φ can be put into the form

(α_1(X) ∧ β_1(X)) ∨ ... ∨ (α_n(X) ∧ β_n(X))

where - no occurrences of X are inside the scope of a first-order existential quantifier, - α_i(X) is positive with respect to X and β_i(X) is negative with respect to X and - for every i either

  • α_i(X) does not contain X or
  • β_i(X) does not contain X or
  • every disjunction in α_i(X) ∧ β_i(X) contains at most one occurrence of X

by - simplifying φ, - moving quantifiers as far down as possible to reduce their scope and - distributing conjunctions over disjunctions in subformulae where positive and negative occurrences of X are not already separated by a conjunction.

For formula equations with more than one variable the innermost formula equation is solved first, then reduced to a first-order formula by applying the found substitution. The method is then applied recursively on the resulting formula equation with one variable less.

A Failure return value does not mean that the quantifier elimination is impossible. It just means that this algorithm could not find a witness which allows elimination of the second order quantifier. A Success return value does not mean that the returned first-order formula is valid, but only that it's equivalent to the given formula equation.

Source
dls.scala
Linear Supertypes
Ordering
  1. Alphabetic
  2. By Inheritance
Inherited
  1. dls
  2. AnyRef
  3. Any
  1. Hide All
  2. Show All
Visibility
  1. Public
  2. Protected

Value Members

  1. final def !=(arg0: Any): Boolean
    Definition Classes
    AnyRef → Any
  2. final def ##: Int
    Definition Classes
    AnyRef → Any
  3. final def ==(arg0: Any): Boolean
    Definition Classes
    AnyRef → Any
  4. def apply(formula: Formula): Try[(Substitution, Formula)]
  5. final def asInstanceOf[T0]: T0
    Definition Classes
    Any
  6. def clone(): AnyRef
    Attributes
    protected[lang]
    Definition Classes
    AnyRef
    Annotations
    @throws(classOf[java.lang.CloneNotSupportedException]) @native() @IntrinsicCandidate()
  7. final def eq(arg0: AnyRef): Boolean
    Definition Classes
    AnyRef
  8. def equals(arg0: AnyRef): Boolean
    Definition Classes
    AnyRef → Any
  9. final def getClass(): Class[_ <: AnyRef]
    Definition Classes
    AnyRef → Any
    Annotations
    @native() @IntrinsicCandidate()
  10. def hashCode(): Int
    Definition Classes
    AnyRef → Any
    Annotations
    @native() @IntrinsicCandidate()
  11. final def isInstanceOf[T0]: Boolean
    Definition Classes
    Any
  12. final def ne(arg0: AnyRef): Boolean
    Definition Classes
    AnyRef
  13. final def notify(): Unit
    Definition Classes
    AnyRef
    Annotations
    @native() @IntrinsicCandidate()
  14. final def notifyAll(): Unit
    Definition Classes
    AnyRef
    Annotations
    @native() @IntrinsicCandidate()
  15. final def synchronized[T0](arg0: => T0): T0
    Definition Classes
    AnyRef
  16. def toString(): String
    Definition Classes
    AnyRef → Any
  17. final def wait(arg0: Long, arg1: Int): Unit
    Definition Classes
    AnyRef
    Annotations
    @throws(classOf[java.lang.InterruptedException])
  18. final def wait(arg0: Long): Unit
    Definition Classes
    AnyRef
    Annotations
    @throws(classOf[java.lang.InterruptedException]) @native()
  19. final def wait(): Unit
    Definition Classes
    AnyRef
    Annotations
    @throws(classOf[java.lang.InterruptedException])

Deprecated Value Members

  1. def finalize(): Unit
    Attributes
    protected[lang]
    Definition Classes
    AnyRef
    Annotations
    @throws(classOf[java.lang.Throwable]) @Deprecated
    Deprecated

Inherited from AnyRef

Inherited from Any

Ungrouped