Check if a declarator has formal dynamic semantics, as part of a function declaration.
There may be any number of pointers, but without type qualifiers. And the direct declarator must be supported.
Function:
(defun declor-fun-formalp (declor) (declare (xargs :guard (declorp declor))) (declare (xargs :guard (declor-unambp declor))) (let ((__function__ 'declor-fun-formalp)) (declare (ignorable __function__)) (b* (((declor declor) declor)) (and (pointers-formalp declor.pointers) (dirdeclor-fun-formalp declor.direct)))))
Theorem:
(defthm booleanp-of-declor-fun-formalp (b* ((yes/no (declor-fun-formalp declor))) (booleanp yes/no)) :rule-classes :rewrite)
Theorem:
(defthm declor-fun-formalp-of-declor-fix-declor (equal (declor-fun-formalp (declor-fix declor)) (declor-fun-formalp declor)))
Theorem:
(defthm declor-fun-formalp-declor-equiv-congruence-on-declor (implies (declor-equiv declor declor-equiv) (equal (declor-fun-formalp declor) (declor-fun-formalp declor-equiv))) :rule-classes :congruence)