Cvc5DatatypeDecl
This struct encapsulates a datatype declaration. A Cvc5DatatypeDecl
is constructed via cvc5_mk_dt_decl()
.
This is not a datatype itself, but the representation of
the specification for creating a datatype sort
via
cvc5_mk_dt_sort()
and cvc5_mk_dt_sorts()
.
-
typedef struct cvc5_dt_decl_t *Cvc5DatatypeDecl
A cvc5 datatype declaration. A datatype declaration is not itself a datatype (see Datatype), but a specification for creating a datatype sort.
The interface for a datatype declaration coincides with the syntax for the SMT-LIB 2.6 command
declare-datatype
, or a single datatype within thedeclare-datatypes
command.Datatype sorts can be constructed from a Cvc5DatatypeDecl using:
cvc5_mk_datatype_sort()
cvc5_mk_datatype_sorts()
-
Cvc5DatatypeDecl cvc5_dt_decl_copy(Cvc5DatatypeDecl decl)
Make copy of datatype declaration, increases reference counter of
decl
.Note
This step is optional and allows users to manage resources in a more fine-grained manner.
- Parameters:
decl – The datatype declaration to copy.
- Returns:
The same datatype declarationwith its reference count increased by one.
-
void cvc5_dt_decl_release(Cvc5DatatypeDecl decl)
Release copy of datatype declaration, decrements reference counter of
decl
.Note
This step is optional and allows users to release resources in a more fine-grained manner. Further, any API function that returns a Cvc5DatatypeDecl returns a copy that is owned by the callee of the function and thus, can be released.
- Parameters:
decl – The datatype declaration to release.
-
bool cvc5_dt_decl_is_equal(Cvc5DatatypeDecl a, Cvc5DatatypeDecl b)
Compare two datatype declarations for structural equality.
- Parameters:
a – The first datatype declaration.
b – The second datatype declaration.
- Returns:
True if the datatype declarations are equal.
-
void cvc5_dt_decl_add_constructor(Cvc5DatatypeDecl decl, Cvc5DatatypeConstructorDecl ctor)
Add datatype constructor declaration.
- Parameters:
decl – The datatype declaration.
ctor – The datatype constructor declaration to add.
-
size_t cvc5_dt_decl_get_num_constructors(Cvc5DatatypeDecl decl)
Get the number of constructors for a given Datatype declaration.
- Parameters:
decl – The datatype declaration.
- Returns:
The number of constructors.
-
bool cvc5_dt_decl_is_parametric(Cvc5DatatypeDecl decl)
Determine if a given Datatype declaration is parametric.
Warning
This function is experimental and may change in future versions.
- Parameters:
decl – The datatype declaration.
- Returns:
True if the datatype declaration is parametric.
-
bool cvc5_dt_decl_is_resolved(Cvc5DatatypeDecl decl)
Determine if a given datatype declaration is resolved (has already been used to declare a datatype).
- Parameters:
decl – The datatype declaration.
- Returns:
True if the datatype declaration is resolved.
-
const char *cvc5_dt_decl_to_string(Cvc5DatatypeDecl decl)
Get a string representation of a given datatype declaration.
Note
The returned char* pointer is only valid until the next call to this function.
- Parameters:
decl – The datatype declaration.
- Returns:
A string representation of the datatype declaration.
-
const char *cvc5_dt_decl_get_name(Cvc5DatatypeDecl decl)
Get the name of a given datatype declaration.
Note
The returned char* pointer is only valid until the next call to this function.
- Parameters:
decl – The datatype declaration.
- Returns:
The name of the datatype declaration.
-
size_t cvc5_dt_decl_hash(Cvc5DatatypeDecl decl)
Compute the hash value of a datatype declaration.
- Parameters:
term – The datatype declaration.
- Returns:
The hash value of the datatype declaration.