• 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
                • Term-checkers-common
                • Atc-gen-init-fun-env-thm
                • Atc-gen-appconds
                • Read-write-variables
                  • Write-auto-var
                  • Read-auto-var
                  • Write-static-var
                  • Write-var
                  • Read-var
                    • Read-static-var
                    • Objdesign-of-var-and-read/write-var-theorems
                    • Read-object-of-objdesign-of-var-to-read-var
                    • Write-object-of-objdesign-of-var-to-write-var
                  • 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
    • Read-write-variables

    Read-var

    Read a variable in a computation state.

    Signature
    (read-var var compst) → val
    Arguments
    var — Guard (identp var).
    compst — Guard (compustatep compst).
    Returns
    val — Type (value-resultp val).

    First we try automatic storage (if there are frames), then static storage. Indeed, file scope is outside all the block scopes, so it must be tried last.

    Definitions and Theorems

    Function: read-var

    (defun read-var (var compst)
      (declare (xargs :guard (and (identp var)
                                  (compustatep compst))))
      (let ((__function__ 'read-var))
        (declare (ignorable __function__))
        (if (> (compustate-frames-number compst) 0)
            (b* ((val (read-auto-var var compst)))
              (or val (read-static-var var compst)))
          (read-static-var var compst))))

    Theorem: value-resultp-of-read-var

    (defthm value-resultp-of-read-var
      (b* ((val (read-var var compst)))
        (value-resultp val))
      :rule-classes :rewrite)

    Theorem: read-var-of-ident-fix-var

    (defthm read-var-of-ident-fix-var
      (equal (read-var (ident-fix var) compst)
             (read-var var compst)))

    Theorem: read-var-ident-equiv-congruence-on-var

    (defthm read-var-ident-equiv-congruence-on-var
      (implies (ident-equiv var var-equiv)
               (equal (read-var var compst)
                      (read-var var-equiv compst)))
      :rule-classes :congruence)

    Theorem: read-var-of-compustate-fix-compst

    (defthm read-var-of-compustate-fix-compst
      (equal (read-var var (compustate-fix compst))
             (read-var var compst)))

    Theorem: read-var-compustate-equiv-congruence-on-compst

    (defthm read-var-compustate-equiv-congruence-on-compst
      (implies (compustate-equiv compst compst-equiv)
               (equal (read-var var compst)
                      (read-var var compst-equiv)))
      :rule-classes :congruence)