• Top
    • Documentation
    • Books
    • Boolean-reasoning
    • Projects
    • Debugging
    • Std
    • Proof-automation
    • Macro-libraries
    • ACL2
      • Theories
      • Rule-classes
      • Proof-builder
      • Recursion-and-induction
      • Hons-and-memoization
      • Events
      • Parallelism
      • History
      • Programming
      • Operational-semantics
      • Real
      • Start-here
      • Debugging
      • Miscellaneous
        • Term
          • Lambda
          • Pseudo-termp
            • Pseudo-term-fty
              • Pseudo-term-lambda
              • Pseudo-term-call
              • Pseudo-term-fncall
                • Pseudo-term-call->fn
                • Pseudo-term-call->args
                • Pseudo-term-fncall->fn
                • Pseudo-term-fncall->args
              • Pseudo-lambda
              • Pseudo-term-var
              • Pseudo-term-quote
              • Pseudo-term-kind
              • Pseudo-fnsym
              • Pseudo-term-null
              • Pseudo-term-case
              • Pseudo-term-count
              • Def-ev-pseudo-term-fty-support
              • Def-ev-pseudo-term-congruence
              • Pseudo-term-fix
              • Pseudo-var
              • Pseudo-term-list-fix
              • Pseudo-fn
            • Std/typed-lists/pseudo-term-listp
          • Term-order
          • Pseudo-term-listp
          • Guard-holders
          • Termp
          • Termify
          • L<
          • Kwote
          • Kwote-lst
        • Ld
        • Hints
        • Type-set
        • Ordinals
        • Clause
        • ACL2-customization
        • With-prover-step-limit
        • Set-prover-step-limit
        • With-prover-time-limit
        • Local-incompatibility
        • Set-case-split-limitations
        • Subversive-recursions
        • Specious-simplification
        • Defsum
        • Gcl
        • Oracle-timelimit
        • Thm
        • Defopener
        • Case-split-limitations
        • Set-gc-strategy
        • Default-defun-mode
        • Top-level
        • Reader
        • Ttags-seen
        • Adviser
        • Ttree
        • Abort-soft
        • Defsums
        • Gc$
        • With-timeout
        • Coi-debug::fail
        • Expander
        • Gc-strategy
        • Coi-debug::assert
        • Sin-cos
        • Def::doc
        • Syntax
        • Subversive-inductions
      • Output-controls
      • Macros
      • Interfacing-tools
    • Interfacing-tools
    • Hardware-verification
    • Software-verification
    • Math
    • Testing-utilities
  • Pseudo-term-fty

Pseudo-term-fncall

Constructor for function call (:fncall) pseudo-terms.

Signature
(pseudo-term-fncall fn args) → term
Arguments
fn — Guard (pseudo-fnsym-p fn).
args — Guard (pseudo-term-listp args).
Returns
term — Type (pseudo-termp term).

Definitions and Theorems

Function: pseudo-term-fncall

(defun pseudo-term-fncall (fn args)
  (declare (xargs :guard (and (pseudo-fnsym-p fn)
                              (pseudo-term-listp args))))
  (let ((__function__ 'pseudo-term-fncall))
    (declare (ignorable __function__))
    (cons (pseudo-fnsym-fix fn)
          (pseudo-term-list-fix args))))

Theorem: pseudo-termp-of-pseudo-term-fncall

(defthm pseudo-termp-of-pseudo-term-fncall
  (b* ((term (pseudo-term-fncall fn args)))
    (pseudo-termp term))
  :rule-classes :rewrite)

Theorem: kind-of-pseudo-term-fncall

(defthm kind-of-pseudo-term-fncall
  (equal (pseudo-term-kind (pseudo-term-fncall fn args))
         :fncall))

Theorem: pseudo-term-call->args-of-pseudo-term-fncall

(defthm pseudo-term-call->args-of-pseudo-term-fncall
  (equal (pseudo-term-call->args (pseudo-term-fncall fn args))
         (pseudo-term-list-fix args)))

Theorem: pseudo-term-fncall->fn-of-pseudo-term-fncall

(defthm pseudo-term-fncall->fn-of-pseudo-term-fncall
  (equal (pseudo-term-fncall->fn (pseudo-term-fncall fn args))
         (pseudo-fnsym-fix fn)))

Theorem: base-ev-of-pseudo-term-fncall

(defthm base-ev-of-pseudo-term-fncall
  (equal (base-ev (pseudo-term-fncall fn args) a)
         (base-ev (cons (pseudo-fnsym-fix fn) args)
                  a)))

Theorem: base-ev-when-pseudo-term-fncall

(defthm base-ev-when-pseudo-term-fncall
  (implies (and (equal (pseudo-term-kind x) :fncall)
                (equal new-x
                       (cons (pseudo-term-fncall->fn x)
                             (pseudo-term-call->args x)))
                (syntaxp (not (equal new-x x))))
           (equal (base-ev x a)
                  (base-ev new-x a))))

Theorem: pseudo-term-fncall-of-accessors

(defthm pseudo-term-fncall-of-accessors
  (implies (equal (pseudo-term-kind x) :fncall)
           (equal (pseudo-term-fncall (pseudo-term-fncall->fn x)
                                      (pseudo-term-call->args x))
                  (pseudo-term-fix x))))

Theorem: pseudo-term-fncall-of-pseudo-fnsym-fix-fn

(defthm pseudo-term-fncall-of-pseudo-fnsym-fix-fn
  (equal (pseudo-term-fncall (pseudo-fnsym-fix fn)
                             args)
         (pseudo-term-fncall fn args)))

Theorem: pseudo-term-fncall-pseudo-fnsym-equiv-congruence-on-fn

(defthm pseudo-term-fncall-pseudo-fnsym-equiv-congruence-on-fn
  (implies (pseudo-fnsym-equiv fn fn-equiv)
           (equal (pseudo-term-fncall fn args)
                  (pseudo-term-fncall fn-equiv args)))
  :rule-classes :congruence)

Theorem: pseudo-term-fncall-of-pseudo-term-list-fix-args

(defthm pseudo-term-fncall-of-pseudo-term-list-fix-args
  (equal (pseudo-term-fncall fn (pseudo-term-list-fix args))
         (pseudo-term-fncall fn args)))

Theorem: pseudo-term-fncall-pseudo-term-list-equiv-congruence-on-args

(defthm pseudo-term-fncall-pseudo-term-list-equiv-congruence-on-args
  (implies (pseudo-term-list-equiv args args-equiv)
           (equal (pseudo-term-fncall fn args)
                  (pseudo-term-fncall fn args-equiv)))
  :rule-classes :congruence)

Subtopics

Pseudo-term-call->fn
Accessor for the function of a function call or lambda call pseduo-term.
Pseudo-term-call->args
Accessor for the arguments of a lambda or function call pseudo-term.
Pseudo-term-fncall->fn
Access the function symbol of a function call pseudo-term.
Pseudo-term-fncall->args
Alias for pseudo-term-call->args.