• Top
    • Documentation
    • Books
    • Boolean-reasoning
    • Projects
    • Debugging
    • Community
    • Std
      • Std/lists
      • Omaps
      • Std/alists
      • Obags
      • Std/util
      • Std/strings
      • Std/osets
      • Std/io
      • Std/basic
      • Std/system
        • Fresh-logical-name-with-$s-suffix
        • Irrelevant-formals-info
        • Std/system/function-queries
        • Std/system/term-queries
        • Std/system/term-transformations
        • Std/system/enhanced-utilities
        • Install-not-normalized-event
        • Install-not-normalized-event-lst
        • Std/system/term-function-recognizers
          • Pseudo-termfnp
          • Pseudo-lambdap
          • Lambdap
            • Lambda-listp
              • Lambda-listp-basics
            • Termfnp
            • Pseudo-lambda-listp
            • Pseudo-termfn-listp
            • Termfn-listp
            • Lambda-listp
              • Lambda-listp-basics
            • Genvar$
            • Std/system/event-name-queries
            • Pseudo-tests-and-call-listp
            • Maybe-pseudo-event-formp
            • Add-suffix-to-fn-or-const
            • Chk-irrelevant-formals-ok
            • Table-alist+
            • Pseudo-tests-and-callp
            • Add-suffix-to-fn-or-const-lst
            • Known-packages+
            • Add-suffix-to-fn-lst
            • Unquote-term
            • Event-landmark-names
            • Add-suffix-lst
            • Std/system/theorem-queries
            • Unquote-term-list
            • Std/system/macro-queries
            • Pseudo-command-landmark-listp
            • Install-not-normalized$
            • Pseudo-event-landmark-listp
            • Known-packages
            • Std/system/partition-rest-and-keyword-args
            • Rune-enabledp
            • Rune-disabledp
            • Included-books
            • Std/system/pseudo-event-formp
            • Std/system/plist-worldp-with-formals
            • Std/system/w
            • Std/system/geprops
            • Std/system/arglistp
            • Std/system/constant-queries
          • Std/typed-lists
          • Std/bitsets
          • Std/testing
          • Std/typed-alists
          • Std/stobjs
        • Proof-automation
        • Macro-libraries
        • ACL2
        • Interfacing-tools
        • Hardware-verification
        • Software-verification
        • Math
        • Testing-utilities
      • Lambda-listp

      Lambda-listp-basics

      Basic theorems about lambda-listp, generated by std::deflist.

      Definitions and Theorems

      Theorem: lambda-listp-of-cons

      (defthm lambda-listp-of-cons
        (equal (lambda-listp (cons a x) wrld)
               (and (lambdap a wrld)
                    (lambda-listp x wrld)))
        :rule-classes ((:rewrite)))

      Theorem: lambda-listp-of-cdr-when-lambda-listp

      (defthm lambda-listp-of-cdr-when-lambda-listp
        (implies (lambda-listp (double-rewrite x) wrld)
                 (lambda-listp (cdr x) wrld))
        :rule-classes ((:rewrite)))

      Theorem: lambda-listp-when-not-consp

      (defthm lambda-listp-when-not-consp
        (implies (not (consp x))
                 (equal (lambda-listp x wrld) (not x)))
        :rule-classes ((:rewrite)))

      Theorem: lambdap-of-car-when-lambda-listp

      (defthm lambdap-of-car-when-lambda-listp
        (implies (lambda-listp x wrld)
                 (iff (lambdap (car x) wrld) (consp x)))
        :rule-classes ((:rewrite)))

      Theorem: true-listp-when-lambda-listp

      (defthm true-listp-when-lambda-listp
        (implies (lambda-listp x wrld)
                 (true-listp x))
        :rule-classes ((:rewrite)))

      Theorem: lambda-listp-of-list-fix

      (defthm lambda-listp-of-list-fix
        (implies (lambda-listp x wrld)
                 (lambda-listp (list-fix x) wrld))
        :rule-classes ((:rewrite)))

      Theorem: lambda-listp-of-sfix

      (defthm lambda-listp-of-sfix
        (iff (lambda-listp (set::sfix x) wrld)
             (or (lambda-listp x wrld)
                 (not (set::setp x))))
        :rule-classes ((:rewrite)))

      Theorem: lambda-listp-of-insert

      (defthm lambda-listp-of-insert
        (iff (lambda-listp (set::insert a x) wrld)
             (and (lambda-listp (set::sfix x) wrld)
                  (lambdap a wrld)))
        :rule-classes ((:rewrite)))

      Theorem: lambda-listp-of-delete

      (defthm lambda-listp-of-delete
        (implies (lambda-listp x wrld)
                 (lambda-listp (set::delete k x) wrld))
        :rule-classes ((:rewrite)))

      Theorem: lambda-listp-of-mergesort

      (defthm lambda-listp-of-mergesort
        (iff (lambda-listp (set::mergesort x) wrld)
             (lambda-listp (list-fix x) wrld))
        :rule-classes ((:rewrite)))

      Theorem: lambda-listp-of-union

      (defthm lambda-listp-of-union
        (iff (lambda-listp (set::union x y) wrld)
             (and (lambda-listp (set::sfix x) wrld)
                  (lambda-listp (set::sfix y) wrld)))
        :rule-classes ((:rewrite)))

      Theorem: lambda-listp-of-intersect-1

      (defthm lambda-listp-of-intersect-1
        (implies (lambda-listp x wrld)
                 (lambda-listp (set::intersect x y)
                               wrld))
        :rule-classes ((:rewrite)))

      Theorem: lambda-listp-of-intersect-2

      (defthm lambda-listp-of-intersect-2
        (implies (lambda-listp y wrld)
                 (lambda-listp (set::intersect x y)
                               wrld))
        :rule-classes ((:rewrite)))

      Theorem: lambda-listp-of-difference

      (defthm lambda-listp-of-difference
        (implies (lambda-listp x wrld)
                 (lambda-listp (set::difference x y)
                               wrld))
        :rule-classes ((:rewrite)))

      Theorem: lambda-listp-of-duplicated-members

      (defthm lambda-listp-of-duplicated-members
        (implies (lambda-listp x wrld)
                 (lambda-listp (duplicated-members x)
                               wrld))
        :rule-classes ((:rewrite)))

      Theorem: lambda-listp-of-rev

      (defthm lambda-listp-of-rev
        (equal (lambda-listp (rev x) wrld)
               (lambda-listp (list-fix x) wrld))
        :rule-classes ((:rewrite)))

      Theorem: lambda-listp-of-append

      (defthm lambda-listp-of-append
        (equal (lambda-listp (append a b) wrld)
               (and (lambda-listp (list-fix a) wrld)
                    (lambda-listp b wrld)))
        :rule-classes ((:rewrite)))

      Theorem: lambda-listp-of-rcons

      (defthm lambda-listp-of-rcons
        (iff (lambda-listp (rcons a x) wrld)
             (and (lambdap a wrld)
                  (lambda-listp (list-fix x) wrld)))
        :rule-classes ((:rewrite)))

      Theorem: lambdap-when-member-equal-of-lambda-listp

      (defthm lambdap-when-member-equal-of-lambda-listp
        (and (implies (and (member-equal a x)
                           (lambda-listp x wrld))
                      (lambdap a wrld))
             (implies (and (lambda-listp x wrld)
                           (member-equal a x))
                      (lambdap a wrld)))
        :rule-classes ((:rewrite)))

      Theorem: lambda-listp-when-subsetp-equal

      (defthm lambda-listp-when-subsetp-equal
        (and (implies (and (subsetp-equal x y)
                           (lambda-listp y wrld))
                      (equal (lambda-listp x wrld)
                             (true-listp x)))
             (implies (and (lambda-listp y wrld)
                           (subsetp-equal x y))
                      (equal (lambda-listp x wrld)
                             (true-listp x))))
        :rule-classes ((:rewrite)))

      Theorem: lambda-listp-of-set-difference-equal

      (defthm lambda-listp-of-set-difference-equal
        (implies (lambda-listp x wrld)
                 (lambda-listp (set-difference-equal x y)
                               wrld))
        :rule-classes ((:rewrite)))

      Theorem: lambda-listp-of-intersection-equal-1

      (defthm lambda-listp-of-intersection-equal-1
        (implies (lambda-listp (double-rewrite x) wrld)
                 (lambda-listp (intersection-equal x y)
                               wrld))
        :rule-classes ((:rewrite)))

      Theorem: lambda-listp-of-intersection-equal-2

      (defthm lambda-listp-of-intersection-equal-2
        (implies (lambda-listp (double-rewrite y) wrld)
                 (lambda-listp (intersection-equal x y)
                               wrld))
        :rule-classes ((:rewrite)))

      Theorem: lambda-listp-of-union-equal

      (defthm lambda-listp-of-union-equal
        (equal (lambda-listp (union-equal x y) wrld)
               (and (lambda-listp (list-fix x) wrld)
                    (lambda-listp (double-rewrite y) wrld)))
        :rule-classes ((:rewrite)))

      Theorem: lambda-listp-of-take

      (defthm lambda-listp-of-take
        (implies (lambda-listp (double-rewrite x) wrld)
                 (iff (lambda-listp (take n x) wrld)
                      (or (lambdap nil wrld)
                          (<= (nfix n) (len x)))))
        :rule-classes ((:rewrite)))

      Theorem: lambda-listp-of-repeat

      (defthm lambda-listp-of-repeat
        (iff (lambda-listp (repeat n x) wrld)
             (or (lambdap x wrld) (zp n)))
        :rule-classes ((:rewrite)))

      Theorem: lambdap-of-nth-when-lambda-listp

      (defthm lambdap-of-nth-when-lambda-listp
        (implies (lambda-listp x wrld)
                 (iff (lambdap (nth n x) wrld)
                      (< (nfix n) (len x))))
        :rule-classes ((:rewrite)))

      Theorem: lambda-listp-of-update-nth

      (defthm lambda-listp-of-update-nth
        (implies (lambda-listp (double-rewrite x) wrld)
                 (iff (lambda-listp (update-nth n y x) wrld)
                      (and (lambdap y wrld)
                           (or (<= (nfix n) (len x))
                               (lambdap nil wrld)))))
        :rule-classes ((:rewrite)))

      Theorem: lambda-listp-of-butlast

      (defthm lambda-listp-of-butlast
        (implies (lambda-listp (double-rewrite x) wrld)
                 (lambda-listp (butlast x n) wrld))
        :rule-classes ((:rewrite)))

      Theorem: lambda-listp-of-nthcdr

      (defthm lambda-listp-of-nthcdr
        (implies (lambda-listp (double-rewrite x) wrld)
                 (lambda-listp (nthcdr n x) wrld))
        :rule-classes ((:rewrite)))

      Theorem: lambda-listp-of-last

      (defthm lambda-listp-of-last
        (implies (lambda-listp (double-rewrite x) wrld)
                 (lambda-listp (last x) wrld))
        :rule-classes ((:rewrite)))

      Theorem: lambda-listp-of-remove

      (defthm lambda-listp-of-remove
        (implies (lambda-listp x wrld)
                 (lambda-listp (remove a x) wrld))
        :rule-classes ((:rewrite)))

      Theorem: lambda-listp-of-revappend

      (defthm lambda-listp-of-revappend
        (equal (lambda-listp (revappend x y) wrld)
               (and (lambda-listp (list-fix x) wrld)
                    (lambda-listp y wrld)))
        :rule-classes ((:rewrite)))