Change the identifier of a declarator or direct declarator.
As noted in declor/dirdeclor->ident, a (direct) declarator always contains one identifier. These two mutually recursive companions change it.
Function:
(defun declor-rename (declor ident) (declare (xargs :guard (and (declorp declor) (identp ident)))) (b* (((declor declor) declor)) (change-declor declor :direct (dirdeclor-rename declor.direct ident))))
Function:
(defun dirdeclor-rename (dirdeclor ident) (declare (xargs :guard (and (dirdeclorp dirdeclor) (identp ident)))) (dirdeclor-case dirdeclor :ident (change-dirdeclor-ident dirdeclor :ident ident) :paren (change-dirdeclor-paren dirdeclor :inner (declor-rename dirdeclor.inner ident)) :array (change-dirdeclor-array dirdeclor :declor (dirdeclor-rename dirdeclor.declor ident)) :array-static1 (change-dirdeclor-array-static1 dirdeclor :declor (dirdeclor-rename dirdeclor.declor ident)) :array-static2 (change-dirdeclor-array-static2 dirdeclor :declor (dirdeclor-rename dirdeclor.declor ident)) :array-star (change-dirdeclor-array-star dirdeclor :declor (dirdeclor-rename dirdeclor.declor ident)) :function-params (change-dirdeclor-function-params dirdeclor :declor (dirdeclor-rename dirdeclor.declor ident)) :function-names (change-dirdeclor-function-names dirdeclor :declor (dirdeclor-rename dirdeclor.declor ident))))
Theorem:
(defthm return-type-of-declor-rename.declor$ (b* ((?declor$ (declor-rename declor ident))) (declorp declor$)) :rule-classes :rewrite)
Theorem:
(defthm return-type-of-dirdeclor-rename.dirdeclor$ (b* ((?dirdeclor$ (dirdeclor-rename dirdeclor ident))) (dirdeclorp dirdeclor$)) :rule-classes :rewrite)
Theorem:
(defthm declor-rename-of-declor-fix-declor (equal (declor-rename (declor-fix declor) ident) (declor-rename declor ident)))
Theorem:
(defthm declor-rename-of-ident-fix-ident (equal (declor-rename declor (ident-fix ident)) (declor-rename declor ident)))
Theorem:
(defthm dirdeclor-rename-of-dirdeclor-fix-dirdeclor (equal (dirdeclor-rename (dirdeclor-fix dirdeclor) ident) (dirdeclor-rename dirdeclor ident)))
Theorem:
(defthm dirdeclor-rename-of-ident-fix-ident (equal (dirdeclor-rename dirdeclor (ident-fix ident)) (dirdeclor-rename dirdeclor ident)))
Theorem:
(defthm declor-rename-declor-equiv-congruence-on-declor (implies (declor-equiv declor declor-equiv) (equal (declor-rename declor ident) (declor-rename declor-equiv ident))) :rule-classes :congruence)
Theorem:
(defthm declor-rename-ident-equiv-congruence-on-ident (implies (ident-equiv ident ident-equiv) (equal (declor-rename declor ident) (declor-rename declor ident-equiv))) :rule-classes :congruence)
Theorem:
(defthm dirdeclor-rename-dirdeclor-equiv-congruence-on-dirdeclor (implies (dirdeclor-equiv dirdeclor dirdeclor-equiv) (equal (dirdeclor-rename dirdeclor ident) (dirdeclor-rename dirdeclor-equiv ident))) :rule-classes :congruence)
Theorem:
(defthm dirdeclor-rename-ident-equiv-congruence-on-ident (implies (ident-equiv ident ident-equiv) (equal (dirdeclor-rename dirdeclor ident) (dirdeclor-rename dirdeclor ident-equiv))) :rule-classes :congruence)