Algebraic datatypes, tuples, and enumerations
Constructor represents a datatype constructor.
ConstructorList represents a list of datatype constructors.
Context methods (receiver omitted for clarity)
GetDatatypeSortConstructor returns the i-th constructor of a datatype sort.
GetDatatypeSortConstructorAccessor returns the accessor for the i-th field of the j-th constructor.
GetDatatypeSortNumConstructors returns the number of constructors in a datatype sort.
GetDatatypeSortRecognizer returns the i-th recognizer of a datatype sort.
MkConstructor creates a constructor for a datatype. name is the constructor name, recognizer is the recognizer name, fieldNames are the names of the fields, and fieldSorts are the sorts of the fields. fieldSortRefs can be 0 for non-recursive fields or the datatype index for recursive fields.
MkConstructorList creates a list of constructors for a datatype.
MkDatatypeSort creates a datatype sort from a constructor list.
MkDatatypeSorts creates multiple mutually recursive datatype sorts.
Enumeration sorts (special case of datatypes) MkEnumSort creates an enumeration sort with the given constants.
List sorts (special case of datatypes) MkListSort creates a list sort with the given element sort.
Tuple sorts (special case of datatypes) MkTupleSort creates a tuple sort with the given field sorts.