From 9894b5fca418879ec472e5efbb43be26995e4045 Mon Sep 17 00:00:00 2001 From: Gereon Kremer Date: Wed, 14 Apr 2021 23:10:11 +0200 Subject: [PATCH] Improve documentation of API kinds (#6341) This PR improves the documentation of the api::Kind enum. Note that the docs for many of the enum values should still be improved. This PR merely makes sure that everything that is already there is actually output (/* vs /**) and properly rendered (missing spacing between lists, some formulas, etc). --- docs/CMakeLists.txt | 4 +- docs/cpp/kind.rst | 18 +- src/api/cpp/cvc5_kind.h | 2891 +++++++++++++++++++++++---------------- 3 files changed, 1739 insertions(+), 1174 deletions(-) diff --git a/docs/CMakeLists.txt b/docs/CMakeLists.txt index b65a10e47..01d7aed65 100644 --- a/docs/CMakeLists.txt +++ b/docs/CMakeLists.txt @@ -31,7 +31,9 @@ configure_file(${CMAKE_CURRENT_SOURCE_DIR}/Doxyfile.in file(MAKE_DIRECTORY ${DOXYGEN_OUTPUT_DIR}) add_custom_command(OUTPUT ${DOXYGEN_INDEX_FILE} - DEPENDS ${PROJECT_SOURCE_DIR}/src/api/cpp/cvc5.h + DEPENDS + ${PROJECT_SOURCE_DIR}/src/api/cpp/cvc5.h + ${PROJECT_SOURCE_DIR}/src/api/cpp/cvc5_kind.h COMMAND ${DOXYGEN_EXECUTABLE} ${DOXYFILE_OUT} WORKING_DIRECTORY ${DOXYGEN_BIN_DIR} MAIN_DEPENDENCY ${DOXYFILE_OUT} ${DOXYFILE_IN} diff --git a/docs/cpp/kind.rst b/docs/cpp/kind.rst index 23421905e..2f74ee5fe 100644 --- a/docs/cpp/kind.rst +++ b/docs/cpp/kind.rst @@ -1,10 +1,22 @@ Kind ==== +Every :cpp:class:`Term ` has a kind which represents its type, +for example whether it is an equality (:cpp:enumerator:`EQUAL +`), a conjunction (:cpp:enumerator:`AND +`), or a bitvector addition +(:cpp:enumerator:`BITVECTOR_PLUS `). +#ifndef DOXYGEN_SKIP +Note that the API type :cpp:enum:`cvc5::api::Kind` roughly corresponds to +:cpp:enum:`cvc5::Kind`, but is a different type. It hides internal kinds that +should not be exported to the API, and maps all kinds that we want to export +to its corresponding internal kinds. +#endif + +.. doxygenenum:: cvc5::api::Kind + :project: cvc5 + .. doxygenstruct:: cvc5::api::KindHashFunction :project: cvc5 :members: :undoc-members: - -.. doxygenenum:: cvc5::api::Kind - :project: cvc5 diff --git a/src/api/cpp/cvc5_kind.h b/src/api/cpp/cvc5_kind.h index eaa4e6079..d1b0a277b 100644 --- a/src/api/cpp/cvc5_kind.h +++ b/src/api/cpp/cvc5_kind.h @@ -27,6 +27,7 @@ namespace api { /* Kind */ /* -------------------------------------------------------------------------- */ +// TODO(Gereon): Fix links that involve std::vector. See https://github.com/doxygen/doxygen/issues/8503 /** * The kind of a CVC4 term. * @@ -47,8 +48,8 @@ enum CVC4_EXPORT Kind : int32_t */ UNDEFINED_KIND = -1, /** - * Null kind (kind of null term Term()). - * Do not explicitly create via API functions other than Term(). + * Null kind (kind of null term `Term::Term()`). + * Do not explicitly create via API functions other than `Term::Term()`. */ NULL_EXPR, @@ -56,20 +57,24 @@ enum CVC4_EXPORT Kind : int32_t /** * Uninterpreted constant. - * Parameters: 2 - * -[1]: Sort of the constant - * -[2]: Index of the constant + * + * Parameters: + * - 1: Sort of the constant + * - 2: Index of the constant + * * Create with: - * mkUninterpretedConst(Sort sort, int32_t index) + * - `Solver::mkUninterpretedConst(const Sort& sort, int32_t index) const` */ UNINTERPRETED_CONSTANT, /** * Abstract value (other than uninterpreted sort constants). - * Parameters: 1 - * -[1]: Index of the abstract value + * + * Parameters: + * - 1: Index of the abstract value + * * Create with: - * mkAbstractValue(const std::string& index); - * mkAbstractValue(uint64_t index); + * - `Solver::mkAbstractValue(const std::string& index) const` + * - `Solver::mkAbstractValue(uint64_t index) const` */ ABSTRACT_VALUE, #if 0 @@ -78,106 +83,122 @@ enum CVC4_EXPORT Kind : int32_t #endif /** * Equality, chainable. + * * Parameters: n > 1 - * -[1]..[n]: Terms with same sorts + * - 1..n: Terms with same sorts + * * Create with: - * mkTerm(Kind kind, Term child1, Term child2) - * mkTerm(Kind kind, Term child1, Term child2, Term child3) - * mkTerm(Kind kind, const std::vector& children) + * - `Solver::mkTerm(Kind kind, const Term& child1, const Term& child2) const` + * - `Solver::mkTerm(Kind kind, const Term& child1, const Term& child2, const Term& child3) const` + * - `Solver::mkTerm(Kind kind, const std::vector& children) const` */ EQUAL, /** * Disequality. + * * Parameters: n > 1 - * -[1]..[n]: Terms with same sorts + * - 1..n: Terms with same sorts + * * Create with: - * mkTerm(Kind kind, Term child1, Term child2) - * mkTerm(Kind kind, Term child1, Term child2, Term child3) - * mkTerm(Kind kind, const std::vector& children) + * - `Solver::mkTerm(Kind kind, const Term& child1, const Term& child2) const` + * - `Solver::mkTerm(Kind kind, const Term& child1, const Term& child2, const Term& child3) const` + * - `Solver::mkTerm(Kind kind, const std::vector& children) const` */ DISTINCT, /** * First-order constant. + * * Not permitted in bindings (forall, exists, ...). + * * Parameters: - * See mkConst(). + * - See @ref cvc5::api::Solver::mkConst() "mkConst()". + * * Create with: - * mkConst(const std::string& symbol, Sort sort) - * mkConst(Sort sort) + * - `Solver::mkConst(const Sort& sort, const std::string& symbol) const` + * - `Solver::mkConst(const Sort& sort) const` */ CONSTANT, /** * (Bound) variable. + * * Permitted in bindings and in the lambda and quantifier bodies only. + * * Parameters: - * See mkVar(). + * - See @ref cvc5::api::Solver::mkVar() "mkVar()". + * * Create with: - * mkVar(const std::string& symbol, Sort sort) - * mkVar(Sort sort) + * - `Solver::mkVar(const Sort& sort, const std::string& symbol) const` */ VARIABLE, #if 0 /* Skolem variable (internal only) */ SKOLEM, #endif - /* + /** * Symbolic expression. + * * Parameters: n > 0 - * -[1]..[n]: terms + * - 1..n: terms + * * Create with: - * mkTerm(Kind kind, Term child) - * mkTerm(Kind kind, Term child1, Term child2) - * mkTerm(Kind kind, Term child1, Term child2, Term child3) - * mkTerm(Kind kind, const std::vector& children) + * - `Solver::mkTerm(Kind kind, const Term& child) const` + * - `Solver::mkTerm(Kind kind, const Term& child1, const Term& child2) const` + * - `Solver::mkTerm(Kind kind, const Term& child1, const Term& child2, const Term& child3) const` + * - `Solver::mkTerm(Kind kind, const std::vector& children) const` */ SEXPR, /** * Lambda expression. - * Parameters: 2 - * -[1]: BOUND_VAR_LIST - * -[2]: Lambda body + * + * Parameters: + * - 1: BOUND_VAR_LIST + * - 2: Lambda body + * * Create with: - * mkTerm(Kind kind, Term child1, Term child2) - * mkTerm(Kind kind, const std::vector& children) + * - `Solver::mkTerm(Kind kind, const Term& child1, const Term& child2) const` + * - `Solver::mkTerm(Kind kind, const std::vector& children) const` */ LAMBDA, /** * The syntax of a witness term is similar to a quantified formula except that * only one bound variable is allowed. - * The term (witness ((x T)) F) returns an element x of type T - * and asserts F. + * The term `(witness ((x T)) F)` returns an element `x` of type `T` + * and asserts `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 axiom that ensures uniqueness up to logical equivalence: - * \verbatim - * forall x. F \equiv G => witness x. F = witness x. G - * \endverbatim + * + * @f[ + * \forall x. F \equiv G \Rightarrow witness~x. F = witness~x. G + * @f] * * For example if there are 2 elements of type T that satisfy F, then the * following formula is satisfiable: - * (distinct - * (witness ((x Int)) F) - * (witness ((x Int)) F)) + * + * (distinct + * (witness ((x Int)) F) + * (witness ((x Int)) F)) * * 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 + * `(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. + * `(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`. * - * Parameters: 2 - * -[1]: BOUND_VAR_LIST - * -[2]: Witness body + * Parameters: + * - 1: BOUND_VAR_LIST + * - 2: Witness body + * * Create with: - * mkTerm(Kind kind, Term child1, Term child2) - * mkTerm(Kind kind, const std::vector& children) + * - `Solver::mkTerm(Kind kind, const Term& child1, const Term& child2) const` + * - `Solver::mkTerm(Kind kind, const std::vector& children) const` */ WITNESS, @@ -185,80 +206,103 @@ enum CVC4_EXPORT Kind : int32_t /** * Boolean constant. - * Parameters: 1 - * -[1]: Boolean value of the constant + * + * Parameters: + * - 1: Boolean value of the constant + * * Create with: - * mkTrue() - * mkFalse() - * mkBoolean(bool val) + * - `Solver::mkTrue() const` + * - `Solver::mkFalse() const` + * - `Solver::mkBoolean(bool val) const` */ CONST_BOOLEAN, - /* Logical not. - * Parameters: 1 - * -[1]: Boolean Term to negate + /** + * Logical negation. + * + * Parameters: + * - 1: Boolean Term to negate + * * Create with: - * mkTerm(Kind kind, Term child) + * - `Solver::mkTerm(Kind kind, const Term& child) const` */ NOT, - /* Logical and. + /** + * Logical conjunction. + * * Parameters: n > 1 - * -[1]..[n]: Boolean Term of the conjunction + * - 1..n: Boolean Term of the conjunction + * * Create with: - * mkTerm(Kind kind, Term child1, Term child2) - * mkTerm(Kind kind, Term child1, Term child2, Term child3) - * mkTerm(Kind kind, const std::vector& children) + * - `Solver::mkTerm(Kind kind, const Term& child1, const Term& child2) const` + * - `Solver::mkTerm(Kind kind, const Term& child1, const Term& child2, const Term& child3) const` + * - `Solver::mkTerm(Kind kind, const std::vector& children) const` */ AND, /** * Logical implication. + * * Parameters: n > 1 - * -[1]..[n]: Boolean Terms, right associative + * - 1..n: Boolean Terms, right associative + * * Create with: - * mkTerm(Kind kind, Term child1, Term child2) - * mkTerm(Kind kind, Term child1, Term child2, Term child3) - * mkTerm(Kind kind, const std::vector& children) + * - `Solver::mkTerm(Kind kind, const Term& child1, const Term& child2) const` + * - `Solver::mkTerm(Kind kind, const Term& child1, const Term& child2, const Term& child3) const` + * - `Solver::mkTerm(Kind kind, const std::vector& children) const` */ IMPLIES, - /* Logical or. + /** + * Logical disjunction. + * * Parameters: n > 1 - * -[1]..[n]: Boolean Term of the disjunction + * - 1..n: Boolean Term of the disjunction + * * Create with: - * mkTerm(Kind kind, Term child1, Term child2) - * mkTerm(Kind kind, Term child1, Term child2, Term child3) - * mkTerm(Kind kind, const std::vector& children) + * - `Solver::mkTerm(Kind kind, const Term& child1, const Term& child2) const` + * - `Solver::mkTerm(Kind kind, const Term& child1, const Term& child2, const Term& child3) const` + * - `Solver::mkTerm(Kind kind, const std::vector& children) const` */ OR, - /* Logical exclusive or, left associative. + /** + * Logical exclusive disjunction, left associative. + * * Parameters: n > 1 - * -[1]..[n]: Boolean Terms, [1] xor ... xor [n] + * - 1..n: Boolean Terms, `[1] xor ... xor [n]` + * * Create with: - * mkTerm(Kind kind, Term child1, Term child2) - * mkTerm(Kind kind, Term child1, Term child2, Term child3) - * mkTerm(Kind kind, const std::vector& children) + * - `Solver::mkTerm(Kind kind, const Term& child1, const Term& child2) const` + * - `Solver::mkTerm(Kind kind, const Term& child1, const Term& child2, const Term& child3) const` + * - `Solver::mkTerm(Kind kind, const std::vector& children) const` */ XOR, - /* If-then-else. - * Parameters: 3 - * -[1] is a Boolean condition Term - * -[2] the 'then' Term - * -[3] the 'else' Term + /** + * If-then-else. + * + * Parameters: + * - 1: is a Boolean condition Term + * - 2: the 'then' Term + * - 3: the 'else' Term + * * 'then' and 'else' term must have same base sort. + * * Create with: - * mkTerm(Kind kind, Term child1, Term child2, Term child3) - * mkTerm(Kind kind, const std::vector& children) + * - `Solver::mkTerm(Kind kind, const Term& child1, const Term& child2, const Term& child3) const` + * - `Solver::mkTerm(Kind kind, const std::vector& children) const` */ ITE, /* UF -------------------------------------------------------------------- */ - /* Application of an uninterpreted function. + /** + * Application of an uninterpreted function. + * * Parameters: n > 1 - * -[1]: Function Term - * -[2]..[n]: Function argument instantiation Terms + * - 1: Function Term + * - 2..n: Function argument instantiation Terms + * * Create with: - * mkTerm(Kind kind, Term child1, Term child2) - * mkTerm(Kind kind, Term child1, Term child2, Term child3) - * mkTerm(Kind kind, const std::vector& children) + * - `Solver::mkTerm(Kind kind, const Term& child1, const Term& child2) const` + * - `Solver::mkTerm(Kind kind, const Term& child1, const Term& child2, const Term& child3) const` + * - `Solver::mkTerm(Kind kind, const std::vector& children) const` */ APPLY_UF, #if 0 @@ -269,23 +313,27 @@ enum CVC4_EXPORT Kind : int32_t * Cardinality constraint on uninterpreted sort S. * Interpreted as a predicate that is true when the cardinality of S * is less than or equal to the value of the second argument. - * Parameters: 2 - * -[1]: Term of sort S - * -[2]: Positive integer constant that bounds the cardinality of sort S + * + * Parameters: + * - 1: Term of sort S + * - 2: Positive integer constant that bounds the cardinality of sort S + * * Create with: - * mkTerm(Kind kind, Term child1, Term child2) - * mkTerm(Kind kind, const std::vector& children) + * - `Solver::mkTerm(Kind kind, const Term& child1, const Term& child2) const` + * - `Solver::mkTerm(Kind kind, const std::vector& children) const` */ CARDINALITY_CONSTRAINT, - /* + /** * Cardinality value for uninterpreted sort S. * An operator that returns an integer indicating the value of the cardinality * of sort S. - * Parameters: 1 - * -[1]: Term of sort S + * + * Parameters: + * - 1: Term of sort S + * * Create with: - * mkTerm(Kind kind, Term child1) - * mkTerm(Kind kind, const std::vector& children) + * - `Solver::mkTerm(Kind kind, const Term& child1) const` + * - `Solver::mkTerm(Kind kind, const std::vector& children) const` */ CARDINALITY_VALUE, #if 0 @@ -297,13 +345,15 @@ enum CVC4_EXPORT Kind : int32_t /** * Higher-order applicative encoding of function application, left * associative. + * * Parameters: n > 1 - * -[1]: Function to apply - * -[2] ... [n]: Arguments of the function + * - 1: Function to apply + * - 2..n: Arguments of the function + * * Create with: - * mkTerm(Kind kind, Term child1, Term child2) - * mkTerm(Kind kind, Term child1, Term child2, Term child3) - * mkTerm(Kind kind, const std::vector& children) + * - `Solver::mkTerm(Kind kind, const Term& child1, const Term& child2) const` + * - `Solver::mkTerm(Kind kind, const Term& child1, const Term& child2, const Term& child3) const` + * - `Solver::mkTerm(Kind kind, const std::vector& children) const` */ HO_APPLY, @@ -311,39 +361,47 @@ enum CVC4_EXPORT Kind : int32_t /** * Arithmetic addition. + * * Parameters: n > 1 - * -[1]..[n]: Terms of sort Integer, Real (sorts must match) + * - 1..n: Terms of sort Integer, Real (sorts must match) + * * Create with: - * mkTerm(Kind kind, Term child1, Term child2) - * mkTerm(Kind kind, Term child1, Term child2, Term child3) - * mkTerm(Kind kind, const std::vector& children) + * - `Solver::mkTerm(Kind kind, const Term& child1, const Term& child2) const` + * - `Solver::mkTerm(Kind kind, const Term& child1, const Term& child2, const Term& child3) const` + * - `Solver::mkTerm(Kind kind, const std::vector& children) const` */ PLUS, /** * Arithmetic multiplication. + * * Parameters: n > 1 - * -[1]..[n]: Terms of sort Integer, Real (sorts must match) + * - 1..n: Terms of sort Integer, Real (sorts must match) + * * Create with: - * mkTerm(Kind kind, Term child1, Term child2) - * mkTerm(Kind kind, Term child1, Term child2, Term child3) - * mkTerm(Kind kind, const std::vector& children) + * - `Solver::mkTerm(Kind kind, const Term& child1, const Term& child2) const` + * - `Solver::mkTerm(Kind kind, const Term& child1, const Term& child2, const Term& child3) const` + * - `Solver::mkTerm(Kind kind, const std::vector& children) const` */ MULT, /** * Operator for Integer AND - * Parameter: 1 - * -[1]: Size of the bit-vector that determines the semantics of the IAND + * + * Parameters: + * - 1: Size of the bit-vector that determines the semantics of the IAND + * * Create with: - * mkOp(Kind kind, uint32_t param). + * - `Solver::mkOp(Kind kind, uint32_t param) const` * * Apply integer conversion to bit-vector. - * Parameters: 2 - * -[1]: Op of kind IAND - * -[2]: Integer term - * -[3]: Integer term + + * Parameters: + * - 1: Op of kind IAND + * - 2: Integer term + * - 3: Integer term + * * Create with: - * mkTerm(Op op, Term child1, Term child2) - * mkTerm(Op op, const std::vector& children) + * - `Solver::mkTerm(const Op& op, const Term& child1, const Term& child2) const` + * - `Solver::mkTerm(const Op& op, const std::vector& children) const` */ IAND, #if 0 @@ -352,286 +410,341 @@ enum CVC4_EXPORT Kind : int32_t #endif /** * Arithmetic subtraction, left associative. - * Parameters: n - * -[1]..[n]: Terms of sort Integer, Real (sorts must match) + * + * Parameters: + * - 1..n: Terms of sort Integer, Real (sorts must match) + * * Create with: - * mkTerm(Kind kind, Term child1, Term child2) - * mkTerm(Kind kind, Term child1, Term child2, Term child3) - * mkTerm(Kind kind, const std::vector& children) + * - `Solver::mkTerm(Kind kind, const Term& child1, const Term& child2) const` + * - `Solver::mkTerm(Kind kind, const Term& child1, const Term& child2, const Term& child3) const` + * - `Solver::mkTerm(Kind kind, const std::vector& children) const` */ MINUS, /** * Arithmetic negation. - * Parameters: 1 - * -[1]: Term of sort Integer, Real + * + * Parameters: + * - 1: Term of sort Integer, Real + * * Create with: - * mkTerm(Kind kind, Term child) + * - `Solver::mkTerm(Kind kind, const Term& child) const` */ UMINUS, /** * Real division, division by 0 undefined, left associative. + * * Parameters: n > 1 - * -[1]..[n]: Terms of sort Integer, Real + * - 1..n: Terms of sort Integer, Real + * * Create with: - * mkTerm(Kind kind, Term child1, Term child2) - * mkTerm(Kind kind, Term child1, Term child2, Term child3) - * mkTerm(Kind kind, const std::vector& children) + * - `Solver::mkTerm(Kind kind, const Term& child1, const Term& child2) const` + * - `Solver::mkTerm(Kind kind, const Term& child1, const Term& child2, const Term& child3) const` + * - `Solver::mkTerm(Kind kind, const std::vector& children) const` */ DIVISION, /** * Integer division, division by 0 undefined, left associative. + * * Parameters: n > 1 - * -[1]..[n]: Terms of sort Integer + * - 1..n: Terms of sort Integer + * * Create with: - * mkTerm(Kind kind, Term child1, Term child2) - * mkTerm(Kind kind, Term child1, Term child2, Term child3) - * mkTerm(Kind kind, const std::vector& children) + * - `Solver::mkTerm(Kind kind, const Term& child1, const Term& child2) const` + * - `Solver::mkTerm(Kind kind, const Term& child1, const Term& child2, const Term& child3) const` + * - `Solver::mkTerm(Kind kind, const std::vector& children) const` */ INTS_DIVISION, /** * Integer modulus, division by 0 undefined. - * Parameters: 2 - * -[1]..[2]: Terms of sort Integer + * + * Parameters: + * - 1: Term of sort Integer + * - 2: Term of sort Integer + * * Create with: - * mkTerm(Kind kind, Term child1, Term child2) - * mkTerm(Kind kind, const std::vector& children) + * - `Solver::mkTerm(Kind kind, const Term& child1, const Term& child2) const` + * - `Solver::mkTerm(Kind kind, const std::vector& children) const` */ INTS_MODULUS, /** * Absolute value. - * Parameters: 1 - * -[1]: Term of sort Integer + * + * Parameters: + * - 1: Term of sort Integer + * * Create with: - * mkTerm(Kind kind, Term child) + * - `Solver::mkTerm(Kind kind, const Term& child) const` */ ABS, /** * Arithmetic power. - * Parameters: 2 - * -[1]..[2]: Terms of sort Integer, Real + * + * Parameters: + * - 1: Term of sort Integer, Real + * - 2: Term of sort Integer, Real + * * Create with: - * mkTerm(Kind kind, Term child1, Term child2) - * mkTerm(Kind kind, const std::vector& children) + * - `Solver::mkTerm(Kind kind, const Term& child1, const Term& child2) const` + * - `Solver::mkTerm(Kind kind, const std::vector& children) const` */ POW, /** - * Exponential. - * Parameters: 1 - * -[1]: Term of sort Integer, Real + * Exponential function. + * + * Parameters: + * - 1: Term of sort Integer, Real + * * Create with: - * mkTerm(Kind kind, Term child) + * - `Solver::mkTerm(Kind kind, const Term& child) const` */ EXPONENTIAL, /** - * Sine. - * Parameters: 1 - * -[1]: Term of sort Integer, Real + * Sine function. + * + * Parameters: + * - 1: Term of sort Integer, Real + * * Create with: - * mkTerm(Kind kind, Term child) + * - `Solver::mkTerm(Kind kind, const Term& child) const` */ SINE, /** - * Cosine. - * Parameters: 1 - * -[1]: Term of sort Integer, Real + * Cosine function. + * + * Parameters: + * - 1: Term of sort Integer, Real + * * Create with: - * mkTerm(Kind kind, Term child) + * - `Solver::mkTerm(Kind kind, const Term& child) const` */ COSINE, /** - * Tangent. - * Parameters: 1 - * -[1]: Term of sort Integer, Real + * Tangent function. + * + * Parameters: + * - 1: Term of sort Integer, Real + * * Create with: - * mkTerm(Kind kind, Term child) + * - `Solver::mkTerm(Kind kind, const Term& child) const` */ TANGENT, /** - * Cosecant. - * Parameters: 1 - * -[1]: Term of sort Integer, Real + * Cosecant function. + * + * Parameters: + * - 1: Term of sort Integer, Real + * * Create with: - * mkTerm(Kind kind, Term child) + * - `Solver::mkTerm(Kind kind, const Term& child) const` */ COSECANT, /** - * Secant. - * Parameters: 1 - * -[1]: Term of sort Integer, Real + * Secant function. + * + * Parameters: + * - 1: Term of sort Integer, Real + * * Create with: - * mkTerm(Kind kind, Term child) + * - `Solver::mkTerm(Kind kind, const Term& child) const` */ SECANT, /** - * Cotangent. - * Parameters: 1 - * -[1]: Term of sort Integer, Real + * Cotangent function. + * + * Parameters: + * - 1: Term of sort Integer, Real + * * Create with: - * mkTerm(Kind kind, Term child) + * - `Solver::mkTerm(Kind kind, const Term& child) const` */ COTANGENT, /** - * Arc sine. - * Parameters: 1 - * -[1]: Term of sort Integer, Real + * Arc sine function. + * + * Parameters: + * - 1: Term of sort Integer, Real + * * Create with: - * mkTerm(Kind kind, Term child) + * - `Solver::mkTerm(Kind kind, const Term& child) const` */ ARCSINE, /** - * Arc cosine. - * Parameters: 1 - * -[1]: Term of sort Integer, Real + * Arc cosine function. + * + * Parameters: + * - 1: Term of sort Integer, Real + * * Create with: - * mkTerm(Kind kind, Term child) + * - `Solver::mkTerm(Kind kind, const Term& child) const` */ ARCCOSINE, /** - * Arc tangent. - * Parameters: 1 - * -[1]: Term of sort Integer, Real + * Arc tangent function. + * + * Parameters: + * - 1: Term of sort Integer, Real + * * Create with: - * mkTerm(Kind kind, Term child) + * - `Solver::mkTerm(Kind kind, const Term& child) const` */ ARCTANGENT, /** - * Arc cosecant. - * Parameters: 1 - * -[1]: Term of sort Integer, Real + * Arc cosecant function. + * + * Parameters: + * - 1: Term of sort Integer, Real + * * Create with: - * mkTerm(Kind kind, Term child) + * - `Solver::mkTerm(Kind kind, const Term& child) const` */ ARCCOSECANT, /** - * Arc secant. - * Parameters: 1 - * -[1]: Term of sort Integer, Real + * Arc secant function. + * + * Parameters: + * - 1: Term of sort Integer, Real + * * Create with: - * mkTerm(Kind kind, Term child) + * - `Solver::mkTerm(Kind kind, const Term& child) const` */ ARCSECANT, /** - * Arc cotangent. - * Parameters: 1 - * -[1]: Term of sort Integer, Real + * Arc cotangent function. + * + * Parameters: + * - 1: Term of sort Integer, Real + * * Create with: - * mkTerm(Kind kind, Term child) + * - `Solver::mkTerm(Kind kind, const Term& child) const` */ ARCCOTANGENT, /** * Square root. - * Parameters: 1 - * -[1]: Term of sort Integer, Real + * + * Parameters: + * - 1: Term of sort Integer, Real + * * Create with: - * mkTerm(Kind kind, Term child) + * - `Solver::mkTerm(Kind kind, const Term& child) const` */ SQRT, /** * Operator for the divisibility-by-k predicate. - * Parameter: 1 - * -[1]: The k to divide by (sort Integer) + * + * Parameter: + * - 1: The k to divide by (sort Integer) + * * Create with: - * mkOp(Kind kind, uint32_t param) + * - `Solver::mkOp(Kind kind, uint32_t param) const` * * Apply divisibility-by-k predicate. - * Parameters: 2 - * -[1]: Op of kind DIVISIBLE - * -[2]: Integer Term + * + * Parameters: + * - 1: Op of kind DIVISIBLE + * - 2: Integer Term + * * Create with: - * mkTerm(Op op, Term child1, Term child2) - * mkTerm(Op op, const std::vector& children) + * - `Solver::mkTerm(const Op& op, const Term& child1, const Term& child2) const` + * - `Solver::mkTerm(const Op& op, const std::vector& children) const` */ DIVISIBLE, /** * Multiple-precision rational constant. + * * Parameters: - * See mkInteger(), mkReal(), mkRational() - * Create with: - * mkInteger(const char* s, uint32_t base = 10) - * mkInteger(const std::string& s, uint32_t base = 10) - * mkInteger(int32_t val) - * mkInteger(uint32_t val) - * mkInteger(int64_t val) - * mkInteger(uint64_t val) - * mkReal(const char* s, uint32_t base = 10) - * mkReal(const std::string& s, uint32_t base = 10) - * mkReal(int32_t val) - * mkReal(int64_t val) - * mkReal(uint32_t val) - * mkReal(uint64_t val) - * mkReal(int32_t num, int32_t den) - * mkReal(int64_t num, int64_t den) - * mkReal(uint32_t num, uint32_t den) - * mkReal(uint64_t num, uint64_t den) + * See @ref cvc5::api::Solver::mkInteger() "mkInteger()", @ref cvc5::api::Solver::mkReal() "mkReal()". + * + * Create with: + * - `Solver::mkInteger(const std::string& s) const` + * - `Solver::mkInteger(int64_t val) const` + * - `Solver::mkReal(const std::string& s) const` + * - `Solver::mkReal(int64_t val) const` + * - `Solver::mkReal(int64_t num, int64_t den) const` */ CONST_RATIONAL, /** * Less than, chainable. + * * Parameters: n - * -[1]..[n]: Terms of sort Integer, Real; [1] < ... < [n] + * - 1..n: Terms of sort Integer, Real; [1] < ... < [n] + * * Create with: - * mkTerm(Kind kind, Term child1, Term child2) - * mkTerm(Kind kind, Term child1, Term child2, Term child3) - * mkTerm(Kind kind, const std::vector& children) + * - `Solver::mkTerm(Kind kind, const Term& child1, const Term& child2) const` + * - `Solver::mkTerm(Kind kind, const Term& child1, const Term& child2, const Term& child3) const` + * - `Solver::mkTerm(Kind kind, const std::vector& children) const` */ LT, /** * Less than or equal, chainable. + * * Parameters: n > 1 - * -[1]..[n]: Terms of sort Integer, Real; [1] <= ... <= [n] + * - 1..n: Terms of sort Integer, Real; [1] <= ... <= [n] + * * Create with: - * mkTerm(Kind kind, Term child1, Term child2) - * mkTerm(Kind kind, const std::vector& children) + * - `Solver::mkTerm(Kind kind, const Term& child1, const Term& child2) const` + * - `Solver::mkTerm(Kind kind, const std::vector& children) const` */ LEQ, /** * Greater than, chainable. + * * Parameters: n > 1 - * -[1]..[n]: Terms of sort Integer, Real, [1] > ... > [n] + * - 1..n: Terms of sort Integer, Real, [1] > ... > [n] + * * Create with: - * mkTerm(Kind kind, Term child1, Term child2) - * mkTerm(Kind kind, Term child1, Term child2, Term child3) - * mkTerm(Kind kind, const std::vector& children) + * - `Solver::mkTerm(Kind kind, const Term& child1, const Term& child2) const` + * - `Solver::mkTerm(Kind kind, const Term& child1, const Term& child2, const Term& child3) const` + * - `Solver::mkTerm(Kind kind, const std::vector& children) const` */ GT, /** * Greater than or equal, chainable. + * * Parameters: n > 1 - * -[1]..[n]: Terms of sort Integer, Real; [1] >= ... >= [n] + * - 1..n: Terms of sort Integer, Real; [1] >= ... >= [n] + * * Create with: - * mkTerm(Kind kind, Term child1, Term child2) - * mkTerm(Kind kind, Term child1, Term child2, Term child3) - * mkTerm(Kind kind, const std::vector& children) + * - `Solver::mkTerm(Kind kind, const Term& child1, const Term& child2) const` + * - `Solver::mkTerm(Kind kind, const Term& child1, const Term& child2, const Term& child3) const` + * - `Solver::mkTerm(Kind kind, const std::vector& children) const` */ GEQ, /** * Is-integer predicate. - * Parameters: 1 - * -[1]: Term of sort Integer, Real + * + * Parameters: + * - 1: Term of sort Integer, Real + * * Create with: - * mkTerm(Kind kind, Term child) + * - `Solver::mkTerm(Kind kind, const Term& child) const` */ IS_INTEGER, /** * Convert Term to Integer by the floor function. - * Parameters: 1 - * -[1]: Term of sort Integer, Real + * + * Parameters: + * - 1: Term of sort Integer, Real + * * Create with: - * mkTerm(Kind kind, Term child) + * - `Solver::mkTerm(Kind kind, const Term& child) const` */ TO_INTEGER, /** * Convert Term to Real. - * Parameters: 1 - * -[1]: Term of sort Integer, Real + * + * Parameters: + * + * - 1: Term of sort Integer, Real + * * This is a no-op in CVC4, as Integer is a subtype of Real. */ TO_REAL, /** * Pi constant. + * * Create with: - * mkPi() - * mkTerm(Kind kind) + * - `Solver::mkPi() const` + * - `Solver::mkTerm(Kind kind) const` */ PI, @@ -639,134 +752,162 @@ enum CVC4_EXPORT Kind : int32_t /** * Fixed-size bit-vector constant. + * * Parameters: - * See mkBitVector(). + * See @ref cvc5::api::Solver::mkBitVector() "mkBitVector()". + * * Create with: - * mkBitVector(uint32_t size, uint64_t val) - * mkBitVector(const char* s, uint32_t base = 2) - * mkBitVector(std::string& s, uint32_t base = 2) + * - `Solver::mkBitVector(uint32_t size, uint64_t val) const` + * - `Solver::mkBitVector(const std::string& s, uint32_t base) const` + * - `Solver::mkBitVector(uint32_t size, const std::string& s, uint32_t base) const` */ CONST_BITVECTOR, /** * Concatenation of two or more bit-vectors. + * * Parameters: n > 1 - * -[1]..[n]: Terms of bit-vector sort + * - 1..n: Terms of bit-vector sort + * * Create with: - * mkTerm(Kind kind, Term child1, Term child2) - * mkTerm(Kind kind, Term child1, Term child2, Term child3) - * mkTerm(Kind kind, const std::vector& children) + * - `Solver::mkTerm(Kind kind, const Term& child1, const Term& child2) const` + * - `Solver::mkTerm(Kind kind, const Term& child1, const Term& child2, const Term& child3) const` + * - `Solver::mkTerm(Kind kind, const std::vector& children) const` */ BITVECTOR_CONCAT, /** * Bit-wise and. + * * Parameters: n > 1 - * -[1]..[n]: Terms of bit-vector sort (sorts must match) + * - 1..n: Terms of bit-vector sort (sorts must match) + * * Create with: - * mkTerm(Kind kind, Term child1, Term child2) - * mkTerm(Kind kind, Term child1, Term child2, Term child3) - * mkTerm(Kind kind, const std::vector& children) + * - `Solver::mkTerm(Kind kind, const Term& child1, const Term& child2) const` + * - `Solver::mkTerm(Kind kind, const Term& child1, const Term& child2, const Term& child3) const` + * - `Solver::mkTerm(Kind kind, const std::vector& children) const` */ BITVECTOR_AND, /** * Bit-wise or. + * * Parameters: n > 1 - * -[1]..[n]: Terms of bit-vector sort (sorts must match) + * - 1..n: Terms of bit-vector sort (sorts must match) + * * Create with: - * mkTerm(Kind kind, Term child1, Term child2) - * mkTerm(Kind kind, Term child1, Term child2, Term child3) - * mkTerm(Kind kind, const std::vector& children) + * - `Solver::mkTerm(Kind kind, const Term& child1, const Term& child2) const` + * - `Solver::mkTerm(Kind kind, const Term& child1, const Term& child2, const Term& child3) const` + * - `Solver::mkTerm(Kind kind, const std::vector& children) const` */ BITVECTOR_OR, /** * Bit-wise xor. + * * Parameters: n > 1 - * -[1]..[n]: Terms of bit-vector sort (sorts must match) + * - 1..n: Terms of bit-vector sort (sorts must match) + * * Create with: - * mkTerm(Kind kind, Term child1, Term child2) - * mkTerm(Kind kind, Term child1, Term child2, Term child3) - * mkTerm(Kind kind, const std::vector& children) + * - `Solver::mkTerm(Kind kind, const Term& child1, const Term& child2) const` + * - `Solver::mkTerm(Kind kind, const Term& child1, const Term& child2, const Term& child3) const` + * - `Solver::mkTerm(Kind kind, const std::vector& children) const` */ BITVECTOR_XOR, /** * Bit-wise negation. - * Parameters: 1 - * -[1]: Term of bit-vector sort + * + * Parameters: + * - 1: Term of bit-vector sort + * * Create with: - * mkTerm(Kind kind, Term child) + * - `Solver::mkTerm(Kind kind, const Term& child) const` */ BITVECTOR_NOT, /** * Bit-wise nand. - * Parameters: 2 - * -[1]..[2]: Terms of bit-vector sort (sorts must match) + * + * Parameters: + * - 1..2: Terms of bit-vector sort (sorts must match) + * * Create with: - * mkTerm(Kind kind, Term child1, Term child2) - * mkTerm(Kind kind, const std::vector& children) + * - `Solver::mkTerm(Kind kind, const Term& child1, const Term& child2) const` + * - `Solver::mkTerm(Kind kind, const std::vector& children) const` */ BITVECTOR_NAND, /** * Bit-wise nor. - * Parameters: 2 - * -[1]..[2]: Terms of bit-vector sort (sorts must match) + * + * Parameters: + * - 1..2: Terms of bit-vector sort (sorts must match) + * * Create with: - * mkTerm(Kind kind, Term child1, Term child2) - * mkTerm(Kind kind, const std::vector& children) + * - `Solver::mkTerm(Kind kind, const Term& child1, const Term& child2) const` + * - `Solver::mkTerm(Kind kind, const std::vector& children) const` */ BITVECTOR_NOR, /** * Bit-wise xnor, left associative. + * * Parameters: n > 1 - * -[1]..[n]: Terms of bit-vector sort (sorts must match) + * - 1..n: Terms of bit-vector sort (sorts must match) + * * Create with: - * mkTerm(Kind kind, Term child1, Term child2) - * mkTerm(Kind kind, const std::vector& children) + * - `Solver::mkTerm(Kind kind, const Term& child1, const Term& child2) const` + * - `Solver::mkTerm(Kind kind, const std::vector& children) const` */ BITVECTOR_XNOR, /** * Equality comparison (returns bit-vector of size 1). - * Parameters: 2 - * -[1]..[2]: Terms of bit-vector sort (sorts must match) + * + * Parameters: + * - 1..2: Terms of bit-vector sort (sorts must match) + * * Create with: - * mkTerm(Kind kind, Term child1, Term child2) - * mkTerm(Kind kind, Term child1, Term child2, Term child3) - * mkTerm(Kind kind, const std::vector& children) + * - `Solver::mkTerm(Kind kind, const Term& child1, const Term& child2) const` + * - `Solver::mkTerm(Kind kind, const Term& child1, const Term& child2, const Term& child3) const` + * - `Solver::mkTerm(Kind kind, const std::vector& children) const` */ BITVECTOR_COMP, /** * Multiplication of two or more bit-vectors. + * * Parameters: n > 1 - * -[1]..[n]: Terms of bit-vector sort (sorts must match) + * - 1..n: Terms of bit-vector sort (sorts must match) + * * Create with: - * mkTerm(Kind kind, Term child1, Term child2) - * mkTerm(Kind kind, Term child1, Term child2, Term child3) - * mkTerm(Kind kind, const std::vector& children) + * - `Solver::mkTerm(Kind kind, const Term& child1, const Term& child2) const` + * - `Solver::mkTerm(Kind kind, const Term& child1, const Term& child2, const Term& child3) const` + * - `Solver::mkTerm(Kind kind, const std::vector& children) const` */ BITVECTOR_MULT, /** * Addition of two or more bit-vectors. + * * Parameters: n > 1 - * -[1]..[n]: Terms of bit-vector sort (sorts must match) + * - 1..n: Terms of bit-vector sort (sorts must match) + * * Create with: - * mkTerm(Kind kind, Term child1, Term child2) - * mkTerm(Kind kind, Term child1, Term child2, Term child3) - * mkTerm(Kind kind, const std::vector& children) + * - `Solver::mkTerm(Kind kind, const Term& child1, const Term& child2) const` + * - `Solver::mkTerm(Kind kind, const Term& child1, const Term& child2, const Term& child3) const` + * - `Solver::mkTerm(Kind kind, const std::vector& children) const` */ BITVECTOR_PLUS, /** * Subtraction of two bit-vectors. - * Parameters: 2 - * -[1]..[2]: Terms of bit-vector sort (sorts must match) + * + * Parameters: + * - 1..2: Terms of bit-vector sort (sorts must match) + * * Create with: - * mkTerm(Kind kind, Term child1, Term child2) - * mkTerm(Kind kind, const std::vector& children) + * - `Solver::mkTerm(Kind kind, const Term& child1, const Term& child2) const` + * - `Solver::mkTerm(Kind kind, const std::vector& children) const` */ BITVECTOR_SUB, /** * Negation of a bit-vector (two's complement). - * Parameters: 1 - * -[1]: Term of bit-vector sort + * + * Parameters: + * - 1: Term of bit-vector sort + * * Create with: - * mkTerm(Kind kind, Term child) + * - `Solver::mkTerm(Kind kind, const Term& child) const` */ BITVECTOR_NEG, /** @@ -777,11 +918,12 @@ enum CVC4_EXPORT Kind : int32_t * treated as all ones (default, corresponds to SMT-LIB >=2.6) or an * uninterpreted value (corresponds to SMT-LIB <2.6). * - * Parameters: 2 - * -[1]..[2]: Terms of bit-vector sort (sorts must match) + * Parameters: + * - 1..2: Terms of bit-vector sort (sorts must match) + * * Create with: - * mkTerm(Kind kind, Term child1, Term child2) - * mkTerm(Kind kind, const std::vector& children) + * - `Solver::mkTerm(Kind kind, const Term& child1, const Term& child2) const` + * - `Solver::mkTerm(Kind kind, const std::vector& children) const` */ BITVECTOR_UDIV, /** @@ -792,11 +934,12 @@ enum CVC4_EXPORT Kind : int32_t * result is either the dividend (default, corresponds to SMT-LIB >=2.6) or * an uninterpreted value (corresponds to SMT-LIB <2.6). * - * Parameters: 2 - * -[1]..[2]: Terms of bit-vector sort (sorts must match) + * Parameters: + * - 1..2: Terms of bit-vector sort (sorts must match) + * * Create with: - * mkTerm(Kind kind, Term child1, Term child2) - * mkTerm(Kind kind, const std::vector& children) + * - `Solver::mkTerm(Kind kind, const Term& child1, const Term& child2) const` + * - `Solver::mkTerm(Kind kind, const std::vector& children) const` */ BITVECTOR_UREM, /** @@ -808,11 +951,12 @@ enum CVC4_EXPORT Kind : int32_t * SMT-LIB >=2.6). If the option is disabled, a division by zero is treated * as an uninterpreted value (corresponds to SMT-LIB <2.6). * - * Parameters: 2 - * -[1]..[2]: Terms of bit-vector sort (sorts must match) + * Parameters: + * - 1..2: Terms of bit-vector sort (sorts must match) + * * Create with: - * mkTerm(Kind kind, Term child1, Term child2) - * mkTerm(Kind kind, const std::vector& children) + * - `Solver::mkTerm(Kind kind, const Term& child1, const Term& child2) const` + * - `Solver::mkTerm(Kind kind, const std::vector& children) const` */ BITVECTOR_SDIV, /** @@ -824,11 +968,12 @@ enum CVC4_EXPORT Kind : int32_t * if the modulus is zero, the result is either the dividend (default) or an * uninterpreted value (corresponds to SMT-LIB <2.6). * - * Parameters: 2 - * -[1]..[2]: Terms of bit-vector sort (sorts must match) + * Parameters: + * - 1..2: Terms of bit-vector sort (sorts must match) + * * Create with: - * mkTerm(Kind kind, Term child1, Term child2) - * mkTerm(Kind kind, const std::vector& children) + * - `Solver::mkTerm(Kind kind, const Term& child1, const Term& child2) const` + * - `Solver::mkTerm(Kind kind, const std::vector& children) const` */ BITVECTOR_SREM, /** @@ -840,164 +985,201 @@ enum CVC4_EXPORT Kind : int32_t * result is either the dividend (default, corresponds to SMT-LIB >=2.6) or * an uninterpreted value (corresponds to SMT-LIB <2.6). * - * Parameters: 2 - * -[1]..[2]: Terms of bit-vector sort (sorts must match) + * Parameters: + * - 1..2: Terms of bit-vector sort (sorts must match) + * * Create with: - * mkTerm(Kind kind, Term child1, Term child2) - * mkTerm(Kind kind, const std::vector& children) + * - `Solver::mkTerm(Kind kind, const Term& child1, const Term& child2) const` + * - `Solver::mkTerm(Kind kind, const std::vector& children) const` */ BITVECTOR_SMOD, /** * Bit-vector shift left. * The two bit-vector parameters must have same width. - * Parameters: 2 - * -[1]..[2]: Terms of bit-vector sort (sorts must match) + * + * Parameters: + * - 1..2: Terms of bit-vector sort (sorts must match) + * * Create with: - * mkTerm(Kind kind, Term child1, Term child2) - * mkTerm(Kind kind, const std::vector& children) + * - `Solver::mkTerm(Kind kind, const Term& child1, const Term& child2) const` + * - `Solver::mkTerm(Kind kind, const std::vector& children) const` */ BITVECTOR_SHL, /** * Bit-vector logical shift right. * The two bit-vector parameters must have same width. - * Parameters: 2 - * -[1]..[2]: Terms of bit-vector sort (sorts must match) + * + * Parameters: + * - 1..2: Terms of bit-vector sort (sorts must match) + * * Create with: - * mkTerm(Kind kind, Term child1, Term child2) - * mkTerm(Kind kind, const std::vector& children) + * - `Solver::mkTerm(Kind kind, const Term& child1, const Term& child2) const` + * - `Solver::mkTerm(Kind kind, const std::vector& children) const` */ BITVECTOR_LSHR, /** * Bit-vector arithmetic shift right. * The two bit-vector parameters must have same width. - * Parameters: 2 - * -[1]..[2]: Terms of bit-vector sort (sorts must match) + * + * Parameters: + * - 1..2: Terms of bit-vector sort (sorts must match) + * * Create with: - * mkTerm(Kind kind, Term child1, Term child2) - * mkTerm(Kind kind, const std::vector& children) + * - `Solver::mkTerm(Kind kind, const Term& child1, const Term& child2) const` + * - `Solver::mkTerm(Kind kind, const std::vector& children) const` */ BITVECTOR_ASHR, /** * Bit-vector unsigned less than. * The two bit-vector parameters must have same width. - * Parameters: 2 - * -[1]..[2]: Terms of bit-vector sort (sorts must match) + * + * Parameters: + * - 1..2: Terms of bit-vector sort (sorts must match) + * * Create with: - * mkTerm(Kind kind, Term child1, Term child2) - * mkTerm(Kind kind, const std::vector& children) + * - `Solver::mkTerm(Kind kind, const Term& child1, const Term& child2) const` + * - `Solver::mkTerm(Kind kind, const std::vector& children) const` */ BITVECTOR_ULT, /** * Bit-vector unsigned less than or equal. * The two bit-vector parameters must have same width. - * Parameters: 2 - * -[1]..[2]: Terms of bit-vector sort (sorts must match) + * + * Parameters: + * - 1..2: Terms of bit-vector sort (sorts must match) + * * Create with: - * mkTerm(Kind kind, Term child1, Term child2) - * mkTerm(Kind kind, const std::vector& children) + * - `Solver::mkTerm(Kind kind, const Term& child1, const Term& child2) const` + * - `Solver::mkTerm(Kind kind, const std::vector& children) const` */ BITVECTOR_ULE, /** * Bit-vector unsigned greater than. * The two bit-vector parameters must have same width. - * Parameters: 2 - * -[1]..[2]: Terms of bit-vector sort (sorts must match) + * + * Parameters: + * - 1..2: Terms of bit-vector sort (sorts must match) + * * Create with: - * mkTerm(Kind kind, Term child1, Term child2) - * mkTerm(Kind kind, const std::vector& children) + * - `Solver::mkTerm(Kind kind, const Term& child1, const Term& child2) const` + * - `Solver::mkTerm(Kind kind, const std::vector& children) const` */ BITVECTOR_UGT, /** * Bit-vector unsigned greater than or equal. * The two bit-vector parameters must have same width. - * Parameters: 2 + * + * Parameters: + * - 1..2: Terms of bit-vector sort (sorts must match) + * * Create with: - * mkTerm(Kind kind, Term child1, Term child2) - * mkTerm(Kind kind, const std::vector& children) + * - `Solver::mkTerm(Kind kind, const Term& child1, const Term& child2) const` + * - `Solver::mkTerm(Kind kind, const std::vector& children) const` */ BITVECTOR_UGE, - /* Bit-vector signed less than. + /** + * Bit-vector signed less than. * The two bit-vector parameters must have same width. - * Parameters: 2 + * + * Parameters: + * - 1..2: Terms of bit-vector sort (sorts must match) + * * Create with: - * mkTerm(Kind kind, Term child1, Term child2) - * mkTerm(Kind kind, const std::vector& children) + * - `Solver::mkTerm(Kind kind, const Term& child1, const Term& child2) const` + * - `Solver::mkTerm(Kind kind, const std::vector& children) const` */ BITVECTOR_SLT, /** * Bit-vector signed less than or equal. * The two bit-vector parameters must have same width. - * Parameters: 2 - * -[1]..[2]: Terms of bit-vector sort (sorts must match) + * + * Parameters: + * - 1..2: Terms of bit-vector sort (sorts must match) + * * Create with: - * mkTerm(Kind kind, Term child1, Term child2) - * mkTerm(Kind kind, const std::vector& children) + * - `Solver::mkTerm(Kind kind, const Term& child1, const Term& child2) const` + * - `Solver::mkTerm(Kind kind, const std::vector& children) const` */ BITVECTOR_SLE, /** * Bit-vector signed greater than. * The two bit-vector parameters must have same width. - * Parameters: 2 - * -[1]..[2]: Terms of bit-vector sort (sorts must match) + * + * Parameters: + * - 1..2: Terms of bit-vector sort (sorts must match) + * * Create with: - * mkTerm(Kind kind, Term child1, Term child2) - * mkTerm(Kind kind, const std::vector& children) + * - `Solver::mkTerm(Kind kind, const Term& child1, const Term& child2) const` + * - `Solver::mkTerm(Kind kind, const std::vector& children) const` */ BITVECTOR_SGT, /** * Bit-vector signed greater than or equal. * The two bit-vector parameters must have same width. - * Parameters: 2 - * -[1]..[2]: Terms of bit-vector sort (sorts must match) + * + * Parameters: + * - 1..2: Terms of bit-vector sort (sorts must match) + * * Create with: - * mkTerm(Kind kind, Term child1, Term child2) - * mkTerm(Kind kind, const std::vector& children) + * - `Solver::mkTerm(Kind kind, const Term& child1, const Term& child2) const` + * - `Solver::mkTerm(Kind kind, const std::vector& children) const` */ BITVECTOR_SGE, /** * Bit-vector unsigned less than, returns bit-vector of size 1. - * Parameters: 2 - * -[1]..[2]: Terms of bit-vector sort (sorts must match) + * + * Parameters: + * - 1..2: Terms of bit-vector sort (sorts must match) + * * Create with: - * mkTerm(Kind kind, Term child1, Term child2) - * mkTerm(Kind kind, const std::vector& children) + * - `Solver::mkTerm(Kind kind, const Term& child1, const Term& child2) const` + * - `Solver::mkTerm(Kind kind, const std::vector& children) const` */ BITVECTOR_ULTBV, /** * Bit-vector signed less than. returns bit-vector of size 1. - * Parameters: 2 - * -[1]..[2]: Terms of bit-vector sort (sorts must match) + * + * Parameters: + * - 1..2: Terms of bit-vector sort (sorts must match) + * * Create with: - * mkTerm(Kind kind, Term child1, Term child2) - * mkTerm(Kind kind, const std::vector& children) + * - `Solver::mkTerm(Kind kind, const Term& child1, const Term& child2) const` + * - `Solver::mkTerm(Kind kind, const std::vector& children) const` */ BITVECTOR_SLTBV, /** * Same semantics as regular ITE, but condition is bit-vector of size 1. - * Parameters: 3 - * -[1]: Term of bit-vector sort of size 1, representing the condition - * -[2]: Term reprsenting the 'then' branch - * -[3]: Term representing the 'else' branch + * + * Parameters: + * - 1: Term of bit-vector sort of size 1, representing the condition + * - 2: Term reprsenting the 'then' branch + * - 3: Term representing the 'else' branch + * * 'then' and 'else' term must have same base sort. + * * Create with: - * mkTerm(Kind kind, Term child1, Term child2, Term child3) - * mkTerm(Kind kind, const std::vector& children) + * - `Solver::mkTerm(Kind kind, const Term& child1, const Term& child2, const Term& child3) const` + * - `Solver::mkTerm(Kind kind, const std::vector& children) const` */ BITVECTOR_ITE, /** * Bit-vector redor. - * Parameters: 1 - * -[1]: Term of bit-vector sort + * + * Parameters: + * - 1: Term of bit-vector sort + * * Create with: - * mkTerm(Kind kind, Term child) + * - `Solver::mkTerm(Kind kind, const Term& child) const` */ BITVECTOR_REDOR, /** * Bit-vector redand. - * Parameters: 1 - * -[1]: Term of bit-vector sort + * + * Parameters: + * - 1: Term of bit-vector sort + * * Create with: - * mkTerm(Kind kind, Term child) + * - `Solver::mkTerm(Kind kind, const Term& child) const` */ BITVECTOR_REDAND, #if 0 @@ -1013,99 +1195,123 @@ enum CVC4_EXPORT Kind : int32_t #endif /** * Operator for bit-vector extract (from index 'high' to 'low'). - * Parameters: 2 - * -[1]: The 'high' index - * -[2]: The 'low' index + * + * Parameters: + * - 1: The 'high' index + * - 2: The 'low' index + * * Create with: - * mkOp(Kind kind, uint32_t param, uint32_t param) + * - `Solver::mkOp(Kind kind, uint32_t param, uint32_t param) const` * * Apply bit-vector extract. - * Parameters: 2 - * -[1]: Op of kind BITVECTOR_EXTRACT - * -[2]: Term of bit-vector sort + * + * Parameters: + * - 1: Op of kind BITVECTOR_EXTRACT + * - 2: Term of bit-vector sort + * * Create with: - * mkTerm(Op op, Term child) - * mkTerm(Op op, const std::vector& children) + * - `Solver::mkTerm(const Op& op, const Term& child) const` + * - `Solver::mkTerm(const Op& op, const std::vector& children) const` */ BITVECTOR_EXTRACT, /** * Operator for bit-vector repeat. - * Parameter 1: - * -[1]: Number of times to repeat a given bit-vector + * + * Parameter: + * - 1: Number of times to repeat a given bit-vector + * * Create with: - * mkOp(Kind kind, uint32_t param). + * - `Solver::mkOp(Kind kind, uint32_t param) const`. * * Apply bit-vector repeat. - * Parameters: 2 - * -[1]: Op of kind BITVECTOR_REPEAT - * -[2]: Term of bit-vector sort + * + * Parameters: + * - 1: Op of kind BITVECTOR_REPEAT + * - 2: Term of bit-vector sort + * * Create with: - * mkTerm(Op op, Term child) - * mkTerm(Op op, const std::vector& children) + * - `Solver::mkTerm(const Op& op, const Term& child) const` + * - `Solver::mkTerm(const Op& op, const std::vector& children) const` */ BITVECTOR_REPEAT, /** * Operator for bit-vector zero-extend. - * Parameter 1: - * -[1]: Number of bits by which a given bit-vector is to be extended + * + * Parameter: + * - 1: Number of bits by which a given bit-vector is to be extended + * * Create with: - * mkOp(Kind kind, uint32_t param). + * - `Solver::mkOp(Kind kind, uint32_t param) const`. * * Apply bit-vector zero-extend. - * Parameters: 2 - * -[1]: Op of kind BITVECTOR_ZERO_EXTEND - * -[2]: Term of bit-vector sort + * + * Parameters: + * - 1: Op of kind BITVECTOR_ZERO_EXTEND + * - 2: Term of bit-vector sort + * * Create with: - * mkTerm(Op op, Term child) - * mkTerm(Op op, const std::vector& children) + * - `Solver::mkTerm(const Op& op, const Term& child) const` + * - `Solver::mkTerm(const Op& op, const std::vector& children) const` */ BITVECTOR_ZERO_EXTEND, /** * Operator for bit-vector sign-extend. - * Parameter 1: - * -[1]: Number of bits by which a given bit-vector is to be extended + * + * Parameter: + * - 1: Number of bits by which a given bit-vector is to be extended + * * Create with: - * mkOp(Kind kind, uint32_t param). + * - `Solver::mkOp(Kind kind, uint32_t param) const`. * * Apply bit-vector sign-extend. - * Parameters: 2 - * -[1]: Op of kind BITVECTOR_SIGN_EXTEND - * -[2]: Term of bit-vector sort + * + * Parameters: + * - 1: Op of kind BITVECTOR_SIGN_EXTEND + * - 2: Term of bit-vector sort + * * Create with: - * mkTerm(Op op, Term child) - * mkTerm(Op op, const std::vector& children) + * - `Solver::mkTerm(const Op& op, const Term& child) const` + * - `Solver::mkTerm(const Op& op, const std::vector& children) const` */ BITVECTOR_SIGN_EXTEND, /** * Operator for bit-vector rotate left. - * Parameter 1: - * -[1]: Number of bits by which a given bit-vector is to be rotated + * + * Parameter: + * - 1: Number of bits by which a given bit-vector is to be rotated + * * Create with: - * mkOp(Kind kind, uint32_t param). + * - `Solver::mkOp(Kind kind, uint32_t param) const`. * * Apply bit-vector rotate left. - * Parameters: 2 - * -[1]: Op of kind BITVECTOR_ROTATE_LEFT - * -[2]: Term of bit-vector sort + * + * Parameters: + * - 1: Op of kind BITVECTOR_ROTATE_LEFT + * - 2: Term of bit-vector sort + * * Create with: - * mkTerm(Op op, Term child) - * mkTerm(Op op, const std::vector& children) + * - `Solver::mkTerm(const Op& op, const Term& child) const` + * - `Solver::mkTerm(const Op& op, const std::vector& children) const` */ BITVECTOR_ROTATE_LEFT, /** * Operator for bit-vector rotate right. - * Parameter 1: - * -[1]: Number of bits by which a given bit-vector is to be rotated + * + * Parameter: + * - 1: Number of bits by which a given bit-vector is to be rotated + * * Create with: - * mkOp(Kind kind, uint32_t param). + * - `Solver::mkOp(Kind kind, uint32_t param) const`. * * Apply bit-vector rotate right. - * Parameters: 2 - * -[1]: Op of kind BITVECTOR_ROTATE_RIGHT - * -[2]: Term of bit-vector sort + * + * Parameters: + * - 1: Op of kind BITVECTOR_ROTATE_RIGHT + * - 2: Term of bit-vector sort + * * Create with: - * mkTerm(Op op, Term child) - * mkTerm(Op op, const std::vector& children) + * - `Solver::mkTerm(const Op& op, const Term& child) const` + * - `Solver::mkTerm(const Op& op, const std::vector& children) const` */ BITVECTOR_ROTATE_RIGHT, #if 0 @@ -1114,26 +1320,32 @@ enum CVC4_EXPORT Kind : int32_t #endif /** * Operator for the conversion from Integer to bit-vector. - * Parameter: 1 - * -[1]: Size of the bit-vector to convert to + * + * Parameter: + * - 1: Size of the bit-vector to convert to + * * Create with: - * mkOp(Kind kind, uint32_t param). + * - `Solver::mkOp(Kind kind, uint32_t param) const`. * * Apply integer conversion to bit-vector. - * Parameters: 2 - * -[1]: Op of kind INT_TO_BITVECTOR - * -[2]: Integer term + * + * Parameters: + * - 1: Op of kind INT_TO_BITVECTOR + * - 2: Integer term + * * Create with: - * mkTerm(Op op, Term child) - * mkTerm(Op op, const std::vector& children) + * - `Solver::mkTerm(const Op& op, const Term& child) const` + * - `Solver::mkTerm(const Op& op, const std::vector& children) const` */ INT_TO_BITVECTOR, /** * Bit-vector conversion to (nonnegative) integer. - * Parameter: 1 - * -[1]: Term of bit-vector sort + * + * Parameter: + * - 1: Term of bit-vector sort + * * Create with: - * mkTerm(Kind kind, Term child) + * - `Solver::mkTerm(Kind kind, const Term& child) const` */ BITVECTOR_TO_NAT, @@ -1141,441 +1353,536 @@ enum CVC4_EXPORT Kind : int32_t /** * Floating-point constant, constructed from a double or string. - * Parameters: 3 - * -[1]: Size of the exponent - * -[2]: Size of the significand - * -[3]: Value of the floating-point constant as a bit-vector term + * + * Parameters: + * - 1: Size of the exponent + * - 2: Size of the significand + * - 3: Value of the floating-point constant as a bit-vector term + * * Create with: - * mkFloatingPoint(uint32_t sig, uint32_t exp, Term val) + * - `Solver::mkFloatingPoint(uint32_t exp, uint32_t sig, Term val) const` */ CONST_FLOATINGPOINT, /** * Floating-point rounding mode term. + * * Create with: - * mkRoundingMode(RoundingMode rm) + * - `Solver::mkRoundingMode(RoundingMode rm) const` */ CONST_ROUNDINGMODE, /** * Create floating-point literal from bit-vector triple. - * Parameters: 3 - * -[1]: Sign bit as a bit-vector term - * -[2]: Exponent bits as a bit-vector term - * -[3]: Significand bits as a bit-vector term (without hidden bit) + * + * Parameters: + * - 1: Sign bit as a bit-vector term + * - 2: Exponent bits as a bit-vector term + * - 3: Significand bits as a bit-vector term (without hidden bit) + * * Create with: - * mkTerm(Kind kind, Term child1, Term child2, Term child3) - * mkTerm(Kind kind, const std::vector& children) + * - `Solver::mkTerm(Kind kind, const Term& child1, const Term& child2, const Term& child3) const` + * - `Solver::mkTerm(Kind kind, const std::vector& children) const` */ FLOATINGPOINT_FP, /** * Floating-point equality. - * Parameters: 2 - * -[1]..[2]: Terms of floating point sort + * + * Parameters: + * - 1..2: Terms of floating point sort + * * Create with: - * mkTerm(Kind kind, Term child1, Term child2) - * mkTerm(Kind kind, const std::vector& children) + * - `Solver::mkTerm(Kind kind, const Term& child1, const Term& child2) const` + * - `Solver::mkTerm(Kind kind, const std::vector& children) const` */ FLOATINGPOINT_EQ, /** * Floating-point absolute value. - * Parameters: 1 - * -[1]: Term of floating point sort + * + * Parameters: + * - 1: Term of floating point sort + * * Create with: - * mkTerm(Kind kind, Term child) + * - `Solver::mkTerm(Kind kind, const Term& child) const` */ FLOATINGPOINT_ABS, /** * Floating-point negation. - * Parameters: 1 - * -[1]: Term of floating point sort + * + * Parameters: + * - 1: Term of floating point sort + * * Create with: - * mkTerm(Kind kind, Term child) + * - `Solver::mkTerm(Kind kind, const Term& child) const` */ FLOATINGPOINT_NEG, /** * Floating-point addition. - * Parameters: 3 - * -[1]: CONST_ROUNDINGMODE - * -[2]: Term of sort FloatingPoint - * -[3]: Term of sort FloatingPoint + * + * Parameters: + * - 1: CONST_ROUNDINGMODE + * - 2: Term of sort FloatingPoint + * - 3: Term of sort FloatingPoint + * * Create with: - * mkTerm(Kind kind, Term child1, Term child2, child3) - * mkTerm(Kind kind, const std::vector& children) + * - `Solver::mkTerm(Kind kind, const Term& child1, const Term& child2, const Term& child3) const` + * - `Solver::mkTerm(Kind kind, const std::vector& children) const` */ FLOATINGPOINT_PLUS, /** * Floating-point sutraction. - * Parameters: 3 - * -[1]: CONST_ROUNDINGMODE - * -[2]: Term of sort FloatingPoint - * -[3]: Term of sort FloatingPoint + * + * Parameters: + * - 1: CONST_ROUNDINGMODE + * - 2: Term of sort FloatingPoint + * - 3: Term of sort FloatingPoint + * * Create with: - * mkTerm(Kind kind, Term child1, Term child2, Term child3) - * mkTerm(Kind kind, const std::vector& children) + * - `Solver::mkTerm(Kind kind, const Term& child1, const Term& child2, const Term& child3) const` + * - `Solver::mkTerm(Kind kind, const std::vector& children) const` */ FLOATINGPOINT_SUB, /** * Floating-point multiply. - * Parameters: 3 - * -[1]: CONST_ROUNDINGMODE - * -[2]: Term of sort FloatingPoint - * -[3]: Term of sort FloatingPoint + * + * Parameters: + * - 1: CONST_ROUNDINGMODE + * - 2: Term of sort FloatingPoint + * - 3: Term of sort FloatingPoint + * * Create with: - * mkTerm(Kind kind, Term child1, Term child2, Term child3) - * mkTerm(Kind kind, const std::vector& children) + * - `Solver::mkTerm(Kind kind, const Term& child1, const Term& child2, const Term& child3) const` + * - `Solver::mkTerm(Kind kind, const std::vector& children) const` */ FLOATINGPOINT_MULT, /** * Floating-point division. - * Parameters: 3 - * -[1]: CONST_ROUNDINGMODE - * -[2]: Term of sort FloatingPoint - * -[3]: Term of sort FloatingPoint + * + * Parameters: + * - 1: CONST_ROUNDINGMODE + * - 2: Term of sort FloatingPoint + * - 3: Term of sort FloatingPoint + * * Create with: - * mkTerm(Kind kind, Term child1, Term child2, Term child3) - * mkTerm(Kind kind, const std::vector& children) + * - `Solver::mkTerm(Kind kind, const Term& child1, const Term& child2, const Term& child3) const` + * - `Solver::mkTerm(Kind kind, const std::vector& children) const` */ FLOATINGPOINT_DIV, /** * Floating-point fused multiply and add. - * Parameters: 4 - * -[1]: CONST_ROUNDINGMODE - * -[2]: Term of sort FloatingPoint - * -[3]: Term of sort FloatingPoint - * -[4]: Term of sort FloatingPoint + * + * Parameters: + * - 1: CONST_ROUNDINGMODE + * - 2: Term of sort FloatingPoint + * - 3: Term of sort FloatingPoint + * - 4: Term of sort FloatingPoint + * * Create with: - * mkTerm(Kind kind, const std::vector& children) + * - `Solver::mkTerm(Kind kind, const std::vector& children) const` */ FLOATINGPOINT_FMA, /** * Floating-point square root. - * Parameters: 2 - * -[1]: CONST_ROUNDINGMODE - * -[2]: Term of sort FloatingPoint + * + * Parameters: + * - 1: CONST_ROUNDINGMODE + * - 2: Term of sort FloatingPoint + * * Create with: - * mkTerm(Kind kind, Term child1, Term child2) - * mkTerm(Kind kind, const std::vector& children) + * - `Solver::mkTerm(Kind kind, const Term& child1, const Term& child2) const` + * - `Solver::mkTerm(Kind kind, const std::vector& children) const` */ FLOATINGPOINT_SQRT, /** * Floating-point remainder. - * Parameters: 2 - * -[1]..[2]: Terms of floating point sort + * + * Parameters: + * - 1..2: Terms of floating point sort + * * Create with: - * mkTerm(Kind kind, Term child1, Term child2) - * mkTerm(Kind kind, const std::vector& children) + * - `Solver::mkTerm(Kind kind, const Term& child1, const Term& child2) const` + * - `Solver::mkTerm(Kind kind, const std::vector& children) const` */ FLOATINGPOINT_REM, /** * Floating-point round to integral. - * Parameters: 2 - * -[1]..[2]: Terms of floating point sort + * + * Parameters: + * -1..2: Terms of floating point sort + * * Create with: - * mkTerm(Kind kind, Term child1, Term child2) - * mkTerm(Kind kind, const std::vector& children) + * - `Solver::mkTerm(Kind kind, const Term& child1, const Term& child2) const` + * - `Solver::mkTerm(Kind kind, const std::vector& children) const` */ FLOATINGPOINT_RTI, /** * Floating-point minimum. - * Parameters: 2 - * -[1]..[2]: Terms of floating point sort + * + * Parameters: + * - 1..2: Terms of floating point sort + * * Create with: - * mkTerm(Kind kind, Term child1, Term child2) - * mkTerm(Kind kind, const std::vector& children) + * - `Solver::mkTerm(Kind kind, const Term& child1, const Term& child2) const` + * - `Solver::mkTerm(Kind kind, const std::vector& children) const` */ FLOATINGPOINT_MIN, /** * Floating-point maximum. - * Parameters: 2 - * -[1]..[2]: Terms of floating point sort + * + * Parameters: + * - 1..2: Terms of floating point sort + * * Create with: - * mkTerm(Kind kind, Term child1, Term child2) - * mkTerm(Kind kind, const std::vector& children) + * - `Solver::mkTerm(Kind kind, const Term& child1, const Term& child2) const` + * - `Solver::mkTerm(Kind kind, const std::vector& children) const` */ FLOATINGPOINT_MAX, /** * Floating-point less than or equal. - * Parameters: 2 - * -[1]..[2]: Terms of floating point sort + * + * Parameters: + * - 1..2: Terms of floating point sort + * * Create with: - * mkTerm(Kind kind, Term child1, Term child2) - * mkTerm(Kind kind, const std::vector& children) + * - `Solver::mkTerm(Kind kind, const Term& child1, const Term& child2) const` + * - `Solver::mkTerm(Kind kind, const std::vector& children) const` */ FLOATINGPOINT_LEQ, /** * Floating-point less than. - * Parameters: 2 - * -[1]..[2]: Terms of floating point sort + * + * Parameters: + * - 1..2: Terms of floating point sort + * * Create with: - * mkTerm(Kind kind, Term child1, Term child2) - * mkTerm(Kind kind, const std::vector& children) + * - `Solver::mkTerm(Kind kind, const Term& child1, const Term& child2) const` + * - `Solver::mkTerm(Kind kind, const std::vector& children) const` */ FLOATINGPOINT_LT, /** * Floating-point greater than or equal. - * Parameters: 2 - * -[1]..[2]: Terms of floating point sort + * + * Parameters: + * - 1..2: Terms of floating point sort + * * Create with: - * mkTerm(Kind kind, Term child1, Term child2) - * mkTerm(Kind kind, const std::vector& children) + * - `Solver::mkTerm(Kind kind, const Term& child1, const Term& child2) const` + * - `Solver::mkTerm(Kind kind, const std::vector& children) const` */ FLOATINGPOINT_GEQ, /** * Floating-point greater than. - * Parameters: 2 + * + * Parameters: + * - 1..2: Terms of floating point sort + * * Create with: - * mkTerm(Kind kind, Term child1, Term child2) - * mkTerm(Kind kind, const std::vector& children) + * - `Solver::mkTerm(Kind kind, const Term& child1, const Term& child2) const` + * - `Solver::mkTerm(Kind kind, const std::vector& children) const` */ FLOATINGPOINT_GT, /** * Floating-point is normal. - * Parameters: 1 - * -[1]: Term of floating point sort + * + * Parameters: + * - 1: Term of floating point sort + * * Create with: - * mkTerm(Kind kind, Term child) + * - `Solver::mkTerm(Kind kind, const Term& child) const` */ FLOATINGPOINT_ISN, /** * Floating-point is sub-normal. - * Parameters: 1 - * -[1]: Term of floating point sort + * + * Parameters: + * - 1: Term of floating point sort + * * Create with: - * mkTerm(Kind kind, Term child) + * - `Solver::mkTerm(Kind kind, const Term& child) const` */ FLOATINGPOINT_ISSN, /** * Floating-point is zero. - * Parameters: 1 - * -[1]: Term of floating point sort + * + * Parameters: + * - 1: Term of floating point sort + * * Create with: - * mkTerm(Kind kind, Term child) + * - `Solver::mkTerm(Kind kind, const Term& child) const` */ FLOATINGPOINT_ISZ, /** * Floating-point is infinite. - * Parameters: 1 - * -[1]: Term of floating point sort + * + * Parameters: + * - 1: Term of floating point sort + * * Create with: - * mkTerm(Kind kind, Term child) + * - `Solver::mkTerm(Kind kind, const Term& child) const` */ FLOATINGPOINT_ISINF, /** * Floating-point is NaN. - * Parameters: 1 - * -[1]: Term of floating point sort + * + * Parameters: + * - 1: Term of floating point sort + * * Create with: - * mkTerm(Kind kind, Term child) + * - `Solver::mkTerm(Kind kind, const Term& child) const` */ FLOATINGPOINT_ISNAN, /** * Floating-point is negative. - * Parameters: 1 - * -[1]: Term of floating point sort + * + * Parameters: + * - 1: Term of floating point sort + * * Create with: - * mkTerm(Kind kind, Term child) + * - `Solver::mkTerm(Kind kind, const Term& child) const` */ FLOATINGPOINT_ISNEG, /** * Floating-point is positive. - * Parameters: 1 - * -[1]: Term of floating point sort + * + * Parameters: + * - 1: Term of floating point sort + * * Create with: - * mkTerm(Kind kind, Term child) + * - `Solver::mkTerm(Kind kind, const Term& child) const` */ FLOATINGPOINT_ISPOS, /** * Operator for to_fp from bit vector. - * Parameters: 2 - * -[1]: Exponent size - * -[2]: Significand size + * + * Parameters: + * - 1: Exponent size + * - 2: Significand size + * * Create with: - * mkOp(Kind kind, uint32_t param1, uint32_t param2) + * - `Solver::mkOp(Kind kind, uint32_t param1, uint32_t param2) const` * * Conversion from an IEEE-754 bit vector to floating-point. - * Parameters: 2 - * -[1]: Op of kind FLOATINGPOINT_TO_FP_IEEE_BITVECTOR - * -[2]: Term of sort FloatingPoint + * + * Parameters: + * - 1: Op of kind FLOATINGPOINT_TO_FP_IEEE_BITVECTOR + * - 2: Term of sort FloatingPoint + * * Create with: - * mkTerm(Op op, Term child) - * mkTerm(Op op, const std::vector& children) + * - `Solver::mkTerm(const Op& op, const Term& child) const` + * - `Solver::mkTerm(const Op& op, const std::vector& children) const` */ FLOATINGPOINT_TO_FP_IEEE_BITVECTOR, /** * Operator for to_fp from floating point. - * Parameters: 2 - * -[1]: Exponent size - * -[2]: Significand size + * + * Parameters: + * - 1: Exponent size + * - 2: Significand size + * * Create with: - * mkOp(Kind kind, uint32_t param1, uint32_t param2) + * - `Solver::mkOp(Kind kind, uint32_t param1, uint32_t param2) const` * * Conversion between floating-point sorts. - * Parameters: 2 - * -[1]: Op of kind FLOATINGPOINT_TO_FP_FLOATINGPOINT - * -[2]: Term of sort FloatingPoint + * + * Parameters: + * - 1: Op of kind FLOATINGPOINT_TO_FP_FLOATINGPOINT + * - 2: Term of sort FloatingPoint + * * Create with: - * mkTerm(Op op, Term child) - * mkTerm(Op op, const std::vector& children) + * - `Solver::mkTerm(const Op& op, const Term& child) const` + * - `Solver::mkTerm(const Op& op, const std::vector& children) const` */ FLOATINGPOINT_TO_FP_FLOATINGPOINT, /** * Operator for to_fp from real. - * Parameters: 2 - * -[1]: Exponent size - * -[2]: Significand size + * + * Parameters: + * - 1: Exponent size + * - 2: Significand size + * * Create with: - * mkOp(Kind kind, uint32_t param1, uint32_t param2) + * - `Solver::mkOp(Kind kind, uint32_t param1, uint32_t param2) const` * * Conversion from a real to floating-point. - * Parameters: 2 - * -[1]: Op of kind FLOATINGPOINT_TO_FP_REAL - * -[2]: Term of sort FloatingPoint + * + * Parameters: + * - 1: Op of kind FLOATINGPOINT_TO_FP_REAL + * - 2: Term of sort FloatingPoint + * * Create with: - * mkTerm(Op op, Term child) - * mkTerm(Op op, const std::vector& children) + * - `Solver::mkTerm(const Op& op, const Term& child) const` + * - `Solver::mkTerm(const Op& op, const std::vector& children) const` */ FLOATINGPOINT_TO_FP_REAL, - /* - * Operator for to_fp from signed bit vector. - * Parameters: 2 - * -[1]: Exponent size - * -[2]: Significand size + /** + * Operator for to_fp from signed bit vector + * + * Parameters: + * - 1: Exponent size + * - 2: Significand size + * * Create with: - * mkOp(Kind kind, uint32_t param1, uint32_t param2) + * - `Solver::mkOp(Kind kind, uint32_t param1, uint32_t param2) const` * * Conversion from a signed bit vector to floating-point. - * Parameters: 2 - * -[1]: Op of kind FLOATINGPOINT_TO_FP_SIGNED_BITVECTOR - * -[2]: Term of sort FloatingPoint + * + * Parameters: + * - 1: Op of kind FLOATINGPOINT_TO_FP_SIGNED_BITVECTOR + * - 2: Term of sort FloatingPoint + * * Create with: - * mkTerm(Op op, Term child) - * mkTerm(Op op, const std::vector& children) + * - `Solver::mkTerm(const Op& op, const Term& child) const` + * - `Solver::mkTerm(const Op& op, const std::vector& children) const` */ FLOATINGPOINT_TO_FP_SIGNED_BITVECTOR, /** * Operator for to_fp from unsigned bit vector. - * Parameters: 2 - * -[1]: Exponent size - * -[2]: Significand size + * + * Parameters: + * - 1: Exponent size + * - 2: Significand size + * * Create with: - * mkOp(Kind kind, uint32_t param1, uint32_t param2) + * - `Solver::mkOp(Kind kind, uint32_t param1, uint32_t param2) const` * * Converting an unsigned bit vector to floating-point. - * Parameters: 2 - * -[1]: Op of kind FLOATINGPOINT_TO_FP_UNSIGNED_BITVECTOR - * -[2]: Term of sort FloatingPoint + * + * Parameters: + * - 1: Op of kind FLOATINGPOINT_TO_FP_UNSIGNED_BITVECTOR + * - 2: Term of sort FloatingPoint + * * Create with: - * mkTerm(Op op, Term child) - * mkTerm(Op op, const std::vector& children) + * - `Solver::mkTerm(const Op& op, const Term& child) const` + * - `Solver::mkTerm(const Op& op, const std::vector& children) const` */ FLOATINGPOINT_TO_FP_UNSIGNED_BITVECTOR, /** * Operator for a generic to_fp. - * Parameters: 2 - * -[1]: exponent size - * -[2]: Significand size + * + * Parameters: + * - 1: exponent size + * - 2: Significand size + * * Create with: - * mkOp(Kind kind, uint32_t param1, uint32_t param2) + * - `Solver::mkOp(Kind kind, uint32_t param1, uint32_t param2) const` * * Generic conversion to floating-point, used in parsing only. - * Parameters: 2 - * -[1]: Op of kind FLOATINGPOINT_TO_FP_GENERIC - * -[2]: Term of sort FloatingPoint + * + * Parameters: + * - 1: Op of kind FLOATINGPOINT_TO_FP_GENERIC + * - 2: Term of sort FloatingPoint + * * Create with: - * mkTerm(Op op, Term child) - * mkTerm(Op op, const std::vector& children) + * - `Solver::mkTerm(const Op& op, const Term& child) const` + * - `Solver::mkTerm(const Op& op, const std::vector& children) const` */ FLOATINGPOINT_TO_FP_GENERIC, /** * Operator for to_ubv. - * Parameters: 1 - * -[1]: Size of the bit-vector to convert to + * + * Parameters: + * - 1: Size of the bit-vector to convert to + * * Create with: - * mkOp(Kind kind, uint32_t param) + * - `Solver::mkOp(Kind kind, uint32_t param) const` * * Conversion from a floating-point value to an unsigned bit vector. - * Parameters: 2 - * -[1]: Op of kind FLOATINGPOINT_TO_FP_TO_UBV - * -[2]: Term of sort FloatingPoint + * + * Parameters: + * - 1: Op of kind FLOATINGPOINT_TO_FP_TO_UBV + * - 2: Term of sort FloatingPoint + * * Create with: - * mkTerm(Op op, Term child) - * mkTerm(Op op, const std::vector& children) + * - `Solver::mkTerm(const Op& op, const Term& child) const` + * - `Solver::mkTerm(const Op& op, const std::vector& children) const` */ FLOATINGPOINT_TO_UBV, /** * Operator for to_sbv. - * Parameters: 1 - * -[1]: Size of the bit-vector to convert to + * + * Parameters: + * - 1: Size of the bit-vector to convert to + * * Create with: - * mkOp(Kind kind, uint32_t param) + * - `Solver::mkOp(Kind kind, uint32_t param) const` * * Conversion from a floating-point value to a signed bit vector. - * Parameters: 2 - * -[1]: Op of kind FLOATINGPOINT_TO_FP_TO_SBV - * -[2]: Term of sort FloatingPoint + * + * Parameters: + * - 1: Op of kind FLOATINGPOINT_TO_FP_TO_SBV + * - 2: Term of sort FloatingPoint + * * Create with: - * mkTerm(Op op, Term child) - * mkTerm(Op op, const std::vector& children) + * - `Solver::mkTerm(const Op& op, const Term& child) const` + * - `Solver::mkTerm(const Op& op, const std::vector& children) const` */ FLOATINGPOINT_TO_SBV, /** * Floating-point to real. - * Parameters: 1 - * -[1]: Term of sort FloatingPoint + * + * Parameters: + * - 1: Term of sort FloatingPoint + * * Create with: - * mkTerm(Kind kind, Term child) + * - `Solver::mkTerm(Kind kind, const Term& child) const` */ FLOATINGPOINT_TO_REAL, /* Arrays ---------------------------------------------------------------- */ /** - * Aarray select. - * Parameters: 2 - * -[1]: Term of array sort - * -[2]: Selection index + * Array select. + * + * Parameters: + * - 1: Term of array sort + * - 2: Selection index + * * Create with: - * mkTerm(Op op, Term child1, Term child2) - * mkTerm(Op op, const std::vector& children) + * - `Solver::mkTerm(const Op& op, const Term& child1, const Term& child2) const` + * - `Solver::mkTerm(const Op& op, const std::vector& children) const` */ SELECT, /** * Array store. - * Parameters: 3 - * -[1]: Term of array sort - * -[2]: Store index - * -[3]: Term to store at the index + * + * Parameters: + * - 1: Term of array sort + * - 2: Store index + * - 3: Term to store at the index + * * Create with: - * mkTerm(Op op, Term child1, Term child2, Term child3) - * mkTerm(Op op, const std::vector& children) + * - `Solver::mkTerm(const Op& op, const Term& child1, const Term& child2, const Term& child3) const` + * - `Solver::mkTerm(const Op& op, const std::vector& children) const` */ STORE, /** * Constant array. - * Parameters: 2 - * -[1]: Array sort - * -[2]: Term representing a constant + * + * Parameters: + * - 1: Array sort + * - 2: Term representing a constant + * * Create with: - * mkTerm(Op op, Term child1, Term child2) - * mkTerm(Op op, const std::vector& children) + * - `Solver::mkTerm(const Op& op, const Term& child1, const Term& child2) const` + * - `Solver::mkTerm(const Op& op, const std::vector& children) const` * * Note: We currently support the creation of constant arrays, but under some * conditions when there is a chain of equalities connecting two constant - * arrays, the solver doesn't know what to do and aborts (Issue #1667). + * arrays, the solver doesn't know what to do and aborts (Issue #1667). */ CONST_ARRAY, /** * Equality over arrays a and b over a given range [i,j], i.e., - * \verbatim - * \forall k . i <= k <= j --> a[k] = b[k] - * \endverbatim + * @f[ + * \forall k . i \leq k \leq j \Rightarrow a[k] = b[k] + * @f] * - * Parameters: 4 - * -[1]: First array - * -[2]: Second array - * -[3]: Lower bound of range (inclusive) - * -[4]: Uppper bound of range (inclusive) + * Parameters: + * - 1: First array + * - 2: Second array + * - 3: Lower bound of range (inclusive) + * - 4: Uppper bound of range (inclusive) + * * Create with: - * mkTerm(Op op, const std::vector& children) + * - `Solver::mkTerm(const Op& op, const std::vector& children) const` * * Note: We currently support the creation of array equalities over index * types bit-vector, floating-point, integer and real. Option --arrays-exp is @@ -1597,34 +1904,40 @@ enum CVC4_EXPORT Kind : int32_t /** * Constructor application. + * * Paramters: n > 0 - * -[1]: Constructor (operator) - * -[2]..[n]: Parameters to the constructor + * - 1: Constructor (operator) + * - 2..n: Parameters to the constructor + * * Create with: - * mkTerm(Kind kind, Op op) - * mkTerm(Kind kind, Op op, Term child) - * mkTerm(Kind kind, Op op, Term child1, Term child2) - * mkTerm(Kind kind, Op op, Term child1, Term child2, Term child3) - * mkTerm(Kind kind, Op op, const std::vector& children) + * - `Solver::mkTerm(const Op& op) const` + * - `Solver::mkTerm(const Op& op, const Term& child) const` + * - `Solver::mkTerm(const Op& op, const Term& child1, const Term& child2) const` + * - `Solver::mkTerm(const Op& op, const Term& child1, const Term& child2, const Term& child3) const` + * - `Solver::mkTerm(const Op& op, const std::vector& children) const` */ APPLY_CONSTRUCTOR, /** * Datatype selector application. - * Parameters: 1 - * -[1]: Selector (operator) - * -[2]: Datatype term (undefined if mis-applied) + * + * Parameters: + * - 1: Selector (operator) + * - 2: Datatype term (undefined if mis-applied) + * * Create with: - * mkTerm(Kind kind, Op op, Term child) + * - `Solver::mkTerm(const Op& op, const Term& child) const` */ APPLY_SELECTOR, /** * Datatype tester application. - * Parameters: 2 - * -[1]: Tester term - * -[2]: Datatype term + * + * Parameters: + * - 1: Tester term + * - 2: Datatype term + * * Create with: - * mkTerm(Kind kind, Term child1, Term child2) - * mkTerm(Kind kind, const std::vector& children) + * - `Solver::mkTerm(Kind kind, const Term& child1, const Term& child2) const` + * - `Solver::mkTerm(Kind kind, const std::vector& children) const` */ APPLY_TESTER, #if 0 @@ -1637,101 +1950,126 @@ enum CVC4_EXPORT Kind : int32_t #endif /** * Operator for a tuple update. - * Parameters: 1 - * -[1]: Index of the tuple to be updated + * + * Parameters: + * - 1: Index of the tuple to be updated + * * Create with: - * mkOp(Kind kind, uint32_t param) + * - `Solver::mkOp(Kind kind, uint32_t param) const` * * Apply tuple update. - * Parameters: 3 - * -[1]: Op of kind TUPLE_UPDATE (which references an index) - * -[2]: Tuple - * -[3]: Element to store in the tuple at the given index + * + * Parameters: + * - 1: Op of kind TUPLE_UPDATE (which references an index) + * - 2: Tuple + * - 3: Element to store in the tuple at the given index + * * Create with: - * mkTerm(Op op, Term child1, Term child2) - * mkTerm(Op op, const std::vector& children) + * - `Solver::mkTerm(const Op& op, const Term& child1, const Term& child2) const` + * - `Solver::mkTerm(const Op& op, const std::vector& children) const` */ TUPLE_UPDATE, /** * Operator for a record update. - * Parameters: 1 - * -[1]: Name of the field to be updated + * + * Parameters: + * - 1: Name of the field to be updated + * * Create with: - * mkOp(Kind kind, const std::string& param) + * - `Solver::mkOp(Kind kind, const std::string& param) const` * * Record update. - * Parameters: 3 - * -[1]: Op of kind RECORD_UPDATE (which references a field) - * -[2]: Record term to update - * -[3]: Element to store in the record in the given field + * + * Parameters: + * - 1: Op of kind RECORD_UPDATE (which references a field) + * - 2: Record term to update + * - 3: Element to store in the record in the given field + * * Create with: - * mkTerm(Op op, Term child1, Term child2) - * mkTerm(Op op,, const std::vector& children) + * - `Solver::mkTerm(const Op& op, const Term& child1, const Term& child2) const` + * - `Solver::mkTerm(const Op& op,, const std::vector& children) const` */ RECORD_UPDATE, - /* Match expressions. + /** + * Match expressions. * For example, the smt2 syntax match term - * (match l (((cons h t) h) (nil 0))) + * `(match l (((cons h t) h) (nil 0)))` * is represented by the AST - * (MATCH l - * (MATCH_BIND_CASE (BOUND_VAR_LIST h t) (cons h t) h) - * (MATCH_CASE nil 0)) + * + * (MATCH l + * (MATCH_BIND_CASE (BOUND_VAR_LIST h t) (cons h t) h) + * (MATCH_CASE nil 0)) + * * The type of the last argument of each case term could be equal. + * * Parameters: n > 1 - * -[1]..[n]: Terms of kind MATCH_CASE or MATCH_BIND_CASE + * - 1..n: Terms of kind MATCH_CASE or MATCH_BIND_CASE + * * Create with: - * mkTerm(Kind kind, Term child1, Term child2) - * mkTerm(Kind kind, Term child1, Term child2, Term child3) - * mkTerm(Kind kind, const std::vector& children) + * - `Solver::mkTerm(Kind kind, const Term& child1, const Term& child2) const` + * - `Solver::mkTerm(Kind kind, const Term& child1, const Term& child2, const Term& child3) const` + * - `Solver::mkTerm(Kind kind, const std::vector& children) const` * */ MATCH, - /* Match case + /** + * Match case * A (constant) case expression to be used within a match expression. - * Parameters: 2 - * -[1] Term denoting the pattern expression - * -[2] Term denoting the return value + * + * Parameters: + * - 1: Term denoting the pattern expression + * - 2: Term denoting the return value + * * Create with: - * mkTerm(Kind kind, Term child1, Term child2) - * mkTerm(Kind kind, const std::vector& children) + * - `Solver::mkTerm(Kind kind, const Term& child1, const Term& child2) const` + * - `Solver::mkTerm(Kind kind, const std::vector& children) const` */ MATCH_CASE, - /* Match bind case + /** + * Match bind case * A (non-constant) case expression to be used within a match expression. - * Parameters: 3 - * -[1] a BOUND_VAR_LIST Term containing the free variables of the case - * -[2] Term denoting the pattern expression - * -[3] Term denoting the return value + * + * Parameters: + * - 1: a BOUND_VAR_LIST Term containing the free variables of the case + * - 2: Term denoting the pattern expression + * - 3: Term denoting the return value + * * Create with: - * mkTerm(Kind kind, Term child1, Term child2, Term child3) - * mkTerm(Kind kind, const std::vector& children) + * - `Solver::mkTerm(Kind kind, const Term& child1, const Term& child2, const Term& child3) const` + * - `Solver::mkTerm(Kind kind, const std::vector& children) const` */ MATCH_BIND_CASE, - /* + /** * Datatypes size * An operator mapping datatypes to an integer denoting the number of * non-nullary applications of constructors they contain. - * Parameters: 1 - * -[1]: Datatype term + * + * Parameters: + * - 1: Datatype term + * * Create with: - * mkTerm(Kind kind, Term child1) - * mkTerm(Kind kind, const std::vector& children) + * - `Solver::mkTerm(Kind kind, const Term& child1) const` + * - `Solver::mkTerm(Kind kind, const std::vector& children) const` */ DT_SIZE, /** * Operator for tuple projection indices - * Parameters: 1 - * -[1]: The tuple projection indices + * + * Parameters: + * - 1: The tuple projection indices + * * Create with: - * mkOp(Kind TUPLE_PROJECT, std::vector param) + * - `Solver::mkOp(Kind TUPLE_PROJECT, std::vector param) const` * - * constructs a new tuple from an existing one using the elements at the + * Constructs a new tuple from an existing one using the elements at the * given indices - * Parameters: 1 - * -[1]: a term of tuple sort + * + * Parameters: + * - 1: a term of tuple sort + * * Create with: - * mkTerm(Op op, Term child) - * mkTerm(Op op, const std::vector& children) + * - `Solver::mkTerm(const Op& op, const Term& child) const` + * - `Solver::mkTerm(const Op& op, const std::vector& children) const` */ TUPLE_PROJECT, #if 0 @@ -1751,52 +2089,62 @@ enum CVC4_EXPORT Kind : int32_t /** * Separation logic nil term. - * Parameters: 0 + * + * Parameters: none + * * Create with: - * mkSepNil(Sort sort) + * - `Solver::mkSepNil(const Sort& sort) const` */ SEP_NIL, /** * Separation logic empty heap. - * Parameters: 2 - * -[1]: Term of the same sort as the sort of the location of the heap + * + * Parameters: + * - 1: Term of the same sort as the sort of the location of the heap * that is constrained to be empty - * -[2]: Term of the same sort as the data sort of the heap that is + * - 2: Term of the same sort as the data sort of the heap that is * that is constrained to be empty + * * Create with: - * mkTerm(Kind kind, Term child1, Term child2) - * mkTerm(Kind kind, const std::vector& children) + * - `Solver::mkTerm(Kind kind, const Term& child1, const Term& child2) const` + * - `Solver::mkTerm(Kind kind, const std::vector& children) const` */ SEP_EMP, /** * Separation logic points-to relation. - * Parameters: 2 - * -[1]: Location of the points-to constraint - * -[2]: Data of the points-to constraint + * + * Parameters: + * - 1: Location of the points-to constraint + * - 2: Data of the points-to constraint + * * Create with: - * mkTerm(Kind kind, Term child1, Term child2) - * mkTerm(Kind kind, const std::vector& children) + * - `Solver::mkTerm(Kind kind, const Term& child1, const Term& child2) const` + * - `Solver::mkTerm(Kind kind, const std::vector& children) const` */ SEP_PTO, /** * Separation logic star. - * Parameters: n >= 2 - * -[1]..[n]: Child constraints that hold in disjoint (separated) heaps + * + * Parameters: n > 1 + * - 1..n: Child constraints that hold in disjoint (separated) heaps + * * Create with: - * mkTerm(Kind kind, Term child1, Term child2) - * mkTerm(Kind kind, Term child1, Term child2, Term child3) - * mkTerm(Kind kind, const std::vector& children) + * - `Solver::mkTerm(Kind kind, const Term& child1, const Term& child2) const` + * - `Solver::mkTerm(Kind kind, const Term& child1, const Term& child2, const Term& child3) const` + * - `Solver::mkTerm(Kind kind, const std::vector& children) const` */ SEP_STAR, /** * Separation logic magic wand. - * Parameters: 2 - * -[1]: Antecendant of the magic wand constraint - * -[2]: Conclusion of the magic wand constraint, which is asserted to + * + * Parameters: + * - 1: Antecendant of the magic wand constraint + * - 2: Conclusion of the magic wand constraint, which is asserted to * hold in all heaps that are disjoint extensions of the antecedent. + * * Create with: - * mkTerm(Kind kind, Term child1, Term child2) - * mkTerm(Kind kind, const std::vector& children) + * - `Solver::mkTerm(Kind kind, const Term& child1, const Term& child2) const` + * - `Solver::mkTerm(Kind kind, const std::vector& children) const` */ SEP_WAND, #if 0 @@ -1808,150 +2156,183 @@ enum CVC4_EXPORT Kind : int32_t /** * Empty set constant. - * Parameters: 1 - * -[1]: Sort of the set elements + * + * Parameters: + * - 1: Sort of the set elements + * * Create with: - * mkEmptySet(Sort sort) + * - `Solver::mkEmptySet(const Sort& sort) const` */ EMPTYSET, /** * Set union. - * Parameters: 2 - * -[1]..[2]: Terms of set sort + * + * Parameters: + * - 1..2: Terms of set sort + * * Create with: - * mkTerm(Kind kind, Term child1, Term child2) - * mkTerm(Kind kind, const std::vector& children) + * - `Solver::mkTerm(Kind kind, const Term& child1, const Term& child2) const` + * - `Solver::mkTerm(Kind kind, const std::vector& children) const` */ UNION, /** * Set intersection. - * Parameters: 2 - * -[1]..[2]: Terms of set sort + * + * Parameters: + * - 1..2: Terms of set sort + * * Create with: - * mkTerm(Kind kind, Term child1, Term child2) - * mkTerm(Kind kind, const std::vector& children) + * - `Solver::mkTerm(Kind kind, const Term& child1, const Term& child2) const` + * - `Solver::mkTerm(Kind kind, const std::vector& children) const` */ INTERSECTION, /** * Set subtraction. - * Parameters: 2 - * -[1]..[2]: Terms of set sort + * + * Parameters: + * - 1..2: Terms of set sort + * * Create with: - * mkTerm(Kind kind, Term child1, Term child2) - * mkTerm(Kind kind, const std::vector& children) + * - `Solver::mkTerm(Kind kind, const Term& child1, const Term& child2) const` + * - `Solver::mkTerm(Kind kind, const std::vector& children) const` */ SETMINUS, /** * Subset predicate. - * Parameters: 2 - * -[1]..[2]: Terms of set sort, [1] a subset of set [2]? + * + * Parameters: + * - 1..2: Terms of set sort, [1] a subset of set [2]? + * * Create with: - * mkTerm(Kind kind, Term child1, Term child2) - * mkTerm(Kind kind, const std::vector& children) + * - `Solver::mkTerm(Kind kind, const Term& child1, const Term& child2) const` + * - `Solver::mkTerm(Kind kind, const std::vector& children) const` */ SUBSET, /** * Set membership predicate. - * Parameters: 2 - * -[1]..[2]: Terms of set sort, [1] a member of set [2]? + * + * Parameters: + * - 1..2: Terms of set sort, [1] a member of set [2]? + * * Create with: - * mkTerm(Kind kind, Term child1, Term child2) - * mkTerm(Kind kind, const std::vector& children) + * - `Solver::mkTerm(Kind kind, const Term& child1, const Term& child2) const` + * - `Solver::mkTerm(Kind kind, const std::vector& children) const` */ MEMBER, /** * Construct a singleton set from an element given as a parameter. * The returned set has same type of the element. - * Parameters: 1 - * -[1]: Single element + * + * Parameters: + * - 1: Single element + * * Create with: - * mkTerm(Kind kind, Term child) + * - `Solver::mkTerm(Kind kind, const Term& child) const` */ SINGLETON, /** * The set obtained by inserting elements; + * * Parameters: n > 0 - * -[1]..[n-1]: Elements inserted into set [n] - * -[n]: Set Term + * - 1..n-1: Elements inserted into set [n] + * - n: Set Term + * * Create with: - * mkTerm(Kind kind, Term child) - * mkTerm(Kind kind, Term child1, Term child2) - * mkTerm(Kind kind, Term child1, Term child2, Term child3) - * mkTerm(Kind kind, const std::vector& children) + * - `Solver::mkTerm(Kind kind, const Term& child) const` + * - `Solver::mkTerm(Kind kind, const Term& child1, const Term& child2) const` + * - `Solver::mkTerm(Kind kind, const Term& child1, const Term& child2, const Term& child3) const` + * - `Solver::mkTerm(Kind kind, const std::vector& children) const` */ INSERT, /** * Set cardinality. - * Parameters: 1 - * -[1]: Set to determine the cardinality of + * + * Parameters: + * - 1: Set to determine the cardinality of + * * Create with: - * mkTerm(Kind kind, Term child) + * - `Solver::mkTerm(Kind kind, const Term& child) const` */ CARD, /** * Set complement with respect to finite universe. - * Parameters: 1 - * -[1]: Set to complement + * + * Parameters: + * - 1: Set to complement + * * Create with: - * mkTerm(Kind kind, Term child) + * - `Solver::mkTerm(Kind kind, const Term& child) const` */ COMPLEMENT, /** * Finite universe set. * All set variables must be interpreted as subsets of it. + * * Create with: - * mkUniverseSet(Sort sort) + * - `Solver::mkUniverseSet(const Sort& sort) const` */ UNIVERSE_SET, /** * Set join. - * Parameters: 2 - * -[1]..[2]: Terms of set sort + * + * Parameters: + * - 1..2: Terms of set sort + * * Create with: - * mkTerm(Kind kind, Term child1, Term child2) - * mkTerm(Kind kind, const std::vector& children) + * - `Solver::mkTerm(Kind kind, const Term& child1, const Term& child2) const` + * - `Solver::mkTerm(Kind kind, const std::vector& children) const` */ JOIN, /** * Set cartesian product. - * Parameters: 2 - * -[1]..[2]: Terms of set sort + * + * Parameters: + * - 1..2: Terms of set sort + * * Create with: - * mkTerm(Kind kind, Term child1, Term child2) - * mkTerm(Kind kind, const std::vector& children) + * - `Solver::mkTerm(Kind kind, const Term& child1, const Term& child2) const` + * - `Solver::mkTerm(Kind kind, const std::vector& children) const` */ PRODUCT, /** * Set transpose. - * Parameters: 1 - * -[1]: Term of set sort + * + * Parameters: + * - 1: Term of set sort + * * Create with: - * mkTerm(Kind kind, Term child) + * - `Solver::mkTerm(Kind kind, const Term& child) const` */ TRANSPOSE, /** * Set transitive closure. - * Parameters: 1 - * -[1]: Term of set sort + * + * Parameters: + * - 1: Term of set sort + * * Create with: - * mkTerm(Kind kind, Term child) + * - `Solver::mkTerm(Kind kind, const Term& child) const` */ TCLOSURE, /** * Set join image. - * Parameters: 2 - * -[1]..[2]: Terms of set sort + * + * Parameters: + * - 1..2: Terms of set sort + * * Create with: - * mkTerm(Kind kind, Term child1, Term child2) - * mkTerm(Kind kind, const std::vector& children) + * - `Solver::mkTerm(Kind kind, const Term& child1, const Term& child2) const` + * - `Solver::mkTerm(Kind kind, const std::vector& children) const` */ JOIN_IMAGE, /** * Set identity. - * Parameters: 1 - * -[1]: Term of set sort + * + * Parameters: + * - 1: Term of set sort + * * Create with: - * mkTerm(Kind kind, Term child) + * - `Solver::mkTerm(Kind kind, const Term& child) const` */ IDEN, /** @@ -1959,20 +2340,22 @@ enum CVC4_EXPORT Kind : int32_t * A set comprehension is specified by a bound variable list x1 ... xn, * a predicate P[x1...xn], and a term t[x1...xn]. A comprehension C with the * above form has members given by the following semantics: - * \verbatim - * forall y. ( exists x1...xn. P[x1...xn] ^ t[x1...xn] = y ) <=> (member y C) - * \endverbatim + * @f[ + * \forall y. ( \exists x_1...x_n. P[x_1...x_n] \hat{} t[x_1...x_n] = y ) \Leftrightarrow (member y C) + * @f] * where y ranges over the element type of the (set) type of the - * comprehension. If t[x1..xn] is not provided, it is equivalent to y in the + * comprehension. If @f$ t[x_1..x_n] @f$ is not provided, it is equivalent to y in the * above formula. - * Parameters: 2 (3) - * -[1]: Term BOUND_VAR_LIST - * -[2]: Term denoting the predicate of the comprehension - * -[3]: (optional) a Term denoting the generator for the comprehension + * + * Parameters: + * - 1: Term BOUND_VAR_LIST + * - 2: Term denoting the predicate of the comprehension + * - 3: (optional) a Term denoting the generator for the comprehension + * * Create with: - * mkTerm(Kind kind, Term child1, Term child2) - * mkTerm(Kind kind, Term child1, Term child2, Term child3) - * mkTerm(Kind kind, const std::vector& children) + * - `Solver::mkTerm(Kind kind, const Term& child1, const Term& child2) const` + * - `Solver::mkTerm(Kind kind, const Term& child1, const Term& child2, const Term& child3) const` + * - `Solver::mkTerm(Kind kind, const std::vector& children) const` */ COMPREHENSION, /** @@ -1981,118 +2364,143 @@ enum CVC4_EXPORT Kind : int32_t * If the set is empty, then (choose A) is an arbitrary value. * If the set has cardinality > 1, then (choose A) will deterministically * return an element in A. - * Parameters: 1 - * -[1]: Term of set sort + * + * Parameters: + * - 1: Term of set sort + * * Create with: - * mkTerm(Kind kind, Term child) + * - `Solver::mkTerm(Kind kind, const Term& child) const` */ CHOOSE, /** * Set is_singleton predicate. - * Parameters: 1 - * -[1]: Term of set sort, is [1] a singleton set? + * + * Parameters: + * - 1: Term of set sort, is [1] a singleton set? + * * Create with: - * mkTerm(Kind kind, Term child) + * - `Solver::mkTerm(Kind kind, const Term& child) const` */ IS_SINGLETON, /* Bags ------------------------------------------------------------------ */ /** * Empty bag constant. - * Parameters: 1 - * -[1]: Sort of the bag elements + * + * Parameters: + * - 1: Sort of the bag elements + * * Create with: - * mkEmptyBag(Sort sort) + * mkEmptyBag(const Sort& sort) */ EMPTYBAG, /** * Bag max union. - * Parameters: 2 - * -[1]..[2]: Terms of bag sort + * Parameters: + * - 1..2: Terms of bag sort + * * Create with: - * mkTerm(Kind kind, Term child1, Term child2) - * mkTerm(Kind kind, const std::vector& children) + * - `Solver::mkTerm(Kind kind, const Term& child1, const Term& child2) const` + * - `Solver::mkTerm(Kind kind, const std::vector& children) const` */ UNION_MAX, /** * Bag disjoint union (sum). - * Parameters: 2 - * -[1]..[2]: Terms of bag sort + * + * Parameters: + * -1..2: Terms of bag sort + * * Create with: - * mkTerm(Kind kind, Term child1, Term child2) - * mkTerm(Kind kind, const std::vector& children) + * - `Solver::mkTerm(Kind kind, const Term& child1, const Term& child2) const` + * - `Solver::mkTerm(Kind kind, const std::vector& children) const` */ UNION_DISJOINT, /** * Bag intersection (min). - * Parameters: 2 - * -[1]..[2]: Terms of bag sort + * + * Parameters: + * - 1..2: Terms of bag sort + * * Create with: - * mkTerm(Kind kind, Term child1, Term child2) - * mkTerm(Kind kind, const std::vector& children) + * - `Solver::mkTerm(Kind kind, const Term& child1, const Term& child2) const` + * - `Solver::mkTerm(Kind kind, const std::vector& children) const` */ INTERSECTION_MIN, /** * Bag difference subtract (subtracts multiplicities of the second from the * first). - * Parameters: 2 - * -[1]..[2]: Terms of bag sort + * + * Parameters: + * - 1..2: Terms of bag sort + * * Create with: - * mkTerm(Kind kind, Term child1, Term child2) - * mkTerm(Kind kind, const std::vector& children) + * - `Solver::mkTerm(Kind kind, const Term& child1, const Term& child2) const` + * - `Solver::mkTerm(Kind kind, const std::vector& children) const` */ DIFFERENCE_SUBTRACT, /** * Bag difference 2 (removes shared elements in the two bags). - * Parameters: 2 - * -[1]..[2]: Terms of bag sort + * + * Parameters: + * - 1..2: Terms of bag sort + * * Create with: - * mkTerm(Kind kind, Term child1, Term child2) - * mkTerm(Kind kind, const std::vector& children) + * - `Solver::mkTerm(Kind kind, const Term& child1, const Term& child2) const` + * - `Solver::mkTerm(Kind kind, const std::vector& children) const` */ DIFFERENCE_REMOVE, /** * Inclusion predicate for bags * (multiplicities of the first bag <= multiplicities of the second bag). - * Parameters: 2 - * -[1]..[2]: Terms of bag sort + * + * Parameters: + * - 1..2: Terms of bag sort + * * Create with: - * mkTerm(Kind kind, Term child1, Term child2) - * mkTerm(Kind kind, const std::vector& children) + * - `Solver::mkTerm(Kind kind, const Term& child1, const Term& child2) const` + * - `Solver::mkTerm(Kind kind, const std::vector& children) const` */ SUBBAG, /** * Element multiplicity in a bag - * Parameters: 2 - * -[1]..[2]: Terms of bag sort (Bag E), [1] an element of sort E + * + * Parameters: + * - 1..2: Terms of bag sort (Bag E), [1] an element of sort E + * * Create with: - * mkTerm(Kind kind, Term child1, Term child2) - * mkTerm(Kind kind, const std::vector& children) + * - `Solver::mkTerm(Kind kind, const Term& child1, const Term& child2) const` + * - `Solver::mkTerm(Kind kind, const std::vector& children) const` */ BAG_COUNT, /** * Eliminate duplicates in a given bag. The returned bag contains exactly the * same elements in the given bag, but with multiplicity one. - * Parameters: 1 - * -[1]: a term of bag sort + * + * Parameters: + * - 1: a term of bag sort + * * Create with: - * mkTerm(Kind kind, Term child) - * mkTerm(Kind kind, const std::vector& children) + * - `Solver::mkTerm(Kind kind, const Term& child) const` + * - `Solver::mkTerm(Kind kind, const std::vector& children) const` */ DUPLICATE_REMOVAL, /** * The bag of the single element given as a parameter. - * Parameters: 1 - * -[1]: Single element + * + * Parameters: + * - 1: Single element + * * Create with: - * mkTerm(Kind kind, Term child) + * - `Solver::mkTerm(Kind kind, const Term& child) const` */ MK_BAG, /** * Bag cardinality. - * Parameters: 1 - * -[1]: Bag to determine the cardinality of + * + * Parameters: + * - 1: Bag to determine the cardinality of + * * Create with: - * mkTerm(Kind kind, Term child) + * - `Solver::mkTerm(Kind kind, const Term& child) const` */ BAG_CARD, /** @@ -2102,34 +2510,41 @@ enum CVC4_EXPORT Kind : int32_t * If the bag is empty, then (choose A) is an arbitrary value. * If the bag contains distinct elements, then (choose A) will * deterministically return an element in A. - * Parameters: 1 - * -[1]: Term of bag sort + * + * Parameters: + * - 1: Term of bag sort + * * Create with: - * mkTerm(Kind kind, Term child) + * - `Solver::mkTerm(Kind kind, const Term& child) const` */ BAG_CHOOSE, /** * Bag is_singleton predicate (single element with multiplicity exactly one). - * Parameters: 1 - * -[1]: Term of bag sort, is [1] a singleton bag? + * Parameters: + * - 1: Term of bag sort, is [1] a singleton bag? + * * Create with: - * mkTerm(Kind kind, Term child) + * - `Solver::mkTerm(Kind kind, const Term& child) const` */ BAG_IS_SINGLETON, /** * Bag.from_set converts a set to a bag. - * Parameters: 1 - * -[1]: Term of set sort + * + * Parameters: + * - 1: Term of set sort + * * Create with: - * mkTerm(Kind kind, Term child) + * - `Solver::mkTerm(Kind kind, const Term& child) const` */ BAG_FROM_SET, /** * Bag.to_set converts a bag to a set. - * Parameters: 1 - * -[1]: Term of bag sort + * + * Parameters: + * - 1: Term of bag sort + * * Create with: - * mkTerm(Kind kind, Term child) + * - `Solver::mkTerm(Kind kind, const Term& child) const` */ BAG_TO_SET, @@ -2137,30 +2552,36 @@ enum CVC4_EXPORT Kind : int32_t /** * String concat. + * * Parameters: n > 1 - * -[1]..[n]: Terms of String sort + * - 1..n: Terms of String sort + * * Create with: - * mkTerm(Kind kind, Term child1, Term child2) - * mkTerm(Kind kind, Term child1, Term child2, Term child3) - * mkTerm(Kind kind, const std::vector& children) + * - `Solver::mkTerm(Kind kind, const Term& child1, const Term& child2) const` + * - `Solver::mkTerm(Kind kind, const Term& child1, const Term& child2, const Term& child3) const` + * - `Solver::mkTerm(Kind kind, const std::vector& children) const` */ STRING_CONCAT, /** * String membership. - * Parameters: 2 - * -[1]: Term of String sort - * -[2]: Term of RegExp sort + * + * Parameters: + * - 1: Term of String sort + * - 2: Term of RegExp sort + * * Create with: - * mkTerm(Kind kind, Term child1, Term child2) - * mkTerm(Kind kind, const std::vector& children) + * - `Solver::mkTerm(Kind kind, const Term& child1, const Term& child2) const` + * - `Solver::mkTerm(Kind kind, const std::vector& children) const` */ STRING_IN_REGEXP, /** * String length. - * Parameters: 1 - * -[1]: Term of String sort + * + * Parameters: + * - 1: Term of String sort + * * Create with: - * mkTerm(Kind kind, Term child) + * - `Solver::mkTerm(Kind kind, const Term& child) const` */ STRING_LENGTH, /** @@ -2169,13 +2590,15 @@ enum CVC4_EXPORT Kind : int32_t * 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. - * Parameters: 3 - * -[1]: Term of sort String - * -[2]: Term of sort Integer (index i) - * -[3]: Term of sort Integer (length l) + * + * Parameters: + * - 1: Term of sort String + * - 2: Term of sort Integer (index i) + * - 3: Term of sort Integer (length l) + * * Create with: - * mkTerm(Kind kind, Term child1, Term child2, Term child3) - * mkTerm(Kind kind, const std::vector& children) + * - `Solver::mkTerm(Kind kind, const Term& child1, const Term& child2, const Term& child3) const` + * - `Solver::mkTerm(Kind kind, const std::vector& children) const` */ STRING_SUBSTR, /** @@ -2184,13 +2607,15 @@ enum CVC4_EXPORT Kind : int32_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. - * Parameters: 3 - * -[1]: Term of sort String - * -[2]: Term of sort Integer (index i) - * -[3]: Term of sort String (replacement string t) + * + * Parameters: + * - 1: Term of sort String + * - 2: Term of sort Integer (index i) + * - 3: Term of sort String (replacement string t) + * * Create with: - * mkTerm(Kind kind, Term child1, Term child2, Term child3) - * mkTerm(Kind kind, const std::vector& children) + * - `Solver::mkTerm(Kind kind, const Term& child1, const Term& child2, const Term& child3) const` + * - `Solver::mkTerm(Kind kind, const std::vector& children) const` */ STRING_UPDATE, /** @@ -2198,24 +2623,28 @@ enum CVC4_EXPORT Kind : int32_t * 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. - * Parameters: 2 - * -[1]: Term of sort String (string s) - * -[2]: Term of sort Integer (index i) + * + * Parameters: + * - 1: Term of sort String (string s) + * - 2: Term of sort Integer (index i) + * * Create with: - * mkTerm(Kind kind, Term child1, Term child2) - * mkTerm(Kind kind, const std::vector& children) + * - `Solver::mkTerm(Kind kind, const Term& child1, const Term& child2) const` + * - `Solver::mkTerm(Kind kind, const std::vector& children) const` */ STRING_CHARAT, /** * String contains. * Checks whether a string s1 contains another string s2. If s2 is empty, the * result is always true. - * Parameters: 2 - * -[1]: Term of sort String (the string s1) - * -[2]: Term of sort String (the string s2) + * + * Parameters: + * - 1: Term of sort String (the string s1) + * - 2: Term of sort String (the string s2) + * * Create with: - * mkTerm(Kind kind, Term child1, Term child2) - * mkTerm(Kind kind, const std::vector& children) + * - `Solver::mkTerm(Kind kind, const Term& child1, const Term& child2) const` + * - `Solver::mkTerm(Kind kind, const std::vector& children) const` */ STRING_CONTAINS, /** @@ -2223,39 +2652,45 @@ enum CVC4_EXPORT Kind : int32_t * Returns the index of a substring s2 in a string s1 starting at index i. If * the index is negative or greater than the length of string s1 or the * substring s2 does not appear in string s1 after index i, the result is -1. - * Parameters: 3 - * -[1]: Term of sort String (substring s1) - * -[2]: Term of sort String (substring s2) - * -[3]: Term of sort Integer (index i) + * + * Parameters: + * - 1: Term of sort String (substring s1) + * - 2: Term of sort String (substring s2) + * - 3: Term of sort Integer (index i) + * * Create with: - * mkTerm(Kind kind, Term child1, Term child2, Term child3) - * mkTerm(Kind kind, const std::vector& children) + * - `Solver::mkTerm(Kind kind, const Term& child1, const Term& child2, const Term& child3) const` + * - `Solver::mkTerm(Kind kind, const std::vector& children) const` */ STRING_INDEXOF, /** * String replace. * Replaces a string s2 in a string s1 with string s3. If s2 does not appear * in s1, s1 is returned unmodified. - * Parameters: 3 - * -[1]: Term of sort String (string s1) - * -[2]: Term of sort String (string s2) - * -[3]: Term of sort String (string s3) + * + * Parameters: + * - 1: Term of sort String (string s1) + * - 2: Term of sort String (string s2) + * - 3: Term of sort String (string s3) + * * Create with: - * mkTerm(Kind kind, Term child1, Term child2, Term child3) - * mkTerm(Kind kind, const std::vector& children) + * - `Solver::mkTerm(Kind kind, const Term& child1, const Term& child2, const Term& child3) const` + * - `Solver::mkTerm(Kind kind, const std::vector& children) const` */ STRING_REPLACE, /** * String replace all. * Replaces all occurrences of a string s2 in a string s1 with string s3. * If s2 does not appear in s1, s1 is returned unmodified. - * Parameters: 3 - * -[1]: Term of sort String (string s1) - * -[2]: Term of sort String (string s2) - * -[3]: Term of sort String (string s3) + * + * Parameters: + * - 1: Term of sort String (string s1) + * - 2: Term of sort String (string s2) + * - 3: Term of sort String (string s3) + * * Create with: - * mkTerm(Kind kind, Term child1, Term child2, Term child3) - * mkTerm(Kind kind, const std::vector& children) + * - `Solver::mkTerm(Kind kind, const Term& child1, const Term& child2, const Term& child3) const` + * - `Solver::mkTerm(Kind kind, const std::vector& children) const` */ STRING_REPLACE_ALL, /** @@ -2263,60 +2698,72 @@ enum CVC4_EXPORT Kind : int32_t * Replaces the first match of a regular expression r in string s1 with * string s2. If r does not match a substring of s1, s1 is returned * unmodified. - * Parameters: 3 - * -[1]: Term of sort String (string s1) - * -[2]: Term of sort Regexp (regexp r) - * -[3]: Term of sort String (string s2) + * + * Parameters: + * - 1: Term of sort String (string s1) + * - 2: Term of sort Regexp (regexp r) + * - 3: Term of sort String (string s2) + * * Create with: - * mkTerm(Kind kind, Term child1, Term child2, Term child3) - * mkTerm(Kind kind, const std::vector& children) + * - `Solver::mkTerm(Kind kind, const Term& child1, const Term& child2, const Term& child3) const` + * - `Solver::mkTerm(Kind kind, const std::vector& children) const` */ STRING_REPLACE_RE, /** * String replace all regular expression matches. * Replaces all matches of a regular expression r in string s1 with string * s2. If r does not match a substring of s1, s1 is returned unmodified. - * Parameters: 3 - * -[1]: Term of sort String (string s1) - * -[2]: Term of sort Regexp (regexp r) - * -[3]: Term of sort String (string s2) + * + * Parameters: + * - 1: Term of sort String (string s1) + * - 2: Term of sort Regexp (regexp r) + * - 3: Term of sort String (string s2) + * * Create with: - * mkTerm(Kind kind, Term child1, Term child2, Term child3) - * mkTerm(Kind kind, const std::vector& children) + * - `Solver::mkTerm(Kind kind, const Term& child1, const Term& child2, const Term& child3) const` + * - `Solver::mkTerm(Kind kind, const std::vector& children) const` */ STRING_REPLACE_RE_ALL, /** * String to lower case. - * Parameters: 1 - * -[1]: Term of String sort + * + * Parameters: + * - 1: Term of String sort + * * Create with: - * mkTerm(Kind kind, Term child) + * - `Solver::mkTerm(Kind kind, const Term& child) const` */ STRING_TOLOWER, /** * String to upper case. - * Parameters: 1 - * -[1]: Term of String sort + * + * Parameters: + * - 1: Term of String sort + * * Create with: - * mkTerm(Kind kind, Term child) + * - `Solver::mkTerm(Kind kind, const Term& child) const` */ STRING_TOUPPER, /** * String reverse. - * Parameters: 1 - * -[1]: Term of String sort + * + * Parameters: + * - 1: Term of String sort + * * Create with: - * mkTerm(Kind kind, Term child) + * - `Solver::mkTerm(Kind kind, const Term& child) const` */ STRING_REV, /** * String to code. * Returns the code point of a string if it has length one, or returns -1 * otherwise. - * Parameters: 1 - * -[1]: Term of String sort + * + * Parameters: + * - 1: Term of String sort + * * Create with: - * mkTerm(Kind kind, Term child) + * - `Solver::mkTerm(Kind kind, const Term& child) const` */ STRING_TO_CODE, /** @@ -2324,253 +2771,306 @@ enum CVC4_EXPORT Kind : int32_t * 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. - * Parameters: 1 - * -[1]: Term of Integer sort + * + * Parameters: + * - 1: Term of Integer sort + * * Create with: - * mkTerm(Kind kind, Term child) + * - `Solver::mkTerm(Kind kind, const Term& child) const` */ STRING_FROM_CODE, /** * String less than. * Returns true if string s1 is (strictly) less than s2 based on a * lexiographic ordering over code points. - * Parameters: 2 - * -[1]: Term of sort String (the string s1) - * -[2]: Term of sort String (the string s2) + * + * Parameters: + * - 1: Term of sort String (the string s1) + * - 2: Term of sort String (the string s2) + * * Create with: - * mkTerm(Kind kind, Term child1, Term child2) - * mkTerm(Kind kind, const std::vector& children) + * - `Solver::mkTerm(Kind kind, const Term& child1, const Term& child2) const` + * - `Solver::mkTerm(Kind kind, const std::vector& children) const` */ STRING_LT, /** * String less than or equal. * Returns true if string s1 is less than or equal to s2 based on a * lexiographic ordering over code points. - * Parameters: 2 - * -[1]: Term of sort String (the string s1) - * -[2]: Term of sort String (the string s2) + * + * Parameters: + * - 1: Term of sort String (the string s1) + * - 2: Term of sort String (the string s2) + * * Create with: - * mkTerm(Kind kind, Term child1, Term child2) - * mkTerm(Kind kind, const std::vector& children) + * - `Solver::mkTerm(Kind kind, const Term& child1, const Term& child2) const` + * - `Solver::mkTerm(Kind kind, const std::vector& children) const` */ STRING_LEQ, /** * String prefix-of. * Checks whether a string s1 is a prefix of string s2. If string s1 is * empty, this operator returns true. - * Parameters: 2 - * -[1]: Term of sort String (string s1) - * -[2]: Term of sort String (string s2) + * + * Parameters: + * - 1: Term of sort String (string s1) + * - 2: Term of sort String (string s2) + * * Create with: - * mkTerm(Kind kind, Term child1, Term child2) - * mkTerm(Kind kind, const std::vector& children) + * - `Solver::mkTerm(Kind kind, const Term& child1, const Term& child2) const` + * - `Solver::mkTerm(Kind kind, const std::vector& children) const` */ STRING_PREFIX, /** * String suffix-of. * Checks whether a string s1 is a suffix of string 2. If string s1 is empty, * this operator returns true. - * Parameters: 2 - * -[1]: Term of sort String (string s1) - * -[2]: Term of sort String (string s2) + * + * Parameters: + * - 1: Term of sort String (string s1) + * - 2: Term of sort String (string s2) + * * Create with: - * mkTerm(Kind kind, Term child1, Term child2) - * mkTerm(Kind kind, const std::vector& children) + * - `Solver::mkTerm(Kind kind, const Term& child1, const Term& child2) const` + * - `Solver::mkTerm(Kind kind, const std::vector& children) const` */ STRING_SUFFIX, /** * String is-digit. * Returns true if string s is digit (it is one of "0", ..., "9"). - * Parameters: 1 - * -[1]: Term of sort String + * + * Parameters: + * - 1: Term of sort String + * * Create with: - * mkTerm(Kind kind, Term child1) - * mkTerm(Kind kind, const std::vector& children) + * - `Solver::mkTerm(Kind kind, const Term& child1) const` + * - `Solver::mkTerm(Kind kind, const std::vector& children) const` */ STRING_IS_DIGIT, /** * Integer to string. * If the integer is negative this operator returns the empty string. - * Parameters: 1 - * -[1]: Term of sort Integer + * + * Parameters: + * - 1: Term of sort Integer + * * Create with: - * mkTerm(Kind kind, Term child) + * - `Solver::mkTerm(Kind kind, const Term& child) const` */ STRING_FROM_INT, /** * String to integer (total function). * If the string does not contain an integer or the integer is negative, the * operator returns -1. - * Parameters: 1 - * -[1]: Term of sort String + * + * Parameters: + * - 1: Term of sort String + * * Create with: - * mkTerm(Kind kind, Term child) + * - `Solver::mkTerm(Kind kind, const Term& child) const` */ STRING_TO_INT, /** * Constant string. + * * Parameters: - * See mkString() + * - See @ref cvc5::api::Solver::mkString() "mkString()". + * * Create with: - * mkString(const char* s) - * mkString(const std::string& s) - * mkString(const unsigned char c) - * mkString(const std::vector& s) + * - `Solver::mkString(const std::string& s, bool useEscSequences) const` + * - `Solver::mkString(const unsigned char c) const` + * - `Solver::mkString(const std::vector& s) const` */ CONST_STRING, /** * Conversion from string to regexp. - * Parameters: 1 - * -[1]: Term of sort String + * + * Parameters: + * - 1: Term of sort String + * * Create with: - * mkTerm(Kind kind, Term child) + * - `Solver::mkTerm(Kind kind, const Term& child) const` */ STRING_TO_REGEXP, /** - * Regexp Concatenation . - * Parameters: 2 - * -[1]..[2]: Terms of Regexp sort + * Regexp Concatenation. + * + * Parameters: + * - 1..2: Terms of Regexp sort + * * Create with: - * mkTerm(Kind kind, Term child1, Term child2) - * mkTerm(Kind kind, const std::vector& children) + * - `Solver::mkTerm(Kind kind, const Term& child1, const Term& child2) const` + * - `Solver::mkTerm(Kind kind, const std::vector& children) const` */ REGEXP_CONCAT, /** * Regexp union. - * Parameters: 2 - * -[1]..[2]: Terms of Regexp sort + * + * Parameters: + * - 1..2: Terms of Regexp sort + * * Create with: - * mkTerm(Kind kind, Term child1, Term child2) - * mkTerm(Kind kind, const std::vector& children) + * - `Solver::mkTerm(Kind kind, const Term& child1, const Term& child2) const` + * - `Solver::mkTerm(Kind kind, const std::vector& children) const` */ REGEXP_UNION, /** * Regexp intersection. - * Parameters: 2 - * -[1]..[2]: Terms of Regexp sort + * + * Parameters: + * - 1..2: Terms of Regexp sort + * * Create with: - * mkTerm(Kind kind, Term child1, Term child2) - * mkTerm(Kind kind, const std::vector& children) + * - `Solver::mkTerm(Kind kind, const Term& child1, const Term& child2) const` + * - `Solver::mkTerm(Kind kind, const std::vector& children) const` */ REGEXP_INTER, /** * Regexp difference. - * Parameters: 2 - * -[1]..[2]: Terms of Regexp sort + * + * Parameters: + * - 1..2: Terms of Regexp sort + * * Create with: - * mkTerm(Kind kind, Term child1, Term child2) - * mkTerm(Kind kind, const std::vector& children) + * - `Solver::mkTerm(Kind kind, const Term& child1, const Term& child2) const` + * - `Solver::mkTerm(Kind kind, const std::vector& children) const` */ REGEXP_DIFF, /** * Regexp *. - * Parameters: 1 - * -[1]: Term of sort Regexp + * + * Parameters: + * - 1: Term of sort Regexp + * * Create with: - * mkTerm(Kind kind, Term child) + * - `Solver::mkTerm(Kind kind, const Term& child) const` */ REGEXP_STAR, /** * Regexp +. - * Parameters: 1 - * -[1]: Term of sort Regexp + * + * Parameters: + * - 1: Term of sort Regexp + * * Create with: - * mkTerm(Kind kind, Term child) + * - `Solver::mkTerm(Kind kind, const Term& child) const` */ REGEXP_PLUS, /** * Regexp ?. - * Parameters: 1 - * -[1]: Term of sort Regexp + * + * Parameters: + * - 1: Term of sort Regexp + * * Create with: - * mkTerm(Kind kind, Term child) + * - `Solver::mkTerm(Kind kind, const Term& child) const` */ REGEXP_OPT, /** * Regexp range. - * Parameters: 2 - * -[1]: Lower bound character for the range - * -[2]: Upper bound character for the range + * + * Parameters: + * - 1: Lower bound character for the range + * - 2: Upper bound character for the range + * * Create with: - * mkTerm(Kind kind, Term child1, Term child2) - * mkTerm(Kind kind, const std::vector& children) + * - `Solver::mkTerm(Kind kind, const Term& child1, const Term& child2) const` + * - `Solver::mkTerm(Kind kind, const std::vector& children) const` */ REGEXP_RANGE, /** * Operator for regular expression repeat. - * Parameters: 1 - * -[1]: The number of repetitions + * + * Parameters: + * - 1: The number of repetitions + * * Create with: - * mkOp(Kind kind, uint32_t param) + * - `Solver::mkOp(Kind kind, uint32_t param) const` * * Apply regular expression loop. - * Parameters: 2 - * -[1]: Op of kind REGEXP_REPEAT - * -[2]: Term of regular expression sort + * + * Parameters: + * - 1: Op of kind REGEXP_REPEAT + * - 2: Term of regular expression sort + * * Create with: - * mkTerm(Op op, Term child) - * mkTerm(Op op, const std::vector& children) + * - `Solver::mkTerm(const Op& op, const Term& child) const` + * - `Solver::mkTerm(const Op& op, const std::vector& children) const` */ REGEXP_REPEAT, /** * Operator for regular expression loop, from lower bound to upper bound * number of repetitions. - * Parameters: 2 - * -[1]: The lower bound - * -[2]: The upper bound + * + * Parameters: + * - 1: The lower bound + * - 2: The upper bound + * * Create with: - * mkOp(Kind kind, uint32_t param, uint32_t param) + * - `Solver::mkOp(Kind kind, uint32_t param, uint32_t param) const` * * Apply regular expression loop. - * Parameters: 2 - * -[1]: Op of kind REGEXP_LOOP - * -[2]: Term of regular expression sort + * + * Parameters: + * - 1: Op of kind REGEXP_LOOP + * - 2: Term of regular expression sort + * * Create with: - * mkTerm(Op op, Term child) - * mkTerm(Op op, const std::vector& children) + * - `Solver::mkTerm(const Op& op, const Term& child) const` + * - `Solver::mkTerm(const Op& op, const std::vector& children) const` */ REGEXP_LOOP, /** * Regexp empty. - * Parameters: 0 + * + * Parameters: none + * * Create with: - * mkRegexpEmpty() - * mkTerm(Kind kind) + * - `Solver::mkRegexpEmpty() const` + * - `Solver::mkTerm(Kind kind) const` */ REGEXP_EMPTY, /** * Regexp all characters. - * Parameters: 0 + * + * Parameters: none + * * Create with: - * mkRegexpSigma() - * mkTerm(Kind kind) + * - `Solver::mkRegexpSigma() const` + * - `Solver::mkTerm(Kind kind) const` */ REGEXP_SIGMA, /** * Regexp complement. - * Parameters: 1 - * -[1]: Term of sort RegExp + * + * Parameters: + * - 1: Term of sort RegExp + * * Create with: - * mkTerm(Kind kind, Term child1) + * - `Solver::mkTerm(Kind kind, const Term& child1) const` */ REGEXP_COMPLEMENT, /** * Sequence concat. + * * Parameters: n > 1 - * -[1]..[n]: Terms of Sequence sort + * - 1..n: Terms of Sequence sort + * * Create with: - * mkTerm(Kind kind, Term child1, Term child2) - * mkTerm(Kind kind, Term child1, Term child2, Term child3) - * mkTerm(Kind kind, const std::vector& children) + * - `Solver::mkTerm(Kind kind, const Term& child1, const Term& child2) const` + * - `Solver::mkTerm(Kind kind, const Term& child1, const Term& child2, const Term& child3) const` + * - `Solver::mkTerm(Kind kind, const std::vector& children) const` */ SEQ_CONCAT, /** * Sequence length. - * Parameters: 1 - * -[1]: Term of Sequence sort + * + * Parameters: + * - 1: Term of Sequence sort + * * Create with: - * mkTerm(Kind kind, Term child) + * - `Solver::mkTerm(Kind kind, const Term& child) const` */ SEQ_LENGTH, /** @@ -2578,13 +3078,16 @@ enum CVC4_EXPORT Kind : int32_t * 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. Parameters: 3 - * -[1]: Term of sort Sequence - * -[2]: Term of sort Integer (index i) - * -[3]: Term of sort Integer (length l) + * the empty sequence. + * + * Parameters: + * - 1: Term of sort Sequence + * - 2: Term of sort Integer (index i) + * - 3: Term of sort Integer (length l) + * * Create with: - * mkTerm(Kind kind, Term child1, Term child2, Term child3) - * mkTerm(Kind kind, const std::vector& children) + * - `Solver::mkTerm(Kind kind, const Term& child1, const Term& child2, const Term& child3) const` + * - `Solver::mkTerm(Kind kind, const std::vector& children) const` */ SEQ_EXTRACT, /** @@ -2593,13 +3096,15 @@ enum CVC4_EXPORT Kind : int32_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. - * Parameters: 3 - * -[1]: Term of sort Sequence - * -[2]: Term of sort Integer (index i) - * -[3]: Term of sort Sequence (replacement sequence t) + * + * Parameters: + * - 1: Term of sort Sequence + * - 2: Term of sort Integer (index i) + * - 3: Term of sort Sequence (replacement sequence t) + * * Create with: - * mkTerm(Kind kind, Term child1, Term child2, Term child3) - * mkTerm(Kind kind, const std::vector& children) + * - `Solver::mkTerm(Kind kind, const Term& child1, const Term& child2, const Term& child3) const` + * - `Solver::mkTerm(Kind kind, const std::vector& children) const` */ SEQ_UPDATE, /** @@ -2607,23 +3112,28 @@ enum CVC4_EXPORT Kind : int32_t * 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. - * Parameters: 2 - * -[1]: Term of sequence sort (string s) - * -[2]: Term of sort Integer (index i) + * + * Parameters: + * - 1: Term of sequence sort (string s) + * - 2: Term of sort Integer (index i) + * * Create with: - * mkTerm(Kind kind, Term child1, Term child2) - * mkTerm(Kind kind, const std::vector& children) + * - `Solver::mkTerm(Kind kind, const Term& child1, const Term& child2) const` + * - `Solver::mkTerm(Kind kind, const std::vector& children) const` */ SEQ_AT, /** * Sequence contains. * Checks whether a sequence s1 contains another sequence s2. If s2 is empty, - * the result is always true. Parameters: 2 - * -[1]: Term of sort Sequence (the sequence s1) - * -[2]: Term of sort Sequence (the sequence s2) + * the result is always true. + * + * Parameters: + * - 1: Term of sort Sequence (the sequence s1) + * - 2: Term of sort Sequence (the sequence s2) + * * Create with: - * mkTerm(Kind kind, Term child1, Term child2) - * mkTerm(Kind kind, const std::vector& children) + * - `Solver::mkTerm(Kind kind, const Term& child1, const Term& child2) const` + * - `Solver::mkTerm(Kind kind, const std::vector& children) const` */ SEQ_CONTAINS, /** @@ -2631,99 +3141,123 @@ enum CVC4_EXPORT Kind : int32_t * Returns the index of a subsequence s2 in a sequence s1 starting at index i. * If the index is negative or greater than the length of sequence s1 or the * subsequence s2 does not appear in sequence s1 after index i, the result is - * -1. Parameters: 3 - * -[1]: Term of sort Sequence (subsequence s1) - * -[2]: Term of sort Sequence (subsequence s2) - * -[3]: Term of sort Integer (index i) + * -1. + * + * Parameters: + * - 1: Term of sort Sequence (subsequence s1) + * - 2: Term of sort Sequence (subsequence s2) + * - 3: Term of sort Integer (index i) + * * Create with: - * mkTerm(Kind kind, Term child1, Term child2, Term child3) - * mkTerm(Kind kind, const std::vector& children) + * - `Solver::mkTerm(Kind kind, const Term& child1, const Term& child2, const Term& child3) const` + * - `Solver::mkTerm(Kind kind, const std::vector& children) const` */ SEQ_INDEXOF, /** * Sequence replace. * Replaces the first occurrence of a sequence s2 in a sequence s1 with * sequence s3. If s2 does not appear in s1, s1 is returned unmodified. - * Parameters: 3 - * -[1]: Term of sort Sequence (sequence s1) - * -[2]: Term of sort Sequence (sequence s2) - * -[3]: Term of sort Sequence (sequence s3) + * + * Parameters: + * - 1: Term of sort Sequence (sequence s1) + * - 2: Term of sort Sequence (sequence s2) + * - 3: Term of sort Sequence (sequence s3) + * * Create with: - * mkTerm(Kind kind, Term child1, Term child2, Term child3) - * mkTerm(Kind kind, const std::vector& children) + * - `Solver::mkTerm(Kind kind, const Term& child1, const Term& child2, const Term& child3) const` + * - `Solver::mkTerm(Kind kind, const std::vector& children) const` */ SEQ_REPLACE, /** * Sequence replace all. * Replaces all occurrences of a sequence s2 in a sequence s1 with sequence - * s3. If s2 does not appear in s1, s1 is returned unmodified. Parameters: 3 - * -[1]: Term of sort Sequence (sequence s1) - * -[2]: Term of sort Sequence (sequence s2) - * -[3]: Term of sort Sequence (sequence s3) + * s3. If s2 does not appear in s1, s1 is returned unmodified. + * + * Parameters: + * - 1: Term of sort Sequence (sequence s1) + * - 2: Term of sort Sequence (sequence s2) + * - 3: Term of sort Sequence (sequence s3) + * * Create with: - * mkTerm(Kind kind, Term child1, Term child2, Term child3) - * mkTerm(Kind kind, const std::vector& children) + * - `Solver::mkTerm(Kind kind, const Term& child1, const Term& child2, const Term& child3) const` + * - `Solver::mkTerm(Kind kind, const std::vector& children) const` */ SEQ_REPLACE_ALL, /** * Sequence reverse. - * Parameters: 1 - * -[1]: Term of Sequence sort + * + * Parameters: + * - 1: Term of Sequence sort + * * Create with: - * mkTerm(Kind kind, Term child) + * - `Solver::mkTerm(Kind kind, const Term& child) const` */ SEQ_REV, /** * Sequence prefix-of. * Checks whether a sequence s1 is a prefix of sequence s2. If sequence s1 is * empty, this operator returns true. - * Parameters: 2 - * -[1]: Term of sort Sequence (sequence s1) - * -[2]: Term of sort Sequence (sequence s2) + * + * Parameters: + * - 1: Term of sort Sequence (sequence s1) + * - 2: Term of sort Sequence (sequence s2) + * * Create with: - * mkTerm(Kind kind, Term child1, Term child2) - * mkTerm(Kind kind, const std::vector& children) + * - `Solver::mkTerm(Kind kind, const Term& child1, const Term& child2) const` + * - `Solver::mkTerm(Kind kind, const std::vector& children) const` */ SEQ_PREFIX, /** * Sequence suffix-of. * Checks whether a sequence s1 is a suffix of sequence s2. If sequence s1 is - * empty, this operator returns true. Parameters: 2 - * -[1]: Term of sort Sequence (sequence s1) - * -[2]: Term of sort Sequence (sequence s2) + * empty, this operator returns true. + * + * Parameters: + * - 1: Term of sort Sequence (sequence s1) + * - 2: Term of sort Sequence (sequence s2) + * * Create with: - * mkTerm(Kind kind, Term child1, Term child2) - * mkTerm(Kind kind, const std::vector& children) + * - `Solver::mkTerm(Kind kind, const Term& child1, const Term& child2) const` + * - `Solver::mkTerm(Kind kind, const std::vector& children) const` */ SEQ_SUFFIX, /** * Constant sequence. + * * Parameters: - * See mkEmptySequence() + * - See @ref cvc5::api::Solver::mkEmptySequence() "mkEmptySequence()". + * * Create with: - * mkEmptySequence(Sort sort) + * - `Solver::mkEmptySequence(const Sort& sort) const` + * * Note that a constant sequence is a term that is equivalent to: - * (seq.++ (seq.unit c1) ... (seq.unit cn)) + * + * (seq.++ (seq.unit c1) ... (seq.unit cn)) + * * where n>=0 and c1, ..., cn are constants of some sort. The elements - * can be extracted by Term::getConstSequenceElements(). + * can be extracted by `Term::getConstSequenceElements()`. */ CONST_SEQUENCE, /** * Sequence unit, corresponding to a sequence of length one with the given * term. - * Parameters: 1 - * -[1] Element term. + * + * Parameters: + * - 1: Element term. + * * Create with: - * mkTerm(Kind kind, Term child1) + * - `Solver::mkTerm(Kind kind, const Term& child1) const` */ SEQ_UNIT, /** * Sequence nth, corresponding to the nth element of a sequence. - * Parameters: 2 - * -[1] Sequence term. - * -[2] Integer term. + * + * Parameters: + * - 1: Sequence term. + * - 2: Integer term. + * * Create with: - * mkTerm(Kind kind, Term child1, Term child2) + * - `Solver::mkTerm(Kind kind, const Term& child1, const Term& child2) const` */ SEQ_NTH, @@ -2731,81 +3265,95 @@ enum CVC4_EXPORT Kind : int32_t /** * Universally quantified formula. - * Parameters: 2 (3) - * -[1]: BOUND_VAR_LIST Term - * -[2]: Quantifier body - * -[3]: (optional) INST_PATTERN_LIST Term + * + * Parameters: + * - 1: BOUND_VAR_LIST Term + * - 2: Quantifier body + * - 3: (optional) INST_PATTERN_LIST Term + * * Create with: - * mkTerm(Kind kind, Term child1, Term child2) - * mkTerm(Kind kind, Term child1, Term child2, Term child3) - * mkTerm(Kind kind, const std::vector& children) + * - `Solver::mkTerm(Kind kind, const Term& child1, const Term& child2) const` + * - `Solver::mkTerm(Kind kind, const Term& child1, const Term& child2, const Term& child3) const` + * - `Solver::mkTerm(Kind kind, const std::vector& children) const` */ FORALL, /** * Existentially quantified formula. - * Parameters: 2 (3) - * -[1]: BOUND_VAR_LIST Term - * -[2]: Quantifier body - * -[3]: (optional) INST_PATTERN_LIST Term + * + * Parameters: + * - 1: BOUND_VAR_LIST Term + * - 2: Quantifier body + * - 3: (optional) INST_PATTERN_LIST Term + * * Create with: - * mkTerm(Kind kind, Term child1, Term child2) - * mkTerm(Kind kind, Term child1, Term child2, Term child3) - * mkTerm(Kind kind, const std::vector& children) + * - `Solver::mkTerm(Kind kind, const Term& child1, const Term& child2) const` + * - `Solver::mkTerm(Kind kind, const Term& child1, const Term& child2, const Term& child3) const` + * - `Solver::mkTerm(Kind kind, const std::vector& children) const` */ EXISTS, - /* + /** * A list of bound variables (used to bind variables under a quantifier) + * * Parameters: n > 1 - * -[1]..[n]: Terms with kind BOUND_VARIABLE + * - 1..n: Terms with kind BOUND_VARIABLE + * * Create with: - * mkTerm(Kind kind, Term child1, Term child2) - * mkTerm(Kind kind, Term child1, Term child2, Term child3) - * mkTerm(Kind kind, const std::vector& children) + * - `Solver::mkTerm(Kind kind, const Term& child1, const Term& child2) const` + * - `Solver::mkTerm(Kind kind, const Term& child1, const Term& child2, const Term& child3) const` + * - `Solver::mkTerm(Kind kind, const std::vector& children) const` */ BOUND_VAR_LIST, - /* + /** * An instantiation pattern. * Specifies a (list of) terms to be used as a pattern for quantifier * instantiation. + * * Parameters: n > 1 - * -[1]..[n]: Terms with kind BOUND_VARIABLE + * - 1..n: Terms with kind BOUND_VARIABLE + * * Create with: - * mkTerm(Kind kind, Term child1, Term child2) - * mkTerm(Kind kind, Term child1, Term child2, Term child3) - * mkTerm(Kind kind, const std::vector& children) + * - `Solver::mkTerm(Kind kind, const Term& child1, const Term& child2) const` + * - `Solver::mkTerm(Kind kind, const Term& child1, const Term& child2, const Term& child3) const` + * - `Solver::mkTerm(Kind kind, const std::vector& children) const` */ INST_PATTERN, - /* + /** * An instantiation no-pattern. * Specifies a (list of) terms that should not be used as a pattern for * quantifier instantiation. + * * Parameters: n > 1 - * -[1]..[n]: Terms with kind BOUND_VARIABLE + * - 1..n: Terms with kind BOUND_VARIABLE + * * Create with: - * mkTerm(Kind kind, Term child1, Term child2) - * mkTerm(Kind kind, Term child1, Term child2, Term child3) - * mkTerm(Kind kind, const std::vector& children) + * - `Solver::mkTerm(Kind kind, const Term& child1, const Term& child2) const` + * - `Solver::mkTerm(Kind kind, const Term& child1, const Term& child2, const Term& child3) const` + * - `Solver::mkTerm(Kind kind, const std::vector& children) const` */ INST_NO_PATTERN, - /* + /** * An instantiation attribute * Specifies a custom property for a quantified formula given by a * term that is ascribed a user attribute. - * Parameters: 1 - * -[1]: Term with a user attribute. + * + * Parameters: + * - 1: Term with a user attribute. + * * Create with: - * mkTerm(Kind kind, Term child) + * - `Solver::mkTerm(Kind kind, const Term& child) const` */ INST_ATTRIBUTE, - /* + /** * A list of instantiation patterns and/or attributes. + * * Parameters: n > 1 - * -[1]..[n]: Terms with kind INST_PATTERN, INST_NO_PATTERN, or + * - 1..n: Terms with kind INST_PATTERN, INST_NO_PATTERN, or * INST_ATTRIBUTE. + * * Create with: - * mkTerm(Kind kind, Term child1, Term child2) - * mkTerm(Kind kind, Term child1, Term child2, Term child3) - * mkTerm(Kind kind, const std::vector& children) + * - `Solver::mkTerm(Kind kind, const Term& child1, const Term& child2) const` + * - `Solver::mkTerm(Kind kind, const Term& child1, const Term& child2, const Term& child3) const` + * - `Solver::mkTerm(Kind kind, const std::vector& children) const` */ INST_PATTERN_LIST, #if 0 @@ -2845,7 +3393,7 @@ enum CVC4_EXPORT Kind : int32_t #endif /* ----------------------------------------------------------------------- */ - /* marks the upper-bound of this enumeration */ + /** Marks the upper-bound of this enumeration. */ LAST_KIND }; @@ -2869,6 +3417,9 @@ std::ostream& operator<<(std::ostream& out, Kind k) CVC4_EXPORT; */ struct CVC4_EXPORT KindHashFunction { + /** + * Hashes a Kind to a size_t. + */ size_t operator()(Kind k) const; }; -- 2.30.2