3
0
Fork 0
mirror of https://github.com/Z3Prover/z3 synced 2025-04-07 01:54:08 +00:00
z3/ml/x3V3.mli
Leonardo de Moura bcca613cb2 Added ml component
Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
2012-10-02 12:44:06 -07:00

362 lines
12 KiB
OCaml

quote (mli,"
(** {2 {L ML Extensions}} *)
(**
\[ [ mk_context_x configs] \] is a shorthand for the context with configurations in [configs].
*)
val mk_context_x: (string * string) array -> context;;
(**
\[ [ get_app_args c a ] \] is the array of arguments of an application. If [t] is a constant, then the array is empty.
- {b See also}: {!Z3.get_app_num_args}
- {b See also}: {!Z3.get_app_arg}
*)
val get_app_args: context -> app -> ast array
(**
\[ [ get_app_args c d ] \] is the array of parameters of [d].
- {b See also}: {!Z3.get_domain_size}
- {b See also}: {!Z3.get_domain}
*)
val get_domains: context -> func_decl -> sort array
(**
\[ [ get_array_sort c t ] \] is the domain and the range of [t].
- {b See also}: {!Z3.get_array_sort_domain}
- {b See also}: {!Z3.get_array_sort_range}
*)
val get_array_sort: context -> sort -> sort * sort
(**
\[ [ get_tuple_sort c ty ] \] is the pair [(mk_decl, fields)] where [mk_decl] is the constructor declaration of [ty], and [fields] is the array of fields in [ty].
- {b See also}: {!Z3.get_tuple_sort_mk_decl}
- {b See also}: {!Z3.get_tuple_sort_num_fields}
- {b See also}: {!Z3.get_tuple_sort_field_decl}
*)
val get_tuple_sort: context -> sort -> (func_decl * func_decl array)
(**
\[ [ datatype_constructor_refined ] \] is the refinement of a datatype constructor.
It contains the constructor declaration, recognizer, and list of accessor functions.
*)
type datatype_constructor_refined = {
constructor : func_decl;
recognizer : func_decl;
accessors : func_decl array
}
(**
\[ [ get_datatype_sort c ty ] \] is the array of triples [(constructor, recognizer, fields)] where [constructor] is the constructor declaration of [ty], [recognizer] is the recognizer for the [constructor], and [fields] is the array of fields in [ty].
- {b See also}: {!Z3.get_datatype_sort_num_constructors}
- {b See also}: {!Z3.get_datatype_sort_constructor}
- {b See also}: {!Z3.get_datatype_sort_recognizer}
- {b See also}: {!Z3.get_datatype_sort_constructor_accessor}
*)
val get_datatype_sort: context -> sort -> datatype_constructor_refined array
(**
\[ [ get_model_constants c m ] \] is the array of constants in the model [m].
- {b See also}: {!Z3.get_model_num_constants}
- {b See also}: {!Z3.get_model_constant}
*)
val get_model_constants: context -> model -> func_decl array
(**
\[ [ get_model_func_entry c m i j ] \] is the [j]'th entry in the [i]'th function in the model [m].
- {b See also}: {!Z3.get_model_func_entry_num_args}
- {b See also}: {!Z3.get_model_func_entry_arg}
- {b See also}: {!Z3.get_model_func_entry_value}
*)
val get_model_func_entry: context -> model -> int -> int -> (ast array * ast);;
(**
\[ [ get_model_func_entries c m i ] \] is the array of entries in the [i]'th function in the model [m].
- {b See also}: {!Z3.get_model_func_num_entries}
- {b See also}: {!Z3.get_model_func_entry}
*)
val get_model_func_entries: context -> model -> int -> (ast array * ast) array;;
(**
\[ [ get_model_funcs c m ] \] is the array of functions in the model [m]. Each function is represented by the triple [(decl, entries, else)], where [decl] is the declaration name for the function, [entries] is the array of entries in the function, and [else] is the default (else) value for the function.
- {b See also}: {!Z3.get_model_num_funcs}
- {b See also}: {!Z3.get_model_func_decl}
- {b See also}: {!Z3.get_model_func_entries}
- {b See also}: {!Z3.get_model_func_else}
*)
val get_model_funcs: context -> model ->
(symbol *
(ast array * ast) array *
ast) array
(**
\[ [ get_smtlib_formulas c ] \] is the array of formulas created by a preceding call to {!Z3.parse_smtlib_string} or {!Z3.parse_smtlib_file}.
Recommend use {!Z3.parse_smtlib_string_x} or {!Z3.parse_smtlib_file_x} for functional style interface to the SMT-LIB parser.
- {b See also}: {!Z3.parse_smtlib_string_x}
- {b See also}: {!Z3.parse_smtlib_file_x}
- {b See also}: {!Z3.parse_smtlib_string}
- {b See also}: {!Z3.parse_smtlib_file}
- {b See also}: {!Z3.get_smtlib_num_formulas}
- {b See also}: {!Z3.get_smtlib_formula}
*)
val get_smtlib_formulas: context -> ast array
(**
\[ [get_smtlib_assumptions c] \] is the array of assumptions created by a preceding call to {!Z3.parse_smtlib_string} or {!Z3.parse_smtlib_file}.
Recommend use {!Z3.parse_smtlib_string_x} or {!Z3.parse_smtlib_file_x} for functional style interface to the SMT-LIB parser.
- {b See also}: {!Z3.parse_smtlib_string_x}
- {b See also}: {!Z3.parse_smtlib_file_x}
- {b See also}: {!Z3.parse_smtlib_string}
- {b See also}: {!Z3.parse_smtlib_file}
- {b See also}: {!Z3.get_smtlib_num_assumptions}
- {b See also}: {!Z3.get_smtlib_assumption}
*)
val get_smtlib_assumptions: context -> ast array
(**
\[ [ get_smtlib_decls c ] \] is the array of declarations created by a preceding call to {!Z3.parse_smtlib_string} or {!Z3.parse_smtlib_file}.
Recommend use {!Z3.parse_smtlib_string_x} or {!Z3.parse_smtlib_file_x} for functional style interface to the SMT-LIB parser.
- {b See also}: {!Z3.parse_smtlib_string_x}
- {b See also}: {!Z3.parse_smtlib_file_x}
- {b See also}: {!Z3.parse_smtlib_string}
- {b See also}: {!Z3.parse_smtlib_file}
- {b See also}: {!Z3.get_smtlib_num_decls}
- {b See also}: {!Z3.get_smtlib_decl}
*)
val get_smtlib_decls: context -> func_decl array
(**
\[ [ get_smtlib_parse_results c ] \] is the triple [(get_smtlib_formulas c, get_smtlib_assumptions c, get_smtlib_decls c)].
Recommend use {!Z3.parse_smtlib_string_x} or {!Z3.parse_smtlib_file_x} for functional style interface to the SMT-LIB parser.
- {b See also}: {!Z3.parse_smtlib_string_x}
- {b See also}: {!Z3.parse_smtlib_file_x}
- {b See also}: {!Z3.parse_smtlib_string}
- {b See also}: {!Z3.parse_smtlib_file}
- {b See also}: {!Z3.get_smtlib_formulas}
- {b See also}: {!Z3.get_smtlib_assumptions}
- {b See also}: {!Z3.get_smtlib_decls}
*)
val get_smtlib_parse_results: context -> (ast array * ast array * func_decl array)
(**
\[ [ parse_smtlib_string_formula c ... ] \] calls [(parse_smtlib_string c ...)] and returns the single formula produced.
Recommended for functional style interface to the SMT-LIB parser.
- {b See also}: {!Z3.parse_smtlib_file_formula}
- {b See also}: {!Z3.parse_smtlib_string_x}
*)
val parse_smtlib_string_formula: context -> string -> symbol array -> sort array -> symbol array -> func_decl array -> ast
(**
\[ [ parse_smtlib_file_formula c ... ] \] calls [(parse_smtlib_file c ...)] and returns the single formula produced.
Recommended for functional style interface to the SMT-LIB parser.
- {b See also}: {!Z3.parse_smtlib_file_formula}
- {b See also}: {!Z3.parse_smtlib_file_x}
*)
val parse_smtlib_file_formula: context -> string -> symbol array -> sort array -> symbol array -> func_decl array -> ast
(**
\[ [ parse_smtlib_string_x c ... ] \] is [(parse_smtlib_string c ...; get_smtlib_parse_results c)]
Recommended for functional style interface to the SMT-LIB parser.
- {b See also}: {!Z3.parse_smtlib_file_x}
- {b See also}: {!Z3.parse_smtlib_string}
- {b See also}: {!Z3.get_smtlib_parse_results}
*)
val parse_smtlib_string_x: context -> string -> symbol array -> sort array -> symbol array -> func_decl array -> (ast array * ast array * func_decl array)
(**
\[ [ parse_smtlib_file_x c ... ] \] is [(parse_smtlib_file c ...; get_smtlib_parse_results c)]
Recommended for functional style interface to the SMT-LIB parser.
- {b See also}: {!Z3.parse_smtlib_string_x}
- {b See also}: {!Z3.parse_smtlib_file}
- {b See also}: {!Z3.get_smtlib_parse_results}
*)
val parse_smtlib_file_x: context -> string -> symbol array -> sort array -> symbol array -> func_decl array -> (ast array * ast array * func_decl array)
(**
\[ [ symbol_refined ] \] is the refinement of a {!Z3.symbol} .
- {b See also}: {!Z3.symbol_refine}
- {b See also}: {!Z3.get_symbol_kind}
*)
type symbol_refined =
| Symbol_int of int
| Symbol_string of string
| Symbol_unknown;;
(**
\[ [ symbol_refine c s ] \] is the refined symbol of [s].
- {b See also}: {!Z3.symbol_refined}
- {b See also}: {!Z3.get_symbol_kind}
*)
val symbol_refine: context -> symbol -> symbol_refined;;
(**
\[ [ sort_refined ] \] is the refinement of a {!Z3.sort} .
- {b See also}: {!Z3.sort_refine}
- {b See also}: {!Z3.get_sort_kind}
*)
type sort_refined =
| Sort_uninterpreted of symbol
| Sort_bool
| Sort_int
| Sort_real
| Sort_bv of int
| Sort_array of (sort * sort)
| Sort_datatype of datatype_constructor_refined array
| Sort_relation
| Sort_finite_domain
| Sort_unknown of symbol
(**
\[ [ sort_refine c t ] \] is the refined sort of [t].
- {b See also}: {!Z3.sort_refined}
- {b See also}: {!Z3.get_sort_kind}
*)
val sort_refine: context -> sort -> sort_refined;;
(**
\[ [ binder_type ] \] is a universal or existential quantifier.
- {b See also}: {!Z3.term_refined}
*)
type binder_type = | Forall | Exists
(**
\[ [ numeral_refined ] \] is the refinement of a numeral .
Numerals whose fractional representation can be fit with
64 bit integers are treated as small.
*)
type numeral_refined =
| Numeral_small of int64 * int64
| Numeral_large of string
(**
\[ [ term_refined ] \] is the refinement of a {!Z3.ast} .
- {b See also}: {!Z3.term_refine}
*)
type term_refined =
| Term_app of decl_kind * func_decl * ast array
| Term_quantifier of binder_type * int * ast array array * (symbol * sort) array * ast
| Term_numeral of numeral_refined * sort
| Term_var of int * sort
(**
\[ [ term_refine c a ] \] is the refined term of [a].
- {b See also}: {!Z3.term_refined}
*)
val term_refine : context -> ast -> term_refined
(**
\[ [mk_theory c name ] \] create a custom theory.
*)
val mk_theory : context -> string -> theory
(**
\[ [set_delete_callback th cb] \] set callback when theory gets deleted.
*)
val set_delete_callback : theory -> (unit -> unit) -> unit
(**
\[ [set_reduce_app_callback th cb] \] set callback for simplifying theory terms.
*)
val set_reduce_app_callback : theory -> (func_decl -> ast array -> ast option) -> unit
(**
\[ [set_reduce_eq_callback th cb] \] set callback for simplifying equalities over theory terms.
*)
val set_reduce_eq_callback : theory -> (ast -> ast -> ast option) -> unit
(**
\[ [set_reduce_distinct_callback th cb] \] set callback for simplifying disequalities over theory terms.
*)
val set_reduce_distinct_callback : theory -> (ast array -> ast option) -> unit
(**
\[ [set_new_app_callback th cb] \] set callback for registering new application.
*)
val set_new_app_callback : theory -> (ast -> unit) -> unit
(**
\[ [set_new_elem_callback th cb] \] set callback for registering new element.
- {b See also}: the help for the corresponding C API function.
*)
val set_new_elem_callback : theory -> (ast -> unit) -> unit
(**
\[ [set_init_search_callback th cb] \] set callback when Z3 starts searching for a satisfying assignment.
*)
val set_init_search_callback : theory -> (unit -> unit) -> unit
(**
\[ [set_push_callback th cb] \] set callback for a logical context push.
*)
val set_push_callback : theory -> (unit -> unit) -> unit
(**
\[ [set_pop_callback th cb] \] set callback for a logical context pop.
*)
val set_pop_callback : theory -> (unit -> unit) -> unit
(**
\[ [set_restart_callback th cb] \] set callback for search restart.
*)
val set_restart_callback : theory -> (unit -> unit) -> unit
val set_reset_callback : theory -> (unit -> unit) -> unit
val set_final_check_callback : theory -> (unit -> bool) -> unit
val set_new_eq_callback : theory -> (ast -> ast -> unit) -> unit
val set_new_diseq_callback : theory -> (ast -> ast -> unit) -> unit
val set_new_assignment_callback : theory -> (ast -> bool -> unit) -> unit
val set_new_relevant_callback : theory -> (ast -> unit) -> unit
");