Convert function types to pointer types.
This performs the conversion in [C17:6.3.2.1/4]. It leaves non-function types unchanged.
Function:
(defun type-fpconvert (type) (declare (xargs :guard (typep type))) (if (type-case type :function) (make-type-pointer :to (type-fix type)) (type-fix type)))
Theorem:
(defthm typep-of-type-fpconvert (b* ((new-type (type-fpconvert type))) (typep new-type)) :rule-classes :rewrite)
Theorem:
(defthm type-fpconvert-of-type-fix-type (equal (type-fpconvert (type-fix type)) (type-fpconvert type)))
Theorem:
(defthm type-fpconvert-type-equiv-congruence-on-type (implies (type-equiv type type-equiv) (equal (type-fpconvert type) (type-fpconvert type-equiv))) :rule-classes :congruence)