Additional theorems about the annotation predicates.
These are in addition to the ones
generated by fty::deffold-reduce.
These are needed for actual proofs involving the annotation predicates.
In particular, fty::deffold-reduce does not generate theorems
for constructs in the
Theorem:
(defthm iconst-annop-of-iconst (equal (iconst-annop (iconst core suffix? info)) (iconst-infop info)))
Theorem:
(defthm expr-annop-of-expr-ident (equal (expr-annop (expr-ident ident info)) (var-infop info)))
Theorem:
(defthm expr-annop-of-expr-const (equal (expr-annop (expr-const const info)) (and (const-annop const) (expr-const-infop info))))
Theorem:
(defthm expr-annop-of-expr-string (equal (expr-annop (expr-string strings info)) (expr-string-infop info)))
Theorem:
(defthm expr-annop-of-expr-arrsub (equal (expr-annop (expr-arrsub arg1 arg2 info)) (and (expr-annop arg1) (expr-annop arg2) (expr-arrsub-infop info))))
Theorem:
(defthm expr-annop-of-expr-funcall (equal (expr-annop (expr-funcall fun args info)) (and (expr-annop fun) (expr-list-annop args) (expr-funcall-infop info))))
Theorem:
(defthm expr-annop-of-expr-unary (equal (expr-annop (expr-unary op arg info)) (and (expr-annop arg) (expr-unary-infop info))))
Theorem:
(defthm expr-annop-of-expr-binary (equal (expr-annop (expr-binary op arg1 arg2 info)) (and (expr-annop arg1) (expr-annop arg2) (expr-binary-infop info))))
Theorem:
(defthm tyname-annop-of-tyname (equal (tyname-annop (tyname specquals declor? info)) (and (spec/qual-list-annop specquals) (absdeclor-option-annop declor?) (tyname-infop info))))
Theorem:
(defthm param-declor-annop-of-param-declor-nonabstract (equal (param-declor-annop (param-declor-nonabstract declor info)) (and (declor-annop declor) (param-declor-nonabstract-infop info))))
Theorem:
(defthm init-declor-annop-of-init-declor (equal (init-declor-annop (init-declor declor asm? attribs initer? info)) (and (declor-annop declor) (initer-option-annop initer?) (init-declor-infop info))))
Theorem:
(defthm fundef-annop-of-fundef (equal (fundef-annop (fundef extension specs declor asm? attribs declons body info)) (and (decl-spec-list-annop specs) (declor-annop declor) (declon-list-annop declons) (comp-stmt-annop body) (fundef-infop info))))
Theorem:
(defthm transunit-annop-of-transunit (equal (transunit-annop (transunit declons info)) (and (ext-declon-list-annop declons) (transunit-infop info))))
Theorem:
(defthm iconst-infop-of-iconst->info (implies (iconst-annop iconst) (iconst-infop (iconst->info iconst))))
Theorem:
(defthm var-infop-of-expr-ident->info (implies (and (expr-annop expr) (expr-case expr :ident)) (var-infop (expr-ident->info expr))))
Theorem:
(defthm const-annop-of-expr-const->const (implies (and (expr-annop expr) (expr-case expr :const)) (const-annop (expr-const->const expr))))
Theorem:
(defthm expr-const-infop-of-expr-const->info (implies (and (expr-annop expr) (expr-case expr :const)) (expr-const-infop (expr-const->info expr))))
Theorem:
(defthm expr-string-infop-of-expr-string->info (implies (and (expr-annop expr) (expr-case expr :string)) (expr-string-infop (expr-string->info expr))))
Theorem:
(defthm expr-annop-of-expr-arrsub->arg1 (implies (and (expr-annop expr) (expr-case expr :arrsub)) (expr-annop (expr-arrsub->arg1 expr))))
Theorem:
(defthm expr-annop-of-expr-arrsub->arg2 (implies (and (expr-annop expr) (expr-case expr :arrsub)) (expr-annop (expr-arrsub->arg2 expr))))
Theorem:
(defthm expr-arrsub-infop-of-expr-arrsub->info (implies (and (expr-annop expr) (expr-case expr :arrsub)) (expr-arrsub-infop (expr-arrsub->info expr))))
Theorem:
(defthm expr-annop-of-expr-funcall->fun (implies (and (expr-annop expr) (expr-case expr :funcall)) (expr-annop (expr-funcall->fun expr))))
Theorem:
(defthm expr-list-annop-of-expr-funcall->args (implies (and (expr-annop expr) (expr-case expr :funcall)) (expr-list-annop (expr-funcall->args expr))))
Theorem:
(defthm expr-funcall-infop-of-expr-funcall->info (implies (and (expr-annop expr) (expr-case expr :funcall)) (expr-funcall-infop (expr-funcall->info expr))))
Theorem:
(defthm expr-annop-of-expr-unary->arg (implies (and (expr-annop expr) (expr-case expr :unary)) (expr-annop (expr-unary->arg expr))))
Theorem:
(defthm expr-unary-infop-of-expr-unary->info (implies (and (expr-annop expr) (expr-case expr :unary)) (expr-unary-infop (expr-unary->info expr))))
Theorem:
(defthm expr-annop-of-expr-binary->arg1 (implies (and (expr-annop expr) (expr-case expr :binary)) (expr-annop (expr-binary->arg1 expr))))
Theorem:
(defthm expr-annop-of-expr-binary->arg2 (implies (and (expr-annop expr) (expr-case expr :binary)) (expr-annop (expr-binary->arg2 expr))))
Theorem:
(defthm expr-binary-infop-of-expr-binary->info (implies (and (expr-annop expr) (expr-case expr :binary)) (expr-binary-infop (expr-binary->info expr))))
Theorem:
(defthm declor-annop-of-init-declor->declor (implies (init-declor-annop init-declor) (declor-annop (init-declor->declor init-declor))))
Theorem:
(defthm initer-option-annop-of-init-declor->initer? (implies (init-declor-annop init-declor) (initer-option-annop (init-declor->initer? init-declor))))
Theorem:
(defthm init-declor-infop-of-init-declor->info (implies (init-declor-annop init-declor) (init-declor-infop (init-declor->info init-declor))))
Theorem:
(defthm spec/qual-list-annop-of-tyname->specquals (implies (tyname-annop tyname) (spec/qual-list-annop (tyname->specquals tyname))))
Theorem:
(defthm absdeclor-option-annop-of-tyname->declor? (implies (tyname-annop tyname) (absdeclor-option-annop (tyname->declor? tyname))))
Theorem:
(defthm tyname-infop-of-tyname->info (implies (tyname-annop tyname) (tyname-infop (tyname->info tyname))))
Theorem:
(defthm declor-annop-of-param-declor-nonabstract->declor (implies (and (param-declor-annop param-declor) (param-declor-case param-declor :nonabstract)) (declor-annop (param-declor-nonabstract->declor param-declor))))
Theorem:
(defthm param-declor-nonabstract-infop-of-param-declor-nonabstract->info (implies (and (param-declor-annop param-declor) (param-declor-case param-declor :nonabstract)) (param-declor-nonabstract-infop (param-declor-nonabstract->info param-declor))))
Theorem:
(defthm decl-spec-list-annop-of-fundef->specs (implies (fundef-annop fundef) (decl-spec-list-annop (fundef->specs fundef))))
Theorem:
(defthm declor-annop-of-fundef->declor (implies (fundef-annop fundef) (declor-annop (fundef->declor fundef))))
Theorem:
(defthm declon-list-annop-of-fundef->declons (implies (fundef-annop fundef) (declon-list-annop (fundef->declons fundef))))
Theorem:
(defthm comp-stmt-annop-of-fundef->body (implies (fundef-annop fundef) (comp-stmt-annop (fundef->body fundef))))
Theorem:
(defthm fundef-infop-of-fundef->info (implies (fundef-annop fundef) (fundef-infop (fundef->info fundef))))
Theorem:
(defthm ext-declon-list-annop-of-transunit->declons (implies (transunit-annop transunit) (ext-declon-list-annop (transunit->declons transunit))))
Theorem:
(defthm transunit-infop-of-transunit->info (implies (transunit-annop transunit) (transunit-infop (transunit->info transunit))))
Theorem:
(defthm transunit-ensemble-annop-of-irr-transunit-ensemble (transunit-ensemble-annop (irr-transunit-ensemble)))
Theorem:
(defthm code-ensemble-annop-of-irr-code-ensemble (code-ensemble-annop (irr-code-ensemble)))