• 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
              • Compilation
              • Static-semantics
                • Type-checking
                • Static-environments
                • Curve-parameterization
                • Function-recursion
                  • Statements-callees
                  • Expressions-callees
                    • Expression-callees
                    • Struct-init-list-callees
                    • Struct-init-callees
                    • Expression-list-callees
                  • File-function-recursion-okp
                  • Topdecl-list-call-graph
                  • Fundecl-call-graph
                  • Topdecl-call-graph
                  • Expression-callees
                  • Constdecl-callees
                  • Console-callees
                  • Vardecl-callees
                  • Struct-init-list-callees
                  • Struct-init-callees
                  • Statement-list-callees
                  • Expression-list-callees
                  • Branch-list-callees
                  • Statement-callees
                  • Branch-callees
                • 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
  • Function-recursion

Expressions-callees

Functions called by expressions and lists of expressions.

Definitions and Theorems

Function: expression-callees

(defun expression-callees (expr)
  (declare (xargs :guard (expressionp expr)))
  (let ((__function__ 'expression-callees))
    (declare (ignorable __function__))
    (expression-case
         expr
         :literal nil
         :var/const nil
         :assoc-const nil
         :unary (expression-callees expr.arg)
         :binary (union (expression-callees expr.arg1)
                        (expression-callees expr.arg2))
         :cond (union (expression-callees expr.test)
                      (union (expression-callees expr.then)
                             (expression-callees expr.else)))
         :unit nil
         :tuple (expression-list-callees expr.components)
         :tuple-component (expression-callees expr.tuple)
         :struct (struct-init-list-callees expr.components)
         :struct-component (expression-callees expr.struct)
         :internal-call (insert expr.fun
                                (expression-list-callees expr.args))
         :external-call nil
         :static-call nil)))

Function: expression-list-callees

(defun expression-list-callees (exprs)
  (declare (xargs :guard (expression-listp exprs)))
  (let ((__function__ 'expression-list-callees))
    (declare (ignorable __function__))
    (cond ((endp exprs) nil)
          (t (union (expression-callees (car exprs))
                    (expression-list-callees (cdr exprs)))))))

Function: struct-init-callees

(defun struct-init-callees (cinit)
  (declare (xargs :guard (struct-initp cinit)))
  (let ((__function__ 'struct-init-callees))
    (declare (ignorable __function__))
    (expression-callees (struct-init->expr cinit))))

Function: struct-init-list-callees

(defun struct-init-list-callees (cinits)
  (declare (xargs :guard (struct-init-listp cinits)))
  (let ((__function__ 'struct-init-list-callees))
    (declare (ignorable __function__))
    (cond ((endp cinits) nil)
          (t (union (struct-init-callees (car cinits))
                    (struct-init-list-callees (cdr cinits)))))))

Theorem: return-type-of-expression-callees.callees

(defthm return-type-of-expression-callees.callees
  (b* ((?callees (expression-callees expr)))
    (identifier-setp callees))
  :rule-classes :rewrite)

Theorem: return-type-of-expression-list-callees.callees

(defthm return-type-of-expression-list-callees.callees
  (b* ((?callees (expression-list-callees exprs)))
    (identifier-setp callees))
  :rule-classes :rewrite)

Theorem: return-type-of-struct-init-callees.callees

(defthm return-type-of-struct-init-callees.callees
  (b* ((?callees (struct-init-callees cinit)))
    (identifier-setp callees))
  :rule-classes :rewrite)

Theorem: return-type-of-struct-init-list-callees.callees

(defthm return-type-of-struct-init-list-callees.callees
  (b* ((?callees (struct-init-list-callees cinits)))
    (identifier-setp callees))
  :rule-classes :rewrite)

Theorem: expression-callees-of-expression-fix-expr

(defthm expression-callees-of-expression-fix-expr
  (equal (expression-callees (expression-fix expr))
         (expression-callees expr)))

Theorem: expression-list-callees-of-expression-list-fix-exprs

(defthm expression-list-callees-of-expression-list-fix-exprs
  (equal (expression-list-callees (expression-list-fix exprs))
         (expression-list-callees exprs)))

Theorem: struct-init-callees-of-struct-init-fix-cinit

(defthm struct-init-callees-of-struct-init-fix-cinit
  (equal (struct-init-callees (struct-init-fix cinit))
         (struct-init-callees cinit)))

Theorem: struct-init-list-callees-of-struct-init-list-fix-cinits

(defthm struct-init-list-callees-of-struct-init-list-fix-cinits
  (equal (struct-init-list-callees (struct-init-list-fix cinits))
         (struct-init-list-callees cinits)))

Theorem: expression-callees-expression-equiv-congruence-on-expr

(defthm expression-callees-expression-equiv-congruence-on-expr
  (implies (expression-equiv expr expr-equiv)
           (equal (expression-callees expr)
                  (expression-callees expr-equiv)))
  :rule-classes :congruence)

Theorem: expression-list-callees-expression-list-equiv-congruence-on-exprs

(defthm
  expression-list-callees-expression-list-equiv-congruence-on-exprs
  (implies (expression-list-equiv exprs exprs-equiv)
           (equal (expression-list-callees exprs)
                  (expression-list-callees exprs-equiv)))
  :rule-classes :congruence)

Theorem: struct-init-callees-struct-init-equiv-congruence-on-cinit

(defthm struct-init-callees-struct-init-equiv-congruence-on-cinit
  (implies (struct-init-equiv cinit cinit-equiv)
           (equal (struct-init-callees cinit)
                  (struct-init-callees cinit-equiv)))
  :rule-classes :congruence)

Theorem: struct-init-list-callees-struct-init-list-equiv-congruence-on-cinits

(defthm
 struct-init-list-callees-struct-init-list-equiv-congruence-on-cinits
 (implies (struct-init-list-equiv cinits cinits-equiv)
          (equal (struct-init-list-callees cinits)
                 (struct-init-list-callees cinits-equiv)))
 :rule-classes :congruence)

Subtopics

Expression-callees
Functions called by an expression.
Struct-init-list-callees
Functions called by a list of struct component initializers.
Struct-init-callees
Functions called by a struct component initializer.
Expression-list-callees
Functions called by a list of expressions.