aboutsummaryrefslogtreecommitdiff
path: root/pigeonhole.lisp
diff options
context:
space:
mode:
authorMasaya Tojo <masaya@tojo.tokyo>2021-08-14 11:16:29 +0900
committerMasaya Tojo <masaya@tojo.tokyo>2021-08-14 11:16:29 +0900
commit58930a5cb5e011da1ef50a793b48e2ec4856491f (patch)
treec2f9607877a86ffc6a31fd0e06c166a4f94f8532 /pigeonhole.lisp
parentb5d930724b689d122f23d92cd1fa1433009bc619 (diff)
pigeonhole: Update.
Diffstat (limited to 'pigeonhole.lisp')
-rw-r--r--pigeonhole.lisp40
1 files changed, 25 insertions, 15 deletions
diff --git a/pigeonhole.lisp b/pigeonhole.lisp
index 58f44cd..bda4cfc 100644
--- a/pigeonhole.lisp
+++ b/pigeonhole.lisp
@@ -76,12 +76,21 @@
(defthm blood-types-are-duplicates
(implies (and (subsetp x '(A B O AB))
- (< 4 (len x)))
+ (<= 5 (len x)))
(not (no-duplicatesp x)))
:hints (("Goal" :use (:instance pigeonhole-for-list
(s '(A B O AB))
(x x)))))
+(defthm birth-months-are-duplicates
+ (let ((birth-months '(1 2 3 4 5 6 7 8 9 10 11 12)))
+ (implies (and (subsetp x birth-months)
+ (<= 13 (len x)))
+ (not (no-duplicatesp x))))
+ :hints (("Goal" :use (:instance pigeonhole-for-list
+ (s '(1 2 3 4 5 6 7 8 9 10 11 12))
+ (x x)))))
+
(defun nats-below (n)
(if (zp n)
nil
@@ -104,35 +113,36 @@
(all-under-p x n)))
(defthm all-under-p-nats-below
- (implies (natp n)
- (all-under-p (nats-below n) n)))
+ (all-under-p (nats-below n) n))
(defthm all-under-p-not-member
(implies (all-under-p x n)
(not (member n x))))
(defthm not-member-nats-below
- (implies (natp n)
- (not (member n (nats-below n)))))
+ (not (member n (nats-below n))))
(defthm no-duplicatesp-nats-below
(no-duplicatesp (nats-below n)))
(defthm duplicates-nats
- (implies (and (natp n)
+ (implies (and (posp n)
(subsetp x (nats-below n))
- (<= n m)
- (< m (len x)))
+ (< n m)
+ (<= m (len x)))
(not (no-duplicatesp x)))
:hints (("Goal" :use (:instance pigeonhole-for-list
(s (nats-below n))
(x x)))))
+(in-theory (disable duplicates-nats))
(defthm number-of-hairs-are-duplicates-in-gunma
- (let ((gunma-population 2000000)
- (max-number-of-hairs 250000))
- (implies (and (natp n)
- (<= n max-number-of-hairs)
- (subsetp x (nats-below n))
- (<= gunma-population (len x)))
- (not (no-duplicatesp x)))))
+ (let ((max-number-of-hairs 250000)
+ (gunma-population 2000000))
+ (implies (and (subsetp x (nats-below max-number-of-hairs))
+ (= gunma-population (len x)))
+ (not (no-duplicatesp x))))
+ :hints (("Goal" :use (:instance duplicates-nats
+ (n 250000)
+ (m 2000000)
+ (x x)))))