3
0
Fork 0
mirror of https://github.com/Z3Prover/z3 synced 2025-06-06 06:03:23 +00:00

ML API doc fixes

Signed-off-by: Christoph M. Wintersteiger <cwinter@microsoft.com>
This commit is contained in:
Christoph M. Wintersteiger 2014-04-16 16:16:40 +01:00
parent cc40105919
commit 83690a8fe3

View file

@ -241,7 +241,7 @@ sig
AST objects are reference counted and unwrapping an AST disables automatic AST objects are reference counted and unwrapping an AST disables automatic
reference counting, i.e., all references to the IntPtr that is returned reference counting, i.e., all references to the IntPtr that is returned
must be handled externally and through native calls (see e.g., must be handled externally and through native calls (see e.g.,
<c>Z3native.inc_ref</c>). [Z3native.inc_ref]).
{!wrap_ast} *) {!wrap_ast} *)
val unwrap_ast : ast -> Z3native.ptr val unwrap_ast : ast -> Z3native.ptr
@ -251,7 +251,7 @@ sig
managed objects. Note that the native ast that is passed must be a managed objects. Note that the native ast that is passed must be a
native object obtained from Z3 (e.g., through {!unwrap_ast}) native object obtained from Z3 (e.g., through {!unwrap_ast})
and that it must have a correct reference count (see e.g., and that it must have a correct reference count (see e.g.,
<c>Z3native.inc_ref</c>). *) [Z3native.inc_ref]). *)
val wrap_ast : context -> Z3native.z3_ast -> ast val wrap_ast : context -> Z3native.z3_ast -> ast
end end
@ -439,7 +439,7 @@ sig
(** Update a mutable configuration parameter. (** Update a mutable configuration parameter.
The list of all configuration parameters can be obtained using the Z3 executable: The list of all configuration parameters can be obtained using the Z3 executable:
<c>z3.exe -p</c> [z3.exe -p]
Only a few configuration parameters are mutable once the context is created. Only a few configuration parameters are mutable once the context is created.
An exception is thrown when trying to modify an immutable parameter. An exception is thrown when trying to modify an immutable parameter.
{!get_param_value} *) {!get_param_value} *)
@ -479,7 +479,7 @@ sig
{!get_simplify_help} *) {!get_simplify_help} *)
val simplify : Expr.expr -> Params.params option -> expr val simplify : Expr.expr -> Params.params option -> expr
(** A string describing all available parameters to <c>Expr.Simplify</c>. *) (** A string describing all available parameters to [Expr.Simplify]. *)
val get_simplify_help : context -> string val get_simplify_help : context -> string
(** Retrieves parameter descriptions for simplifier. *) (** Retrieves parameter descriptions for simplifier. *)
@ -498,20 +498,20 @@ sig
The number of new arguments should coincide with the current number of arguments. *) The number of new arguments should coincide with the current number of arguments. *)
val update : Expr.expr -> Expr.expr list -> expr val update : Expr.expr -> Expr.expr list -> expr
(** Substitute every occurrence of <c>from[i]</c> in the expression with <c>to[i]</c>, for <c>i</c> smaller than <c>num_exprs</c>. (** Substitute every occurrence of [from[i]] in the expression with [to[i]], for [i] smaller than [num_exprs].
The result is the new expression. The arrays <c>from</c> and <c>to</c> must have size <c>num_exprs</c>. The result is the new expression. The arrays [from] and [to] must have size [num_exprs].
For every <c>i</c> smaller than <c>num_exprs</c>, we must have that For every [i] smaller than [num_exprs], we must have that
sort of <c>from[i]</c> must be equal to sort of <c>to[i]</c>. *) sort of [from[i]] must be equal to sort of [to[i]]. *)
val substitute : Expr.expr -> Expr.expr list -> Expr.expr list -> expr val substitute : Expr.expr -> Expr.expr list -> Expr.expr list -> expr
(** Substitute every occurrence of <c>from</c> in the expression with <c>to</c>. (** Substitute every occurrence of [from] in the expression with [to].
{!substitute} *) {!substitute} *)
val substitute_one : Expr.expr -> Expr.expr -> Expr.expr -> expr val substitute_one : Expr.expr -> Expr.expr -> Expr.expr -> expr
(** Substitute the free variables in the expression with the expressions in the expr array (** Substitute the free variables in the expression with the expressions in the expr array
For every <c>i</c> smaller than <c>num_exprs</c>, the variable with de-Bruijn index <c>i</c> is replaced with term <c>to[i]</c>. *) For every [i] smaller than [num_exprs], the variable with de-Bruijn index [i] is replaced with term [to[i]]. *)
val substitute_vars : Expr.expr -> Expr.expr list -> expr val substitute_vars : Expr.expr -> Expr.expr list -> expr
(** Translates (copies) the term to another context. (** Translates (copies) the term to another context.
@ -554,7 +554,7 @@ sig
val mk_numeral_string : context -> string -> Sort.sort -> expr val mk_numeral_string : context -> string -> Sort.sort -> expr
(** Create a numeral of a given sort. This function can be use to create numerals that fit in a machine integer. (** Create a numeral of a given sort. This function can be use to create numerals that fit in a machine integer.
It is slightly faster than <c>MakeNumeral</c> since it is not necessary to parse a string. It is slightly faster than [MakeNumeral] since it is not necessary to parse a string.
@return A Term with the given value and sort *) @return A Term with the given value and sort *)
val mk_numeral_int : context -> int -> Sort.sort -> expr val mk_numeral_int : context -> int -> Sort.sort -> expr
end end
@ -580,19 +580,19 @@ sig
(** Creates a Boolean value. *) (** Creates a Boolean value. *)
val mk_val : context -> bool -> Expr.expr val mk_val : context -> bool -> Expr.expr
(** Mk an expression representing <c>not(a)</c>. *) (** Mk an expression representing [not(a)]. *)
val mk_not : context -> Expr.expr -> Expr.expr val mk_not : context -> Expr.expr -> Expr.expr
(** Create an expression representing an if-then-else: <c>ite(t1, t2, t3)</c>. *) (** Create an expression representing an if-then-else: [ite(t1, t2, t3)]. *)
val mk_ite : context -> Expr.expr -> Expr.expr -> Expr.expr -> Expr.expr val mk_ite : context -> Expr.expr -> Expr.expr -> Expr.expr -> Expr.expr
(** Create an expression representing <c>t1 iff t2</c>. *) (** Create an expression representing [t1 iff t2]. *)
val mk_iff : context -> Expr.expr -> Expr.expr -> Expr.expr val mk_iff : context -> Expr.expr -> Expr.expr -> Expr.expr
(** Create an expression representing <c>t1 -> t2</c>. *) (** Create an expression representing [t1 -> t2]. *)
val mk_implies : context -> Expr.expr -> Expr.expr -> Expr.expr val mk_implies : context -> Expr.expr -> Expr.expr -> Expr.expr
(** Create an expression representing <c>t1 xor t2</c>. *) (** Create an expression representing [t1 xor t2]. *)
val mk_xor : context -> Expr.expr -> Expr.expr -> Expr.expr val mk_xor : context -> Expr.expr -> Expr.expr -> Expr.expr
(** Create an expression representing the AND of args *) (** Create an expression representing the AND of args *)
@ -604,7 +604,7 @@ sig
(** Creates the equality between two expr's. *) (** Creates the equality between two expr's. *)
val mk_eq : context -> Expr.expr -> Expr.expr -> Expr.expr val mk_eq : context -> Expr.expr -> Expr.expr -> Expr.expr
(** Creates a <c>distinct</c> term. *) (** Creates a [distinct] term. *)
val mk_distinct : context -> Expr.expr list -> Expr.expr val mk_distinct : context -> Expr.expr list -> Expr.expr
(** Indicates whether the expression is the true or false expression (** Indicates whether the expression is the true or false expression
@ -806,45 +806,45 @@ sig
(** Array read. (** Array read.
The argument <c>a</c> is the array and <c>i</c> is the index The argument [a] is the array and [i] is the index
of the array that gets read. of the array that gets read.
The node <c>a</c> must have an array sort <c>[domain -> range]</c>, The node [a] must have an array sort [[domain -> range]],
and <c>i</c> must have the sort <c>domain</c>. and [i] must have the sort [domain].
The sort of the result is <c>range</c>. The sort of the result is [range].
{!Z3Array.mk_sort} {!Z3Array.mk_sort}
{!mk_store} *) {!mk_store} *)
val mk_select : context -> Expr.expr -> Expr.expr -> Expr.expr val mk_select : context -> Expr.expr -> Expr.expr -> Expr.expr
(** Array update. (** Array update.
The node <c>a</c> must have an array sort <c>[domain -> range]</c>, The node [a] must have an array sort [[domain -> range]],
<c>i</c> must have sort <c>domain</c>, [i] must have sort [domain],
<c>v</c> must have sort range. The sort of the result is <c>[domain -> range]</c>. [v] must have sort range. The sort of the result is [[domain -> range]].
The semantics of this function is given by the theory of arrays described in the SMT-LIB The semantics of this function is given by the theory of arrays described in the SMT-LIB
standard. See http://smtlib.org for more details. standard. See http://smtlib.org for more details.
The result of this function is an array that is equal to <c>a</c> The result of this function is an array that is equal to [a]
(with respect to <c>select</c>) (with respect to [select])
on all indices except for <c>i</c>, where it maps to <c>v</c> on all indices except for [i], where it maps to [v]
(and the <c>select</c> of <c>a</c> with (and the [select] of [a] with
respect to <c>i</c> may be a different value). respect to [i] may be a different value).
{!Z3Array.mk_sort} {!Z3Array.mk_sort}
{!mk_select} *) {!mk_select} *)
val mk_store : context -> Expr.expr -> Expr.expr -> Expr.expr -> Expr.expr val mk_store : context -> Expr.expr -> Expr.expr -> Expr.expr -> Expr.expr
(** Create a constant array. (** Create a constant array.
The resulting term is an array, such that a <c>select</c>on an arbitrary index The resulting term is an array, such that a [select]on an arbitrary index
produces the value <c>v</c>. produces the value [v].
{!Z3Array.mk_sort} {!Z3Array.mk_sort}
{!mk_select} *) {!mk_select} *)
val mk_const_array : context -> Sort.sort -> Expr.expr -> Expr.expr val mk_const_array : context -> Sort.sort -> Expr.expr -> Expr.expr
(** Maps f on the argument arrays. (** Maps f on the argument arrays.
Eeach element of <c>args</c> must be of an array sort <c>[domain_i -> range_i]</c>. Eeach element of [args] must be of an array sort [[domain_i -> range_i]].
The function declaration <c>f</c> must have type <c> range_1 .. range_n -> range</c>. The function declaration [f] must have type [ range_1 .. range_n -> range].
<c>v</c> must have sort range. The sort of the result is <c>[domain_i -> range]</c>. [v] must have sort range. The sort of the result is [[domain_i -> range]].
{!Z3Array.mk_sort} {!Z3Array.mk_sort}
{!mk_select} {!mk_select}
{!mk_store} *) {!mk_store} *)
@ -938,8 +938,8 @@ sig
(** Indicates whether the term is an relation store (** Indicates whether the term is an relation store
Insert a record into a relation. Insert a record into a relation.
The function takes <c>n+1</c> arguments, where the first argument is the relation and the remaining <c>n</c> elements The function takes [n+1] arguments, where the first argument is the relation and the remaining [n] elements
correspond to the <c>n</c> columns of the relation. *) correspond to the [n] columns of the relation. *)
val is_store : Expr.expr -> bool val is_store : Expr.expr -> bool
(** Indicates whether the term is an empty relation *) (** Indicates whether the term is an empty relation *)
@ -997,8 +997,8 @@ sig
(** Indicates whether the term is a relational select (** Indicates whether the term is a relational select
Check if a record is an element of the relation. Check if a record is an element of the relation.
The function takes <c>n+1</c> arguments, where the first argument is a relation, The function takes [n+1] arguments, where the first argument is a relation,
and the remaining <c>n</c> arguments correspond to a record. *) and the remaining [n] arguments correspond to a record. *)
val is_select : Expr.expr -> bool val is_select : Expr.expr -> bool
(** Indicates whether the term is a relational clone (copy) (** Indicates whether the term is a relational clone (copy)
@ -1161,11 +1161,11 @@ sig
(** Creates an integer constant. *) (** Creates an integer constant. *)
val mk_const_s : context -> string -> Expr.expr val mk_const_s : context -> string -> Expr.expr
(** Create an expression representing <c>t1 mod t2</c>. (** Create an expression representing [t1 mod t2].
The arguments must have int type. *) The arguments must have int type. *)
val mk_mod : context -> Expr.expr -> Expr.expr -> Expr.expr val mk_mod : context -> Expr.expr -> Expr.expr -> Expr.expr
(** Create an expression representing <c>t1 rem t2</c>. (** Create an expression representing [t1 rem t2].
The arguments must have int type. *) The arguments must have int type. *)
val mk_rem : context -> Expr.expr -> Expr.expr -> Expr.expr val mk_rem : context -> Expr.expr -> Expr.expr -> Expr.expr
@ -1181,8 +1181,8 @@ sig
There is also a converse operation exposed. It follows the semantics prescribed by the SMT-LIB standard. There is also a converse operation exposed. It follows the semantics prescribed by the SMT-LIB standard.
You can take the floor of a real by creating an auxiliary integer Term <c>k</c> and You can take the floor of a real by creating an auxiliary integer Term [k] and
and asserting <c>MakeInt2Real(k) <= t1 < MkInt2Real(k)+1</c>. and asserting [MakeInt2Real(k) <= t1 < MkInt2Real(k)+1].
The argument must be of integer sort. *) The argument must be of integer sort. *)
val mk_int2real : context -> Expr.expr -> Expr.expr val mk_int2real : context -> Expr.expr -> Expr.expr
@ -1334,34 +1334,34 @@ sig
(** Indicates whether the term is an algebraic number *) (** Indicates whether the term is an algebraic number *)
val is_algebraic_number : Expr.expr -> bool val is_algebraic_number : Expr.expr -> bool
(** Create an expression representing <c>t[0] + t[1] + ...</c>. *) (** Create an expression representing [t[0] + t[1] + ...]. *)
val mk_add : context -> Expr.expr list -> Expr.expr val mk_add : context -> Expr.expr list -> Expr.expr
(** Create an expression representing <c>t[0] * t[1] * ...</c>. *) (** Create an expression representing [t[0] * t[1] * ...]. *)
val mk_mul : context -> Expr.expr list -> Expr.expr val mk_mul : context -> Expr.expr list -> Expr.expr
(** Create an expression representing <c>t[0] - t[1] - ...</c>. *) (** Create an expression representing [t[0] - t[1] - ...]. *)
val mk_sub : context -> Expr.expr list -> Expr.expr val mk_sub : context -> Expr.expr list -> Expr.expr
(** Create an expression representing <c>-t</c>. *) (** Create an expression representing [-t]. *)
val mk_unary_minus : context -> Expr.expr -> Expr.expr val mk_unary_minus : context -> Expr.expr -> Expr.expr
(** Create an expression representing <c>t1 / t2</c>. *) (** Create an expression representing [t1 / t2]. *)
val mk_div : context -> Expr.expr -> Expr.expr -> Expr.expr val mk_div : context -> Expr.expr -> Expr.expr -> Expr.expr
(** Create an expression representing <c>t1 ^ t2</c>. *) (** Create an expression representing [t1 ^ t2]. *)
val mk_power : context -> Expr.expr -> Expr.expr -> Expr.expr val mk_power : context -> Expr.expr -> Expr.expr -> Expr.expr
(** Create an expression representing <c>t1 < t2</c> *) (** Create an expression representing [t1 < t2] *)
val mk_lt : context -> Expr.expr -> Expr.expr -> Expr.expr val mk_lt : context -> Expr.expr -> Expr.expr -> Expr.expr
(** Create an expression representing <c>t1 <= t2</c> *) (** Create an expression representing [t1 <= t2] *)
val mk_le : context -> Expr.expr -> Expr.expr -> Expr.expr val mk_le : context -> Expr.expr -> Expr.expr -> Expr.expr
(** Create an expression representing <c>t1 > t2</c> *) (** Create an expression representing [t1 > t2] *)
val mk_gt : context -> Expr.expr -> Expr.expr -> Expr.expr val mk_gt : context -> Expr.expr -> Expr.expr -> Expr.expr
(** Create an expression representing <c>t1 >= t2</c> *) (** Create an expression representing [t1 >= t2] *)
val mk_ge : context -> Expr.expr -> Expr.expr -> Expr.expr val mk_ge : context -> Expr.expr -> Expr.expr -> Expr.expr
end end
@ -1610,8 +1610,8 @@ sig
(** Unsigned division. (** Unsigned division.
It is defined as the floor of <c>t1/t2</c> if \c t2 is It is defined as the floor of [t1/t2] if \c t2 is
different from zero. If <c>t2</c> is zero, then the result different from zero. If [t2] is zero, then the result
is undefined. is undefined.
The arguments must have the same bit-vector sort. *) The arguments must have the same bit-vector sort. *)
val mk_udiv : context -> Expr.expr -> Expr.expr -> Expr.expr val mk_udiv : context -> Expr.expr -> Expr.expr -> Expr.expr
@ -1620,33 +1620,33 @@ sig
It is defined in the following way: It is defined in the following way:
- The \c floor of <c>t1/t2</c> if \c t2 is different from zero, and <c>t1*t2 >= 0</c>. - The \c floor of [t1/t2] if \c t2 is different from zero, and [t1*t2 >= 0].
- The \c ceiling of <c>t1/t2</c> if \c t2 is different from zero, and <c>t1*t2 < 0</c>. - The \c ceiling of [t1/t2] if \c t2 is different from zero, and [t1*t2 < 0].
If <c>t2</c> is zero, then the result is undefined. If [t2] is zero, then the result is undefined.
The arguments must have the same bit-vector sort. *) The arguments must have the same bit-vector sort. *)
val mk_sdiv : context -> Expr.expr -> Expr.expr -> Expr.expr val mk_sdiv : context -> Expr.expr -> Expr.expr -> Expr.expr
(** Unsigned remainder. (** Unsigned remainder.
It is defined as <c>t1 - (t1 /u t2) * t2</c>, where <c>/u</c> represents unsigned division. It is defined as [t1 - (t1 /u t2) * t2], where [/u] represents unsigned division.
If <c>t2</c> is zero, then the result is undefined. If [t2] is zero, then the result is undefined.
The arguments must have the same bit-vector sort. *) The arguments must have the same bit-vector sort. *)
val mk_urem : context -> Expr.expr -> Expr.expr -> Expr.expr val mk_urem : context -> Expr.expr -> Expr.expr -> Expr.expr
(** Signed remainder. (** Signed remainder.
It is defined as <c>t1 - (t1 /s t2) * t2</c>, where <c>/s</c> represents signed division. It is defined as [t1 - (t1 /s t2) * t2], where [/s] represents signed division.
The most significant bit (sign) of the result is equal to the most significant bit of \c t1. The most significant bit (sign) of the result is equal to the most significant bit of \c t1.
If <c>t2</c> is zero, then the result is undefined. If [t2] is zero, then the result is undefined.
The arguments must have the same bit-vector sort. *) The arguments must have the same bit-vector sort. *)
val mk_srem : context -> Expr.expr -> Expr.expr -> Expr.expr val mk_srem : context -> Expr.expr -> Expr.expr -> Expr.expr
(** Two's complement signed remainder (sign follows divisor). (** Two's complement signed remainder (sign follows divisor).
If <c>t2</c> is zero, then the result is undefined. If [t2] is zero, then the result is undefined.
The arguments must have the same bit-vector sort. *) The arguments must have the same bit-vector sort. *)
val mk_smod : context -> Expr.expr -> Expr.expr -> Expr.expr val mk_smod : context -> Expr.expr -> Expr.expr -> Expr.expr
@ -1694,27 +1694,27 @@ sig
The arguments must have a bit-vector sort. The arguments must have a bit-vector sort.
@return @return
The result is a bit-vector of size <c>n1+n2</c>, where <c>n1</c> (<c>n2</c>) The result is a bit-vector of size [n1+n2], where [n1] ([n2])
is the size of <c>t1</c> (<c>t2</c>). *) is the size of [t1] ([t2]). *)
val mk_concat : context -> Expr.expr -> Expr.expr -> Expr.expr val mk_concat : context -> Expr.expr -> Expr.expr -> Expr.expr
(** Bit-vector extraction. (** Bit-vector extraction.
Extract the bits between two limits from a bitvector of Extract the bits between two limits from a bitvector of
size <c>m</c> to yield a new bitvector of size <c>n</c>, where size [m] to yield a new bitvector of size [n], where
<c>n = high - low + 1</c>. *) [n = high - low + 1]. *)
val mk_extract : context -> int -> int -> Expr.expr -> Expr.expr val mk_extract : context -> int -> int -> Expr.expr -> Expr.expr
(** Bit-vector sign extension. (** Bit-vector sign extension.
Sign-extends the given bit-vector to the (signed) equivalent bitvector of Sign-extends the given bit-vector to the (signed) equivalent bitvector of
size <c>m+i</c>, where \c m is the size of the given bit-vector. *) size [m+i], where \c m is the size of the given bit-vector. *)
val mk_sign_ext : context -> int -> Expr.expr -> Expr.expr val mk_sign_ext : context -> int -> Expr.expr -> Expr.expr
(** Bit-vector zero extension. (** Bit-vector zero extension.
Extend the given bit-vector with zeros to the (unsigned) equivalent Extend the given bit-vector with zeros to the (unsigned) equivalent
bitvector of size <c>m+i</c>, where \c m is the size of the bitvector of size [m+i], where \c m is the size of the
given bit-vector. *) given bit-vector. *)
val mk_zero_ext : context -> int -> Expr.expr -> Expr.expr val mk_zero_ext : context -> int -> Expr.expr -> Expr.expr
@ -1723,7 +1723,7 @@ sig
(** Shift left. (** Shift left.
It is equivalent to multiplication by <c>2^x</c> where \c x is the value of third argument. It is equivalent to multiplication by [2^x] where \c x is the value of third argument.
NB. The semantics of shift operations varies between environments. This NB. The semantics of shift operations varies between environments. This
definition does not necessarily capture directly the semantics of the definition does not necessarily capture directly the semantics of the
@ -1732,7 +1732,7 @@ sig
(** Logical shift right (** Logical shift right
It is equivalent to unsigned division by <c>2^x</c> where \c x is the value of the third argument. It is equivalent to unsigned division by [2^x] where \c x is the value of the third argument.
NB. The semantics of shift operations varies between environments. This NB. The semantics of shift operations varies between environments. This
definition does not necessarily capture directly the semantics of the definition does not necessarily capture directly the semantics of the
@ -1773,7 +1773,7 @@ sig
(** Create an integer from the bit-vector argument (** Create an integer from the bit-vector argument
If \c is_signed is false, then the bit-vector \c t1 is treated as unsigned. If \c is_signed is false, then the bit-vector \c t1 is treated as unsigned.
So the result is non-negative and in the range <c>[0..2^N-1]</c>, where So the result is non-negative and in the range [[0..2^N-1]], where
N are the number of bits in the argument. N are the number of bits in the argument.
If \c is_signed is true, \c t1 is treated as a signed bit-vector. If \c is_signed is true, \c t1 is treated as a signed bit-vector.
@ -2353,15 +2353,15 @@ sig
end end
(** Retrieves the interpretation (the assignment) of a func_decl in the model. (** Retrieves the interpretation (the assignment) of a func_decl in the model.
<returns>An expression if the function has an interpretation in the model, null otherwise.</returns> *) @return An expression if the function has an interpretation in the model, null otherwise. *)
val get_const_interp : model -> FuncDecl.func_decl -> Expr.expr option val get_const_interp : model -> FuncDecl.func_decl -> Expr.expr option
(** Retrieves the interpretation (the assignment) of an expression in the model. (** Retrieves the interpretation (the assignment) of an expression in the model.
<returns>An expression if the constant has an interpretation in the model, null otherwise.</returns> *) @return An expression if the constant has an interpretation in the model, null otherwise. *)
val get_const_interp_e : model -> Expr.expr -> Expr.expr option val get_const_interp_e : model -> Expr.expr -> Expr.expr option
(** Retrieves the interpretation (the assignment) of a non-constant func_decl in the model. (** Retrieves the interpretation (the assignment) of a non-constant func_decl in the model.
<returns>A FunctionInterpretation if the function has an interpretation in the model, null otherwise.</returns> *) @return A FunctionInterpretation if the function has an interpretation in the model, null otherwise. *)
val get_func_interp : model -> FuncDecl.func_decl -> FuncInterp.func_interp option val get_func_interp : model -> FuncDecl.func_decl -> FuncInterp.func_interp option
(** The number of constant interpretations in the model. *) (** The number of constant interpretations in the model. *)
@ -2383,11 +2383,11 @@ sig
This function may fail if the argument contains quantifiers, This function may fail if the argument contains quantifiers,
is partial (MODEL_PARTIAL enabled), or if it is not well-sorted. is partial (MODEL_PARTIAL enabled), or if it is not well-sorted.
In this case a <c>ModelEvaluationFailedException</c> is thrown. In this case a [ModelEvaluationFailedException] is thrown.
*) *)
val eval : model -> Expr.expr -> bool -> Expr.expr option val eval : model -> Expr.expr -> bool -> Expr.expr option
(** Alias for <c>eval</c>. *) (** Alias for [eval]. *)
val evaluate : model -> Expr.expr -> bool -> Expr.expr option val evaluate : model -> Expr.expr -> bool -> Expr.expr option
(** The number of uninterpreted sorts that the model has an interpretation for. *) (** The number of uninterpreted sorts that the model has an interpretation for. *)
@ -2408,7 +2408,7 @@ sig
val sort_universe : model -> Sort.sort -> AST.ast list val sort_universe : model -> Sort.sort -> AST.ast list
(** Conversion of models to strings. (** Conversion of models to strings.
<returns>A string representation of the model.</returns> *) @return A string representation of the model. *)
val to_string : model -> string val to_string : model -> string
end end
@ -2416,17 +2416,17 @@ end
Probes are used to inspect a goal (aka problem) and collect information that may be used to decide Probes are used to inspect a goal (aka problem) and collect information that may be used to decide
which solver and/or preprocessing step will be used. which solver and/or preprocessing step will be used.
The complete list of probes may be obtained using the procedures <c>Context.NumProbes</c> The complete list of probes may be obtained using the procedures [Context.NumProbes]
and <c>Context.ProbeNames</c>. and [Context.ProbeNames].
It may also be obtained using the command <c>(help-tactics)</c> in the SMT 2.0 front-end. It may also be obtained using the command [(help-tactics)] in the SMT 2.0 front-end.
*) *)
module Probe : module Probe :
sig sig
type probe type probe
(** Execute the probe over the goal. (** Execute the probe over the goal.
<returns>A probe always produce a float value. @return A probe always produce a float value.
"Boolean" probes return 0.0 for false, and a value different from 0.0 for true.</returns> *) "Boolean" probes return 0.0 for false, and a value different from 0.0 for true. *)
val apply : probe -> Goal.goal -> float val apply : probe -> Goal.goal -> float
(** The number of supported Probes. *) (** The number of supported Probes. *)
@ -2478,9 +2478,9 @@ end
(** Tactics (** Tactics
Tactics are the basic building block for creating custom solvers for specific problem domains. Tactics are the basic building block for creating custom solvers for specific problem domains.
The complete list of tactics may be obtained using <c>Context.get_num_tactics</c> The complete list of tactics may be obtained using [Context.get_num_tactics]
and <c>Context.get_tactic_names</c>. and [Context.get_tactic_names].
It may also be obtained using the command <c>(help-tactics)</c> in the SMT 2.0 front-end. It may also be obtained using the command [(help-tactics)] in the SMT 2.0 front-end.
*) *)
module Tactic : module Tactic :
sig sig
@ -2504,8 +2504,8 @@ sig
val get_subgoal : apply_result -> int -> Goal.goal val get_subgoal : apply_result -> int -> Goal.goal
(** Convert a model for a subgoal into a model for the original (** Convert a model for a subgoal into a model for the original
goal <c>g</c>, that the ApplyResult was obtained from. goal [g], that the ApplyResult was obtained from.
#return A model for <c>g</c> *) #return A model for [g] *)
val convert_model : apply_result -> int -> Model.model -> Model.model val convert_model : apply_result -> int -> Model.model -> Model.model
(** A string representation of the ApplyResult. *) (** A string representation of the ApplyResult. *)
@ -2549,7 +2549,7 @@ sig
(** Create a tactic that applies one tactic to a given goal if the probe (** Create a tactic that applies one tactic to a given goal if the probe
evaluates to true. evaluates to true.
If the probe evaluates to false, then the new tactic behaves like the <c>skip</c> tactic. *) If the probe evaluates to false, then the new tactic behaves like the [skip] tactic. *)
val when_ : context -> Probe.probe -> tactic -> tactic val when_ : context -> Probe.probe -> tactic -> tactic
(** Create a tactic that applies a tactic to a given goal if the probe (** Create a tactic that applies a tactic to a given goal if the probe
@ -2577,7 +2577,7 @@ sig
val using_params : context -> tactic -> Params.params -> tactic val using_params : context -> tactic -> Params.params -> tactic
(** Create a tactic that applies a tactic using the given set of parameters. (** Create a tactic that applies a tactic using the given set of parameters.
Alias for <c>UsingParams</c>*) Alias for [UsingParams]*)
val with_ : context -> tactic -> Params.params -> tactic val with_ : context -> tactic -> Params.params -> tactic
(** Create a tactic that applies the given tactics in parallel. *) (** Create a tactic that applies the given tactics in parallel. *)
@ -2718,26 +2718,26 @@ sig
{!Proof} *) {!Proof} *)
val check : solver -> Expr.expr list -> status val check : solver -> Expr.expr list -> status
(** The model of the last <c>Check</c>. (** The model of the last [Check].
The result is <c>None</c> if <c>Check</c> was not invoked before, The result is [None] if [Check] was not invoked before,
if its results was not <c>SATISFIABLE</c>, or if model production is not enabled. *) if its results was not [SATISFIABLE], or if model production is not enabled. *)
val get_model : solver -> Model.model option val get_model : solver -> Model.model option
(** The proof of the last <c>Check</c>. (** The proof of the last [Check].
The result is <c>null</c> if <c>Check</c> was not invoked before, The result is [null] if [Check] was not invoked before,
if its results was not <c>UNSATISFIABLE</c>, or if proof production is disabled. *) if its results was not [UNSATISFIABLE], or if proof production is disabled. *)
val get_proof : solver -> Expr.expr option val get_proof : solver -> Expr.expr option
(** The unsat core of the last <c>Check</c>. (** The unsat core of the last [Check].
The unsat core is a subset of <c>Assertions</c> The unsat core is a subset of [Assertions]
The result is empty if <c>Check</c> was not invoked before, The result is empty if [Check] was not invoked before,
if its results was not <c>UNSATISFIABLE</c>, or if core production is disabled. *) if its results was not [UNSATISFIABLE], or if core production is disabled. *)
val get_unsat_core : solver -> AST.ast list val get_unsat_core : solver -> AST.ast list
(** A brief justification of why the last call to <c>Check</c> returned <c>UNKNOWN</c>. *) (** A brief justification of why the last call to [Check] returned [UNKNOWN]. *)
val get_reason_unknown : solver -> string val get_reason_unknown : solver -> string
(** Solver statistics. *) (** Solver statistics. *)
@ -2759,7 +2759,7 @@ sig
(** Creates a solver that is implemented using the given tactic. (** Creates a solver that is implemented using the given tactic.
The solver supports the commands <c>Push</c> and <c>Pop</c>, but it The solver supports the commands [Push] and [Pop], but it
will always solve each check from scratch. *) will always solve each check from scratch. *)
val mk_solver_t : context -> Tactic.tactic -> solver val mk_solver_t : context -> Tactic.tactic -> solver
@ -2811,7 +2811,7 @@ sig
(** Backtrack one backtracking point. (** Backtrack one backtracking point.
Note that an exception is thrown if Pop is called without a corresponding <c>Push</c></remarks> Note that an exception is thrown if Pop is called without a corresponding [Push]</remarks>
{!push} *) {!push} *)
val pop : fixedpoint -> unit val pop : fixedpoint -> unit
@ -2875,28 +2875,28 @@ sig
{!parse_smtlib_string} *) {!parse_smtlib_string} *)
val parse_smtlib_file : context -> string -> Symbol.symbol list -> Sort.sort list -> Symbol.symbol list -> FuncDecl.func_decl list -> unit val parse_smtlib_file : context -> string -> Symbol.symbol list -> Sort.sort list -> Symbol.symbol list -> FuncDecl.func_decl list -> unit
(** The number of SMTLIB formulas parsed by the last call to <c>ParseSMTLIBString</c> or <c>ParseSMTLIBFile</c>. *) (** The number of SMTLIB formulas parsed by the last call to [ParseSMTLIBString] or [ParseSMTLIBFile]. *)
val get_num_smtlib_formulas : context -> int val get_num_smtlib_formulas : context -> int
(** The formulas parsed by the last call to <c>ParseSMTLIBString</c> or <c>ParseSMTLIBFile</c>. *) (** The formulas parsed by the last call to [ParseSMTLIBString] or [ParseSMTLIBFile]. *)
val get_smtlib_formulas : context -> Expr.expr list val get_smtlib_formulas : context -> Expr.expr list
(** The number of SMTLIB assumptions parsed by the last call to <c>ParseSMTLIBString</c> or <c>ParseSMTLIBFile</c>. *) (** The number of SMTLIB assumptions parsed by the last call to [ParseSMTLIBString] or [ParseSMTLIBFile]. *)
val get_num_smtlib_assumptions : context -> int val get_num_smtlib_assumptions : context -> int
(** The assumptions parsed by the last call to <c>ParseSMTLIBString</c> or <c>ParseSMTLIBFile</c>. *) (** The assumptions parsed by the last call to [ParseSMTLIBString] or [ParseSMTLIBFile]. *)
val get_smtlib_assumptions : context -> Expr.expr list val get_smtlib_assumptions : context -> Expr.expr list
(** The number of SMTLIB declarations parsed by the last call to <c>ParseSMTLIBString</c> or <c>ParseSMTLIBFile</c>. *) (** The number of SMTLIB declarations parsed by the last call to [ParseSMTLIBString] or [ParseSMTLIBFile]. *)
val get_num_smtlib_decls : context -> int val get_num_smtlib_decls : context -> int
(** The declarations parsed by the last call to <c>ParseSMTLIBString</c> or <c>ParseSMTLIBFile</c>. *) (** The declarations parsed by the last call to [ParseSMTLIBString] or [ParseSMTLIBFile]. *)
val get_smtlib_decls : context -> FuncDecl.func_decl list val get_smtlib_decls : context -> FuncDecl.func_decl list
(** The number of SMTLIB sorts parsed by the last call to <c>ParseSMTLIBString</c> or <c>ParseSMTLIBFile</c>. *) (** The number of SMTLIB sorts parsed by the last call to [ParseSMTLIBString] or [ParseSMTLIBFile]. *)
val get_num_smtlib_sorts : context -> int val get_num_smtlib_sorts : context -> int
(** The sort declarations parsed by the last call to <c>ParseSMTLIBString</c> or <c>ParseSMTLIBFile</c>. *) (** The sort declarations parsed by the last call to [ParseSMTLIBString] or [ParseSMTLIBFile]. *)
val get_smtlib_sorts : context -> Sort.sort list val get_smtlib_sorts : context -> Sort.sort list
(** Parse the given string using the SMT-LIB2 parser. (** Parse the given string using the SMT-LIB2 parser.