Check if a direct declarator has formal dynamic semantics, as part of a function declaration.
(dirdeclor-fun-formalp dirdeclor) → yes/no
It must be a function declarator with parameters, where the inner declarator is just a name; see ldm-dirdeclor-fun. The parameter declarations must be supported.
Function:
(defun dirdeclor-fun-formalp (dirdeclor) (declare (xargs :guard (dirdeclorp dirdeclor))) (declare (xargs :guard (dirdeclor-unambp dirdeclor))) (let ((__function__ 'dirdeclor-fun-formalp)) (declare (ignorable __function__)) (dirdeclor-case dirdeclor :function-params (and (dirdeclor-case dirdeclor.declor :ident) (ident-formalp (dirdeclor-ident->ident dirdeclor.declor)) (param-declon-list-formalp dirdeclor.params)) :function-names (and (dirdeclor-case dirdeclor.declor :ident) (ident-formalp (dirdeclor-ident->ident dirdeclor.declor)) (endp dirdeclor.names)) :otherwise nil)))
Theorem:
(defthm booleanp-of-dirdeclor-fun-formalp (b* ((yes/no (dirdeclor-fun-formalp dirdeclor))) (booleanp yes/no)) :rule-classes :rewrite)
Theorem:
(defthm dirdeclor-fun-formalp-of-dirdeclor-fix-dirdeclor (equal (dirdeclor-fun-formalp (dirdeclor-fix dirdeclor)) (dirdeclor-fun-formalp dirdeclor)))
Theorem:
(defthm dirdeclor-fun-formalp-dirdeclor-equiv-congruence-on-dirdeclor (implies (dirdeclor-equiv dirdeclor dirdeclor-equiv) (equal (dirdeclor-fun-formalp dirdeclor) (dirdeclor-fun-formalp dirdeclor-equiv))) :rule-classes :congruence)