(null (neg cstr))
(equal (typeset cstr) '(cons)))))
+(define-inline comp-cstr-type-p (cstr type)
+ "Return t if CSTR is certainly of type TYPE."
+ (if-let ((pred (get type 'cl-deftype-satisfies)))
+ (with-comp-cstr-accessors
+ (and (null (range cstr))
+ (null (neg cstr))
+ (and (or (null (typeset cstr))
+ (equal (typeset cstr) `(,type)))
+ (cl-every pred (valset cstr)))))
+ (error "Unknown predicate for type %s" type)))
+
;; Move to comp.el?
(defsubst comp-cstr-cl-tag-p (cstr)
"Return non-nil if CSTR is a CL tag."