diff --git a/code/type-boot.lisp b/code/type-boot.lisp
index 622cf8a96bcb8c3c4f65311f7d67e8fe900c0174..e9d8f765c850af9fd8c9a7b44f8de1a16c8bfc08 100644
--- a/code/type-boot.lisp
+++ b/code/type-boot.lisp
@@ -41,3 +41,12 @@
 
 (deftype boolean ()
   '(member t nil))
+
+;;; Define this so that we can define the type system.
+(in-package "KERNEL")
+(defun ctype-p (thing)
+  (and (structurep thing)
+       (member (%primitive structure-ref thing 0)
+	       '(ctype hairy-type named-type numeric-type array-type
+		       member-type structure-type union-type args-type
+		       values-type function-type))))