Kind
Every Term has an associated kind, represented
as enum class cvc5::Kind.
This kind distinguishes if the Term is a value, constant, variable or operator,
and what kind of each.
For example, a bit-vector value has kind
CONST_BITVECTOR,
a free constant symbol has kind
CONSTANT,
an equality over terms of any sort has kind
EQUAL, and a universally
quantified formula has kind FORALL.
- 
enum class cvc5::Kind
 The kind of a cvc5 Term.
Values:
- 
enumerator INTERNAL_KIND
 Internal kind.
This kind serves as an abstraction for internal kinds that are not exposed via the API but may appear in terms returned by API functions, e.g., when querying the simplified form of a term.
Note
Should never be created via the API.
- 
enumerator UNDEFINED_KIND
 Undefined kind.
Note
Should never be exposed or created via the API.
- 
enumerator NULL_TERM
 Null kind.
The kind of a null term (Term::Term()).
Note
May not be explicitly created via API functions other than
Term::Term().
- 
enumerator UNINTERPRETED_SORT_VALUE
 The value of an uninterpreted constant.
Note
May be returned as the result of an API call, but terms of this kind may not be created explicitly via the API and may not appear in assertions.
- 
enumerator EQUAL
 Equality, chainable.
- 
enumerator DISTINCT
 Disequality.
- 
enumerator VARIABLE
 (Bound) variable.
Create Term of this Kind with:
Note
Only permitted in bindings and in lambda and quantifier bodies.
- 
enumerator SKOLEM
 A Skolem.
Note
Represents an internally generated term. Information on the skolem is available via the calls
Term::getSkolemId()andTerm::getSkolemIndices().
- 
enumerator SEXPR
 Symbolic expression.
Arity:
n > 01..n:Terms with same sorts
Create Term of this Kind with:
Create Op of this kind with:
Warning
This kind is experimental and may be changed or removed in future versions.
- 
enumerator LAMBDA
 Lambda expression.
- 
enumerator WITNESS
 Witness.
The syntax of a witness term is similar to a quantified formula except that only one variable is allowed. For example, the term
(witness ((x S)) F)
returns an element \(x\) of Sort \(S\) and asserts formula \(F\).
The witness operator behaves like the description operator (see https://planetmath.org/hilbertsvarepsilonoperator) if there is no \(x\) that satisfies \(F\). But if such \(x\) exists, the witness operator does not enforce the following axiom which ensures uniqueness up to logical equivalence:
\[\forall x. F \equiv G \Rightarrow witness~x. F = witness~x. G\]For example, if there are two elements of Sort \(S\) that satisfy formula \(F\), then the following formula is satisfiable:
(distinct (witness ((x Int)) F) (witness ((x Int)) F))
Note
This kind is primarily used internally, but may be returned in models (e.g., for arithmetic terms in non-linear queries). However, it is not supported by the parser. Moreover, the user of the API should be cautious when using this operator. In general, all witness terms
(witness ((x Int)) F)should be such that(exists ((x Int)) F)is a valid formula. If this is not the case, then the semantics in formulas that use witness terms may be unintuitive. For example, the following formula is unsatisfiable:(or (= (witness ((x Int)) false) 0) (not (= (witness ((x Int)) false) 0)), whereas notice that(or (= z 0) (not (= z 0)))is true for any \(z\).
- 
enumerator NOT
 Logical negation.
- 
enumerator AND
 Logical conjunction.
- 
enumerator IMPLIES
 Logical implication.
- 
enumerator OR
 Logical disjunction.
- 
enumerator XOR
 Logical exclusive disjunction, left associative.
- 
enumerator APPLY_UF
 Application of an uninterpreted function.
- 
enumerator CARDINALITY_CONSTRAINT
 Cardinality constraint on uninterpreted sort.
Interpreted as a predicate that is true when the cardinality of uinterpreted Sort \(S\) is less than or equal to an upper bound.
Create Term of this Kind with:
- 
enumerator HO_APPLY
 Higher-order applicative encoding of function application, left associative.
- 
enumerator ADD
 Arithmetic addition.
- 
enumerator MULT
 Arithmetic multiplication.
- 
enumerator IAND
 Integer and.
Operator for bit-wise
ANDover integers, parameterized by a (positive) bit-width \(k\).((_ iand k) i_1 i_2)
is equivalent to
(ubv_to_int (bvand ((_ int_to_bv k) i_1) ((_ int_to_bv k) i_2)))
for all integers
i_1,i_2.Arity:
21..2:Terms of Sort Int
Indices:
11:Bit-width \(k\)
- 
enumerator POW2
 Power of two.
Operator for raising
2to a non-negative integer power.
- 
enumerator SUB
 Arithmetic subtraction, left associative.
- 
enumerator NEG
 Arithmetic negation.
- 
enumerator DIVISION
 Real division, division by 0 undefined, left associative.
- 
enumerator DIVISION_TOTAL
 Real division, division by 0 defined to be 0, left associative.
Warning
This kind is experimental and may be changed or removed in future versions.
- 
enumerator INTS_DIVISION
 Integer division, division by 0 undefined, left associative.
- 
enumerator INTS_DIVISION_TOTAL
 Integer division, division by 0 defined to be 0, left associative.
Warning
This kind is experimental and may be changed or removed in future versions.
- 
enumerator INTS_MODULUS
 Integer modulus, modulus by 0 undefined.
- 
enumerator INTS_MODULUS_TOTAL
 Integer modulus, t modulus by 0 defined to be t.
Warning
This kind is experimental and may be changed or removed in future versions.
- 
enumerator ABS
 Absolute value.
- 
enumerator POW
 Arithmetic power.
- 
enumerator EXPONENTIAL
 Exponential function.
- 
enumerator SINE
 Sine function.
- 
enumerator COSINE
 Cosine function.
- 
enumerator TANGENT
 Tangent function.
- 
enumerator COSECANT
 Cosecant function.
- 
enumerator SECANT
 Secant function.
- 
enumerator COTANGENT
 Cotangent function.
- 
enumerator ARCSINE
 Arc sine function.
- 
enumerator ARCCOSINE
 Arc cosine function.
- 
enumerator ARCTANGENT
 Arc tangent function.
- 
enumerator ARCCOSECANT
 Arc cosecant function.
- 
enumerator ARCSECANT
 Arc secant function.
- 
enumerator ARCCOTANGENT
 Arc cotangent function.
- 
enumerator SQRT
 Square root.
If the argument
xis non-negative, then this returns a non-negative valueysuch thaty * y = x.
- 
enumerator DIVISIBLE
 Operator for the divisibility-by-\(k\) predicate.
Arity:
11:Term of Sort Int
Indices:
11:The integer \(k\) to divide by.
- 
enumerator LT
 Less than, chainable.
- 
enumerator LEQ
 Less than or equal, chainable.
- 
enumerator GT
 Greater than, chainable.
- 
enumerator GEQ
 Greater than or equal, chainable.
- 
enumerator IS_INTEGER
 Is-integer predicate.
- 
enumerator TO_INTEGER
 Convert Term of sort Int or Real to Int via the floor function.
- 
enumerator TO_REAL
 
- 
enumerator PI
 Pi constant.
Create Term of this Kind with:
Note
PIis considered a special symbol of Sort Real, but is not a Real value, i.e.,Term::isRealValue()will returnfalse.
- 
enumerator BITVECTOR_CONCAT
 Concatenation of two or more bit-vectors.
- 
enumerator BITVECTOR_AND
 Bit-wise and.
- 
enumerator BITVECTOR_OR
 Bit-wise or.
- 
enumerator BITVECTOR_XOR
 Bit-wise xor.
- 
enumerator BITVECTOR_NOT
 Bit-wise negation.
- 
enumerator BITVECTOR_NAND
 Bit-wise nand.
- 
enumerator BITVECTOR_NOR
 Bit-wise nor.
- 
enumerator BITVECTOR_XNOR
 Bit-wise xnor, left associative.
- 
enumerator BITVECTOR_COMP
 Equality comparison (returns bit-vector of size
1).
- 
enumerator BITVECTOR_MULT
 Multiplication of two or more bit-vectors.
- 
enumerator BITVECTOR_ADD
 Addition of two or more bit-vectors.
- 
enumerator BITVECTOR_SUB
 Subtraction of two bit-vectors.
- 
enumerator BITVECTOR_NEG
 Negation of a bit-vector (two’s complement).
- 
enumerator BITVECTOR_UDIV
 Unsigned bit-vector division.
Truncates towards
0. If the divisor is zero, the result is all ones.
- 
enumerator BITVECTOR_UREM
 Unsigned bit-vector remainder.
Remainder from unsigned bit-vector division. If the modulus is zero, the result is the dividend.
- 
enumerator BITVECTOR_SDIV
 Signed bit-vector division.
Two’s complement signed division of two bit-vectors. If the divisor is zero and the dividend is positive, the result is all ones. If the divisor is zero and the dividend is negative, the result is one.
- 
enumerator BITVECTOR_SREM
 Signed bit-vector remainder (sign follows dividend).
Two’s complement signed remainder of two bit-vectors where the sign follows the dividend. If the modulus is zero, the result is the dividend.
- 
enumerator BITVECTOR_SMOD
 Signed bit-vector remainder (sign follows divisor).
Two’s complement signed remainder where the sign follows the divisor. If the modulus is zero, the result is the dividend.
- 
enumerator BITVECTOR_SHL
 Bit-vector shift left.
- 
enumerator BITVECTOR_LSHR
 Bit-vector logical shift right.
- 
enumerator BITVECTOR_ASHR
 Bit-vector arithmetic shift right.
- 
enumerator BITVECTOR_ULT
 Bit-vector unsigned less than.
- 
enumerator BITVECTOR_ULE
 Bit-vector unsigned less than or equal.
- 
enumerator BITVECTOR_UGT
 Bit-vector unsigned greater than.
- 
enumerator BITVECTOR_UGE
 Bit-vector unsigned greater than or equal.
- 
enumerator BITVECTOR_SLT
 Bit-vector signed less than.
- 
enumerator BITVECTOR_SLE
 Bit-vector signed less than or equal.
- 
enumerator BITVECTOR_SGT
 Bit-vector signed greater than.
- 
enumerator BITVECTOR_SGE
 Bit-vector signed greater than or equal.
- 
enumerator BITVECTOR_ULTBV
 Bit-vector unsigned less than returning a bit-vector of size 1.
- 
enumerator BITVECTOR_SLTBV
 Bit-vector signed less than returning a bit-vector of size
1.
- 
enumerator BITVECTOR_ITE
 Bit-vector if-then-else.
Same semantics as regular ITE, but condition is bit-vector of size
1.
- 
enumerator BITVECTOR_REDOR
 Bit-vector redor.
- 
enumerator BITVECTOR_REDAND
 Bit-vector redand.
- 
enumerator BITVECTOR_NEGO
 Bit-vector negation overflow detection.
- 
enumerator BITVECTOR_UADDO
 Bit-vector unsigned addition overflow detection.
- 
enumerator BITVECTOR_SADDO
 Bit-vector signed addition overflow detection.
- 
enumerator BITVECTOR_UMULO
 Bit-vector unsigned multiplication overflow detection.
- 
enumerator BITVECTOR_SMULO
 Bit-vector signed multiplication overflow detection.
- 
enumerator BITVECTOR_USUBO
 Bit-vector unsigned subtraction overflow detection.
- 
enumerator BITVECTOR_SSUBO
 Bit-vector signed subtraction overflow detection.
- 
enumerator BITVECTOR_SDIVO
 Bit-vector signed division overflow detection.
- 
enumerator BITVECTOR_EXTRACT
 Bit-vector extract.
- 
enumerator BITVECTOR_REPEAT
 Bit-vector repeat.
- 
enumerator BITVECTOR_ZERO_EXTEND
 Bit-vector zero extension.
- 
enumerator BITVECTOR_SIGN_EXTEND
 Bit-vector sign extension.
- 
enumerator BITVECTOR_ROTATE_LEFT
 Bit-vector rotate left.
- 
enumerator BITVECTOR_ROTATE_RIGHT
 Bit-vector rotate right.
- 
enumerator INT_TO_BITVECTOR
 Conversion from Int to bit-vector.
- 
enumerator BITVECTOR_TO_NAT
 Bit-vector conversion to (non-negative) integer.
Note
This kind is deprecated and replaced by BITVECTOR_UBV_TO_INT. It will be removed in a future release.
- 
enumerator BITVECTOR_UBV_TO_INT
 Bit-vector conversion, unsigned bit-vector to integer.
- 
enumerator BITVECTOR_SBV_TO_INT
 Bit-vector conversion, signed bit-vector to integer.
- 
enumerator BITVECTOR_FROM_BOOLS
 Converts a list of Bool terms to a bit-vector.
Arity:
n > 01..n:Terms of Sort Bool
Note
May be returned as the result of an API call, but terms of this kind may not be created explicitly via the API and may not appear in assertions.
- 
enumerator BITVECTOR_BIT
 Retrieves the bit at the given index from a bit-vector as a Bool term.
Note
May be returned as the result of an API call, but terms of this kind may not be created explicitly via the API and may not appear in assertions.
- 
enumerator FINITE_FIELD_NEG
 Negation of a finite field element (additive inverse).
- 
enumerator FINITE_FIELD_ADD
 Addition of two or more finite field elements.
- 
enumerator FINITE_FIELD_BITSUM
 Bitsum of two or more finite field elements: x + 2y + 4z + …
- 
enumerator FINITE_FIELD_MULT
 Multiplication of two or more finite field elements.
- 
enumerator CONST_FLOATINGPOINT
 Floating-point constant, created from IEEE-754 bit-vector representation of the floating-point value.
Create Term of this Kind with:
TermManager::mkFloatingPoint(uint32_t, uint32_t, Term)
- 
enumerator FLOATINGPOINT_FP
 Create floating-point literal from bit-vector triple.
- 
enumerator FLOATINGPOINT_EQ
 Floating-point equality.
- 
enumerator FLOATINGPOINT_ABS
 Floating-point absolute value.
- 
enumerator FLOATINGPOINT_NEG
 Floating-point negation.
- 
enumerator FLOATINGPOINT_ADD
 Floating-point addition.
- 
enumerator FLOATINGPOINT_SUB
 Floating-point sutraction.
- 
enumerator FLOATINGPOINT_MULT
 Floating-point multiply.
- 
enumerator FLOATINGPOINT_DIV
 Floating-point division.
- 
enumerator FLOATINGPOINT_FMA
 Floating-point fused multiply and add.
- 
enumerator FLOATINGPOINT_SQRT
 Floating-point square root.
- 
enumerator FLOATINGPOINT_REM
 Floating-point remainder.
- 
enumerator FLOATINGPOINT_RTI
 Floating-point round to integral.
- 
enumerator FLOATINGPOINT_MIN
 Floating-point minimum.
- 
enumerator FLOATINGPOINT_MAX
 Floating-point maximum.
- 
enumerator FLOATINGPOINT_LEQ
 Floating-point less than or equal.
- 
enumerator FLOATINGPOINT_LT
 Floating-point less than.
- 
enumerator FLOATINGPOINT_GEQ
 Floating-point greater than or equal.
- 
enumerator FLOATINGPOINT_GT
 Floating-point greater than.
- 
enumerator FLOATINGPOINT_IS_NORMAL
 Floating-point is normal tester.
- 
enumerator FLOATINGPOINT_IS_SUBNORMAL
 Floating-point is sub-normal tester.
- 
enumerator FLOATINGPOINT_IS_ZERO
 Floating-point is zero tester.
- 
enumerator FLOATINGPOINT_IS_INF
 Floating-point is infinite tester.
- 
enumerator FLOATINGPOINT_IS_NAN
 Floating-point is NaN tester.
- 
enumerator FLOATINGPOINT_IS_NEG
 Floating-point is negative tester.
- 
enumerator FLOATINGPOINT_IS_POS
 Floating-point is positive tester.
- 
enumerator FLOATINGPOINT_TO_FP_FROM_IEEE_BV
 Conversion to floating-point from IEEE-754 bit-vector.
- 
enumerator FLOATINGPOINT_TO_FP_FROM_FP
 Conversion to floating-point from floating-point.
- 
enumerator FLOATINGPOINT_TO_FP_FROM_REAL
 Conversion to floating-point from Real.
- 
enumerator FLOATINGPOINT_TO_FP_FROM_SBV
 Conversion to floating-point from signed bit-vector.
- 
enumerator FLOATINGPOINT_TO_FP_FROM_UBV
 Conversion to floating-point from unsigned bit-vector.
- 
enumerator FLOATINGPOINT_TO_UBV
 Conversion to unsigned bit-vector from floating-point.
- 
enumerator FLOATINGPOINT_TO_SBV
 Conversion to signed bit-vector from floating-point.
- 
enumerator FLOATINGPOINT_TO_REAL
 Conversion to Real from floating-point.
- 
enumerator SELECT
 Array select.
- 
enumerator CONST_ARRAY
 Constant array.
- 
enumerator EQ_RANGE
 Equality over arrays \(a\) and \(b\) over a given range \([i,j]\), i.e.,
\[\forall k . i \leq k \leq j \Rightarrow a[k] = b[k]\]Note
We currently support the creation of array equalities over index Sorts bit-vector, floating-point, Int and Real. Requires to enable option arrays-exp.
Warning
This kind is experimental and may be changed or removed in future versions.
- 
enumerator APPLY_CONSTRUCTOR
 Datatype constructor application.
Arity:
n > 01:DatatypeConstructor Term (see DatatypeConstructor::getTerm() const)2..n:Terms of the Sorts of the selectors of the constructor (the arguments to the constructor)
Create Term of this Kind with:
Create Op of this kind with:
- 
enumerator APPLY_SELECTOR
 Datatype selector application.
Arity:
2Create Term of this Kind with:
Create Op of this kind with:
Note
Undefined if misapplied.
- 
enumerator APPLY_TESTER
 Datatype tester application.
- 
enumerator APPLY_UPDATER
 Datatype update application.
Note
Does not change the datatype argument if misapplied.
- 
enumerator MATCH
 Match expression.
This kind is primarily used in the parser to support the SMT-LIBv2
matchexpression.For example, the SMT-LIBv2 syntax for the following match term
(match l (((cons h t) h) (nil 0)))
is represented by the AST
(MATCH l (MATCH_BIND_CASE (VARIABLE_LIST h t) (cons h t) h) (MATCH_CASE nil 0))
Terms of kind
MATCH_CASEare constant case expressions, which are used for nullary constructors. KindMATCH_BIND_CASEis used for constructors with selectors and variable match patterns. If not all constructors are covered, at least one catch-all variable pattern must be included.Arity:
n > 11..n:Terms of kindMATCH_CASEandMATCH_BIND_CASE
- 
enumerator MATCH_CASE
 Match case for nullary constructors.
A (constant) case expression to be used within a match expression.
Arity:
21:Term of kindAPPLY_CONSTRUCTOR(the pattern to match against)2:Term of any Sort (the term the match term evaluates to)
- 
enumerator MATCH_BIND_CASE
 Match case with binders, for constructors with selectors and variable patterns.
A (non-constant) case expression to be used within a match expression.
Arity:
3For variable patterns:
1:Term of kindVARIABLE_LIST(containing the free variable of the case)2:Term of kindVARIABLE(the pattern expression, the free variable of the case)3:Term of any Sort (the term the pattern evaluates to)
For constructors with selectors:
1:Term of kindVARIABLE_LIST(containing the free variable of the case)2:Term of kindAPPLY_CONSTRUCTOR(the pattern expression, applying the set of variables to the constructor)3:Term of any Sort (the term the match term evaluates to)
- 
enumerator TUPLE_PROJECT
 Tuple projection.
This operator takes a tuple as an argument and returns a tuple obtained by concatenating components of its argument at the provided indices.
For example,
yields((_ tuple.project 1 2 2 3 1) (tuple 10 20 30 40))
(tuple 20 30 30 40 20)
- 
enumerator NULLABLE_LIFT
 Lifting operator for nullable terms. This operator lifts a built-in operator or a user-defined function to nullable terms. For built-in kinds use mkNullableLift. For user-defined functions use mkTerm.
Arity:
n > 11..n:Terms of nullable sortCreate Term of this Kind with:
- 
enumerator SEP_NIL
 Separation logic nil.
Create Term of this Kind with:
Warning
This kind is experimental and may be changed or removed in future versions.
- 
enumerator SEP_EMP
 Separation logic empty heap.
Create Term of this Kind with:
Warning
This kind is experimental and may be changed or removed in future versions.
- 
enumerator SEP_PTO
 Separation logic points-to relation.
Warning
This kind is experimental and may be changed or removed in future versions.
- 
enumerator SEP_STAR
 Separation logic star.
Arity:
n > 11..n:Terms of sort Bool (the child constraints that hold in disjoint (separated) heaps)
Create Term of this Kind with:
Create Op of this kind with:
Warning
This kind is experimental and may be changed or removed in future versions.
- 
enumerator SEP_WAND
 Separation logic magic wand.
Warning
This kind is experimental and may be changed or removed in future versions.
- 
enumerator SET_UNION
 Set union.
- 
enumerator SET_INTER
 Set intersection.
- 
enumerator SET_MINUS
 Set subtraction.
- 
enumerator SET_SUBSET
 Subset predicate.
Determines if the first set is a subset of the second set.
- 
enumerator SET_MEMBER
 Set membership predicate.
Determines if the given set element is a member of the second set.
- 
enumerator SET_SINGLETON
 Singleton set.
Construct a singleton set from an element given as a parameter. The returned set has the same Sort as the element.
- 
enumerator SET_INSERT
 The set obtained by inserting elements;
- 
enumerator SET_CARD
 Set cardinality.
- 
enumerator SET_COMPLEMENT
 Set complement with respect to finite universe.
- 
enumerator SET_UNIVERSE
 Finite universe set.
All set variables must be interpreted as subsets of it.
Create Term of this Kind with:
Note
SET_UNIVERSEis considered a special symbol of the theory of sets and is not considered as a set value, i.e., Term::isSetValue() will returnfalse.
- 
enumerator SET_COMPREHENSION
 Set comprehension
A set comprehension is specified by a variable list \(x_1 ... x_n\), a predicate \(P[x_1...x_n]\), and a term \(t[x_1...x_n]\). A comprehension \(C\) with the above form has members given by the following semantics:
\[\forall y. ( \exists x_1...x_n. P[x_1...x_n] \wedge t[x_1...x_n] = y ) \Leftrightarrow (set.member \; y \; C)\]where \(y\) ranges over the element Sort of the (set) Sort of the comprehension. If \(t[x_1..x_n]\) is not provided, it is equivalent to \(y\) in the above formula.
Arity:
31:Term of KindVARIABLE_LIST2:Term of sort Bool (the predicate of the comprehension)3:(optional) Term denoting the generator for the comprehension
Warning
This kind is experimental and may be changed or removed in future versions.
- 
enumerator SET_CHOOSE
 Set choose.
Select an element from a given set. For a set \(A = \{x\}\), the term (set.choose \(A\)) is equivalent to the term \(x_1\). For an empty set, it is an arbitrary value. For a set with cardinality > 1, it will deterministically return an element in \(A\).
Warning
This kind is experimental and may be changed or removed in future versions.
- 
enumerator SET_IS_EMPTY
 Set is empty tester.
Warning
This kind is experimental and may be changed or removed in future versions.
- 
enumerator SET_IS_SINGLETON
 Set is singleton tester.
Warning
This kind is experimental and may be changed or removed in future versions.
- 
enumerator SET_MAP
 Set map.
This operator applies the first argument, a function of Sort \((\rightarrow S_1 \; S_2)\), to every element of the second argument, a set of Sort (Set \(S_1\)), and returns a set of Sort (Set \(S_2\)).
Arity:
21:Term of function Sort \((\rightarrow S_1 \; S_2)\)2:Term of set Sort (Set \(S_1\))
Warning
This kind is experimental and may be changed or removed in future versions.
- 
enumerator SET_FILTER
 Set filter.
This operator filters the elements of a set. (set.filter \(p \; A\)) takes a predicate \(p\) of Sort \((\rightarrow T \; Bool)\) as a first argument, and a set \(A\) of Sort (Set \(T\)) as a second argument, and returns a subset of Sort (Set \(T\)) that includes all elements of \(A\) that satisfy \(p\).
Arity:
21:Term of function Sort \((\rightarrow T \; Bool)\)2:Term of bag Sort (Set \(T\))
Create Term of this Kind with:
Warning
This kind is experimental and may be changed or removed in future versions.
- 
enumerator SET_ALL
 Set all.
This operator checks whether all elements of a set satisfy a predicate. (set.all \(p \; A\)) takes a predicate \(p\) of Sort \((\rightarrow T \; Bool)\) as a first argument, and a set \(A\) of Sort (Set \(T\)) as a second argument, and returns true iff all elements of \(A\) satisfy predicate \(p\).
Arity:
21:Term of function Sort \((\rightarrow T \; Bool)\)2:Term of set Sort (Set \(T\))
Create Term of this Kind with:
Warning
This kind is experimental and may be changed or removed in future versions.
- 
enumerator SET_SOME
 Set some.
This operator checks whether at least one element of a set satisfies a predicate. (set.some \(p \; A\)) takes a predicate \(p\) of Sort \((\rightarrow T \; Bool)\) as a first argument, and a set \(A\) of Sort (Set \(T\)) as a second argument, and returns true iff at least one element of \(A\) satisfies predicate \(p\).
Arity:
21:Term of function Sort \((\rightarrow T \; Bool)\)2:Term of set Sort (Set \(T\))
Create Term of this Kind with:
Warning
This kind is experimental and may be changed or removed in future versions.
- 
enumerator SET_FOLD
 Set fold.
This operator combines elements of a set into a single value. (set.fold \(f \; t \; A\)) folds the elements of set \(A\) starting with Term \(t\) and using the combining function \(f\).
Arity:
21:Term of function Sort \((\rightarrow S_1 \; S_2 \; S_2)\)2:Term of Sort \(S_2\) (the initial value)3:Term of bag Sort (Set \(S_1\))
Create Term of this Kind with:
Warning
This kind is experimental and may be changed or removed in future versions.
- 
enumerator RELATION_JOIN
 Relation join.
- 
enumerator RELATION_TABLE_JOIN
 Table join operator for relations has the form \(((\_ \; rel.table\_join \; m_1 \; n_1 \; \dots \; m_k \; n_k) \; A \; B)\) where \(m_1 \; n_1 \; \dots \; m_k \; n_k\) are natural numbers, and \(A, B\) are relations. This operator filters the product of two sets based on the equality of projected tuples using indices \(m_1, \dots, m_k\) in relation \(A\), and indices \(n_1, \dots, n_k\) in relation \(B\).
Arity:
21:Term of relation Sort2:Term of relation Sort
Indices:
n-1..n:Indices of the projection
- 
enumerator RELATION_PRODUCT
 Relation cartesian product.
- 
enumerator RELATION_TRANSPOSE
 Relation transpose.
- 
enumerator RELATION_TCLOSURE
 Relation transitive closure.
- 
enumerator RELATION_JOIN_IMAGE
 Relation join image.
Warning
This kind is experimental and may be changed or removed in future versions.
- 
enumerator RELATION_IDEN
 Relation identity.
Warning
This kind is experimental and may be changed or removed in future versions.
- 
enumerator RELATION_GROUP
 Relation group
\(((\_ \; rel.group \; n_1 \; \dots \; n_k) \; A)\) partitions tuples of relation \(A\) such that tuples that have the same projection with indices \(n_1 \; \dots \; n_k\) are in the same part. It returns a set of relations of type \((Set \; T)\) where \(T\) is the type of \(A\).
Arity:
11:Term of relation sort
Indices:
n1..n:Indices of the projection
Create Term of this Kind with:
Warning
This kind is experimental and may be changed or removed in future versions.
- 
enumerator RELATION_AGGREGATE
 Relation aggregate operator has the form \(((\_ \; rel.aggr \; n_1 ... n_k) \; f \; i \; A)\) where \(n_1, ..., n_k\) are natural numbers, \(f\) is a function of type \((\rightarrow (Tuple \; T_1 \; ... \; T_j)\; T \; T)\), \(i\) has the type \(T\), and \(A\) has type \((Relation \; T_1 \; ... \; T_j)\). The returned type is \((Set \; T)\).
This operator aggregates elements in A that have the same tuple projection with indices n_1, …, n_k using the combining function \(f\), and initial value \(i\).
Arity:
31:Term of sort \((\rightarrow (Tuple \; T_1 \; ... \; T_j)\; T \; T)\)2:Term of Sort \(T\)3:Term of relation sort \(Relation T_1 ... T_j\)
Indices:
n-1..n:Indices of the projection
Warning
This kind is experimental and may be changed or removed in future versions.
- 
enumerator RELATION_PROJECT
 Relation projection operator extends tuple projection operator to sets.
Arity:
1Indices:
n1..n:Indices of the projection
Create Term of this Kind with:
Create Op of this kind with:
Warning
This kind is experimental and may be changed or removed in future versions.
- 
enumerator BAG_UNION_MAX
 Bag max union.
- 
enumerator BAG_UNION_DISJOINT
 Bag disjoint union (sum).
- 
enumerator BAG_INTER_MIN
 Bag intersection (min).
- 
enumerator BAG_DIFFERENCE_SUBTRACT
 Bag difference subtract.
Subtracts multiplicities of the second from the first.
- 
enumerator BAG_DIFFERENCE_REMOVE
 Bag difference remove.
Removes shared elements in the two bags.
- 
enumerator BAG_SUBBAG
 Bag inclusion predicate.
Determine if multiplicities of the first bag are less than or equal to multiplicities of the second bag.
- 
enumerator BAG_COUNT
 Bag element multiplicity.
Create Term of this Kind with:
TermManager::mkTerm(Kind, const Term&, const Term&)
- 
enumerator BAG_MEMBER
 Bag membership predicate.
- 
enumerator BAG_SETOF
 Bag setof.
Eliminate duplicates in a given bag. The returned bag contains exactly the same elements in the given bag, but with multiplicity one.
Warning
This kind is experimental and may be changed or removed in future versions.
- 
enumerator BAG_MAKE
 Bag make.
Construct a bag with the given element and given multiplicity.
- 
enumerator BAG_CARD
 Bag cardinality.
Warning
This kind is experimental and may be changed or removed in future versions.
- 
enumerator BAG_CHOOSE
 Bag choose.
Select an element from a given bag.
For a bag \(A = \{(x,n)\}\) where \(n\) is the multiplicity, then the term (choose \(A\)) is equivalent to the term \(x\). For an empty bag, then it is an arbitrary value. For a bag that contains distinct elements, it will deterministically return an element in \(A\).
Warning
This kind is experimental and may be changed or removed in future versions.
- 
enumerator BAG_MAP
 Bag map.
This operator applies the first argument, a function of Sort \((\rightarrow S_1 \; S_2)\), to every element of the second argument, a set of Sort (Bag \(S_1\)), and returns a set of Sort (Bag \(S_2\)).
Arity:
21:Term of function Sort \((\rightarrow S_1 \; S_2)\)2:Term of bag Sort (Bag \(S_1\))
Warning
This kind is experimental and may be changed or removed in future versions.
- 
enumerator BAG_FILTER
 Bag filter.
This operator filters the elements of a bag. (bag.filter \(p \; B\)) takes a predicate \(p\) of Sort \((\rightarrow T \; Bool)\) as a first argument, and a bag \(B\) of Sort (Bag \(T\)) as a second argument, and returns a subbag of Sort (Bag \(T\)) that includes all elements of \(B\) that satisfy \(p\) with the same multiplicity.
Arity:
21:Term of function Sort \((\rightarrow T \; Bool)\)2:Term of bag Sort (Bag \(T\))
Create Term of this Kind with:
Warning
This kind is experimental and may be changed or removed in future versions.
- 
enumerator BAG_ALL
 Bag all.
This operator checks whether all elements of a bag satisfy a predicate. (bag.all \(p \; A\)) takes a predicate \(p\) of Sort \((\rightarrow T \; Bool)\) as a first argument, and a bag \(A\) of Sort (Bag \(T\)) as a second argument, and returns true iff all elements of \(A\) satisfy predicate \(p\).
Arity:
21:Term of function Sort \((\rightarrow T \; Bool)\)2:Term of bag Sort (Bag \(T\))
Create Term of this Kind with:
Warning
This kind is experimental and may be changed or removed in future versions.
- 
enumerator BAG_SOME
 Bag some.
This operator checks whether at least one element of a bag satisfies a predicate. (bag.some \(p \; A\)) takes a predicate \(p\) of Sort \((\rightarrow T \; Bool)\) as a first argument, and a bag \(A\) of Sort (Bag \(T\)) as a second argument, and returns true iff at least one element of \(A\) satisfies predicate \(p\).
Arity:
21:Term of function Sort \((\rightarrow T \; Bool)\)2:Term of bag Sort (Bag \(T\))
Create Term of this Kind with:
Warning
This kind is experimental and may be changed or removed in future versions.
- 
enumerator BAG_FOLD
 Bag fold.
This operator combines elements of a bag into a single value. (bag.fold \(f \; t \; B\)) folds the elements of bag \(B\) starting with Term \(t\) and using the combining function \(f\).
Arity:
21:Term of function Sort \((\rightarrow S_1 \; S_2 \; S_2)\)2:Term of Sort \(S_2\) (the initial value)3:Term of bag Sort (Bag \(S_1\))
Create Term of this Kind with:
Warning
This kind is experimental and may be changed or removed in future versions.
- 
enumerator BAG_PARTITION
 Bag partition.
This operator partitions of a bag of elements into disjoint bags. (bag.partition \(r \; B\)) partitions the elements of bag \(B\) of type \((Bag \; E)\) based on the equivalence relations \(r\) of type \((\rightarrow \; E \; E \; Bool)\). It returns a bag of bags of type \((Bag \; (Bag \; E))\).
Arity:
21:Term of function Sort \((\rightarrow \; E \; E \; Bool)\)2:Term of bag Sort (Bag \(E\))
Create Term of this Kind with:
Warning
This kind is experimental and may be changed or removed in future versions.
- 
enumerator TABLE_PRODUCT
 Table cross product.
Warning
This kind is experimental and may be changed or removed in future versions.
- 
enumerator TABLE_PROJECT
 Table projection operator extends tuple projection operator to tables.
Arity:
1Indices:
n1..n:Indices of the projection
Create Term of this Kind with:
Create Op of this kind with:
Warning
This kind is experimental and may be changed or removed in future versions.
- 
enumerator TABLE_AGGREGATE
 Table aggregate operator has the form \(((\_ \; table.aggr \; n_1 ... n_k) \; f \; i \; A)\) where \(n_1, ..., n_k\) are natural numbers, \(f\) is a function of type \((\rightarrow (Tuple \; T_1 \; ... \; T_j)\; T \; T)\), \(i\) has the type \(T\), and \(A\) has type \((Table \; T_1 \; ... \; T_j)\). The returned type is \((Bag \; T)\).
This operator aggregates elements in A that have the same tuple projection with indices n_1, …, n_k using the combining function \(f\), and initial value \(i\).
Arity:
31:Term of sort \((\rightarrow (Tuple \; T_1 \; ... \; T_j)\; T \; T)\)2:Term of Sort \(T\)3:Term of table sort \(Table T_1 ... T_j\)
Indices:
n-1..n:Indices of the projection
Warning
This kind is experimental and may be changed or removed in future versions.
- 
enumerator TABLE_JOIN
 Table join operator has the form \(((\_ \; table.join \; m_1 \; n_1 \; \dots \; m_k \; n_k) \; A \; B)\) where \(m_1 \; n_1 \; \dots \; m_k \; n_k\) are natural numbers, and \(A, B\) are tables. This operator filters the product of two bags based on the equality of projected tuples using indices \(m_1, \dots, m_k\) in table \(A\), and indices \(n_1, \dots, n_k\) in table \(B\).
Arity:
21:Term of table Sort2:Term of table Sort
Indices:
n-1..n:Indices of the projection
Warning
This kind is experimental and may be changed or removed in future versions.
- 
enumerator TABLE_GROUP
 Table group
\(((\_ \; table.group \; n_1 \; \dots \; n_k) \; A)\) partitions tuples of table \(A\) such that tuples that have the same projection with indices \(n_1 \; \dots \; n_k\) are in the same part. It returns a bag of tables of type \((Bag \; T)\) where \(T\) is the type of \(A\).
Arity:
11:Term of table sort
Indices:
n1..n:Indices of the projection
Create Term of this Kind with:
Warning
This kind is experimental and may be changed or removed in future versions.
- 
enumerator STRING_CONCAT
 String concat.
- 
enumerator STRING_IN_REGEXP
 String membership.
- 
enumerator STRING_LENGTH
 String length.
- 
enumerator STRING_SUBSTR
 String substring.
Extracts a substring, starting at index \(i\) and of length \(l\), from a string \(s\). If the start index is negative, the start index is greater than the length of the string, or the length is negative, the result is the empty string.
Arity:
31:Term of Sort String2:Term of Sort Int (index \(i\))3:Term of Sort Int (length \(l\))
- 
enumerator STRING_UPDATE
 String update.
Updates a string \(s\) by replacing its context starting at an index with string \(t\). If the start index is negative, the start index is greater than the length of the string, the result is \(s\). Otherwise, the length of the original string is preserved.
Arity:
31:Term of Sort String2:Term of Sort Int (index \(i\))3:Term of Sort Strong (replacement string \(t\))
- 
enumerator STRING_CHARAT
 String character at.
Returns the character at index \(i\) from a string \(s\). If the index is negative or the index is greater than the length of the string, the result is the empty string. Otherwise the result is a string of length 1.
Arity:
21:Term of Sort String (string \(s\))2:Term of Sort Int (index \(i\))
- 
enumerator STRING_CONTAINS
 String contains.
Determines whether a string \(s_1\) contains another string \(s_2\). If \(s_2\) is empty, the result is always
true.Arity:
21:Term of Sort String (the string \(s_1\))2:Term of Sort String (the string \(s_2\))
- 
enumerator STRING_INDEXOF
 String index-of.
Returns the index of a substring \(s_2\) in a string \(s_1\) starting at index \(i\). If the index is negative or greater than the length of string \(s_1\) or the substring \(s_2\) does not appear in string \(s_1\) after index \(i\), the result is -1.
Arity:
21:Term of Sort String (substring \(s_1\))2:Term of Sort String (substring \(s_2\))3:Term of Sort Int (index \(i\))
- 
enumerator STRING_INDEXOF_RE
 String index-of regular expression match.
Returns the first match of a regular expression \(r\) in a string \(s\). If the index is negative or greater than the length of string \(s_1\), or \(r\) does not match a substring in \(s\) after index \(i\), the result is -1.
Arity:
31:Term of Sort String (string \(s\))2:Term of Sort RegLan (regular expression \(r\))3:Term of Sort Int (index \(i\))
- 
enumerator STRING_REPLACE
 String replace.
Replaces a string \(s_2\) in a string \(s_1\) with string \(s_3\). If \(s_2\) does not appear in \(s_1\), \(s_1\) is returned unmodified.
Arity:
31:Term of Sort String (string \(s_1\))2:Term of Sort String (string \(s_2\))3:Term of Sort String (string \(s_3\))
- 
enumerator STRING_REPLACE_ALL
 String replace all.
Replaces all occurrences of a string \(s_2\) in a string \(s_1\) with string \(s_3\). If \(s_2\) does not appear in \(s_1\), \(s_1\) is returned unmodified.
Arity:
31:Term of Sort String (\(s_1\))2:Term of Sort String (\(s_2\))3:Term of Sort String (\(s_3\))
- 
enumerator STRING_REPLACE_RE
 String replace regular expression match.
Replaces the first match of a regular expression \(r\) in string \(s_1\) with string \(s_2\). If \(r\) does not match a substring of \(s_1\), \(s_1\) is returned unmodified.
Arity:
31:Term of Sort String (\(s_1\))2:Term of Sort RegLan3:Term of Sort String (\(s_2\))
- 
enumerator STRING_REPLACE_RE_ALL
 String replace all regular expression matches.
Replaces all matches of a regular expression \(r\) in string \(s_1\) with string \(s_2\). If \(r\) does not match a substring of \(s_1\), string \(s_1\) is returned unmodified.
Arity:
31:Term of Sort String (\(s_1\))2:Term of Sort RegLan3:Term of Sort String (\(s_2\))
- 
enumerator STRING_TO_LOWER
 String to lower case.
- 
enumerator STRING_TO_UPPER
 String to upper case.
- 
enumerator STRING_REV
 String reverse.
- 
enumerator STRING_TO_CODE
 String to code.
Returns the code point of a string if it has length one, or returns
-1otherwise.
- 
enumerator STRING_FROM_CODE
 String from code.
Returns a string containing a single character whose code point matches the argument to this function, or the empty string if the argument is out-of-bounds.
- 
enumerator STRING_LT
 String less than.
Returns true if string \(s_1\) is (strictly) less than \(s_2\) based on a lexiographic ordering over code points.
Arity:
21:Term of Sort String (\(s_1\))2:Term of Sort String (\(s_2\))
- 
enumerator STRING_LEQ
 String less than or equal.
Returns true if string \(s_1\) is less than or equal to \(s_2\) based on a lexiographic ordering over code points.
Arity:
21:Term of Sort String (\(s_1\))2:Term of Sort String (\(s_2\))
- 
enumerator STRING_PREFIX
 String prefix-of.
Determines whether a string \(s_1\) is a prefix of string \(s_2\). If string s1 is empty, this operator returns
true.Arity:
21:Term of Sort String (\(s_1\))2:Term of Sort String (\(s_2\))
- 
enumerator STRING_SUFFIX
 String suffix-of.
Determines whether a string \(s_1\) is a suffix of the second string. If string \(s_1\) is empty, this operator returns
true.Arity:
21:Term of Sort String (\(s_1\))2:Term of Sort String (\(s_2\))
- 
enumerator STRING_IS_DIGIT
 String is-digit.
Returns true if given string is a digit (it is one of
"0", …,"9").
- 
enumerator STRING_FROM_INT
 Conversion from Int to String.
If the integer is negative this operator returns the empty string.
- 
enumerator STRING_TO_INT
 String to integer (total function).
If the string does not contain an integer or the integer is negative, the operator returns
-1.
- 
enumerator STRING_TO_REGEXP
 Conversion from string to regexp.
- 
enumerator REGEXP_CONCAT
 Regular expression concatenation.
- 
enumerator REGEXP_UNION
 Regular expression union.
- 
enumerator REGEXP_INTER
 Regular expression intersection.
- 
enumerator REGEXP_DIFF
 Regular expression difference.
- 
enumerator REGEXP_STAR
 Regular expression *.
- 
enumerator REGEXP_PLUS
 Regular expression +.
- 
enumerator REGEXP_OPT
 Regular expression ?.
- 
enumerator REGEXP_RANGE
 Regular expression range.
- 
enumerator REGEXP_REPEAT
 Operator for regular expression repeat.
- 
enumerator REGEXP_LOOP
 Regular expression loop.
Regular expression loop from lower bound to upper bound number of repetitions.
- 
enumerator REGEXP_COMPLEMENT
 Regular expression complement.
- 
enumerator SEQ_CONCAT
 Sequence concat.
- 
enumerator SEQ_LENGTH
 Sequence length.
- 
enumerator SEQ_EXTRACT
 Sequence extract.
Extracts a subsequence, starting at index \(i\) and of length \(l\), from a sequence \(s\). If the start index is negative, the start index is greater than the length of the sequence, or the length is negative, the result is the empty sequence.
Arity:
31:Term of sequence Sort2:Term of Sort Int (index \(i\))3:Term of Sort Int (length \(l\))
- 
enumerator SEQ_UPDATE
 Sequence update.
Updates a sequence \(s\) by replacing its context starting at an index with string \(t\). If the start index is negative, the start index is greater than the length of the sequence, the result is \(s\). Otherwise, the length of the original sequence is preserved.
Arity:
31:Term of sequence Sort2:Term of Sort Int (index \(i\))3:Term of sequence Sort (replacement sequence \(t\))
- 
enumerator SEQ_AT
 Sequence element at.
Returns the element at index \(i\) from a sequence \(s\). If the index is negative or the index is greater or equal to the length of the sequence, the result is the empty sequence. Otherwise the result is a sequence of length
1.Arity:
21:Term of sequence Sort2:Term of Sort Int (index \(i\))
- 
enumerator SEQ_CONTAINS
 Sequence contains.
Checks whether a sequence \(s_1\) contains another sequence \(s_2\). If \(s_2\) is empty, the result is always
true.Arity:
21:Term of sequence Sort (\(s_1\))2:Term of sequence Sort (\(s_2\))
- 
enumerator SEQ_INDEXOF
 Sequence index-of.
Returns the index of a subsequence \(s_2\) in a sequence \(s_1\) starting at index \(i\). If the index is negative or greater than the length of sequence \(s_1\) or the subsequence \(s_2\) does not appear in sequence \(s_1\) after index \(i\), the result is -1.
Arity:
31:Term of sequence Sort (\(s_1\))2:Term of sequence Sort (\(s_2\))3:Term of Sort Int (\(i\))
- 
enumerator SEQ_REPLACE
 Sequence replace.
Replaces the first occurrence of a sequence \(s_2\) in a sequence \(s_1\) with sequence \(s_3\). If \(s_2\) does not appear in \(s_1\), \(s_1\) is returned unmodified.
Arity:
31:Term of sequence Sort (\(s_1\))2:Term of sequence Sort (\(s_2\))3:Term of sequence Sort (\(s_3\))
- 
enumerator SEQ_REPLACE_ALL
 Sequence replace all.
Replaces all occurrences of a sequence \(s_2\) in a sequence \(s_1\) with sequence \(s_3\). If \(s_2\) does not appear in \(s_1\), sequence \(s_1\) is returned unmodified.
Arity:
31:Term of sequence Sort (\(s_1\))2:Term of sequence Sort (\(s_2\))3:Term of sequence Sort (\(s_3\))
- 
enumerator SEQ_REV
 Sequence reverse.
- 
enumerator SEQ_PREFIX
 Sequence prefix-of.
Checks whether a sequence \(s_1\) is a prefix of sequence \(s_2\). If sequence \(s_1\) is empty, this operator returns
true.Arity:
11:Term of sequence Sort (\(s_1\))2:Term of sequence Sort (\(s_2\))
- 
enumerator SEQ_SUFFIX
 Sequence suffix-of.
Checks whether a sequence \(s_1\) is a suffix of sequence \(s_2\). If sequence \(s_1\) is empty, this operator returns
true.Arity:
11:Term of sequence Sort (\(s_1\))2:Term of sequence Sort (\(s_2\))
- 
enumerator CONST_SEQUENCE
 Constant sequence.
A constant sequence is a term that is equivalent to:
(seq.++ (seq.unit c1) ... (seq.unit cn))
where \(n \leq 0\) and \(c_1, ..., c_n\) are constants of some sort. The elements can be extracted with Term::getSequenceValue().
Create Term of this Kind with:
- 
enumerator SEQ_UNIT
 Sequence unit.
Corresponds to a sequence of length one with the given term.
- 
enumerator SEQ_NTH
 Sequence nth.
Corresponds to the nth element of a sequence.
Arity:
21:Term of sequence Sort2:Term of Sort Int (\(n\))
- 
enumerator FORALL
 Universally quantified formula.
Arity:
31:Term of KindVARIABLE_LIST2:Term of Sort Bool (the quantifier body)3:(optional) Term of KindINST_PATTERN
- 
enumerator EXISTS
 Existentially quantified formula.
Arity:
31:Term of KindVARIABLE_LIST2:Term of Sort Bool (the quantifier body)3:(optional) Term of KindINST_PATTERN
- 
enumerator VARIABLE_LIST
 Variable list.
A list of variables (used to bind variables under a quantifier)
Arity:
n > 01..n:Terms of KindVARIABLE
- 
enumerator INST_PATTERN
 Instantiation pattern.
Specifies a (list of) terms to be used as a pattern for quantifier instantiation.
Note
Should only be used as a child of
INST_PATTERN_LIST.
- 
enumerator INST_NO_PATTERN
 Instantiation no-pattern.
Specifies a (list of) terms that should not be used as a pattern for quantifier instantiation.
Note
Should only be used as a child of
INST_PATTERN_LIST.
- 
enumerator INST_POOL
 Instantiation pool annotation.
Specifies an annotation for pool based instantiation.
In detail, pool symbols can be declared via the method
A pool symbol represents a set of terms of a given sort. An instantiation pool annotation should either: (1) have child sets matching the types of the quantified formula, (2) have a child set of tuple type whose component types match the types of the quantified formula.
For an example of (1), for a quantified formula:
(FORALL (VARIABLE_LIST x y) F (INST_PATTERN_LIST (INST_POOL p q)))
if \(x\) and \(y\) have Sorts \(S_1\) and \(S_2\), then pool symbols \(p\) and \(q\) should have Sorts (Set \(S_1\)) and (Set \(S_2\)), respectively. This annotation specifies that the quantified formula above should be instantiated with the product of all terms that occur in the sets \(p\) and \(q\).
Alternatively, as an example of (2), for a quantified formula:
(FORALL (VARIABLE_LIST x y) F (INST_PATTERN_LIST (INST_POOL s)))
\(s\) should have Sort (Set (Tuple \(S_1\) \(S_2\))). This annotation specifies that the quantified formula above should be instantiated with the pairs of values in \(s\).
Arity:
n > 01..n:Terms that comprise the pools, which are one-to-one with the variables of the quantified formula to be instantiated
Create Term of this Kind with:
TermManager::mkTerm(Kind, const std::vector<Term>&)
TermManager::mkTerm(const Op&, const std::vector<Term>&)
Create Op of this kind with:
TermManager::mkOp(Kind, const std::vector<uint32_t>&)
Note
Should only be used as a child of
INST_PATTERN_LIST.Warning
This kind is experimental and may be changed or removed in future versions.
- 
enumerator INST_ADD_TO_POOL
 A instantantiation-add-to-pool annotation.
An instantantiation-add-to-pool annotation indicates that when a quantified formula is instantiated, the instantiated version of a term should be added to the given pool.
For example, consider a quantified formula:
(FORALL (VARIABLE_LIST x) F (INST_PATTERN_LIST (INST_ADD_TO_POOL (ADD x 1) p)))
where assume that \(x\) has type Int. When this quantified formula is instantiated with, e.g., the term \(t\), the term
(ADD t 1)is added to pool \(p\).Note
Should only be used as a child of
INST_PATTERN_LIST.Warning
This kind is experimental and may be changed or removed in future versions.
- 
enumerator SKOLEM_ADD_TO_POOL
 A skolemization-add-to-pool annotation.
An skolemization-add-to-pool annotation indicates that when a quantified formula is skolemized, the skolemized version of a term should be added to the given pool.
For example, consider a quantified formula:
(FORALL (VARIABLE_LIST x) F (INST_PATTERN_LIST (SKOLEM_ADD_TO_POOL (ADD x 1) p)))
where assume that \(x\) has type Int. When this quantified formula is skolemized, e.g., with \(k\) of type Int, then the term
(ADD k 1)is added to the pool \(p\).Note
Should only be used as a child of
INST_PATTERN_LIST.Warning
This kind is experimental and may be changed or removed in future versions.
- 
enumerator INST_ATTRIBUTE
 Instantiation attribute.
Specifies a custom property for a quantified formula given by a term that is ascribed a user attribute.
Arity:
n > 01:Term of Kind :cpp:enumerator:CONST_STRING(the keyword of the attribute)2...n:Terms representing the values of the attribute
Create Term of this Kind with:
Create Op of this kind with:
Note
Should only be used as a child of
INST_PATTERN_LIST.
- 
enumerator INST_PATTERN_LIST
 A list of instantiation patterns, attributes or annotations.
Arity:
n > 11..n:Terms of KindINST_PATTERN,INST_NO_PATTERN,INST_POOL,INST_ADD_TO_POOL,SKOLEM_ADD_TO_POOL,INST_ATTRIBUTE
- 
enumerator LAST_KIND
 Marks the upper-bound of this enumeration.
- 
enumerator INTERNAL_KIND
 
- 
std::ostream &cvc5::operator<<(std::ostream &out, Kind kind)
 Serialize a kind to given stream.
- Parameters:
 out – The output stream.
kind – The kind to be serialized to the given output stream.
- Returns:
 The output stream.
- 
std::string std::to_string(cvc5::Kind kind)
 Get the string representation of a given kind.
- Parameters:
 kind – The kind
- Returns:
 The string representation.