Amicable Numbers

Amicable Numbers

Amicable Numbers Angeliki Koutsoukou-Argyraki February 23, 2021 Abstract This is a formalisation of Amicable Numbers, involving some rel- evant material including Euler’s sigma function, some relevant defini- tions, results and examples as well as rules such as Thābit ibn Qurra’s Rule, Euler’s Rule, te Riele’s Rule and Borho’s Rule with breeders. The main sources are [2][3]. Some auxiliary material can be found in [1][4]. If not otherwise stated, the source of definitions is [2]. In a few definitions where we refer to Wikipedia articles5 [ ][6][7] this is explicitly mentioned. 1 Contents 1 Miscellaneous 3 2 Amicable Numbers 4 2.1 Preliminaries ........................... 4 2.2 Euler’s sigma function and properties ............. 6 2.3 Amicable Numbers; definitions, some lemmas and examples . 9 2.3.1 Regular Amicable Pairs ................. 10 2.3.2 Twin Amicable Pairs ................... 11 2.3.3 Isotopic Amicable Pairs ................. 11 2.3.4 Betrothed (Quasi-Amicable) Pairs ........... 16 2.3.5 Breeders .......................... 16 2.3.6 More examples ...................... 17 3 Euler’s Rule 20 4 Thābit ibn Qurra’s Rule and more examples 27 5 Te Riele’s Rule and Borho’s Rule with breeders 31 6 Acknowledgements 35 2 theory Amicable-Numbers imports HOL−Number-Theory:Number-Theory HOL−Computational-Algebra:Computational-Algebra Pratt-Certificate:Pratt-Certificate-Code Polynomial-Factorization:Prime-Factorization begin 1 Miscellaneous lemma mult-minus-eq-nat: fixes x::nat and y ::nat and z::nat assumes x+y = z shows −x−y = −z using assms by linarith lemma minus-eq-nat-subst: fixes A::nat and B::nat and C::nat and D::nat and E::nat assumes A = B−C−D and −E = −C−D shows A = B−E using assms by linarith lemma minus-eq-nat-subst-order: fixes A::nat and B::nat and C::nat and D::nat and E::nat assumes B−C−D > 0 and A = B−C−D+B shows A = 2∗B−C−D using assms by auto lemma auxiliary-ineq: fixes x::nat assumes x ≥ (2::nat) shows x+1 < (2::nat)∗x using assms by linarith lemma sum-strict-mono: fixes A :: nat set assumes finite B A ⊂ B 0 2= B shows P A < P B proof − have B − A 6= fg using assms(2) by blast with assms DiffE have P (B−A) > 0 by fastforce moreover have P B = P A + P (B−A) by (metis add:commute assms(1) assms(2) psubsetE sum:subset-diff ) ultimately show ?thesis by linarith qed 3 lemma sum-image-eq: assumes inj-on f A shows P (f ‘ A) = (P i 2 A: f i) using assms sum:reindex-cong by fastforce lemma coprime-dvd-aux: assumes gcd m n = Suc 0 na dvd n ma dvd m mb dvd m nb dvd n and eq: ma ∗ na = mb ∗ nb shows ma = mb proof − have gcd na mb = 1 using assms by (metis One-nat-def gcd:commute gcd-nat:mono is-unit-gcd-iff ) moreover have gcd nb ma = 1 using assms by (metis One-nat-def gcd:commute gcd-nat:mono is-unit-gcd-iff ) ultimately show ma = mb by (metis eq gcd-mult-distrib-nat mult:commute nat-mult-1-right) qed 2 Amicable Numbers 2.1 Preliminaries definition divisor :: nat )nat ) bool (infixr divisor 80) where n divisor m ≡(n ≥ 1 ^ n ≤ m ^ n dvd m) definition divisor-set: divisor-set m = fn: n divisor mg lemma def-equiv-divisor-set: divisor-set (n::nat) = set(divisors-nat n) using divisors-nat-def divisors-nat divisor-set divisor-def by auto definition proper-divisor :: nat )nat ) bool (infixr properdiv 80) where n properdiv m ≡(n ≥ 1 ^ n < m ^ n dvd m) definition properdiv-set: properdiv-set m = fn: n properdiv mg lemma example1-divisor: shows (2::nat) 2 divisor-set (4::nat) using divisor-set divisor-def by force lemma example2-properdiv-set: properdiv-set (Suc (Suc (Suc 0))) = f(1::nat)g by (auto simp: properdiv-set proper-divisor-def less-Suc-eq dvd-def ; presburger) lemma divisor-set-not-empty: fixes m::nat assumes m ≥1 shows m 2 divisor-set m using assms divisor-set divisor-def by force lemma finite-divisor-set [simp]: finite(divisor-set n) using divisor-def divisor-set by simp 4 lemma finite-properdiv-set[simp]: shows finite(properdiv-set m) using properdiv-set proper-divisor-def by simp lemma divisor-set-mult: divisor-set (m∗n) = fi∗jj i j: (i 2 divisor-set m)^(j 2 divisor-set n)g using divisor-set divisor-def by (fastforce simp add: divisor-set divisor-def dest: division-decomp) lemma divisor-set-1 [simp]: divisor-set (Suc 0) = fSuc 0g by (simp add: divisor-set divisor-def cong: conj-cong) lemma divisor-set-one: shows divisor-set 1 =f1g using divisor-set divisor-def by auto lemma union-properdiv-set: assumes n≥1 shows divisor-set n =(properdiv-set n)[fng using divisor-set properdiv-set proper-divisor-def assms divisor-def by auto lemma prime-div-set: assumes prime n shows divisor-set n = fn; 1g using divisor-def assms divisor-set prime-nat-iff by auto lemma div-set-prime: assumes prime n shows properdiv-set n = f1g using assms properdiv-set prime-nat-iff proper-divisor-def by (metis (no-types; lifting) Collect-cong One-nat-def divisor-def divisor-set divi- sor-set-one dvd-1-left empty-iff insert-iff mem-Collect-eq order-less-irrefl) lemma prime-gcd: fixes m::nat and n::nat assumes prime m and prime n and m 6= n shows gcd m n =1 using prime-def by (simp add: assms primes-coprime) We refer to definitions from [5]: definition aliquot-sum :: nat ) nat where aliquot-sum n ≡ P (properdiv-set n) definition deficient-number :: nat ) bool where deficient-number n ≡ (n > aliquot-sum n) definition abundant-number :: nat ) bool where abundant-number n ≡ (n < aliquot-sum n) definition perfect-number :: nat ) bool where perfect-number n ≡ (n = aliquot-sum n) lemma example-perfect-6: shows perfect-number 6 proof− 5 have a: set(divisors-nat 6) = f1; 2; 3; 6g by eval have b: divisor-set (6) = f1; 2; 3; 6g using a def-equiv-divisor-set by simp have c: properdiv-set (6) = f1; 2; 3g using b union-properdiv-set properdiv-set proper-divisor-def by auto show ?thesis using aliquot-sum-def c by (simp add: numeral-3-eq-3 perfect-number-def ) qed 2.2 Euler’s sigma function and properties The sources of the following useful material on Euler’s sigma function are [2], [3], [4] and [1]. definition Esigma :: nat ) nat where Esigma n ≡ P (divisor-set n) lemma Esigma-properdiv-set: assumes m ≥ 1 shows Esigma m = (aliquot-sum m) + m using assms divisor-set properdiv-set proper-divisor-def union-properdiv-set Es- igma-def aliquot-sum-def by fastforce lemma Esigmanotzero: assumes n ≥ 1 shows Esigma n ≥ 1 using Esigma-def assms Esigma-properdiv-set by auto lemma prime-sum-div: assumes prime n shows Esigma n = n +(1::nat) proof − have 1 ≤ n using assms prime-ge-1-nat by blast then show ?thesis using Esigma-properdiv-set assms div-set-prime by (simp add: Esigma-properdiv-set aliquot-sum-def assms div-set-prime) qed lemma sum-div-is-prime: assumes Esigma n = n +(1::nat) and n ≥1 shows prime n proof (rule ccontr) assume F: : (prime n) have n divisor n using assms divisor-def by simp have (1::nat) divisor nusing assms divisor-def by simp have n 6= Suc 0 using Esigma-def assms(1) by auto 6 then have r: 9 ( m::nat): m 2 divisor-set n ^ m6= (1::nat) ^ m 6= n using assms F apply (clarsimp simp add: Esigma-def divisor-set divisor-def prime-nat-iff ) by (meson Suc-le-eq dvd-imp-le dvd-pos-nat) have Suc n = P fn;1g by (simp add: hn 6= Suc 0i) moreover have divisor-set n ⊃ fn;1g using assms divisor-set r h1 divisor ni divisor-set-not-empty by auto then have P (divisor-set n) > P fn;1g apply (rule sum-strict-mono [OF finite-divisor-set]) by (simp add: divisor-def divisor-set) ultimately show False using Esigma-def assms(1) by presburger qed lemma Esigma-prime-sum: fixes k:: nat assumes prime m k ≥1 shows Esigma (m^k) =( m^(k+(1::nat)) −(1::nat)) =(m−1) proof− have m > 1 using hprime mi prime-gt-1-nat by blast have A: Esigma (m^k) =( P j= 0::k:( m^j)) proof− have AA: divisor-set (m^k) = (λj: m ^ j) ‘ f0::kg using assms prime-ge-1-nat by (auto simp add: power-increasing prime-ge-Suc-0-nat divisor-set divisor-def image-iff divides-primepow-nat) have §: P ((λj: m ^ j) ‘ f::kg) = sum (λj: m ^ j) f0::kg for k proof (induction k) case (Suc k) then show ?case apply (clarsimp simp: atMost-Suc) by (smt add:commute add-le-same-cancel1 assms(1) atMost-iff finite-atMost finite-imageI image-iff le-zero-eq power-add power-one-right prime-power-inj sum:insert zero-neq-one) qed auto show ?thesis by (metis § AA Esigma-def atMost-atLeast0) qed have B:(P i≤k:( m^i)) = ( m^Suc k −(1::nat)) =(m−(1::nat)) using assms hm > 1i Set-Interval:geometric-sum [of m Suc k] 7 apply (simp add:) by (metis One-nat-def lessThan-Suc-atMost nat-one-le-power of-nat-1 of-nat-diff of-nat-mult of-nat-power one-le-mult-iff prime-ge-Suc-0-nat sum:lessThan-Suc) show ?thesis using A B assms by (metis Suc-eq-plus1 atMost-atLeast0 of-nat-1 of-nat-diff prime-ge-1-nat) qed lemma prime-Esigma-mult: assumes prime m and prime n and m 6= n shows Esigma (m∗n) = (Esigma n)∗(Esigma m) proof− have m divisor (m∗n) using divisor-def assms by (simp add: dvd-imp-le prime-gt-0-nat) moreover have :(9 k::nat: k divisor (m∗n) ^ k6=(1::nat)^ k 6= m ^ k 6= n ^ k6= m∗n) using assms unfolding divisor-def by (metis One-nat-def division-decomp nat-mult-1 nat-mult-1-right prime-nat-iff ) ultimately have c: divisor-set (m∗n) = fm; n; m∗n; 1g using divisor-set assms divisor-def by auto obtain m6=1 n6=1 using assms not-prime-1 by blast then have dd: Esigma (m∗n) = m + n +m ∗n +1 using assms by (simp add: Esigma-def c) then show ?thesis using prime-sum-div assms by simp qed lemma gcd-Esigma-mult: assumes gcd m n = 1 shows Esigma (m∗n) = (Esigma m)∗(Esigma n) proof− have Esigma (m∗n) = P fi∗jj i j: i 2 divisor-set m ^ j 2 divisor-set ng by (simp add: divisor-set-mult Esigma-def ) also have ::: = (P i 2 divisor-set m: P j 2 divisor-set n: i∗j) proof− have inj-on (λ(i;j): i∗j)(divisor-set m × divisor-set n) using assms apply (simp add: inj-on-def divisor-set divisor-def ) by (metis assms coprime-dvd-aux mult-left-cancel not-one-le-zero) moreover have fi∗jj i j: i 2 divisor-set m ^ j 2 divisor-set ng= (λ(i;j): i∗j)‘(divisor-set m × divisor-set n) by auto ultimately show ?thesis by (simp add: sum:cartesian-product sum-image-eq) qed also have ::: = P ( divisor-set m)∗ P ( divisor-set n) 8 by (simp add: sum-product) also have ::: = Esigma m ∗ Esigma n by (simp add: Esigma-def ) finally show ?thesis .

View Full Text

Details

  • File Type
    pdf
  • Upload Time
    -
  • Content Languages
    English
  • Upload User
    Anonymous/Not logged-in
  • File Pages
    36 Page
  • File Size
    -

Download

Channel Download Status
Express Download Enable

Copyright

We respect the copyrights and intellectual property rights of all users. All uploaded documents are either original works of the uploader or authorized works of the rightful owners.

  • Not to be reproduced or distributed without explicit permission.
  • Not used for commercial purposes outside of approved use cases.
  • Not used to infringe on the rights of the original creators.
  • If you believe any content infringes your copyright, please contact us immediately.

Support

For help with questions, suggestions, or problems, please contact us