Check if a declarator or direct declarator contains function parameters or names.
The names of these two mutually recursive functions
only mention
Function:
(defun declor-has-params-p (declor) (declare (xargs :guard (declorp declor))) (b* (((declor declor) declor)) (dirdeclor-has-params-p declor.direct)))
Function:
(defun dirdeclor-has-params-p (dirdeclor) (declare (xargs :guard (dirdeclorp dirdeclor))) (dirdeclor-case dirdeclor :ident nil :paren (declor-has-params-p dirdeclor.inner) :array (dirdeclor-has-params-p dirdeclor.declor) :array-static1 (dirdeclor-has-params-p dirdeclor.declor) :array-static2 (dirdeclor-has-params-p dirdeclor.declor) :array-star (dirdeclor-has-params-p dirdeclor.declor) :function-params t :function-names t))
Theorem:
(defthm return-type-of-declor-has-params-p.yes/no (b* ((?yes/no (declor-has-params-p declor))) (booleanp yes/no)) :rule-classes :rewrite)
Theorem:
(defthm return-type-of-dirdeclor-has-params-p.yes/no (b* ((?yes/no (dirdeclor-has-params-p dirdeclor))) (booleanp yes/no)) :rule-classes :rewrite)
Theorem:
(defthm declor-has-params-p-of-declor-fix-declor (equal (declor-has-params-p (declor-fix declor)) (declor-has-params-p declor)))
Theorem:
(defthm dirdeclor-has-params-p-of-dirdeclor-fix-dirdeclor (equal (dirdeclor-has-params-p (dirdeclor-fix dirdeclor)) (dirdeclor-has-params-p dirdeclor)))
Theorem:
(defthm declor-has-params-p-declor-equiv-congruence-on-declor (implies (declor-equiv declor declor-equiv) (equal (declor-has-params-p declor) (declor-has-params-p declor-equiv))) :rule-classes :congruence)
Theorem:
(defthm dirdeclor-has-params-p-dirdeclor-equiv-congruence-on-dirdeclor (implies (dirdeclor-equiv dirdeclor dirdeclor-equiv) (equal (dirdeclor-has-params-p dirdeclor) (dirdeclor-has-params-p dirdeclor-equiv))) :rule-classes :congruence)