Types are divided in groups and sorts.
Groups are finite domains or finite exclusions where domains consist of permitted constants and exclusions consist of forbidden (excluded) constants.
Sorts can be builtin or user-defined and have a ``$"-prefix. The builtin sorts are ``$"-derived from atom subpredicates atom, symbolp, etc., whereas user-defined sorts are specified as unary predicates in the sortbase module.
For more detailed information and examples see appendices B, C and D.