mirror of
https://github.com/Z3Prover/z3
synced 2025-04-07 09:55:19 +00:00
70 lines
2 KiB
Plaintext
70 lines
2 KiB
Plaintext
/* Copyright (c) Microsoft Corporation */
|
|
|
|
quote(mlmli,"
|
|
(**
|
|
A datatype constructor descriptor.
|
|
*)
|
|
type datatype_constructor_desc = {
|
|
constructor_desc : symbol; (** name of the constructor function *)
|
|
recognizer_desc : symbol; (** name of the recognizer function *)
|
|
accessor_descs : (symbol * sort) array; (** names and sorts of the fields *)
|
|
}
|
|
|
|
(**
|
|
A datatype is described by a name and constructor descriptors.
|
|
*)
|
|
type datatype_desc = symbol * datatype_constructor_desc array
|
|
|
|
(**
|
|
A datatype constructor representation.
|
|
*)
|
|
type datatype_constructor = {
|
|
constructor : func_decl; (** constructor function *)
|
|
recognizer : func_decl; (** recognizer function *)
|
|
accessors : func_decl array; (** field accessor functions *)
|
|
}
|
|
|
|
(**
|
|
A datatype is represented by a sort and constructors.
|
|
*)
|
|
type datatype = sort * datatype_constructor array
|
|
|
|
(**
|
|
Refined view of a {!sort}.
|
|
|
|
- {b See also}: {!mk_sort}
|
|
- {b See also}: {!sort_refine}
|
|
*)
|
|
type sort_refined =
|
|
| Sort_uninterpreted of symbol
|
|
| Sort_bool
|
|
| Sort_int
|
|
| Sort_bv of int
|
|
| Sort_finite_domain of symbol * int64
|
|
| Sort_real
|
|
| Sort_array of sort * sort
|
|
| Sort_datatype of datatype_constructor array
|
|
| Sort_relation of sort array
|
|
| Sort_unknown
|
|
");
|
|
|
|
quote(mli,"
|
|
(**
|
|
Summary: \[ [ mk_sort c sr ] \] constructs the sort described by [sr].
|
|
|
|
- {b Precondition}: [sr] is not of form [Sort_relation] or [Sort_unknown], which cannot be directly constructed
|
|
- {b See also}: {!mk_datatypes}
|
|
- {b See also}: {!sort_refine}
|
|
*)
|
|
val mk_sort: context -> sort_refined -> sort
|
|
|
|
(**
|
|
\[ [mk_datatypes ctx sorts_to_descriptors] \] creates mutually recursive datatypes described by
|
|
[sorts_to_descriptors], which is a function from the sorts of the datatypes to be created to
|
|
descriptors of the datatypes' constructors.
|
|
|
|
- {b See also}: {!Test_mlapi.forest_example}
|
|
*)
|
|
val mk_datatypes: context -> (sort array -> (datatype_desc array) option) -> datatype array
|
|
");
|