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()
            
           
          
          .
         
- 
           
           
           
           
           
           
           
           
           
            
             class
            
           
           
           
           
            
             
              Datatype
             
            
           
           
            
           
           
 - 
           
A cvc5 datatype.
Public Functions
- 
              
              
              
              
              
              
              
              
              
               
                
                 Datatype
                
               
              
              
               (
              
              
               )
              
              
               
              
              
 - 
              
Constructor.
 
- 
              
              
              
              
              
              
              
              
              
               
                
                 ~Datatype
                
               
              
              
               (
              
              
               )
              
              
               
              
              
 - 
              
Destructor.
 
- 
              
              
              
              
              
              
              
              
              
               
                
                 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.
 
 
- 
              
              
              
              
              
              
              
              
              
               
                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.
 
 
- 
             
             
             
             
             
             
             
             
             
              
               class
              
             
             
             
             
              
               
                const_iterator
               
              
             
             
              
             
             
 - 
             
Iterator for the constructors of a datatype.
Public Types
- 
                
                
                
                
                
                
                
                 
                  using
                 
                
                
                
                
                 
                  
                   iterator_category
                  
                 
                
                
                
                
                 
                  =
                 
                
                
                
                
                 
                  std
                 
                
                
                 
                  ::
                 
                
                
                 
                  forward_iterator_tag
                 
                
                
                 
                
                
 - 
                
Iterator tag
 
- 
                
                
                
                
                
                
                
                 
                  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.
 
 
 - 
                
                
                
                
                
                
                
                 
                  using
                 
                
                
                
                
                 
                  
                   iterator_category
                  
                 
                
                
                
                
                 
                  =
                 
                
                
                
                
                 
                  std
                 
                
                
                 
                  ::
                 
                
                
                 
                  forward_iterator_tag
                 
                
                
                 
                
                
 
 - 
              
              
              
              
              
              
              
              
              
               
                
                 Datatype
                
               
              
              
               (
              
              
               )