theory Sqrt imports Complex_Main "HOL-Computational_Algebra.Primes" begin
text‹
The square root of any prime number (including 2) is irrational. ›
theorem sqrt_prime_irrational: fixes p :: nat assumes"prime p" shows"sqrt p ∉ℚ" proof from‹prime p›have p: "p > 1"by (rule prime_gt_1_nat) assume"sqrt p ∈ℚ" thenobtain m n :: nat where n: "n ≠ 0" and sqrt_rat: "∣sqrt p∣ = m / n" and"coprime m n"by (rule Rats_abs_nat_div_natE) have eq: "m2 = p * n2" proof - from n and sqrt_rat have"m = ∣sqrt p∣ * n"by simp thenhave"m2 = (sqrt p)2 * n2"by (simp add: power_mult_distrib) alsohave"(sqrt p)2 = p"by simp alsohave"… * n2 = p * n2"by simp finallyshow ?thesis by linarith qed have"p dvd m ∧ p dvd n" proof from eq have"p dvd m2" .. with‹prime p›show"p dvd m"by (rule prime_dvd_power) thenobtain k where"m = p * k" .. with eq have"p * n2 = p2 * k2"by algebra with p have"n2 = p * k2"by (simp add: power2_eq_square) thenhave"p dvd n2" .. with‹prime p›show"p dvd n"by (rule prime_dvd_power) qed thenhave"p dvd gcd m n"by simp with‹coprime m n›have"p = 1"by simp with p show False by simp qed
corollary sqrt_2_not_rat: "sqrt 2 ∉ℚ" using sqrt_prime_irrational [of 2] by simp
text‹
Here is an alternative version of the main proof, using mostly linear
forward-reasoning. While this results in less top-down structure, it is
probably closer to proofs seen in mathematics. ›
theorem fixes p :: nat assumes"prime p" shows"sqrt p ∉ℚ" proof from‹prime p›have p: "p > 1"by (rule prime_gt_1_nat) assume"sqrt p ∈ℚ" thenobtain m n :: nat where n: "n ≠ 0" and sqrt_rat: "∣sqrt p∣ = m / n" and"coprime m n"by (rule Rats_abs_nat_div_natE) from n and sqrt_rat have"m = ∣sqrt p∣ * n"by simp thenhave"m2 = (sqrt p)2 * n2"by (auto simp add: power2_eq_square) alsohave"(sqrt p)2 = p"by simp alsohave"… * n2 = p * n2"by simp finallyhave eq: "m2 = p * n2"by linarith thenhave"p dvd m2" .. with‹prime p›have dvd_m: "p dvd m"by (rule prime_dvd_power) thenobtain k where"m = p * k" .. with eq have"p * n2 = p2 * k2"by algebra with p have"n2 = p * k2"by (simp add: power2_eq_square) thenhave"p dvd n2" .. with‹prime p›have"p dvd n"by (rule prime_dvd_power) with dvd_m have"p dvd gcd m n"by (rule gcd_greatest) with‹coprime m n›have"p = 1"by simp with p show False by simp qed
text‹
Another old chestnut, which is a consequence of the irrationality of term‹sqrt 2›. ›
lemma"∃a b::real. a ∉ℚ∧ b ∉ℚ∧ a powr b ∈ℚ" (is"∃a b. ?P a b") proof (cases "sqrt 2 powr sqrt 2 ∈ℚ") case True with sqrt_2_not_rat have"?P (sqrt 2) (sqrt 2)"by simp thenshow ?thesis by blast next case False with sqrt_2_not_rat powr_powr have"?P (sqrt 2 powr sqrt 2) (sqrt 2)"by simp thenshow ?thesis by blast qed
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.