definition module compare_types import syntax, compare_constructor :: CompareValue :== Int Smaller :== -1 Greater :== 1 Equal :== 0 class (=<) infix 4 a :: !a !a -> CompareValue instance =< Int, Expression, {# Char}, Ident, [a] | =< a, BasicType instance =< Type, SymbIdent instance == BasicType, TypeVar, AttributeVar, AttrInequality, TypeSymbIdent, DefinedSymbol, TypeContext, BasicValue, FunKind, (Global a) | == a, Priority, Assoc, Type, ConsVariable, SignClassification, TypeCons, TCClass instance < MemberDef smallerOrEqual :: !Type !Type -> CompareValue IF_ALLOW_NON_LINEAR_INSTANCES yes no :== yes IF_ALLOW_NON_TERMINATING_AND_OVERLAPPING_INSTANCES yes no :== no compareInstances :: ![Type] ![Type] -> CompareValue compareFunDepInstances :: ![Type] ![Type] !BITVECT -> CompareValue