A relationship between data types. Type T1 is a subtype of type T2 if the set of all possible values of T1 is a subset of the set of all possible values of T2. A subtype is obtained by constraining the set of possible values of the data type. The same operations can be applied to subtype as to type; this may demand the introduction of extra rules or checks to ensure that operations deliver results within the subtype.