  Deep data types are those that are constructed from other data types,
including, possibly, themselves. In this case, they are said to be truly
nested. Deep induction is an extension of structural induction that traverses
all of the structure in a deep data type, propagating predicates on its
primitive data throughout the entire structure. Deep induction can be used to
prove properties of nested types, including truly nested types, that cannot be
proved via structural induction. In this paper we show how to extend deep
induction to GADTs that are not truly nested GADTs. This opens the way to
incorporating automatic generation of (deep) induction rules for them into
proof assistants. We also show that the techniques developed in this paper do
not suffice for extending deep induction to truly nested GADTs, so more
sophisticated techniques are needed to derive deep induction rules for them.
