Data types for terms, types, and constraints