Check if a declarator has formal dynamic semantics, as part of an object declaration (not in a block).
This complements dirdeclor-obj-formalp: see the documentation of that function. We support any number of pointers, but without type qualifiers.
Function:
(defun declor-obj-formalp (declor) (declare (xargs :guard (declorp declor))) (declare (xargs :guard (declor-unambp declor))) (let ((__function__ 'declor-obj-formalp)) (declare (ignorable __function__)) (b* (((declor declor) declor)) (and (pointers-formalp declor.pointers) (dirdeclor-obj-formalp declor.direct)))))
Theorem:
(defthm booleanp-of-declor-obj-formalp (b* ((yes/no (declor-obj-formalp declor))) (booleanp yes/no)) :rule-classes :rewrite)
Theorem:
(defthm declor-obj-formalp-of-declor-fix-declor (equal (declor-obj-formalp (declor-fix declor)) (declor-obj-formalp declor)))
Theorem:
(defthm declor-obj-formalp-declor-equiv-congruence-on-declor (implies (declor-equiv declor declor-equiv) (equal (declor-obj-formalp declor) (declor-obj-formalp declor-equiv))) :rule-classes :congruence)