• 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-add-var

    Add a variable with some information to the symbol table.

    Signature
    (atc-add-var var info inscope) → new-inscope
    Arguments
    var — Guard (symbolp var).
    info — Guard (atc-var-infop info).
    inscope — Guard (atc-symbol-varinfo-alist-listp inscope).
    Returns
    new-inscope — Type (atc-symbol-varinfo-alist-listp new-inscope).

    This is added to the innermost scope. The symbol table has always at least one scope.

    This is always called after checking that that variable is not already in scope (via atc-check-var). So it unconditionally adds the variable without checking first.

    Definitions and Theorems

    Function: atc-add-var

    (defun atc-add-var (var info inscope)
     (declare
          (xargs :guard (and (symbolp var)
                             (atc-var-infop info)
                             (atc-symbol-varinfo-alist-listp inscope))))
     (let ((__function__ 'atc-add-var))
       (declare (ignorable __function__))
       (cons (acons (symbol-fix var)
                    (atc-var-info-fix info)
                    (atc-symbol-varinfo-alist-fix (car inscope)))
             (atc-symbol-varinfo-alist-list-fix (cdr inscope)))))

    Theorem: atc-symbol-varinfo-alist-listp-of-atc-add-var

    (defthm atc-symbol-varinfo-alist-listp-of-atc-add-var
      (b* ((new-inscope (atc-add-var var info inscope)))
        (atc-symbol-varinfo-alist-listp new-inscope))
      :rule-classes :rewrite)