• Top
    • Documentation
    • Books
    • Boolean-reasoning
    • Projects
    • Debugging
    • Community
    • Std
    • Proof-automation
    • Macro-libraries
    • ACL2
    • Interfacing-tools
    • Hardware-verification
    • Software-verification
      • Kestrel-books
        • Crypto-hdwallet
        • Apt
        • Error-checking
        • Fty-extensions
        • Isar
        • Kestrel-utilities
        • Set
        • C
          • Syntax-for-tools
          • Atc
            • Atc-implementation
              • Atc-abstract-syntax
              • Atc-pretty-printer
              • Atc-event-and-code-generation
                • Atc-symbolic-computation-states
                • Atc-symbolic-execution-rules
                • Atc-gen-ext-declon-lists
                • Atc-function-and-loop-generation
                • Atc-statement-generation
                • Atc-gen-fileset
                • Atc-gen-everything
                • Atc-gen-obj-declon
                • Atc-gen-fileset-event
                • Atc-tag-tables
                • Atc-expression-generation
                • Atc-generation-contexts
                • Atc-gen-wf-thm
                • Term-checkers-atc
                • Atc-variable-tables
                • Term-checkers-common
                • Atc-gen-init-fun-env-thm
                • Atc-gen-appconds
                • Read-write-variables
                • Atc-gen-thm-assert-events
                • Test*
                • Atc-gen-prog-const
                • Atc-gen-expr-bool
                • Atc-theorem-generation
                • Atc-tag-generation
                • Atc-gen-expr-pure
                • Atc-function-tables
                  • Atc-fn-info
                  • Atc-symbol-fninfo-alist-to-result-thms
                    • Atc-symbol-fninfo-alist-to-measure-nat-thms
                    • Atc-symbol-fninfo-alist-to-fun-env-thms
                    • Atc-symbol-fninfo-alist-to-correct-thms
                    • Atc-symbol-fninfo-alist
                  • Atc-object-tables
                • Fty-pseudo-term-utilities
                • Atc-term-recognizers
                • Atc-input-processing
                • Atc-shallow-embedding
                • Atc-process-inputs-and-gen-everything
                • Atc-table
                • Atc-fn
                • Atc-pretty-printing-options
                • Atc-types
                • Atc-macro-definition
              • Atc-tutorial
              • Pure-expression-execution
            • Transformation-tools
            • Language
            • Representation
            • Insertion-sort
            • Pack
          • Soft
          • Bv
          • Imp-language
          • Ethereum
          • Event-macros
          • Java
          • Riscv
          • Bitcoin
          • Zcash
          • Yul
          • ACL2-programming-language
          • Prime-fields
          • Json
          • Syntheto
          • File-io-light
          • Cryptography
          • Number-theory
          • Axe
          • Lists-light
          • Builtins
          • Solidity
          • Helpers
          • Htclient
          • Typed-lists-light
          • Arithmetic-light
        • X86isa
        • Axe
        • Execloader
      • Math
      • Testing-utilities
    • Atc-function-tables

    Atc-symbol-fninfo-alist-to-result-thms

    Project the result theorems out of a function information alist, for the functions among a given list.

    Signature
    (atc-symbol-fninfo-alist-to-result-thms prec-fns among) → thms
    Arguments
    prec-fns — Guard (atc-symbol-fninfo-alistp prec-fns).
    among — Guard (symbol-listp among).
    Returns
    thms — Type (symbol-listp thms).

    The proof of each of these theorems for a function fn makes use of the same theorems for some of the preceding functions in prec-fns, more precisely the ones called in the body of fn. This function serves to collect those theorem names from the alist. The list of symbols given as input consists of the functions called by fn: it is fine if the list contains functions that are not keys of the alist, as it is merely used to filter.

    The alist has no duplicate keys. So this function is correct.

    Definitions and Theorems

    Function: atc-symbol-fninfo-alist-to-result-thms

    (defun atc-symbol-fninfo-alist-to-result-thms (prec-fns among)
     (declare (xargs :guard (and (atc-symbol-fninfo-alistp prec-fns)
                                 (symbol-listp among))))
     (let ((__function__ 'atc-symbol-fninfo-alist-to-result-thms))
      (declare (ignorable __function__))
      (cond
           ((endp prec-fns) nil)
           ((member-eq (caar prec-fns) among)
            (cons (atc-fn-info->result-thm (cdr (car prec-fns)))
                  (atc-symbol-fninfo-alist-to-result-thms (cdr prec-fns)
                                                          among)))
           (t (atc-symbol-fninfo-alist-to-result-thms (cdr prec-fns)
                                                      among)))))

    Theorem: symbol-listp-of-atc-symbol-fninfo-alist-to-result-thms

    (defthm symbol-listp-of-atc-symbol-fninfo-alist-to-result-thms
      (b*
        ((thms (atc-symbol-fninfo-alist-to-result-thms prec-fns among)))
        (symbol-listp thms))
      :rule-classes :rewrite)