Filtering...

set-difference

books/std/lists/set-difference

Included Books

other
(in-package "ACL2")
include-book
(include-book "xdoc/top" :dir :system)
local
(local (include-book "sets"))
local
(local (include-book "intersectp"))
local
(local (in-theory (enable set-difference-equal)))
other
(defsection std/lists/set-difference
  :parents (std/lists set-difference$)
  :short "Lemmas about @(see set-difference$) available in the @(see std/lists)
library."
  (defthm set-difference-equal-when-atom
    (implies (atom x) (equal (set-difference-equal x y) nil)))
  (defthm set-difference-equal-of-cons
    (equal (set-difference-equal (cons a x) y)
      (if (member-equal a y)
        (set-difference-equal x y)
        (cons a (set-difference-equal x y)))))
  (defthm set-difference-equal-when-subsetp-equal
    (implies (subsetp-equal x y)
      (equal (set-difference-equal x y) nil)))
  (defthm set-difference-equal-of-self
    (equal (set-difference-equal x x) nil))
  (defthm empty-intersect-with-difference-of-self
    (not (intersectp-equal a (set-difference-equal b a))))
  (defthm no-duplicatesp-of-set-difference-equal
    (implies (no-duplicatesp-equal l1)
      (no-duplicatesp-equal (set-difference-equal l1 l2)))))