Datatype

This class represents a datatype. A cvc5::Datatype is encapsulated by a datatype Sort and can be retrieved from a datatype sort via cvc5::Sort::getDatatype(). Datatypes are specified by a cvc5::DatatypeDecl via cvc5::TermManager::mkDatatypeDecl() when constructing a datatype sort.



class Datatype

A cvc5 datatype.

Public Functions

Datatype()

Constructor.

~Datatype()

Destructor.

bool operator==(const Datatype &dt) const

Equality operator.

Parameters:

dt – The datatype to compare to for equality.

Returns:

True if the datatypes are equal.

DatatypeConstructor operator[](size_t idx) const

Get the datatype constructor at a given index.

Parameters:

idx – The index of the datatype constructor to return.

Returns:

The datatype constructor with the given index.

DatatypeConstructor operator[](const std::string &name) const

Get the datatype constructor with the given name.

Note

This is a linear search through the constructors, so in case of multiple, similarly-named constructors, the first is returned.

Parameters:

name – The name of the datatype constructor.

Returns:

The datatype constructor with the given name.

DatatypeConstructor getConstructor(const std::string &name) const
DatatypeSelector getSelector(const std::string &name) const

Get the datatype selector with the given name.

Note

This is a linear search through the constructors and their selectors, so in case of multiple, similarly-named selectors, the first is returned.

Parameters:

name – The name of the datatype selector.

Returns:

The datatype selector with the given name.

std::string getName() const

Get the name of this datatype.

Returns:

The name.

size_t getNumConstructors() const

Get the number of constructors of this datatype.

Returns:

The number of constructors.

std::vector<Sort> getParameters() const

Get the parameters of this datatype, if it is parametric.

Note

Asserts that this datatype is parametric.

Warning

This function is experimental and may change in future versions.

Returns:

The parameters of this datatype.

bool isParametric() const

Determine if this datatype is parametric.

Warning

This function is experimental and may change in future versions.

Returns:

True if this datatype is parametric.

bool isCodatatype() const

Determine if this datatype corresponds to a co-datatype.

Returns:

True if this datatype corresponds to a co-datatype.

bool isTuple() const

Determine if this datatype corresponds to a tuple.

Returns:

True if this datatype corresponds to a tuple.

bool isRecord() const

Determine if this datatype corresponds to a record.

Warning

This function is experimental and may change in future versions.

Returns:

True if this datatype corresponds to a record.

bool isFinite() const

Determine if a given datatype is finite.

Returns:

True if this datatype is finite.

bool isWellFounded() const

Determine if this datatype is well-founded.

If this datatype is not a codatatype, this returns false if there are no values of this datatype that are of finite size.

Returns:

True if this datatype is well-founded.

bool isNull() const
Returns:

True if this Datatype is a null object.

std::string toString() const
Returns:

A string representation of this datatype.

const_iterator begin() const
Returns:

An iterator to the first constructor of this datatype.

const_iterator end() const
Returns:

An iterator to one-off-the-last constructor of this datatype.

Friends

friend struct std::hash< Datatype >
class const_iterator

Iterator for the constructors of a datatype.

Public Types

using iterator_category = std::forward_iterator_tag

Iterator tag

using value_type = Datatype

The type of the item

using pointer = const Datatype*

The pointer type of the item

using reference = const Datatype&

The reference type of the item

using difference_type = std::ptrdiff_t

The type returned when two iterators are subtracted

Public Functions

const_iterator()

Nullary constructor (required for Cython).

const_iterator &operator=(const const_iterator &it)

Assignment operator.

Parameters:

it – The iterator to assign to.

Returns:

The reference to the iterator after assignment.

bool operator==(const const_iterator &it) const

Equality operator.

Parameters:

it – The iterator to compare to for equality.

Returns:

True if the iterators are equal.

bool operator!=(const const_iterator &it) const

Disequality operator.

Parameters:

it – The iterator to compare to for disequality.

Returns:

True if the iterators are disequal.

const_iterator &operator++()

Increment operator (prefix).

Returns:

A reference to the iterator after incrementing by one.

const_iterator operator++(int)

Increment operator (postfix).

Returns:

A reference to the iterator after incrementing by one.

const DatatypeConstructor &operator*() const

Dereference operator.

Returns:

A reference to the constructor this iterator points to.

const DatatypeConstructor *operator->() const

Dereference operator.

Returns:

A pointer to the constructor this iterator points to.


std::ostream &cvc5::operator<<(std::ostream &out, const Datatype &dtype)

Serialize a datatype to given stream.

Parameters:
  • out – The output stream.

  • dtype – The datatype to be serialized to given stream.

Returns:

The output stream.