Identifier of a declarator or direct declarator.
A (direct) declarator always contains an identifier at its core. This function returns it, together with a companion function that operates on direct declarators, which is mutually recursive with the one for declarators.
Function:
(defun declor->ident (declor) (declare (xargs :guard (declorp declor))) (dirdeclor->ident (declor->direct declor)))
Function:
(defun dirdeclor->ident (dirdeclor) (declare (xargs :guard (dirdeclorp dirdeclor))) (dirdeclor-case dirdeclor :ident dirdeclor.ident :paren (declor->ident dirdeclor.inner) :array (dirdeclor->ident dirdeclor.declor) :array-static1 (dirdeclor->ident dirdeclor.declor) :array-static2 (dirdeclor->ident dirdeclor.declor) :array-star (dirdeclor->ident dirdeclor.declor) :function-params (dirdeclor->ident dirdeclor.declor) :function-names (dirdeclor->ident dirdeclor.declor)))
Theorem:
(defthm return-type-of-declor->ident.ident (b* ((?ident (declor->ident declor))) (identp ident)) :rule-classes :rewrite)
Theorem:
(defthm return-type-of-dirdeclor->ident.ident (b* ((?ident (dirdeclor->ident dirdeclor))) (identp ident)) :rule-classes :rewrite)
Theorem:
(defthm declor->ident-of-declor-fix-declor (equal (declor->ident (declor-fix declor)) (declor->ident declor)))
Theorem:
(defthm dirdeclor->ident-of-dirdeclor-fix-dirdeclor (equal (dirdeclor->ident (dirdeclor-fix dirdeclor)) (dirdeclor->ident dirdeclor)))
Theorem:
(defthm declor->ident-declor-equiv-congruence-on-declor (implies (declor-equiv declor declor-equiv) (equal (declor->ident declor) (declor->ident declor-equiv))) :rule-classes :congruence)
Theorem:
(defthm dirdeclor->ident-dirdeclor-equiv-congruence-on-dirdeclor (implies (dirdeclor-equiv dirdeclor dirdeclor-equiv) (equal (dirdeclor->ident dirdeclor) (dirdeclor->ident dirdeclor-equiv))) :rule-classes :congruence)