Documentation

Blaster.Smt.Term

Lean Inductive types having an Smt counterpart #

Create a reserve smt symbol for s

Create a normal smt symbol for s

Builtin Smt sort names. #

Smt Int symbol.

Smt Bool symbol.

Smt Prop symbol.

Smt String symbol.

Smt Nat symbol.

Smt Empty symbol.

Smt PEmpty symbol.

Smt universal type symbol.

Builtin Smt sorts. #

Smt Int Sort.

Smt Bool Sort.

Smt Prop Sort. NOTE: This sort is defined during translation whenever required. (see function definePropSort)

Smt String Sort.

Smt Param Sort instance.

Smt Array Sort

Smt Nat Sort. NOTE: This sort is defined during translation whenever required. (see function defineNatSort)

Smt Empty Sort. NOTE: This sort is declared during translation whenever required. (see function defineEmptySort)

Smt PEmpty Sort. NOTE: This sort is declared during translation whenever required. (see function definePEmptySort)

Smt @@Type Sort used to denote universal sort NOTE: This sort is declared during translation whenever required. (see function defineTypeSort).

Builtin Smt symbols. #

equality Smt symbol.

Boolean not Smt symbol

Boolean and Smt symbol.

Boolean or Smt symbol.

Implies Smt symbol.

Integer addition Smt symbol.

Integer subtraction Smt symbol.

Integer multiplication Smt symbol.

Integer native Smt division symbol.

Integer native Smt modulo symbol.

Integer Euclidean division Smt symbol. NOTE: This function is defined during translation whenever required.

Integer Euclidean modulo Smt symbol. NOTE: This function is defined during translation whenever required.

Integer truncate division Smt symbol. NOTE: This function is defined during translation whenever required.

Integer truncate modulo Smt symbol. NOTE: This function is defined during translation whenever required.

Integer floor division Smt symbol. NOTE: This function is defined during translation whenever required.

Integer floor modulo Smt symbol. NOTE: This function is defined during translation whenever required.

Integer to Nat Smt symbol. NOTE: This function is defined during translation whenever required.

Integer cast Smt symbol. NOTE: Only available in z3. This cast function is mainly used as a wrapper around power to to only handle positive exponentiation. Indeed, negative exponentiation can lead to a Real representation, which cannot be the case for Lean4 pow for both Int and Nat.

Native integer power Smt symbol.

Integer power Smt symbol. NOTE: This function is defined during translation whenever required.

Nat power Smt symbol. NOTE: This function is defined during translation whenever required.

Nat subtraction Smt symbol. NOTE: This function is defined during translation whenever required.

Integer absolute Smt symbol.

less than Smt symbol.

less than or equal to Smt symbol.

if-then-else Smt symbol.

underscore Smt symbol.

select Smt symbol.

as-array Smt symbol.

less than Smt symbol for String.

less than or equal to Smt symbol for String.

append Smt symbol for String.

replace Smt symbol for String. NOTE: Unlike the replace Lean4 function, this function only replaces the first occurrence of src by dst in s. The equivalent function for Lean4 is str.replace_all

replace all Smt symbol for String.

length Smt symbol for String.

Builtin Smt functions. #

Create an Smt application term with function name nm and parameters args.

Same as mkSmtAppN but accepts an Smt symbol as function name.

Create an Equality Smt application

Create an Boolean not Smt application

Create an Boolean and Smt application

Create an Boolean or Smt application

Create an Implies Smt application

Create an Integer addtion Smt application

Create an Integer subtraction Smt application

Create an Integer multiplication Smt application

Create an Integer native division Smt application

Create an Integer native modulo Smt application

Create an Integer negation Smt application

Create an Integer Euclidean division Smt application.

Create an Integer Euclidean modulo Smt application.

Create an Integer truncate division Smt application.

Create an Integer truncate modulo Smt application.

Create an Integer floor division Smt application.

Create an Integer floor modulo Smt application.

Create an Integer to Nat Smt conversion.

Create a native Integer power Smt application.

Create an Integer power Smt application.

Create a Nat subtraction Smt application

Create a Nat division Smt application. NOTE: This is an alias to Int.ediv at Smt level.

Equations
Instances For

    Create a Nat modulo Smt application. NOTE: This is an alias to Int.emod at Smt level.

    Equations
    Instances For

      Create an Nat power Smt application.

      Create an Integer absolute Smt application.

      Create a less than Smt application.

      Create a less than or equal to Smt application.

      Create an if-then-else Smt application.

      Create a String less than Smt application.

      Create a String less than or equal to Smt application.

      Create a String append Smt application.

      Create a String replace Smt application.

      Create a String replace all Smt application.

      Create a String length Smt application.

      Create an as-array Smt application (i.e., converting a function to an array representation).

      Equations
      • One or more equations did not get rendered due to their size.
      Instances For

        Create a select Smt application (i.e., applying an fun array representation to its arguments).

        Return true Smt term.

        Return false Smt term.

        Convert an Integer literal to an Smt representation.

        Convert an Nat literal to an Smt representation.

        Convert an String literal to an Smt representation.

        Create an Smt variable identifier.

        Create an Smt qualified variable identifier.

        Create an e-matching pattern to be used for a forall or an exists Smt term.

        Create a debug annotation name for a forall/exists Smt term.

        Annotate an Smt term with an optional list of attributes.

        Associate an optional name nm to an Smt term.

        Create a forall Smt Term, with quantifiers vars and body b. An optional theorem name nmThm can be provided as well as specific patterns to facilitate e-matching and debugging during solving.

        Create an existential Smt Term, with quantifiers vars and body b. An optional theorem name nmThm can be provided as well as specific patterns to facilitate e-matching and debugging during solving.

        Create a lambda Smt term with parameters args and body b.

        Create a let Smt term with bindings binds and body b.

        Helper functions. #

        Append smt symbol nm with "_{s}".

        Return true when t := BoolTerm true. Otherwise false.

        Return true when t := AppTerm idt args. Otherwise false.

        Determine if t is an equality Smt expression and return it's corresponding arguments. Otherwise return none.

        Determine if t is a not Smt expression and return its corresponding argument. Otherwise return none.

        Return true when t corresponds to ParamSort with name nm. Otherwise false.

        Return the smt symbol associated to the given Smt qualified identifier.