• Top
    • Documentation
    • Books
    • Boolean-reasoning
    • Projects
    • Debugging
    • 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
        • Soft
        • 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
                  • Atc-var-info-list->type-list
                  • Atc-var-info-list->thm-list
                  • Atc-check-var
                  • Atc-var-info
                  • Atc-var-info-option
                  • Atc-get-vars-check-innermost
                  • Atc-get-var-check-innermost
                  • Atc-add-var
                  • Atc-get-var
                    • Atc-symbol-varinfo-alist
                    • Atc-symbol-varinfo-alist-list-to-thms
                    • Atc-symbol-varinfo-alist-list
                    • Atc-get-vars
                    • Atc-symbol-varinfo-alist-to-thms
                    • Atc-var-info-option-list
                    • Atc-var-info-list
                  • 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-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
            • Language
            • Representation
            • Transformation-tools
            • Insertion-sort
            • Pack
          • Bv
          • Imp-language
          • Event-macros
          • Java
          • Bitcoin
          • Ethereum
          • Yul
          • Zcash
          • ACL2-programming-language
          • Prime-fields
          • Json
          • Syntheto
          • File-io-light
          • Cryptography
          • Number-theory
          • Lists-light
          • Axe
          • Builtins
          • Solidity
          • Helpers
          • Htclient
          • Typed-lists-light
          • Arithmetic-light
        • X86isa
        • Axe
        • Execloader
      • Math
      • Testing-utilities
    • Atc-variable-tables

    Atc-get-var

    Obtain the information for a variable from the symbol table.

    Signature
    (atc-get-var var inscope) → info?
    Arguments
    var — Guard (symbolp var).
    inscope — Guard (atc-symbol-varinfo-alist-listp inscope).
    Returns
    info? — Type (atc-var-info-optionp info?).

    We look through the scopes, from innermost to outermost. Actually, currently it is an invariant that the scopes are disjoint, so any lookup order would give the same result.

    Return nil if the variable is not in scope.

    Definitions and Theorems

    Function: atc-get-var

    (defun atc-get-var (var inscope)
     (declare
          (xargs :guard (and (symbolp var)
                             (atc-symbol-varinfo-alist-listp inscope))))
     (let ((__function__ 'atc-get-var))
      (declare (ignorable __function__))
      (if (endp inscope)
          nil
       (or (cdr (assoc-eq var
                          (atc-symbol-varinfo-alist-fix (car inscope))))
           (atc-get-var var (cdr inscope))))))

    Theorem: atc-var-info-optionp-of-atc-get-var

    (defthm atc-var-info-optionp-of-atc-get-var
      (b* ((info? (atc-get-var var inscope)))
        (atc-var-info-optionp info?))
      :rule-classes :rewrite)