Datatype{Constructor,Selector,Recognizer}Ref: for {constructors, selectors, testers} of declared datatypes
The reason that the last three are not just standard functions is that they use a different kind of apply in the CVC4 API, and you get their domain/codomain/metadata in a different way.
The idea it to use 5 new classes:
Datatype
: for declaring new data-types.DatatypeSortRef
: for declared datatypes.Datatype{Constructor,Selector,Recognizer}Ref
: for {constructors, selectors, testers} of declared datatypesThe reason that the last three are not just standard functions is that they use a different kind of apply in the CVC4 API, and you get their domain/codomain/metadata in a different way.