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-datatypescommand.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:
 decl – The datatype declaration.
- Returns:
 The hash value of the datatype declaration.