Object

smtlib.theories

Operations

Related Doc: package theories

Permalink

object Operations

General patterns for building and extracting FunctionApplication in theories.

Most SMT-LIB theories are a definition of many built-in functions. We do not wish to extend the core abstract syntax tree of SMT-LIB with theory specific operations, so a theory definition is simply providing Constructors and Extractors to build the proper trees out of core SMT-LIB FunctionApplication and Identifier.

this object provides traits to facilitate the definition of custom FunctionApplication with apply and unapply methods. They provide the proper signatures for different arities.

Refer to any theory definition to see examples of how to use these traits.

Linear Supertypes
AnyRef, Any
Ordering
  1. Alphabetic
  2. By inheritance
Inherited
  1. Operations
  2. AnyRef
  3. Any
  1. Hide All
  2. Show all
Visibility
  1. Public
  2. All

Type Members

  1. trait Operation0 extends AnyRef

    Permalink

    Operations with no arguments

  2. trait Operation1 extends AnyRef

    Permalink

    Operations with exactly one argument

  3. trait Operation2 extends AnyRef

    Permalink

    Operations with exactly two argument

  4. trait Operation3 extends AnyRef

    Permalink

    Operations with exactly three argument

  5. trait OperationN extends AnyRef

    Permalink

    Operations with variable number of arguments, requiring that the number of arguments is greater than least numRequired

  6. trait OperationN0 extends OperationN

    Permalink

    Operations with variable number of arguments, none required

  7. trait OperationN1 extends OperationN

    Permalink

    Operations with variable number of arguments, at least one required

  8. trait OperationN2 extends OperationN

    Permalink

    Operations with variable number of arguments, at least two required

    Operations with variable number of arguments, at least two required

    Corresponds to the many operations that are defined for two arguments and marked as :left-assoc or :pairwise (such as and or distinct). Note that the resulting representation in terms of AST will be the n-ary function application, and not the desugared version (successive binary operation). This choice seems to make sense for operations such as distinct that would require an exponential blowup to desugar the expression, while the latest phase of the solvers might be able to do something smarter with the more concise operation.

  9. trait OperationN3 extends OperationN

    Permalink

    Operations with variable number of arguments, at least three required

Value Members

  1. final def !=(arg0: Any): Boolean

    Permalink
    Definition Classes
    AnyRef → Any
  2. final def ##(): Int

    Permalink
    Definition Classes
    AnyRef → Any
  3. final def ==(arg0: Any): Boolean

    Permalink
    Definition Classes
    AnyRef → Any
  4. final def asInstanceOf[T0]: T0

    Permalink
    Definition Classes
    Any
  5. def clone(): AnyRef

    Permalink
    Attributes
    protected[java.lang]
    Definition Classes
    AnyRef
    Annotations
    @throws( ... )
  6. final def eq(arg0: AnyRef): Boolean

    Permalink
    Definition Classes
    AnyRef
  7. def equals(arg0: Any): Boolean

    Permalink
    Definition Classes
    AnyRef → Any
  8. def finalize(): Unit

    Permalink
    Attributes
    protected[java.lang]
    Definition Classes
    AnyRef
    Annotations
    @throws( classOf[java.lang.Throwable] )
  9. final def getClass(): Class[_]

    Permalink
    Definition Classes
    AnyRef → Any
  10. def hashCode(): Int

    Permalink
    Definition Classes
    AnyRef → Any
  11. final def isInstanceOf[T0]: Boolean

    Permalink
    Definition Classes
    Any
  12. final def ne(arg0: AnyRef): Boolean

    Permalink
    Definition Classes
    AnyRef
  13. final def notify(): Unit

    Permalink
    Definition Classes
    AnyRef
  14. final def notifyAll(): Unit

    Permalink
    Definition Classes
    AnyRef
  15. final def synchronized[T0](arg0: ⇒ T0): T0

    Permalink
    Definition Classes
    AnyRef
  16. def toString(): String

    Permalink
    Definition Classes
    AnyRef → Any
  17. final def wait(): Unit

    Permalink
    Definition Classes
    AnyRef
    Annotations
    @throws( ... )
  18. final def wait(arg0: Long, arg1: Int): Unit

    Permalink
    Definition Classes
    AnyRef
    Annotations
    @throws( ... )
  19. final def wait(arg0: Long): Unit

    Permalink
    Definition Classes
    AnyRef
    Annotations
    @throws( ... )

Inherited from AnyRef

Inherited from Any

Ungrouped