The user of Common Lisp should not depend on any relationships not explicitly stated here. For example, it is not valid to assume that because a number is not complex and not rational that it must be a float , because implementations are permitted to provide yet other kinds of numbers. First we need some terminology. If x is a supertype of y , then any object of type y is also of type x , and y is said to be a subtype of x . The type t is a supertype of every type whatsoever.
Every object is of type t .
The type nil is a subtype of every type whatsoever. No object is of type nil . The types cons , symbol , array , number , and character are pairwise disjoint. The types rational , float , and complex are pairwise disjoint subtypes of number . The types real and complex are pairwise disjoint subtypes of number .