Types with extra structure: predicates, equations, composition