remove redundant hdvd relation
authorhuffman
Wed, 19 May 2010 16:28:24 -0700
changeset 369905d9091ba3128
parent 36989 9316a18ec931
child 36991 41a22e7c1145
remove redundant hdvd relation
src/HOL/NSA/Examples/NSPrimes.thy
     1.1 --- a/src/HOL/NSA/Examples/NSPrimes.thy	Wed May 19 16:08:41 2010 -0700
     1.2 +++ b/src/HOL/NSA/Examples/NSPrimes.thy	Wed May 19 16:28:24 2010 -0700
     1.3 @@ -13,9 +13,7 @@
     1.4  text{*These can be used to derive an alternative proof of the infinitude of
     1.5  primes by considering a property of nonstandard sets.*}
     1.6  
     1.7 -definition
     1.8 -  hdvd  :: "[hypnat, hypnat] => bool"       (infixl "hdvd" 50) where
     1.9 -  [transfer_unfold]: "(M::hypnat) hdvd N = ( *p2* (op dvd)) M N"
    1.10 +declare dvd_def [transfer_refold]
    1.11  
    1.12  definition
    1.13    starprime :: "hypnat set" where
    1.14 @@ -49,14 +47,14 @@
    1.15  
    1.16  
    1.17  (* Goldblatt: Exercise 5.11(2) - p. 57 *)
    1.18 -lemma hdvd_by_all: "\<forall>M. \<exists>N. 0 < N & (\<forall>m. 0 < m & (m::hypnat) <= M --> m hdvd N)"
    1.19 +lemma hdvd_by_all: "\<forall>M. \<exists>N. 0 < N & (\<forall>m. 0 < m & (m::hypnat) <= M --> m dvd N)"
    1.20  by (transfer, rule dvd_by_all)
    1.21  
    1.22  lemmas hdvd_by_all2 = hdvd_by_all [THEN spec, standard]
    1.23  
    1.24  (* Goldblatt: Exercise 5.11(2) - p. 57 *)
    1.25  lemma hypnat_dvd_all_hypnat_of_nat:
    1.26 -     "\<exists>(N::hypnat). 0 < N & (\<forall>n \<in> -{0::nat}. hypnat_of_nat(n) hdvd N)"
    1.27 +     "\<exists>(N::hypnat). 0 < N & (\<forall>n \<in> -{0::nat}. hypnat_of_nat(n) dvd N)"
    1.28  apply (cut_tac hdvd_by_all)
    1.29  apply (drule_tac x = whn in spec, auto)
    1.30  apply (rule exI, auto)
    1.31 @@ -70,7 +68,7 @@
    1.32  
    1.33  (* Goldblatt: Exercise 5.11(3a) - p 57  *)
    1.34  lemma starprime:
    1.35 -  "starprime = {p. 1 < p & (\<forall>m. m hdvd p --> m = 1 | m = p)}"
    1.36 +  "starprime = {p. 1 < p & (\<forall>m. m dvd p --> m = 1 | m = p)}"
    1.37  by (transfer, auto simp add: prime_def)
    1.38  
    1.39  lemma prime_two:  "prime 2"
    1.40 @@ -88,13 +86,11 @@
    1.41  apply (rule_tac x = n in exI, auto)
    1.42  apply (drule conjI [THEN not_prime_ex_mk], auto)
    1.43  apply (drule_tac x = m in spec, auto)
    1.44 -apply (rule_tac x = ka in exI)
    1.45 -apply (auto intro: dvd_mult2)
    1.46  done
    1.47  
    1.48  (* Goldblatt Exercise 5.11(3b) - p 57  *)
    1.49  lemma hyperprime_factor_exists [rule_format]:
    1.50 -  "!!n. 1 < n ==> (\<exists>k \<in> starprime. k hdvd n)"
    1.51 +  "!!n. 1 < n ==> (\<exists>k \<in> starprime. k dvd n)"
    1.52  by (transfer, simp add: prime_factor_exists)
    1.53  
    1.54  (* Goldblatt Exercise 3.10(1) - p. 29 *)
    1.55 @@ -257,14 +253,14 @@
    1.56  
    1.57  subsection{*Existence of Infinitely Many Primes: a Nonstandard Proof*}
    1.58  
    1.59 -lemma lemma_not_dvd_hypnat_one: "~ (\<forall>n \<in> - {0}. hypnat_of_nat n hdvd 1)"
    1.60 +lemma lemma_not_dvd_hypnat_one: "~ (\<forall>n \<in> - {0}. hypnat_of_nat n dvd 1)"
    1.61  apply auto
    1.62  apply (rule_tac x = 2 in bexI)
    1.63  apply (transfer, auto)
    1.64  done
    1.65  declare lemma_not_dvd_hypnat_one [simp]
    1.66  
    1.67 -lemma lemma_not_dvd_hypnat_one2: "\<exists>n \<in> - {0}. ~ hypnat_of_nat n hdvd 1"
    1.68 +lemma lemma_not_dvd_hypnat_one2: "\<exists>n \<in> - {0}. ~ hypnat_of_nat n dvd 1"
    1.69  apply (cut_tac lemma_not_dvd_hypnat_one)
    1.70  apply (auto simp del: lemma_not_dvd_hypnat_one)
    1.71  done
    1.72 @@ -314,13 +310,13 @@
    1.73  by (cut_tac hypnat_of_nat_one_not_prime, simp)
    1.74  declare hypnat_one_not_prime [simp]
    1.75  
    1.76 -lemma hdvd_diff: "!!k m n. [| k hdvd m; k hdvd n |] ==> k hdvd (m - n)"
    1.77 -by (transfer, rule dvd_diff)
    1.78 +lemma hdvd_diff: "!!k m n :: hypnat. [| k dvd m; k dvd n |] ==> k dvd (m - n)"
    1.79 +by (transfer, rule dvd_diff_nat)
    1.80  
    1.81  lemma dvd_one_eq_one: "x dvd (1::nat) ==> x = 1"
    1.82  by (unfold dvd_def, auto)
    1.83  
    1.84 -lemma hdvd_one_eq_one: "!!x. x hdvd 1 ==> x = 1"
    1.85 +lemma hdvd_one_eq_one: "!!x. x dvd (1::hypnat) ==> x = 1"
    1.86  by (transfer, rule dvd_one_eq_one)
    1.87  
    1.88  theorem not_finite_prime: "~ finite {p. prime p}"