• Top
    • Documentation
    • Books
    • Boolean-reasoning
    • Projects
      • Apt
      • Zfc
      • Acre
      • Milawa
      • Smtlink
      • Abnf
      • Vwsim
      • Isar
      • Wp-gen
      • Dimacs-reader
      • Pfcs
      • Legacy-defrstobj
      • Proof-checker-array
      • Soft
      • C
      • Farray
      • Rp-rewriter
      • Instant-runoff-voting
      • Imp-language
      • Sidekick
      • Leftist-trees
      • Java
      • Riscv
      • Taspi
      • Bitcoin
      • Des
      • Ethereum
      • X86isa
      • Sha-2
      • Yul
      • Zcash
      • Proof-checker-itp13
      • Regex
      • ACL2-programming-language
      • Json
      • Jfkr
      • Equational
      • Cryptography
      • Poseidon
      • Where-do-i-place-my-book
      • Axe
      • Aleo
        • Aleobft
        • Aleovm
        • Leo
          • Grammar
          • Early-version
            • Json2ast
            • Testing
            • Definition
              • Flattening
              • Abstract-syntax
              • Dynamic-semantics
                • Execution
                • Values
                • Dynamic-environments
                  • Call-dinfo
                  • Denv
                  • Update-var/const-dinfo-in-scope-list
                  • Update-var/const-dinfo-in-scope
                  • Var/const-dinfo
                  • Update-var/const-dinfo
                  • Add-var/const-dinfo-to-scope
                  • Add-var/const-dinfo
                  • Var/const-dinfo-option
                  • Get-var/const-dinfo-from-scope-list
                  • Denv-option
                  • Get-var/const-dinfo-from-scope
                  • Vcscope-dinfo-option
                  • Vcscope-dinfo-list-option
                  • Vcscope-dinfo
                  • Screens
                  • Get-var/const-dinfo
                    • Vcscope-dinfo-option-result
                    • Vcscope-dinfo-list-result
                    • Vcscope-dinfo-result
                    • Dynamic-struct-environments
                    • Dynamic-function-environments
                    • Denv-result
                    • Init-denv
                    • Vcscope-dinfo-list
                    • Call-dinfo-list
                  • Arithmetic-operations
                  • Curve-parameterization
                  • Shift-operations
                  • Errors
                  • Value-expressions
                  • Locations
                  • Input-execution
                  • Edwards-bls12-generator
                  • Equality-operations
                  • Logical-operations
                  • Program-execution
                  • Ordering-operations
                  • Bitwise-operations
                  • Literal-evaluation
                  • Type-maps-for-struct-components
                  • Output-execution
                  • Tuple-operations
                  • Struct-operations
                • Compilation
                • Static-semantics
                • Concrete-syntax
        • Bigmems
        • Builtins
        • Execloader
        • Solidity
        • Paco
        • Concurrent-programs
        • Bls12-377-curves
      • Debugging
      • Community
      • Std
      • Proof-automation
      • Macro-libraries
      • ACL2
      • Interfacing-tools
      • Hardware-verification
      • Software-verification
      • Math
      • Testing-utilities
    • Dynamic-environments

    Get-var/const-dinfo

    Get the information about a variable a constant from a dynamic environment.

    Signature
    (get-var/const-dinfo name env) → dinfo
    Arguments
    name — Guard (identifierp name).
    env — Guard (denvp env).
    Returns
    dinfo — Type (var/const-dinfo-optionp dinfo).

    We look through the scopes in the top call of the call stack. If the call stack is empty, the variable or constant is not found.

    Definitions and Theorems

    Function: get-var/const-dinfo

    (defun get-var/const-dinfo (name env)
      (declare (xargs :guard (and (identifierp name) (denvp env))))
      (let ((__function__ 'get-var/const-dinfo))
        (declare (ignorable __function__))
        (b* ((calls (denv->call-stack env))
             ((when (endp calls)) nil)
             (top-call (car calls))
             (scopes (call-dinfo->scopes top-call)))
          (get-var/const-dinfo-from-scope-list name scopes))))

    Theorem: var/const-dinfo-optionp-of-get-var/const-dinfo

    (defthm var/const-dinfo-optionp-of-get-var/const-dinfo
      (b* ((dinfo (get-var/const-dinfo name env)))
        (var/const-dinfo-optionp dinfo))
      :rule-classes :rewrite)

    Theorem: get-var/const-dinfo-of-identifier-fix-name

    (defthm get-var/const-dinfo-of-identifier-fix-name
      (equal (get-var/const-dinfo (identifier-fix name)
                                  env)
             (get-var/const-dinfo name env)))

    Theorem: get-var/const-dinfo-identifier-equiv-congruence-on-name

    (defthm get-var/const-dinfo-identifier-equiv-congruence-on-name
      (implies (identifier-equiv name name-equiv)
               (equal (get-var/const-dinfo name env)
                      (get-var/const-dinfo name-equiv env)))
      :rule-classes :congruence)

    Theorem: get-var/const-dinfo-of-denv-fix-env

    (defthm get-var/const-dinfo-of-denv-fix-env
      (equal (get-var/const-dinfo name (denv-fix env))
             (get-var/const-dinfo name env)))

    Theorem: get-var/const-dinfo-denv-equiv-congruence-on-env

    (defthm get-var/const-dinfo-denv-equiv-congruence-on-env
      (implies (denv-equiv env env-equiv)
               (equal (get-var/const-dinfo name env)
                      (get-var/const-dinfo name env-equiv)))
      :rule-classes :congruence)