• Top
    • Documentation
    • Books
    • Boolean-reasoning
    • Projects
    • Debugging
    • Community
    • Std
    • Proof-automation
    • Macro-libraries
    • ACL2
    • Interfacing-tools
    • Hardware-verification
    • Software-verification
      • Kestrel-books
        • Crypto-hdwallet
        • Apt
        • Error-checking
        • Fty-extensions
        • Isar
        • Kestrel-utilities
          • Directed-untranslate
          • Include-book-paths
          • Ubi
          • Numbered-names
          • Digits-any-base
          • Context-message-pair
          • With-auto-termination
          • Make-termination-theorem
          • Theorems-about-true-list-lists
          • Checkpoint-list
          • Sublis-expr+
          • Integers-from-to
          • Prove$
          • Defthm<w
          • System-utilities-non-built-in
          • Integer-range-fix
          • Minimize-ruler-extenders
          • Add-const-to-untranslate-preprocess
          • Unsigned-byte-fix
          • Signed-byte-fix
          • Defthmr
          • Paired-names
          • Unsigned-byte-list-fix
          • Signed-byte-list-fix
          • Show-books
          • Skip-in-book
          • Typed-tuplep
          • List-utilities
          • Checkpoint-list-pretty
          • Defunt
          • Keyword-value-list-to-alist
          • Magic-macroexpand
          • Top-command-number-fn
          • Bits-as-digits-in-base-2
          • Show-checkpoint-list
          • Ubyte11s-as-digits-in-base-2048
          • Named-formulas
          • Bytes-as-digits-in-base-256
          • String-utilities
            • Code-char-injectivity-theorem
            • 8bitbytes-hexchars-conversions
            • Code-char-inverses-theorems
            • String-kinds
              • Nonempty-string-listp
                • Nonempty-string-listp-basics
                • Nonempty-stringp
                  • Nonempty-string-listp
                    • Nonempty-string-listp-basics
                • String-codelist-conversions
                • Charlist-codelist-conversions
                • 8bitbytes-hexstrings-conversions
              • Make-keyword-value-list-from-keys-and-value
              • Defmacroq
              • Integer-range-listp
              • Apply-fn-if-known
              • Trans-eval-error-triple
              • Checkpoint-info-list
              • Previous-subsumer-hints
              • Fms!-lst
              • Zp-listp
              • Trans-eval-state
              • Injections
              • Doublets-to-alist
              • Theorems-about-osets
              • Typed-list-utilities
              • Message-utilities
              • Book-runes-alist
              • User-interface
              • Bits/ubyte11s-digit-grouping
              • Bits/bytes-digit-grouping
              • Subsetp-eq-linear
              • Oset-utilities
              • Strict-merge-sort-<
              • Miscellaneous-enumerations
              • Maybe-unquote
              • Thm<w
              • Defthmd<w
              • Io-utilities
            • Set
            • C
            • Soft
            • Bv
            • Imp-language
            • Ethereum
            • Event-macros
            • Java
            • Riscv
            • Bitcoin
            • Zcash
            • Yul
            • ACL2-programming-language
            • Prime-fields
            • Json
            • Syntheto
            • File-io-light
            • Cryptography
            • Number-theory
            • Axe
            • Lists-light
            • Builtins
            • Solidity
            • Helpers
            • Htclient
            • Typed-lists-light
            • Arithmetic-light
          • X86isa
          • Axe
          • Execloader
        • Math
        • Testing-utilities
      • Nonempty-string-listp

      Nonempty-string-listp-basics

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

      Definitions and Theorems

      Theorem: nonempty-string-listp-of-cons

      (defthm nonempty-string-listp-of-cons
        (equal (nonempty-string-listp (cons a x))
               (and (nonempty-stringp a)
                    (nonempty-string-listp x)))
        :rule-classes ((:rewrite)))

      Theorem: nonempty-string-listp-of-cdr-when-nonempty-string-listp

      (defthm nonempty-string-listp-of-cdr-when-nonempty-string-listp
        (implies (nonempty-string-listp (double-rewrite x))
                 (nonempty-string-listp (cdr x)))
        :rule-classes ((:rewrite)))

      Theorem: nonempty-string-listp-when-not-consp

      (defthm nonempty-string-listp-when-not-consp
        (implies (not (consp x))
                 (equal (nonempty-string-listp x)
                        (not x)))
        :rule-classes ((:rewrite)))

      Theorem: nonempty-stringp-of-car-when-nonempty-string-listp

      (defthm nonempty-stringp-of-car-when-nonempty-string-listp
        (implies (nonempty-string-listp x)
                 (iff (nonempty-stringp (car x))
                      (consp x)))
        :rule-classes ((:rewrite)))

      Theorem: true-listp-when-nonempty-string-listp-compound-recognizer

      (defthm true-listp-when-nonempty-string-listp-compound-recognizer
        (implies (nonempty-string-listp x)
                 (true-listp x))
        :rule-classes :compound-recognizer)

      Theorem: nonempty-string-listp-of-list-fix

      (defthm nonempty-string-listp-of-list-fix
        (implies (nonempty-string-listp x)
                 (nonempty-string-listp (list-fix x)))
        :rule-classes ((:rewrite)))

      Theorem: nonempty-string-listp-of-sfix

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

      Theorem: nonempty-string-listp-of-insert

      (defthm nonempty-string-listp-of-insert
        (iff (nonempty-string-listp (set::insert a x))
             (and (nonempty-string-listp (set::sfix x))
                  (nonempty-stringp a)))
        :rule-classes ((:rewrite)))

      Theorem: nonempty-string-listp-of-delete

      (defthm nonempty-string-listp-of-delete
        (implies (nonempty-string-listp x)
                 (nonempty-string-listp (set::delete k x)))
        :rule-classes ((:rewrite)))

      Theorem: nonempty-string-listp-of-mergesort

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

      Theorem: nonempty-string-listp-of-union

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

      Theorem: nonempty-string-listp-of-intersect-1

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

      Theorem: nonempty-string-listp-of-intersect-2

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

      Theorem: nonempty-string-listp-of-difference

      (defthm nonempty-string-listp-of-difference
        (implies (nonempty-string-listp x)
                 (nonempty-string-listp (set::difference x y)))
        :rule-classes ((:rewrite)))

      Theorem: nonempty-string-listp-of-duplicated-members

      (defthm nonempty-string-listp-of-duplicated-members
        (implies (nonempty-string-listp x)
                 (nonempty-string-listp (duplicated-members x)))
        :rule-classes ((:rewrite)))

      Theorem: nonempty-string-listp-of-rev

      (defthm nonempty-string-listp-of-rev
        (equal (nonempty-string-listp (rev x))
               (nonempty-string-listp (list-fix x)))
        :rule-classes ((:rewrite)))

      Theorem: nonempty-string-listp-of-append

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

      Theorem: nonempty-string-listp-of-rcons

      (defthm nonempty-string-listp-of-rcons
        (iff (nonempty-string-listp (rcons a x))
             (and (nonempty-stringp a)
                  (nonempty-string-listp (list-fix x))))
        :rule-classes ((:rewrite)))

      Theorem: nonempty-stringp-when-member-equal-of-nonempty-string-listp

      (defthm nonempty-stringp-when-member-equal-of-nonempty-string-listp
        (and (implies (and (member-equal a x)
                           (nonempty-string-listp x))
                      (nonempty-stringp a))
             (implies (and (nonempty-string-listp x)
                           (member-equal a x))
                      (nonempty-stringp a)))
        :rule-classes ((:rewrite)))

      Theorem: nonempty-string-listp-when-subsetp-equal

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

      Theorem: nonempty-string-listp-of-set-difference-equal

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

      Theorem: nonempty-string-listp-of-intersection-equal-1

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

      Theorem: nonempty-string-listp-of-intersection-equal-2

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

      Theorem: nonempty-string-listp-of-union-equal

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

      Theorem: nonempty-string-listp-of-take

      (defthm nonempty-string-listp-of-take
        (implies (nonempty-string-listp (double-rewrite x))
                 (iff (nonempty-string-listp (take n x))
                      (or (nonempty-stringp nil)
                          (<= (nfix n) (len x)))))
        :rule-classes ((:rewrite)))

      Theorem: nonempty-string-listp-of-repeat

      (defthm nonempty-string-listp-of-repeat
        (iff (nonempty-string-listp (repeat n x))
             (or (nonempty-stringp x) (zp n)))
        :rule-classes ((:rewrite)))

      Theorem: nonempty-stringp-of-nth-when-nonempty-string-listp

      (defthm nonempty-stringp-of-nth-when-nonempty-string-listp
        (implies (nonempty-string-listp x)
                 (iff (nonempty-stringp (nth n x))
                      (< (nfix n) (len x))))
        :rule-classes ((:rewrite)))

      Theorem: nonempty-string-listp-of-update-nth

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

      Theorem: nonempty-string-listp-of-butlast

      (defthm nonempty-string-listp-of-butlast
        (implies (nonempty-string-listp (double-rewrite x))
                 (nonempty-string-listp (butlast x n)))
        :rule-classes ((:rewrite)))

      Theorem: nonempty-string-listp-of-nthcdr

      (defthm nonempty-string-listp-of-nthcdr
        (implies (nonempty-string-listp (double-rewrite x))
                 (nonempty-string-listp (nthcdr n x)))
        :rule-classes ((:rewrite)))

      Theorem: nonempty-string-listp-of-last

      (defthm nonempty-string-listp-of-last
        (implies (nonempty-string-listp (double-rewrite x))
                 (nonempty-string-listp (last x)))
        :rule-classes ((:rewrite)))

      Theorem: nonempty-string-listp-of-remove

      (defthm nonempty-string-listp-of-remove
        (implies (nonempty-string-listp x)
                 (nonempty-string-listp (remove a x)))
        :rule-classes ((:rewrite)))

      Theorem: nonempty-string-listp-of-revappend

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