• 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-lambda
                • Pseudo-lambda-fix
                • Pseudo-lambda->formals
                • Pseudo-lambda->body
                • Pseudo-lambda-p
              • 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-lambda

Type of, and constructor for, a lambda function, used in the FTY support for pseudo-terms.

Signature
(pseudo-lambda formals body) → lambda
Arguments
formals — Guard (symbol-listp formals).
body — Guard (pseudo-termp body).
Returns
lambda — Type (pseudo-lambda-p lambda).

Definitions and Theorems

Function: pseudo-lambda

(defun pseudo-lambda (formals body)
  (declare (xargs :guard (and (symbol-listp formals)
                              (pseudo-termp body))))
  (let ((__function__ 'pseudo-lambda))
    (declare (ignorable __function__))
    (mbe :logic (list 'lambda
                      (replace-non-symbols-with-nil formals)
                      (pseudo-term-fix body))
         :exec (list 'lambda formals body))))

Theorem: pseudo-lambda-p-of-pseudo-lambda

(defthm pseudo-lambda-p-of-pseudo-lambda
 (b* ((lambda (pseudo-lambda formals body)))
   (pseudo-lambda-p lambda))
 :rule-classes
 (:rewrite
     (:type-prescription :typed-term (pseudo-lambda formals body))))

Theorem: pseudo-lambda->formals-of-pseudo-lambda

(defthm pseudo-lambda->formals-of-pseudo-lambda
  (equal (pseudo-lambda->formals (pseudo-lambda formals body))
         (replace-non-symbols-with-nil formals)))

Theorem: pseudo-lambda->body-of-pseudo-lambda

(defthm pseudo-lambda->body-of-pseudo-lambda
  (equal (pseudo-lambda->body (pseudo-lambda body body))
         (pseudo-term-fix body)))

Theorem: pseudo-lambda-of-accessors

(defthm pseudo-lambda-of-accessors
  (equal (pseudo-lambda (pseudo-lambda->formals x)
                        (pseudo-lambda->body x))
         (pseudo-lambda-fix x)))

Theorem: pseudo-lambda-of-pseudo-term-fix-body

(defthm pseudo-lambda-of-pseudo-term-fix-body
  (equal (pseudo-lambda formals (pseudo-term-fix body))
         (pseudo-lambda formals body)))

Theorem: pseudo-lambda-pseudo-term-equiv-congruence-on-body

(defthm pseudo-lambda-pseudo-term-equiv-congruence-on-body
  (implies (pseudo-term-equiv body body-equiv)
           (equal (pseudo-lambda formals body)
                  (pseudo-lambda formals body-equiv)))
  :rule-classes :congruence)

Subtopics

Pseudo-lambda-fix
Pseudo-lambda->formals
Pseudo-lambda->body
Pseudo-lambda-p