• Top
    • Documentation
    • Books
    • Boolean-reasoning
    • Projects
    • Debugging
    • Community
    • Std
      • Std/lists
        • Std/lists/abstract
        • Rev
        • Defsort
        • List-fix
        • Std/lists/nth
        • Hons-remove-duplicates
        • Std/lists/update-nth
        • Set-equiv
        • Duplicity
          • Duplicity-badguy
          • No-duplicatesp-equal-same-by-duplicity
            • Duplicity-badguy
        • Prefixp
        • Std/lists/take
        • Std/lists/intersection$
        • Nats-equiv
        • Repeat
        • Index-of
        • All-equalp
        • Sublistp
        • Std/lists/nthcdr
        • Listpos
        • List-equiv
        • Final-cdr
        • Std/lists/append
        • Std/lists/remove
        • Subseq-list
        • Rcons
        • Std/lists/revappend
        • Std/lists/remove-duplicates-equal
        • Std/lists/reverse
        • Std/lists/last
        • Std/lists/resize-list
        • Flatten
        • Suffixp
        • Std/lists/butlast
        • Std/lists/set-difference
        • Std/lists/len
        • Std/lists/intersectp
        • Std/lists/true-listp
        • Intersectp-witness
        • Subsetp-witness
        • Std/lists/remove1-equal
        • Rest-n
        • First-n
        • Std/lists/union
        • Std/lists/add-to-set
        • Append-without-guard
        • Std/lists/subsetp
        • Std/lists/member
      • Omaps
      • Std/alists
      • Obags
      • Std/util
      • Std/strings
      • Std/osets
      • Std/io
      • Std/basic
      • Std/system
      • 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
  • No-duplicatesp-equal
  • Duplicity

No-duplicatesp-equal-same-by-duplicity

Proof strategy: show that a list satisfies no-duplicatesp-equal because it has no element whose duplicity is over 1.

This is often a good way to prove no-duplicatesp. This is a basic pick-a-point style theorem that you can (manually) functionally instantiate.

Definitions and Theorems

Theorem: duplicity-constraint

(defthm duplicity-constraint
  (implies (duplicity-hyp)
           (equal (duplicity a (duplicity-lhs))
                  (duplicity a (duplicity-rhs)))))

Theorem: no-duplicatesp-equal-same-by-duplicity

(defthm no-duplicatesp-equal-same-by-duplicity
  (implies (duplicity-hyp)
           (equal (no-duplicatesp-equal (duplicity-lhs))
                  (no-duplicatesp-equal (duplicity-rhs)))))

Subtopics

Duplicity-badguy
(duplicity-badguy x) finds an element that occurs multiple times in the list x, if one exists.