Check a type name.
(check-tyname tyname tagenv) → type
Return the denoted type if successful. We first check the type specifier sequence, then the abstracto object declarator.
Function:
(defun check-tyname (tyname tagenv) (declare (xargs :guard (and (tynamep tyname) (tag-envp tagenv)))) (let ((__function__ 'check-tyname)) (declare (ignorable __function__)) (b* (((okf type) (check-tyspecseq (tyname->tyspec tyname) tagenv))) (check-obj-adeclor (tyname->declor tyname) type))))
Theorem:
(defthm type-resultp-of-check-tyname (b* ((type (check-tyname tyname tagenv))) (type-resultp type)) :rule-classes :rewrite)
Theorem:
(defthm check-tyname-of-tyname-fix-tyname (equal (check-tyname (tyname-fix tyname) tagenv) (check-tyname tyname tagenv)))
Theorem:
(defthm check-tyname-tyname-equiv-congruence-on-tyname (implies (tyname-equiv tyname tyname-equiv) (equal (check-tyname tyname tagenv) (check-tyname tyname-equiv tagenv))) :rule-classes :congruence)
Theorem:
(defthm check-tyname-of-tag-env-fix-tagenv (equal (check-tyname tyname (tag-env-fix tagenv)) (check-tyname tyname tagenv)))
Theorem:
(defthm check-tyname-tag-env-equiv-congruence-on-tagenv (implies (tag-env-equiv tagenv tagenv-equiv) (equal (check-tyname tyname tagenv) (check-tyname tyname tagenv-equiv))) :rule-classes :congruence)