theory HSV_chapter3 imports Complex_Main begin (* We use the following command to search Isabelle's library for theorems that contain a particular pattern. *) find_theorems "_ \ \" thm Rats_abs_nat_div_natE find_theorems "(_ / _)^_" thm power_divide (* A proof that the square root of 2 is irrational. *) theorem sqrt2_irrational: "sqrt 2 \ \" proof auto assume "sqrt 2 \ \" then obtain m n where "n \ 0" and "\sqrt 2\ = real m / real n" and "coprime m n" by (rule Rats_abs_nat_div_natE) hence "\sqrt 2\^2 = (real m / real n)^2" by auto hence "2 = (real m / real n)^2" by simp hence "2 = (real m)^2 / (real n)^2" unfolding power_divide by auto hence "2 * (real n)^2 = (real m)^2" by (simp add: nonzero_eq_divide_eq `n \ 0`) hence "real (2 * n^2) = (real m)^2" by auto hence *: "2 * n^2 = m^2" using of_nat_power_eq_of_nat_cancel_iff by blast hence "even (m^2)" by presburger hence "even m" by simp then obtain m' where "m = 2 * m'" by auto with * have "2 * n^2 = (2 * m')^2" by auto hence "2 * n^2 = 4 * m'^2" by simp hence "n^2 = 2 * m'^2" by simp hence "even (n^2)" by presburger hence "even n" by simp with `even m` and `coprime m n` show False by auto qed (* A proof that there is no greatest even number. *) theorem "\n::int. even n \ (\m. even m \ m > n)" proof clarify fix n::int assume "even n" hence "even (n+2)" by simp moreover have "n < (n+2)" by simp ultimately show "\m. even m \ n < m" by blast qed (* The same proof in the procedural style. *) theorem "\n::int. even n \ (\m. even m \ m > n)" apply clarify apply (rule_tac x="n+2" in exI) apply (rule conjI) apply simp apply (thin_tac "even n") apply simp done end