aboutsummaryrefslogtreecommitdiff
path: root/consecutive-fibonacci-numbers-are-coprime.lisp
diff options
context:
space:
mode:
authorMasaya Tojo <masaya@tojo.tokyo>2021-08-15 01:37:37 +0900
committerMasaya Tojo <masaya@tojo.tokyo>2021-08-15 01:37:37 +0900
commit39e473ca059c50cd0f4e4606ddd78969eaed46be (patch)
treec561f65b4cbba99e87ccc2060a6f943adb4d225a /consecutive-fibonacci-numbers-are-coprime.lisp
parentf39b321a0072a1e458d096b7feaddb34fa7a22e2 (diff)
consecutive-fibonacci-numbers-are-coprime: Gcd$ is common-divisor.
Diffstat (limited to 'consecutive-fibonacci-numbers-are-coprime.lisp')
-rw-r--r--consecutive-fibonacci-numbers-are-coprime.lisp23
1 files changed, 23 insertions, 0 deletions
diff --git a/consecutive-fibonacci-numbers-are-coprime.lisp b/consecutive-fibonacci-numbers-are-coprime.lisp
index 1700e8e..5b807a4 100644
--- a/consecutive-fibonacci-numbers-are-coprime.lisp
+++ b/consecutive-fibonacci-numbers-are-coprime.lisp
@@ -31,6 +31,29 @@
(posp n))
(posp (gcd$ m n))))
+;; c が n と m の公約数であるかを調べる述語
+(defmacro common-divisor-p (c n m)
+ `(and (integerp (* ,n (/ ,c)))
+ (integerp (* ,m (/ ,c)))))
+
+;; gcd-is-common-divisor の補助定理
+(defthm gcd-is-common-divisor-lemma-1
+ (implies (common-divisor-p c (+ (- a) b) a)
+ (integerp (* b (/ c))))
+ :rule-classes ((:rewrite :match-free :all)))
+
+;; gcd-is-common-divisor の補助定理
+(defthm gcd-is-common-divisor-lemma-2
+ (implies (common-divisor-p c (+ a (- b)) b)
+ (integerp (* a (/ c))))
+ :rule-classes ((:rewrite :match-free :all)))
+
+;; (gcd$ n m) は n と m の公約数である
+(defthm gcd-is-common-divisor
+ (implies (and (natp n)
+ (natp m))
+ (common-divisor-p (gcd$ m n) n m)))
+
;; n と m が互いに素かどうかを調べる述語
(defmacro coprimep (n m)
`(equal (gcd$ ,n ,m) 1))