Filtering...

how-to-prove-thms

books/misc/how-to-prove-thms
other
(in-package "ACL2")
dupfunction
(defun dup
  (x)
  (if (consp x)
    (cons (car x) (cons (car x) (dup (cdr x))))
    nil))
dup-examplestheorem
(defthm dup-examples
  (and (equal (dup '(1 2 3)) '(1 1 2 2 3 3))
    (equal (dup '(hello)) '(hello hello))
    (equal (dup '(a b c . d)) '(a a b b c c)))
  :rule-classes nil)
appfunction
(defun app
  (x y)
  (if (consp x)
    (cons (car x) (app (cdr x) y))
    y))
app-examplestheorem
(defthm app-examples
  (and (equal (app '(1 2 3) '(4 5 6)) '(1 2 3 4 5 6))
    (equal (app '(3 2 1) '(0)) '(3 2 1 0))
    (equal (app '(a b c . d) '(e f)) '(a b c e f)))
  :rule-classes nil)
mempfunction
(defun memp
  (e x)
  (if (consp x)
    (if (equal e (car x))
      t
      (memp e (cdr x)))
    nil))
memp-examplestheorem
(defthm memp-examples
  (and (memp 1 '(0 1 2 3))
    (not (memp 5 '(0 1 2 3)))
    (not (memp 2 '((0) (1) (2))))
    (memp '(2) '((0) (1) (2)))
    (not (memp 2 '(0 1 . 2))))
  :rule-classes nil)
revfunction
(defun rev
  (x)
  (if (consp x)
    (app (rev (cdr x)) (cons (car x) nil))
    nil))
rev-examplestheorem
(defthm rev-examples
  (and (equal (rev '(1 2 3)) '(3 2 1))
    (equal (rev '(ok)) '(ok))
    (equal (rev '(1 2 3 . end)) '(3 2 1)))
  :rule-classes nil)
rev1function
(defun rev1
  (x a)
  (if (consp x)
    (rev1 (cdr x) (cons (car x) a))
    a))
rev1-examplestheorem
(defthm rev1-examples
  (and (equal (rev1 '(1 2 3) nil) '(3 2 1))
    (equal (rev1 '(ok) nil) '(ok))
    (equal (rev1 '(1 2 3 . end) nil) '(3 2 1))
    (equal (rev1 '(a b c) '(1 2 3)) '(c b a 1 2 3)))
  :rule-classes nil)
properpfunction
(defun properp
  (x)
  (if (consp x)
    (properp (cdr x))
    (equal x nil)))
properp-examplestheorem
(defthm properp-examples
  (and (properp '(1 2 3))
    (not (properp '(1 2 3 . end)))
    (properp '((a . 1) (b . 2) (c . 3)))
    (properp nil)
    (not (properp 7)))
  :rule-classes nil)
mapnilfunction
(defun mapnil
  (x)
  (if (consp x)
    (cons nil (mapnil (cdr x)))
    nil))
mapnil-examplestheorem
(defthm mapnil-examples
  (and (equal (mapnil '(1 2 3)) '(nil nil nil))
    (equal (mapnil '(hello)) '(nil)))
  :rule-classes nil)
swaptreefunction
(defun swaptree
  (x)
  (if (consp x)
    (cons (swaptree (cdr x)) (swaptree (car x)))
    x))
swaptree-examplestheorem
(defthm swaptree-examples
  (and (equal (swaptree '((a . b) c . d)) '((d . c) b . a))
    (equal (swaptree '(a b c d)) '((((nil . d) . c) . b) . a)))
  :rule-classes nil)
ziplistsfunction
(defun ziplists
  (x y)
  (if (consp x)
    (cons (cons (car x) (car y)) (ziplists (cdr x) (cdr y)))
    nil))
ziplists-examplestheorem
(defthm ziplists-examples
  (and (equal (ziplists '(a b c) '(1 2 3 4))
      '((a . 1) (b . 2) (c . 3)))
    (equal (ziplists '(a b c) '(1 2)) '((a . 1) (b . 2) (c))))
  :rule-classes nil)
lookupfunction
(defun lookup
  (x a)
  (if (consp a)
    (if (equal x (car (car a)))
      (cdr (car a))
      (lookup x (cdr a)))
    nil))
lookup-examplestheorem
(defthm lookup-examples
  (and (equal (lookup 'b '((a . 1) (b . 2) (c . 3) (a . 4))) 2)
    (equal (lookup 'a '((a . 1) (b . 2) (c . 3) (a . 4))) 1)
    (equal (lookup 'x '((a . 1) (b . 2) (c . 3) (a . 4))) nil)
    (equal (lookup 'j '((i . 1) (j) (k . 123))) nil))
  :rule-classes nil)
foundpfunction
(defun foundp
  (x a)
  (if (consp a)
    (if (equal x (car (car a)))
      t
      (foundp x (cdr a)))
    nil))
foundp-examplestheorem
(defthm foundp-examples
  (and (equal (foundp 'b '((a . 1) (b . 2) (c . 3) (a . 4))) t)
    (equal (foundp 'a '((a . 1) (b . 2) (c . 3) (a . 4))) t)
    (equal (foundp 'x '((a . 1) (b . 2) (c . 3) (a . 4))) nil)
    (equal (foundp 'j '((i . 1) (j) (k . 123))) t))
  :rule-classes nil)
subpfunction
(defun subp
  (x y)
  (if (consp x)
    (if (memp (car x) y)
      (subp (cdr x) y)
      nil)
    t))
subp-examplestheorem
(defthm subp-examples
  (and (subp '(a b b a) '(a b))
    (subp '(a b c) '(e d c b a))
    (not (subp '(a b) '(a c a d a f))))
  :rule-classes nil)
intfunction
(defun int
  (x y)
  (if (consp x)
    (if (memp (car x) y)
      (cons (car x) (int (cdr x) y))
      (int (cdr x) y))
    nil))
int-examplestheorem
(defthm int-examples
  (and (equal (int '(a b c) '(a b a d)) '(a b))
    (equal (int '(a b c) '(x y z)) nil)
    (equal (int '(a a b b) '(a b c)) '(a a b b)))
  :rule-classes nil)
memfunction
(defun mem
  (e x)
  (if (consp x)
    (if (equal e (car x))
      x
      (mem e (cdr x)))
    nil))
lonesomepfunction
(defun lonesomep
  (e lst)
  (if (mem e lst)
    (not (mem e (cdr (mem e lst))))
    nil))
collect-lonesomepfunction
(defun collect-lonesomep
  (a b)
  (if (consp a)
    (if (lonesomep (car a) b)
      (cons (car a) (collect-lonesomep (cdr a) b))
      (collect-lonesomep (cdr a) b))
    nil))
leavesfunction
(defun leaves
  (x)
  (if (consp x)
    (app (leaves (car x)) (leaves (cdr x)))
    (cons x nil)))
lonesomesfunction
(defun lonesomes
  (x)
  (collect-lonesomep (leaves x) (leaves x)))
lonesomes-examplestheorem
(defthm lonesomes-examples
  (and (equal (lonesomes '((a . b) c . a)) '(b c))
    (equal (lonesomes '((a . a) . a)) nil)
    (equal (lonesomes '(((a . b) b . c) (x . y) c . x)) '(a y)))
  :rule-classes nil)
treecopyfunction
(defun treecopy
  (x)
  (if (consp x)
    (cons (treecopy (car x)) (treecopy (cdr x)))
    x))
treecopy-is-idtheorem
(defthm treecopy-is-id (equal (treecopy x) x))
associativity-of-apptheorem
(defthm associativity-of-app
  (equal (app (app a b) c) (app a (app b c))))
dup-apptheorem
(defthm dup-app
  (equal (dup (app a b)) (app (dup a) (dup b))))
dup-mapniltheorem
(defthm dup-mapnil
  (equal (dup (mapnil a)) (mapnil (dup a))))
properp-app-niltheorem
(defthm properp-app-nil (properp (app a nil)))
swaptree-swaptreetheorem
(defthm swaptree-swaptree (equal (swaptree (swaptree x)) x))
memp-apptheorem
(defthm memp-app
  (equal (memp e (app a b)) (or (memp e a) (memp e b))))
problem-6-1theorem
(defthm problem-6-1
  (equal (memp e (app a a)) (memp e a))
  :rule-classes nil)
properp-apptheorem
(defthm properp-app (equal (properp (app a b)) (properp b)))
properp-revtheorem
(defthm properp-rev (properp (rev x)))
app-right-identitytheorem
(defthm app-right-identity
  (implies (properp x) (equal (app x nil) x)))
rev-apptheorem
(defthm rev-app
  (equal (rev (app a b)) (app (rev b) (rev a))))
rev-revtheorem
(defthm rev-rev
  (implies (properp z) (equal (rev (rev z)) z)))
triple-revtheorem
(defthm triple-rev (equal (rev (rev (rev a))) (rev a)))
memp-revtheorem
(defthm memp-rev (equal (memp e (rev x)) (memp e x)))
memp-duptheorem
(defthm memp-dup (equal (memp e (dup x)) (memp e x)))
complicated-memp-theoremtheorem
(defthm complicated-memp-theorem
  (implies (memp e c) (memp e (rev (dup (dup c)))))
  :rule-classes nil)
leavesfunction
(defun leaves
  (x)
  (if (consp x)
    (app (leaves (car x)) (leaves (cdr x)))
    (cons x nil)))
leaves-swaptreetheorem
(defthm leaves-swaptree
  (equal (leaves (swaptree x)) (rev (leaves x))))
subp-cdrtheorem
(defthm subp-cdr (implies (subp x (cdr y)) (subp x y)))
subp-reflexivetheorem
(defthm subp-reflexive (subp x x))
subp-inttheorem
(defthm subp-int
  (implies (and (properp x) (subp x y)) (equal (int x y) x)))
int-x-xtheorem
(defthm int-x-x (implies (properp x) (equal (int x x) x)))
memp-subptheorem
(defthm memp-subp
  (implies (and (subp y z) (memp e y)) (memp e z)))
subp-transitivetheorem
(defthm subp-transitive
  (implies (and (subp x y) (subp y z)) (subp x z)))
subp-app-1theorem
(defthm subp-app-1
  (equal (subp (app a b) c) (and (subp a c) (subp b c))))
subp-app-a-atheorem
(defthm subp-app-a-a (subp (app a a) a))
seteqpfunction
(defun seteqp (x y) (and (subp x y) (subp y x)))
subp-app-2theorem
(defthm subp-app-2 (implies (subp a b) (subp a (app b c))))
seteq-revtheorem
(defthm seteq-rev (seteqp (rev a) a))
subp-app-3theorem
(defthm subp-app-3 (implies (subp a c) (subp a (app b c))))
app-commutativetheorem
(defthm app-commutative (seteqp (app a b) (app b a)))
list-of-atomspfunction
(defun list-of-atomsp
  (x)
  (if (consp x)
    (and (not (consp (car x))) (list-of-atomsp (cdr x)))
    t))
list-of-atomsp-apptheorem
(defthm list-of-atomsp-app
  (equal (list-of-atomsp (app a b))
    (and (list-of-atomsp a) (list-of-atomsp b))))
list-of-atomsp-leavestheorem
(defthm list-of-atomsp-leaves (list-of-atomsp (leaves x)))
leaves-of-list-of-atomstheorem
(defthm leaves-of-list-of-atoms
  (implies (and (properp x) (list-of-atomsp x))
    (equal (leaves x) (app x '(nil)))))
properp-leavestheorem
(defthm properp-leaves (properp (leaves x)))
leaves-leavestheorem
(defthm leaves-leaves
  (equal (leaves (leaves x)) (app (leaves x) '(nil))))
lemma8-10atheorem
(defthm lemma8-10a
  (implies (not (mem e leaves))
    (not (memp e (collect-lonesomep lst leaves)))))
lemma8-10btheorem
(defthm lemma8-10b
  (implies (mem e (cdr (mem e leaves)))
    (not (memp e (collect-lonesomep lst leaves)))))
memp-collect-lonesomeptheorem
(defthm memp-collect-lonesomep
  (iff (memp e (collect-lonesomep lst leaves))
    (and (memp e lst) (lonesomep e leaves))))
memp-lonesomestheorem
(defthm memp-lonesomes
  (iff (memp e (lonesomes x))
    (and (memp e (leaves x)) (lonesomep e (leaves x)))))
numpfunction
(defun nump
  (x)
  (if (consp x)
    (and (equal (car x) nil) (nump (cdr x)))
    (equal x nil)))
addfunction
(defun add
  (x y)
  (if (consp x)
    (cons nil (add (cdr x) y))
    (mapnil y)))
multfunction
(defun mult
  (x y)
  (if (consp x)
    (add y (mult (cdr x) y))
    nil))
raisefunction
(defun raise
  (x y)
  (if (consp y)
    (mult x (raise x (cdr y)))
    '(nil)))
nump-mapniltheorem
(defthm nump-mapnil (nump (mapnil x)))
nump-addtheorem
(defthm nump-add (nump (add x y)))
nump-multtheorem
(defthm nump-mult (nump (mult x y)))
nump-raisetheorem
(defthm nump-raise (nump (raise x y)))
add-identitytheorem
(defthm add-identity
  (implies (nump x) (equal (add x nil) x)))
raise-mapniltheorem
(defthm raise-mapnil
  (equal (raise i (mapnil j)) (raise i j)))
mult-mapnil-1theorem
(defthm mult-mapnil-1
  (equal (mult (mapnil i) j) (mult i j)))
mapnil-numptheorem
(defthm mapnil-nump (implies (nump x) (equal (mapnil x) x)))
add-mapnil-1theorem
(defthm add-mapnil-1 (equal (add (mapnil i) j) (add i j)))
add-associativitytheorem
(defthm add-associativity
  (equal (add (add a b) c) (add a (add b c))))
mult-add-distributivity-2theorem
(defthm mult-add-distributivity-2
  (equal (mult (add i j) k) (add (mult i k) (mult j k))))
mult-associativetheorem
(defthm mult-associative
  (equal (mult (mult a b) c) (mult a (mult b c))))
raise-addtheorem
(defthm raise-add
  (equal (raise b (add i j)) (mult (raise b i) (raise b j))))
add-identity-2theorem
(defthm add-identity-2
  (implies (not (consp j)) (equal (add i j) (mapnil i))))
add-constheorem
(defthm add-cons
  (equal (add i (cons x j)) (cons nil (add i j))))
add-commutativitytheorem
(defthm add-commutativity (equal (add i j) (add j i)))
add-mapnil-2theorem
(defthm add-mapnil-2 (equal (add i (mapnil j)) (add i j)))
add-commutativity2theorem
(defthm add-commutativity2
  (equal (add i (add j k)) (add j (add i k))))
mult-zerotheorem
(defthm mult-zero
  (implies (not (consp j)) (equal (mult i j) nil)))
mult-constheorem
(defthm mult-cons
  (equal (mult i (cons x j)) (add i (mult i j))))
mult-commutativitytheorem
(defthm mult-commutativity (equal (mult i j) (mult j i)))
mult-mapnil-2theorem
(defthm mult-mapnil-2
  (equal (mult i (mapnil j)) (mult i j)))
mult-add-distributivity-1theorem
(defthm mult-add-distributivity-1
  (equal (mult k (add i j)) (add (mult k i) (mult k j))))
mult-commutativity2theorem
(defthm mult-commutativity2
  (equal (mult i (mult j k)) (mult j (mult i k))))
rev1-is-app-revtheorem
(defthm rev1-is-app-rev (equal (rev1 x a) (app (rev x) a)))
rev1-nil-is-revtheorem
(defthm rev1-nil-is-rev (equal (rev1 x nil) (rev x)))
factfunction
(defun fact
  (n)
  (if (consp n)
    (mult n (fact (cdr n)))
    '(nil)))
fact1function
(defun fact1
  (n a)
  (if (consp n)
    (fact1 (cdr n) (mult n a))
    a))
fact1-is-fact-generalizedtheorem
(defthm fact1-is-fact-generalized
  (implies (nump a) (equal (fact1 n a) (mult (fact n) a))))
nump-facttheorem
(defthm nump-fact (nump (fact n)))
fact1-is-facttheorem
(defthm fact1-is-fact (equal (fact1 n '(nil)) (fact n)))
mc-flattenfunction
(defun mc-flatten
  (x a)
  (if (consp x)
    (mc-flatten (car x) (mc-flatten (cdr x) a))
    (cons x a)))
mc-flatten-is-leaves-generalizedtheorem
(defthm mc-flatten-is-leaves-generalized
  (equal (mc-flatten x a) (app (leaves x) a)))
properp-leavestheorem
(defthm properp-leaves (properp (leaves x)))
mc-flatten-is-leavestheorem
(defthm mc-flatten-is-leaves
  (equal (mc-flatten x nil) (leaves x)))