We stated above (see Types of Objects) that, for an object obj, its type is formed from its family and its filters. There is a also a third component, used in a few situations, namely defining data of the type.
TypeObj( obj ) F
returns the type of the object obj.
The type of an object is itself an object.
Two types are equal if and only if the two families are identical, the filters are equal, and, if present, also the defining data of the types are equal.
The last part of the type, defining data, has not been mentioned before and seems to be of minor importance. It can be used, e.g., for cosets U g of a group U, where the type of each coset may contain the group U as defining data. As a consequence, two such cosets mod U and V can have the same type only if U = V. The defining data of the type type can be accessed as
DataType( type ) F
GAP 4 manual