• Top
    • Documentation
    • Books
    • Boolean-reasoning
    • Projects
      • Apt
      • Zfc
      • Acre
      • Milawa
      • Smtlink
      • Abnf
      • Vwsim
      • Isar
      • Wp-gen
      • Dimacs-reader
      • Pfcs
      • Legacy-defrstobj
      • C
      • Proof-checker-array
      • Soft
      • Farray
      • Rp-rewriter
      • Instant-runoff-voting
      • Imp-language
      • Sidekick
      • Ethereum
      • Leftist-trees
      • Java
      • Riscv
      • Taspi
      • Bitcoin
      • Zcash
      • Des
      • X86isa
      • Sha-2
      • Yul
      • Proof-checker-itp13
      • Regex
      • ACL2-programming-language
      • Json
      • Jfkr
      • Equational
      • Cryptography
      • Axe
      • Poseidon
      • Where-do-i-place-my-book
      • Aleo
        • Aleobft
        • Aleovm
        • Leo
          • Grammar
          • Early-version
            • Json2ast
            • Testing
            • Definition
              • Flattening
              • Abstract-syntax
              • Dynamic-semantics
              • Compilation
              • Static-semantics
                • Type-checking
                  • Typecheck-expressions
                  • Typecheck-statements
                  • Typecheck-expression
                  • Typecheck-statement
                  • Funparam-list-to-var/const-sinfo-list
                  • Typecheck-call
                  • Expr-type-list->sort-list
                  • Typecheck-binop
                  • Expr-type-list->type-list
                  • Types+senv
                  • Typecheck-literal
                  • Typecheck-print-args
                  • Expr-sort
                  • Typecheck-type
                  • Typecheck-fundecl
                  • Typecheck-unop
                  • Typecheck-constdecl
                  • Extend-senv-with-structdecl
                  • Typecheck-structdecl
                  • Expr-type
                  • Typecheck-vardecl
                  • Typecheck-statement-list
                  • Extend-senv-with-constdecl
                  • Typecheck-funparam-list
                  • Extend-senv-with-vardecl
                  • Extend-senv-with-fundecl
                  • Typecheck-compdecl-list
                  • Typecheck-funparam
                  • Identifier+exprtype
                  • Extend-senv-with-topdecl-list
                  • Typecheck-console
                  • Identifier-exprtype-map-constp
                  • Types+senv-result
                  • Typecheck-topdecl-list
                  • Typecheck-compdecl
                  • Identifier+exprtype-result
                  • Identifier-exprtype-map-result
                  • Funparam-to-var/const-sinfo
                    • Extend-senv-with-topdecl
                    • Identexprtype-map-to-identype-map
                    • Expr-type-result
                    • Expr-type-list-result
                    • Typecheck-topdecl
                    • Typecheck-file
                    • Typecheck-branch-list
                    • File-to-senv
                    • Identifier-exprtype-map
                    • Typecheck-struct-init
                    • Typecheck-branch
                    • Expr-type-list
                    • Expr-sort-list
                    • Typecheck-expression-list
                  • Static-environments
                  • Curve-parameterization
                  • Function-recursion
                  • Struct-recursion
                  • Input-checking
                  • Program-checking
                  • Type-maps-for-struct-components
                  • Program-and-input-checking
                  • Output-checking
                • 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
    • Type-checking

    Funparam-to-var/const-sinfo

    Turn a function parameter into static information about the parameter as a variable or constant.

    Signature
    (funparam-to-var/const-sinfo param) → info
    Arguments
    param — Guard (funparamp param).
    Returns
    info — Type (var/const-sinfop info).

    For now we treat public and private parameters as just variables, and we treat constant and const parameters as just constants. We may extend this in the future.

    Definitions and Theorems

    Function: funparam-to-var/const-sinfo

    (defun funparam-to-var/const-sinfo (param)
      (declare (xargs :guard (funparamp param)))
      (let ((__function__ 'funparam-to-var/const-sinfo))
        (declare (ignorable __function__))
        (b* (((funparam param) param)
             (constp (or (var/const-sort-case param.sort :constant)
                         (var/const-sort-case param.sort :const))))
          (make-var/const-sinfo :type param.type
                                :constp constp))))

    Theorem: var/const-sinfop-of-funparam-to-var/const-sinfo

    (defthm var/const-sinfop-of-funparam-to-var/const-sinfo
      (b* ((info (funparam-to-var/const-sinfo param)))
        (var/const-sinfop info))
      :rule-classes :rewrite)

    Theorem: funparam-to-var/const-sinfo-of-funparam-fix-param

    (defthm funparam-to-var/const-sinfo-of-funparam-fix-param
      (equal (funparam-to-var/const-sinfo (funparam-fix param))
             (funparam-to-var/const-sinfo param)))

    Theorem: funparam-to-var/const-sinfo-funparam-equiv-congruence-on-param

    (defthm
         funparam-to-var/const-sinfo-funparam-equiv-congruence-on-param
      (implies (funparam-equiv param param-equiv)
               (equal (funparam-to-var/const-sinfo param)
                      (funparam-to-var/const-sinfo param-equiv)))
      :rule-classes :congruence)