diff options
| author | David Aspinall | 2010-08-03 12:47:35 +0000 |
|---|---|---|
| committer | David Aspinall | 2010-08-03 12:47:35 +0000 |
| commit | c0c6f5750e1c06cdf0f7ba5136e062341a39ab23 (patch) | |
| tree | be54a20538c175202bbdddf804da01daab705307 /isar/Root2_Tactic.thy | |
| parent | 123f667b9b8e2c37f13f3fc0f5176863f15dd5c5 (diff) | |
Deleted file
Diffstat (limited to 'isar/Root2_Tactic.thy')
| -rw-r--r-- | isar/Root2_Tactic.thy | 83 |
1 files changed, 0 insertions, 83 deletions
diff --git a/isar/Root2_Tactic.thy b/isar/Root2_Tactic.thy deleted file mode 100644 index 7c0620c5..00000000 --- a/isar/Root2_Tactic.thy +++ /dev/null @@ -1,83 +0,0 @@ -(* Example proof by Larry Paulson; see http://www.cs.kun.nl/~freek/comparison/ - Taken from Isabelle2005 distribution. *) - - -(* Title: HOL/Hyperreal/ex/Sqrt_Script.thy - ID: $Id$ - Author: Lawrence C Paulson, Cambridge University Computer Laboratory - Copyright 2001 University of Cambridge -*) - -header {* Square roots of primes are irrational (script version) *} - -theory Root2_Tactic -imports Primes Complex_Main -begin - -text {* - \medskip Contrast this linear Isabelle/Isar script with Markus - Wenzel's more mathematical version. -*} - -subsection {* Preliminaries *} - -lemma prime_nonzero: "prime p \<Longrightarrow> p \<noteq> 0" - by (force simp add: prime_def) - -lemma prime_dvd_other_side: - "n * n = p * (k * k) \<Longrightarrow> prime p \<Longrightarrow> p dvd n" - apply (subgoal_tac "p dvd n * n", blast dest: prime_dvd_mult) - apply (rule_tac j = "k * k" in dvd_mult_left, simp) - done - -lemma reduction: "prime p \<Longrightarrow> - 0 < k \<Longrightarrow> k * k = p * (j * j) \<Longrightarrow> k < p * j \<and> 0 < j" - apply (rule ccontr) - apply (simp add: linorder_not_less) - apply (erule disjE) - apply (frule mult_le_mono, assumption) - apply auto - apply (force simp add: prime_def) - done - -lemma rearrange: "(j::nat) * (p * j) = k * k \<Longrightarrow> k * k = p * (j * j)" - by (simp add: mult_ac) - -lemma prime_not_square: - "prime p \<Longrightarrow> (\<And>k. 0 < k \<Longrightarrow> m * m \<noteq> p * (k * k))" - apply (induct m rule: nat_less_induct) - apply clarify - apply (frule prime_dvd_other_side, assumption) - apply (erule dvdE) - apply (simp add: nat_mult_eq_cancel_disj prime_nonzero) - apply (blast dest: rearrange reduction) - done - - -subsection {* The set of rational numbers *} - -constdefs - rationals :: "real set" ("\<rat>") - "\<rat> \<equiv> {x. \<exists>m n. n \<noteq> 0 \<and> \<bar>x\<bar> = real (m::nat) / real (n::nat)}" - - -subsection {* Main theorem *} - -text {* - The square root of any prime number (including @{text 2}) is - irrational. -*} - -theorem prime_sqrt_irrational: - "prime p \<Longrightarrow> x * x = real p \<Longrightarrow> 0 \<le> x \<Longrightarrow> x \<notin> \<rat>" - apply (simp add: rationals_def real_abs_def) - apply clarify - apply (erule_tac P = "real m / real n * ?x = ?y" in rev_mp) - apply (simp del: real_of_nat_mult - add: divide_eq_eq prime_not_square real_of_nat_mult [symmetric]) - done - -lemmas two_sqrt_irrational = - prime_sqrt_irrational [OF two_is_prime] - -end |
