| author | mengj | 
| Wed, 19 Oct 2005 10:25:46 +0200 | |
| changeset 17907 | c20e4bddcb11 | 
| parent 17433 | 4cf2e7980529 | 
| child 19380 | b808efaa5828 | 
| permissions | -rw-r--r-- | 
| 10751 | 1  | 
(* Title : HyperNat.thy  | 
2  | 
Author : Jacques D. Fleuriot  | 
|
3  | 
Copyright : 1998 University of Cambridge  | 
|
| 14415 | 4  | 
|
5  | 
Converted to Isar and polished by lcp  | 
|
| 
14371
 
c78c7da09519
Conversion of HyperNat to Isar format and its declaration as a semiring
 
paulson 
parents: 
13487 
diff
changeset
 | 
6  | 
*)  | 
| 10751 | 7  | 
|
| 17433 | 8  | 
header{*Hypernatural numbers*}
 | 
| 
14371
 
c78c7da09519
Conversion of HyperNat to Isar format and its declaration as a semiring
 
paulson 
parents: 
13487 
diff
changeset
 | 
9  | 
|
| 15131 | 10  | 
theory HyperNat  | 
| 15140 | 11  | 
imports Star  | 
| 15131 | 12  | 
begin  | 
| 10751 | 13  | 
|
| 17299 | 14  | 
types hypnat = "nat star"  | 
| 10751 | 15  | 
|
| 
17318
 
bc1c75855f3d
starfun, starset, and other functions on NS types are now polymorphic;
 
huffman 
parents: 
17299 
diff
changeset
 | 
16  | 
syntax hypnat_of_nat :: "nat => nat star"  | 
| 
 
bc1c75855f3d
starfun, starset, and other functions on NS types are now polymorphic;
 
huffman 
parents: 
17299 
diff
changeset
 | 
17  | 
translations "hypnat_of_nat" => "star_of :: nat => nat star"  | 
| 10751 | 18  | 
|
| 17433 | 19  | 
subsection{*Properties Transferred from Naturals*}
 | 
| 
14371
 
c78c7da09519
Conversion of HyperNat to Isar format and its declaration as a semiring
 
paulson 
parents: 
13487 
diff
changeset
 | 
20  | 
|
| 
17318
 
bc1c75855f3d
starfun, starset, and other functions on NS types are now polymorphic;
 
huffman 
parents: 
17299 
diff
changeset
 | 
21  | 
lemma hypnat_minus_zero [simp]: "!!z. z - z = (0::hypnat)"  | 
| 17299 | 22  | 
by transfer (rule diff_self_eq_0)  | 
| 
14371
 
c78c7da09519
Conversion of HyperNat to Isar format and its declaration as a semiring
 
paulson 
parents: 
13487 
diff
changeset
 | 
23  | 
|
| 
17318
 
bc1c75855f3d
starfun, starset, and other functions on NS types are now polymorphic;
 
huffman 
parents: 
17299 
diff
changeset
 | 
24  | 
lemma hypnat_diff_0_eq_0 [simp]: "!!n. (0::hypnat) - n = 0"  | 
| 17299 | 25  | 
by transfer (rule diff_0_eq_0)  | 
| 
14371
 
c78c7da09519
Conversion of HyperNat to Isar format and its declaration as a semiring
 
paulson 
parents: 
13487 
diff
changeset
 | 
26  | 
|
| 
17318
 
bc1c75855f3d
starfun, starset, and other functions on NS types are now polymorphic;
 
huffman 
parents: 
17299 
diff
changeset
 | 
27  | 
lemma hypnat_add_is_0 [iff]: "!!m n. (m+n = (0::hypnat)) = (m=0 & n=0)"  | 
| 17299 | 28  | 
by transfer (rule add_is_0)  | 
| 
14371
 
c78c7da09519
Conversion of HyperNat to Isar format and its declaration as a semiring
 
paulson 
parents: 
13487 
diff
changeset
 | 
29  | 
|
| 17299 | 30  | 
lemma hypnat_diff_diff_left: "!!i j k. (i::hypnat) - j - k = i - (j+k)"  | 
31  | 
by transfer (rule diff_diff_left)  | 
|
| 
14371
 
c78c7da09519
Conversion of HyperNat to Isar format and its declaration as a semiring
 
paulson 
parents: 
13487 
diff
changeset
 | 
32  | 
|
| 17299 | 33  | 
lemma hypnat_diff_commute: "!!i j k. (i::hypnat) - j - k = i-k-j"  | 
34  | 
by transfer (rule diff_commute)  | 
|
| 
14371
 
c78c7da09519
Conversion of HyperNat to Isar format and its declaration as a semiring
 
paulson 
parents: 
13487 
diff
changeset
 | 
35  | 
|
| 
17318
 
bc1c75855f3d
starfun, starset, and other functions on NS types are now polymorphic;
 
huffman 
parents: 
17299 
diff
changeset
 | 
36  | 
lemma hypnat_diff_add_inverse [simp]: "!!m n. ((n::hypnat) + m) - n = m"  | 
| 17299 | 37  | 
by transfer (rule diff_add_inverse)  | 
| 
14371
 
c78c7da09519
Conversion of HyperNat to Isar format and its declaration as a semiring
 
paulson 
parents: 
13487 
diff
changeset
 | 
38  | 
|
| 
17318
 
bc1c75855f3d
starfun, starset, and other functions on NS types are now polymorphic;
 
huffman 
parents: 
17299 
diff
changeset
 | 
39  | 
lemma hypnat_diff_add_inverse2 [simp]: "!!m n. ((m::hypnat) + n) - n = m"  | 
| 17299 | 40  | 
by transfer (rule diff_add_inverse2)  | 
| 
14371
 
c78c7da09519
Conversion of HyperNat to Isar format and its declaration as a semiring
 
paulson 
parents: 
13487 
diff
changeset
 | 
41  | 
|
| 
17318
 
bc1c75855f3d
starfun, starset, and other functions on NS types are now polymorphic;
 
huffman 
parents: 
17299 
diff
changeset
 | 
42  | 
lemma hypnat_diff_cancel [simp]: "!!k m n. ((k::hypnat) + m) - (k+n) = m - n"  | 
| 17299 | 43  | 
by transfer (rule diff_cancel)  | 
| 
14371
 
c78c7da09519
Conversion of HyperNat to Isar format and its declaration as a semiring
 
paulson 
parents: 
13487 
diff
changeset
 | 
44  | 
|
| 
17318
 
bc1c75855f3d
starfun, starset, and other functions on NS types are now polymorphic;
 
huffman 
parents: 
17299 
diff
changeset
 | 
45  | 
lemma hypnat_diff_cancel2 [simp]: "!!k m n. ((m::hypnat) + k) - (n+k) = m - n"  | 
| 17299 | 46  | 
by transfer (rule diff_cancel2)  | 
| 
14371
 
c78c7da09519
Conversion of HyperNat to Isar format and its declaration as a semiring
 
paulson 
parents: 
13487 
diff
changeset
 | 
47  | 
|
| 
17318
 
bc1c75855f3d
starfun, starset, and other functions on NS types are now polymorphic;
 
huffman 
parents: 
17299 
diff
changeset
 | 
48  | 
lemma hypnat_diff_add_0 [simp]: "!!m n. (n::hypnat) - (n+m) = (0::hypnat)"  | 
| 17299 | 49  | 
by transfer (rule diff_add_0)  | 
| 
14371
 
c78c7da09519
Conversion of HyperNat to Isar format and its declaration as a semiring
 
paulson 
parents: 
13487 
diff
changeset
 | 
50  | 
|
| 17299 | 51  | 
lemma hypnat_diff_mult_distrib: "!!k m n. ((m::hypnat) - n) * k = (m * k) - (n * k)"  | 
52  | 
by transfer (rule diff_mult_distrib)  | 
|
| 
14371
 
c78c7da09519
Conversion of HyperNat to Isar format and its declaration as a semiring
 
paulson 
parents: 
13487 
diff
changeset
 | 
53  | 
|
| 17299 | 54  | 
lemma hypnat_diff_mult_distrib2: "!!k m n. (k::hypnat) * (m - n) = (k * m) - (k * n)"  | 
55  | 
by transfer (rule diff_mult_distrib2)  | 
|
| 
14371
 
c78c7da09519
Conversion of HyperNat to Isar format and its declaration as a semiring
 
paulson 
parents: 
13487 
diff
changeset
 | 
56  | 
|
| 17299 | 57  | 
lemma hypnat_le_zero_cancel [iff]: "!!n. (n \<le> (0::hypnat)) = (n = 0)"  | 
58  | 
by transfer (rule le_0_eq)  | 
|
| 
14420
 
4e72cd222e0b
converted Hyperreal/HTranscendental to Isar script
 
paulson 
parents: 
14415 
diff
changeset
 | 
59  | 
|
| 17299 | 60  | 
lemma hypnat_mult_is_0 [simp]: "!!m n. (m*n = (0::hypnat)) = (m=0 | n=0)"  | 
61  | 
by transfer (rule mult_is_0)  | 
|
| 
14371
 
c78c7da09519
Conversion of HyperNat to Isar format and its declaration as a semiring
 
paulson 
parents: 
13487 
diff
changeset
 | 
62  | 
|
| 17299 | 63  | 
lemma hypnat_diff_is_0_eq [simp]: "!!m n. ((m::hypnat) - n = 0) = (m \<le> n)"  | 
64  | 
by transfer (rule diff_is_0_eq)  | 
|
| 
14378
 
69c4d5997669
generic of_nat and of_int functions, and generalization of iszero
 
paulson 
parents: 
14371 
diff
changeset
 | 
65  | 
|
| 17299 | 66  | 
lemma hypnat_not_less0 [iff]: "!!n. ~ n < (0::hypnat)"  | 
67  | 
by transfer (rule not_less0)  | 
|
| 
14371
 
c78c7da09519
Conversion of HyperNat to Isar format and its declaration as a semiring
 
paulson 
parents: 
13487 
diff
changeset
 | 
68  | 
|
| 
 
c78c7da09519
Conversion of HyperNat to Isar format and its declaration as a semiring
 
paulson 
parents: 
13487 
diff
changeset
 | 
69  | 
lemma hypnat_less_one [iff]:  | 
| 17299 | 70  | 
"!!n. (n < (1::hypnat)) = (n=0)"  | 
71  | 
by transfer (rule less_one)  | 
|
72  | 
||
73  | 
lemma hypnat_add_diff_inverse: "!!m n. ~ m<n ==> n+(m-n) = (m::hypnat)"  | 
|
74  | 
by transfer (rule add_diff_inverse)  | 
|
| 
14371
 
c78c7da09519
Conversion of HyperNat to Isar format and its declaration as a semiring
 
paulson 
parents: 
13487 
diff
changeset
 | 
75  | 
|
| 17299 | 76  | 
lemma hypnat_le_add_diff_inverse [simp]: "!!m n. n \<le> m ==> n+(m-n) = (m::hypnat)"  | 
77  | 
by transfer (rule le_add_diff_inverse)  | 
|
| 
14371
 
c78c7da09519
Conversion of HyperNat to Isar format and its declaration as a semiring
 
paulson 
parents: 
13487 
diff
changeset
 | 
78  | 
|
| 17299 | 79  | 
lemma hypnat_le_add_diff_inverse2 [simp]: "!!m n. n\<le>m ==> (m-n)+n = (m::hypnat)"  | 
80  | 
by transfer (rule le_add_diff_inverse2)  | 
|
| 
14371
 
c78c7da09519
Conversion of HyperNat to Isar format and its declaration as a semiring
 
paulson 
parents: 
13487 
diff
changeset
 | 
81  | 
|
| 
 
c78c7da09519
Conversion of HyperNat to Isar format and its declaration as a semiring
 
paulson 
parents: 
13487 
diff
changeset
 | 
82  | 
declare hypnat_le_add_diff_inverse2 [OF order_less_imp_le]  | 
| 
 
c78c7da09519
Conversion of HyperNat to Isar format and its declaration as a semiring
 
paulson 
parents: 
13487 
diff
changeset
 | 
83  | 
|
| 17299 | 84  | 
lemma hypnat_le0 [iff]: "!!n. (0::hypnat) \<le> n"  | 
85  | 
by transfer (rule le0)  | 
|
| 
14371
 
c78c7da09519
Conversion of HyperNat to Isar format and its declaration as a semiring
 
paulson 
parents: 
13487 
diff
changeset
 | 
86  | 
|
| 17299 | 87  | 
lemma hypnat_add_self_le [simp]: "!!x n. (x::hypnat) \<le> n + x"  | 
88  | 
by transfer (rule le_add2)  | 
|
| 
14371
 
c78c7da09519
Conversion of HyperNat to Isar format and its declaration as a semiring
 
paulson 
parents: 
13487 
diff
changeset
 | 
89  | 
|
| 
 
c78c7da09519
Conversion of HyperNat to Isar format and its declaration as a semiring
 
paulson 
parents: 
13487 
diff
changeset
 | 
90  | 
lemma hypnat_add_one_self_less [simp]: "(x::hypnat) < x + (1::hypnat)"  | 
| 
 
c78c7da09519
Conversion of HyperNat to Isar format and its declaration as a semiring
 
paulson 
parents: 
13487 
diff
changeset
 | 
91  | 
by (insert add_strict_left_mono [OF zero_less_one], auto)  | 
| 
 
c78c7da09519
Conversion of HyperNat to Isar format and its declaration as a semiring
 
paulson 
parents: 
13487 
diff
changeset
 | 
92  | 
|
| 17433 | 93  | 
lemma hypnat_neq0_conv [iff]: "!!n. (n \<noteq> 0) = (0 < (n::hypnat))"  | 
94  | 
by transfer (rule neq0_conv)  | 
|
| 
14371
 
c78c7da09519
Conversion of HyperNat to Isar format and its declaration as a semiring
 
paulson 
parents: 
13487 
diff
changeset
 | 
95  | 
|
| 
 
c78c7da09519
Conversion of HyperNat to Isar format and its declaration as a semiring
 
paulson 
parents: 
13487 
diff
changeset
 | 
96  | 
lemma hypnat_gt_zero_iff: "((0::hypnat) < n) = ((1::hypnat) \<le> n)"  | 
| 
 
c78c7da09519
Conversion of HyperNat to Isar format and its declaration as a semiring
 
paulson 
parents: 
13487 
diff
changeset
 | 
97  | 
by (auto simp add: linorder_not_less [symmetric])  | 
| 
 
c78c7da09519
Conversion of HyperNat to Isar format and its declaration as a semiring
 
paulson 
parents: 
13487 
diff
changeset
 | 
98  | 
|
| 
 
c78c7da09519
Conversion of HyperNat to Isar format and its declaration as a semiring
 
paulson 
parents: 
13487 
diff
changeset
 | 
99  | 
lemma hypnat_gt_zero_iff2: "(0 < n) = (\<exists>m. n = m + (1::hypnat))"  | 
| 
 
c78c7da09519
Conversion of HyperNat to Isar format and its declaration as a semiring
 
paulson 
parents: 
13487 
diff
changeset
 | 
100  | 
apply safe  | 
| 
 
c78c7da09519
Conversion of HyperNat to Isar format and its declaration as a semiring
 
paulson 
parents: 
13487 
diff
changeset
 | 
101  | 
apply (rule_tac x = "n - (1::hypnat) " in exI)  | 
| 
 
c78c7da09519
Conversion of HyperNat to Isar format and its declaration as a semiring
 
paulson 
parents: 
13487 
diff
changeset
 | 
102  | 
apply (simp add: hypnat_gt_zero_iff)  | 
| 
 
c78c7da09519
Conversion of HyperNat to Isar format and its declaration as a semiring
 
paulson 
parents: 
13487 
diff
changeset
 | 
103  | 
apply (insert add_le_less_mono [OF _ zero_less_one, of 0], auto)  | 
| 
 
c78c7da09519
Conversion of HyperNat to Isar format and its declaration as a semiring
 
paulson 
parents: 
13487 
diff
changeset
 | 
104  | 
done  | 
| 
 
c78c7da09519
Conversion of HyperNat to Isar format and its declaration as a semiring
 
paulson 
parents: 
13487 
diff
changeset
 | 
105  | 
|
| 
14378
 
69c4d5997669
generic of_nat and of_int functions, and generalization of iszero
 
paulson 
parents: 
14371 
diff
changeset
 | 
106  | 
lemma hypnat_add_self_not_less: "~ (x + y < (x::hypnat))"  | 
| 
 
69c4d5997669
generic of_nat and of_int functions, and generalization of iszero
 
paulson 
parents: 
14371 
diff
changeset
 | 
107  | 
by (simp add: linorder_not_le [symmetric] add_commute [of x])  | 
| 
 
69c4d5997669
generic of_nat and of_int functions, and generalization of iszero
 
paulson 
parents: 
14371 
diff
changeset
 | 
108  | 
|
| 
 
69c4d5997669
generic of_nat and of_int functions, and generalization of iszero
 
paulson 
parents: 
14371 
diff
changeset
 | 
109  | 
lemma hypnat_diff_split:  | 
| 
 
69c4d5997669
generic of_nat and of_int functions, and generalization of iszero
 
paulson 
parents: 
14371 
diff
changeset
 | 
110  | 
"P(a - b::hypnat) = ((a<b --> P 0) & (ALL d. a = b + d --> P d))"  | 
| 
 
69c4d5997669
generic of_nat and of_int functions, and generalization of iszero
 
paulson 
parents: 
14371 
diff
changeset
 | 
111  | 
    -- {* elimination of @{text -} on @{text hypnat} *}
 | 
| 
 
69c4d5997669
generic of_nat and of_int functions, and generalization of iszero
 
paulson 
parents: 
14371 
diff
changeset
 | 
112  | 
proof (cases "a<b" rule: case_split)  | 
| 
 
69c4d5997669
generic of_nat and of_int functions, and generalization of iszero
 
paulson 
parents: 
14371 
diff
changeset
 | 
113  | 
case True  | 
| 
 
69c4d5997669
generic of_nat and of_int functions, and generalization of iszero
 
paulson 
parents: 
14371 
diff
changeset
 | 
114  | 
thus ?thesis  | 
| 
 
69c4d5997669
generic of_nat and of_int functions, and generalization of iszero
 
paulson 
parents: 
14371 
diff
changeset
 | 
115  | 
by (auto simp add: hypnat_add_self_not_less order_less_imp_le  | 
| 
 
69c4d5997669
generic of_nat and of_int functions, and generalization of iszero
 
paulson 
parents: 
14371 
diff
changeset
 | 
116  | 
hypnat_diff_is_0_eq [THEN iffD2])  | 
| 
 
69c4d5997669
generic of_nat and of_int functions, and generalization of iszero
 
paulson 
parents: 
14371 
diff
changeset
 | 
117  | 
next  | 
| 
 
69c4d5997669
generic of_nat and of_int functions, and generalization of iszero
 
paulson 
parents: 
14371 
diff
changeset
 | 
118  | 
case False  | 
| 
 
69c4d5997669
generic of_nat and of_int functions, and generalization of iszero
 
paulson 
parents: 
14371 
diff
changeset
 | 
119  | 
thus ?thesis  | 
| 14468 | 120  | 
by (auto simp add: linorder_not_less dest: order_le_less_trans)  | 
| 
14378
 
69c4d5997669
generic of_nat and of_int functions, and generalization of iszero
 
paulson 
parents: 
14371 
diff
changeset
 | 
121  | 
qed  | 
| 
 
69c4d5997669
generic of_nat and of_int functions, and generalization of iszero
 
paulson 
parents: 
14371 
diff
changeset
 | 
122  | 
|
| 17433 | 123  | 
subsection{*Properties of the set of embedded natural numbers*}
 | 
| 
14378
 
69c4d5997669
generic of_nat and of_int functions, and generalization of iszero
 
paulson 
parents: 
14371 
diff
changeset
 | 
124  | 
|
| 
17318
 
bc1c75855f3d
starfun, starset, and other functions on NS types are now polymorphic;
 
huffman 
parents: 
17299 
diff
changeset
 | 
125  | 
lemma hypnat_of_nat_def: "hypnat_of_nat m == of_nat m"  | 
| 
17429
 
e8d6ed3aacfe
merged Transfer.thy and StarType.thy into StarDef.thy; renamed Ifun2_of to starfun2; cleaned up
 
huffman 
parents: 
17332 
diff
changeset
 | 
126  | 
by (transfer, simp)  | 
| 
14371
 
c78c7da09519
Conversion of HyperNat to Isar format and its declaration as a semiring
 
paulson 
parents: 
13487 
diff
changeset
 | 
127  | 
|
| 
14378
 
69c4d5997669
generic of_nat and of_int functions, and generalization of iszero
 
paulson 
parents: 
14371 
diff
changeset
 | 
128  | 
lemma hypnat_of_nat_one [simp]: "hypnat_of_nat (Suc 0) = (1::hypnat)"  | 
| 
17318
 
bc1c75855f3d
starfun, starset, and other functions on NS types are now polymorphic;
 
huffman 
parents: 
17299 
diff
changeset
 | 
129  | 
by simp  | 
| 
14371
 
c78c7da09519
Conversion of HyperNat to Isar format and its declaration as a semiring
 
paulson 
parents: 
13487 
diff
changeset
 | 
130  | 
|
| 
14378
 
69c4d5997669
generic of_nat and of_int functions, and generalization of iszero
 
paulson 
parents: 
14371 
diff
changeset
 | 
131  | 
lemma hypnat_of_nat_Suc [simp]:  | 
| 
14371
 
c78c7da09519
Conversion of HyperNat to Isar format and its declaration as a semiring
 
paulson 
parents: 
13487 
diff
changeset
 | 
132  | 
"hypnat_of_nat (Suc n) = hypnat_of_nat n + (1::hypnat)"  | 
| 
14378
 
69c4d5997669
generic of_nat and of_int functions, and generalization of iszero
 
paulson 
parents: 
14371 
diff
changeset
 | 
133  | 
by (simp add: hypnat_of_nat_def)  | 
| 
 
69c4d5997669
generic of_nat and of_int functions, and generalization of iszero
 
paulson 
parents: 
14371 
diff
changeset
 | 
134  | 
|
| 
 
69c4d5997669
generic of_nat and of_int functions, and generalization of iszero
 
paulson 
parents: 
14371 
diff
changeset
 | 
135  | 
lemma of_nat_eq_add [rule_format]:  | 
| 
 
69c4d5997669
generic of_nat and of_int functions, and generalization of iszero
 
paulson 
parents: 
14371 
diff
changeset
 | 
136  | 
"\<forall>d::hypnat. of_nat m = of_nat n + d --> d \<in> range of_nat"  | 
| 
 
69c4d5997669
generic of_nat and of_int functions, and generalization of iszero
 
paulson 
parents: 
14371 
diff
changeset
 | 
137  | 
apply (induct n)  | 
| 
 
69c4d5997669
generic of_nat and of_int functions, and generalization of iszero
 
paulson 
parents: 
14371 
diff
changeset
 | 
138  | 
apply (auto simp add: add_assoc)  | 
| 
 
69c4d5997669
generic of_nat and of_int functions, and generalization of iszero
 
paulson 
parents: 
14371 
diff
changeset
 | 
139  | 
apply (case_tac x)  | 
| 
 
69c4d5997669
generic of_nat and of_int functions, and generalization of iszero
 
paulson 
parents: 
14371 
diff
changeset
 | 
140  | 
apply (auto simp add: add_commute [of 1])  | 
| 
14371
 
c78c7da09519
Conversion of HyperNat to Isar format and its declaration as a semiring
 
paulson 
parents: 
13487 
diff
changeset
 | 
141  | 
done  | 
| 
 
c78c7da09519
Conversion of HyperNat to Isar format and its declaration as a semiring
 
paulson 
parents: 
13487 
diff
changeset
 | 
142  | 
|
| 
14378
 
69c4d5997669
generic of_nat and of_int functions, and generalization of iszero
 
paulson 
parents: 
14371 
diff
changeset
 | 
143  | 
lemma Nats_diff [simp]: "[|a \<in> Nats; b \<in> Nats|] ==> (a-b :: hypnat) \<in> Nats"  | 
| 14468 | 144  | 
by (auto simp add: of_nat_eq_add Nats_def split: hypnat_diff_split)  | 
| 
14371
 
c78c7da09519
Conversion of HyperNat to Isar format and its declaration as a semiring
 
paulson 
parents: 
13487 
diff
changeset
 | 
145  | 
|
| 17433 | 146  | 
|
147  | 
||
148  | 
subsection{*Existence of an infinite hypernatural number*}
 | 
|
149  | 
||
150  | 
consts whn :: hypnat  | 
|
151  | 
||
152  | 
defs  | 
|
153  | 
(* omega is in fact an infinite hypernatural number = [<1,2,3,...>] *)  | 
|
154  | 
hypnat_omega_def: "whn == star_n (%n::nat. n)"  | 
|
155  | 
||
156  | 
text{*Existence of infinite number not corresponding to any natural number
 | 
|
157  | 
follows because member @{term FreeUltrafilterNat} is not finite.
 | 
|
158  | 
See @{text HyperDef.thy} for similar argument.*}
 | 
|
159  | 
||
160  | 
||
| 
14371
 
c78c7da09519
Conversion of HyperNat to Isar format and its declaration as a semiring
 
paulson 
parents: 
13487 
diff
changeset
 | 
161  | 
lemma lemma_unbounded_set [simp]: "{n::nat. m < n} \<in> FreeUltrafilterNat"
 | 
| 
14378
 
69c4d5997669
generic of_nat and of_int functions, and generalization of iszero
 
paulson 
parents: 
14371 
diff
changeset
 | 
162  | 
apply (insert finite_atMost [of m])  | 
| 
 
69c4d5997669
generic of_nat and of_int functions, and generalization of iszero
 
paulson 
parents: 
14371 
diff
changeset
 | 
163  | 
apply (simp add: atMost_def)  | 
| 
 
69c4d5997669
generic of_nat and of_int functions, and generalization of iszero
 
paulson 
parents: 
14371 
diff
changeset
 | 
164  | 
apply (drule FreeUltrafilterNat_finite)  | 
| 14468 | 165  | 
apply (drule FreeUltrafilterNat_Compl_mem, ultra)  | 
| 
14371
 
c78c7da09519
Conversion of HyperNat to Isar format and its declaration as a semiring
 
paulson 
parents: 
13487 
diff
changeset
 | 
166  | 
done  | 
| 
 
c78c7da09519
Conversion of HyperNat to Isar format and its declaration as a semiring
 
paulson 
parents: 
13487 
diff
changeset
 | 
167  | 
|
| 
 
c78c7da09519
Conversion of HyperNat to Isar format and its declaration as a semiring
 
paulson 
parents: 
13487 
diff
changeset
 | 
168  | 
lemma Compl_Collect_le: "- {n::nat. N \<le> n} = {n. n < N}"
 | 
| 
 
c78c7da09519
Conversion of HyperNat to Isar format and its declaration as a semiring
 
paulson 
parents: 
13487 
diff
changeset
 | 
169  | 
by (simp add: Collect_neg_eq [symmetric] linorder_not_le)  | 
| 
 
c78c7da09519
Conversion of HyperNat to Isar format and its declaration as a semiring
 
paulson 
parents: 
13487 
diff
changeset
 | 
170  | 
|
| 
14378
 
69c4d5997669
generic of_nat and of_int functions, and generalization of iszero
 
paulson 
parents: 
14371 
diff
changeset
 | 
171  | 
lemma hypnat_of_nat_eq:  | 
| 
17318
 
bc1c75855f3d
starfun, starset, and other functions on NS types are now polymorphic;
 
huffman 
parents: 
17299 
diff
changeset
 | 
172  | 
"hypnat_of_nat m = star_n (%n::nat. m)"  | 
| 
17429
 
e8d6ed3aacfe
merged Transfer.thy and StarType.thy into StarDef.thy; renamed Ifun2_of to starfun2; cleaned up
 
huffman 
parents: 
17332 
diff
changeset
 | 
173  | 
by (simp add: star_of_def)  | 
| 
14378
 
69c4d5997669
generic of_nat and of_int functions, and generalization of iszero
 
paulson 
parents: 
14371 
diff
changeset
 | 
174  | 
|
| 
 
69c4d5997669
generic of_nat and of_int functions, and generalization of iszero
 
paulson 
parents: 
14371 
diff
changeset
 | 
175  | 
lemma SHNat_eq: "Nats = {n. \<exists>N. n = hypnat_of_nat N}"
 | 
| 
 
69c4d5997669
generic of_nat and of_int functions, and generalization of iszero
 
paulson 
parents: 
14371 
diff
changeset
 | 
176  | 
by (force simp add: hypnat_of_nat_def Nats_def)  | 
| 
 
69c4d5997669
generic of_nat and of_int functions, and generalization of iszero
 
paulson 
parents: 
14371 
diff
changeset
 | 
177  | 
|
| 
14371
 
c78c7da09519
Conversion of HyperNat to Isar format and its declaration as a semiring
 
paulson 
parents: 
13487 
diff
changeset
 | 
178  | 
lemma hypnat_omega_gt_SHNat:  | 
| 
 
c78c7da09519
Conversion of HyperNat to Isar format and its declaration as a semiring
 
paulson 
parents: 
13487 
diff
changeset
 | 
179  | 
"n \<in> Nats ==> n < whn"  | 
| 
17318
 
bc1c75855f3d
starfun, starset, and other functions on NS types are now polymorphic;
 
huffman 
parents: 
17299 
diff
changeset
 | 
180  | 
by (auto simp add: hypnat_of_nat_eq star_n_less hypnat_omega_def SHNat_eq)  | 
| 
14371
 
c78c7da09519
Conversion of HyperNat to Isar format and its declaration as a semiring
 
paulson 
parents: 
13487 
diff
changeset
 | 
181  | 
|
| 
14378
 
69c4d5997669
generic of_nat and of_int functions, and generalization of iszero
 
paulson 
parents: 
14371 
diff
changeset
 | 
182  | 
(* Infinite hypernatural not in embedded Nats *)  | 
| 
 
69c4d5997669
generic of_nat and of_int functions, and generalization of iszero
 
paulson 
parents: 
14371 
diff
changeset
 | 
183  | 
lemma SHNAT_omega_not_mem [simp]: "whn \<notin> Nats"  | 
| 14468 | 184  | 
by (blast dest: hypnat_omega_gt_SHNat)  | 
| 
14371
 
c78c7da09519
Conversion of HyperNat to Isar format and its declaration as a semiring
 
paulson 
parents: 
13487 
diff
changeset
 | 
185  | 
|
| 
14378
 
69c4d5997669
generic of_nat and of_int functions, and generalization of iszero
 
paulson 
parents: 
14371 
diff
changeset
 | 
186  | 
lemma hypnat_of_nat_less_whn [simp]: "hypnat_of_nat n < whn"  | 
| 
 
69c4d5997669
generic of_nat and of_int functions, and generalization of iszero
 
paulson 
parents: 
14371 
diff
changeset
 | 
187  | 
apply (insert hypnat_omega_gt_SHNat [of "hypnat_of_nat n"])  | 
| 
 
69c4d5997669
generic of_nat and of_int functions, and generalization of iszero
 
paulson 
parents: 
14371 
diff
changeset
 | 
188  | 
apply (simp add: hypnat_of_nat_def)  | 
| 
 
69c4d5997669
generic of_nat and of_int functions, and generalization of iszero
 
paulson 
parents: 
14371 
diff
changeset
 | 
189  | 
done  | 
| 
 
69c4d5997669
generic of_nat and of_int functions, and generalization of iszero
 
paulson 
parents: 
14371 
diff
changeset
 | 
190  | 
|
| 
 
69c4d5997669
generic of_nat and of_int functions, and generalization of iszero
 
paulson 
parents: 
14371 
diff
changeset
 | 
191  | 
lemma hypnat_of_nat_le_whn [simp]: "hypnat_of_nat n \<le> whn"  | 
| 
14371
 
c78c7da09519
Conversion of HyperNat to Isar format and its declaration as a semiring
 
paulson 
parents: 
13487 
diff
changeset
 | 
192  | 
by (rule hypnat_of_nat_less_whn [THEN order_less_imp_le])  | 
| 
 
c78c7da09519
Conversion of HyperNat to Isar format and its declaration as a semiring
 
paulson 
parents: 
13487 
diff
changeset
 | 
193  | 
|
| 
 
c78c7da09519
Conversion of HyperNat to Isar format and its declaration as a semiring
 
paulson 
parents: 
13487 
diff
changeset
 | 
194  | 
lemma hypnat_zero_less_hypnat_omega [simp]: "0 < whn"  | 
| 
 
c78c7da09519
Conversion of HyperNat to Isar format and its declaration as a semiring
 
paulson 
parents: 
13487 
diff
changeset
 | 
195  | 
by (simp add: hypnat_omega_gt_SHNat)  | 
| 
 
c78c7da09519
Conversion of HyperNat to Isar format and its declaration as a semiring
 
paulson 
parents: 
13487 
diff
changeset
 | 
196  | 
|
| 
 
c78c7da09519
Conversion of HyperNat to Isar format and its declaration as a semiring
 
paulson 
parents: 
13487 
diff
changeset
 | 
197  | 
lemma hypnat_one_less_hypnat_omega [simp]: "(1::hypnat) < whn"  | 
| 
 
c78c7da09519
Conversion of HyperNat to Isar format and its declaration as a semiring
 
paulson 
parents: 
13487 
diff
changeset
 | 
198  | 
by (simp add: hypnat_omega_gt_SHNat)  | 
| 
 
c78c7da09519
Conversion of HyperNat to Isar format and its declaration as a semiring
 
paulson 
parents: 
13487 
diff
changeset
 | 
199  | 
|
| 
 
c78c7da09519
Conversion of HyperNat to Isar format and its declaration as a semiring
 
paulson 
parents: 
13487 
diff
changeset
 | 
200  | 
|
| 
 
c78c7da09519
Conversion of HyperNat to Isar format and its declaration as a semiring
 
paulson 
parents: 
13487 
diff
changeset
 | 
201  | 
subsection{*Infinite Hypernatural Numbers -- @{term HNatInfinite}*}
 | 
| 
 
c78c7da09519
Conversion of HyperNat to Isar format and its declaration as a semiring
 
paulson 
parents: 
13487 
diff
changeset
 | 
202  | 
|
| 17433 | 203  | 
constdefs  | 
204  | 
||
205  | 
(* the set of infinite hypernatural numbers *)  | 
|
206  | 
HNatInfinite :: "hypnat set"  | 
|
207  | 
  "HNatInfinite == {n. n \<notin> Nats}"
 | 
|
208  | 
||
| 
14378
 
69c4d5997669
generic of_nat and of_int functions, and generalization of iszero
 
paulson 
parents: 
14371 
diff
changeset
 | 
209  | 
lemma HNatInfinite_whn [simp]: "whn \<in> HNatInfinite"  | 
| 
14371
 
c78c7da09519
Conversion of HyperNat to Isar format and its declaration as a semiring
 
paulson 
parents: 
13487 
diff
changeset
 | 
210  | 
by (simp add: HNatInfinite_def)  | 
| 
 
c78c7da09519
Conversion of HyperNat to Isar format and its declaration as a semiring
 
paulson 
parents: 
13487 
diff
changeset
 | 
211  | 
|
| 
14378
 
69c4d5997669
generic of_nat and of_int functions, and generalization of iszero
 
paulson 
parents: 
14371 
diff
changeset
 | 
212  | 
lemma Nats_not_HNatInfinite_iff: "(x \<in> Nats) = (x \<notin> HNatInfinite)"  | 
| 
14371
 
c78c7da09519
Conversion of HyperNat to Isar format and its declaration as a semiring
 
paulson 
parents: 
13487 
diff
changeset
 | 
213  | 
by (simp add: HNatInfinite_def)  | 
| 
 
c78c7da09519
Conversion of HyperNat to Isar format and its declaration as a semiring
 
paulson 
parents: 
13487 
diff
changeset
 | 
214  | 
|
| 
14378
 
69c4d5997669
generic of_nat and of_int functions, and generalization of iszero
 
paulson 
parents: 
14371 
diff
changeset
 | 
215  | 
lemma HNatInfinite_not_Nats_iff: "(x \<in> HNatInfinite) = (x \<notin> Nats)"  | 
| 
 
69c4d5997669
generic of_nat and of_int functions, and generalization of iszero
 
paulson 
parents: 
14371 
diff
changeset
 | 
216  | 
by (simp add: HNatInfinite_def)  | 
| 
14371
 
c78c7da09519
Conversion of HyperNat to Isar format and its declaration as a semiring
 
paulson 
parents: 
13487 
diff
changeset
 | 
217  | 
|
| 
 
c78c7da09519
Conversion of HyperNat to Isar format and its declaration as a semiring
 
paulson 
parents: 
13487 
diff
changeset
 | 
218  | 
|
| 17433 | 219  | 
subsubsection{*Alternative characterization of the set of infinite hypernaturals*}
 | 
| 15070 | 220  | 
|
221  | 
text{* @{term "HNatInfinite = {N. \<forall>n \<in> Nats. n < N}"}*}
 | 
|
| 
14371
 
c78c7da09519
Conversion of HyperNat to Isar format and its declaration as a semiring
 
paulson 
parents: 
13487 
diff
changeset
 | 
222  | 
|
| 
 
c78c7da09519
Conversion of HyperNat to Isar format and its declaration as a semiring
 
paulson 
parents: 
13487 
diff
changeset
 | 
223  | 
(*??delete? similar reasoning in hypnat_omega_gt_SHNat above*)  | 
| 
14378
 
69c4d5997669
generic of_nat and of_int functions, and generalization of iszero
 
paulson 
parents: 
14371 
diff
changeset
 | 
224  | 
lemma HNatInfinite_FreeUltrafilterNat_lemma:  | 
| 
 
69c4d5997669
generic of_nat and of_int functions, and generalization of iszero
 
paulson 
parents: 
14371 
diff
changeset
 | 
225  | 
     "\<forall>N::nat. {n. f n \<noteq> N} \<in> FreeUltrafilterNat
 | 
| 
14371
 
c78c7da09519
Conversion of HyperNat to Isar format and its declaration as a semiring
 
paulson 
parents: 
13487 
diff
changeset
 | 
226  | 
      ==> {n. N < f n} \<in> FreeUltrafilterNat"
 | 
| 15251 | 227  | 
apply (induct_tac N)  | 
| 
14371
 
c78c7da09519
Conversion of HyperNat to Isar format and its declaration as a semiring
 
paulson 
parents: 
13487 
diff
changeset
 | 
228  | 
apply (drule_tac x = 0 in spec)  | 
| 
 
c78c7da09519
Conversion of HyperNat to Isar format and its declaration as a semiring
 
paulson 
parents: 
13487 
diff
changeset
 | 
229  | 
apply (rule ccontr, drule FreeUltrafilterNat_Compl_mem, drule FreeUltrafilterNat_Int, assumption, simp)  | 
| 
 
c78c7da09519
Conversion of HyperNat to Isar format and its declaration as a semiring
 
paulson 
parents: 
13487 
diff
changeset
 | 
230  | 
apply (drule_tac x = "Suc n" in spec, ultra)  | 
| 
 
c78c7da09519
Conversion of HyperNat to Isar format and its declaration as a semiring
 
paulson 
parents: 
13487 
diff
changeset
 | 
231  | 
done  | 
| 
 
c78c7da09519
Conversion of HyperNat to Isar format and its declaration as a semiring
 
paulson 
parents: 
13487 
diff
changeset
 | 
232  | 
|
| 
 
c78c7da09519
Conversion of HyperNat to Isar format and its declaration as a semiring
 
paulson 
parents: 
13487 
diff
changeset
 | 
233  | 
lemma HNatInfinite_iff: "HNatInfinite = {N. \<forall>n \<in> Nats. n < N}"
 | 
| 
14378
 
69c4d5997669
generic of_nat and of_int functions, and generalization of iszero
 
paulson 
parents: 
14371 
diff
changeset
 | 
234  | 
apply (auto simp add: HNatInfinite_def SHNat_eq hypnat_of_nat_eq)  | 
| 
17318
 
bc1c75855f3d
starfun, starset, and other functions on NS types are now polymorphic;
 
huffman 
parents: 
17299 
diff
changeset
 | 
235  | 
apply (rule_tac x = x in star_cases)  | 
| 
14378
 
69c4d5997669
generic of_nat and of_int functions, and generalization of iszero
 
paulson 
parents: 
14371 
diff
changeset
 | 
236  | 
apply (auto elim: HNatInfinite_FreeUltrafilterNat_lemma  | 
| 
17318
 
bc1c75855f3d
starfun, starset, and other functions on NS types are now polymorphic;
 
huffman 
parents: 
17299 
diff
changeset
 | 
237  | 
simp add: star_n_less FreeUltrafilterNat_Compl_iff1  | 
| 
 
bc1c75855f3d
starfun, starset, and other functions on NS types are now polymorphic;
 
huffman 
parents: 
17299 
diff
changeset
 | 
238  | 
star_n_eq_iff Collect_neg_eq [symmetric])  | 
| 
14371
 
c78c7da09519
Conversion of HyperNat to Isar format and its declaration as a semiring
 
paulson 
parents: 
13487 
diff
changeset
 | 
239  | 
done  | 
| 
 
c78c7da09519
Conversion of HyperNat to Isar format and its declaration as a semiring
 
paulson 
parents: 
13487 
diff
changeset
 | 
240  | 
|
| 
14378
 
69c4d5997669
generic of_nat and of_int functions, and generalization of iszero
 
paulson 
parents: 
14371 
diff
changeset
 | 
241  | 
|
| 17433 | 242  | 
subsubsection{*Alternative Characterization of @{term HNatInfinite} using 
 | 
| 
14371
 
c78c7da09519
Conversion of HyperNat to Isar format and its declaration as a semiring
 
paulson 
parents: 
13487 
diff
changeset
 | 
243  | 
Free Ultrafilter*}  | 
| 
 
c78c7da09519
Conversion of HyperNat to Isar format and its declaration as a semiring
 
paulson 
parents: 
13487 
diff
changeset
 | 
244  | 
|
| 
 
c78c7da09519
Conversion of HyperNat to Isar format and its declaration as a semiring
 
paulson 
parents: 
13487 
diff
changeset
 | 
245  | 
lemma HNatInfinite_FreeUltrafilterNat:  | 
| 
 
c78c7da09519
Conversion of HyperNat to Isar format and its declaration as a semiring
 
paulson 
parents: 
13487 
diff
changeset
 | 
246  | 
"x \<in> HNatInfinite  | 
| 17299 | 247  | 
      ==> \<exists>X \<in> Rep_star x. \<forall>u. {n. u < X n}:  FreeUltrafilterNat"
 | 
| 
17318
 
bc1c75855f3d
starfun, starset, and other functions on NS types are now polymorphic;
 
huffman 
parents: 
17299 
diff
changeset
 | 
248  | 
apply (cases x)  | 
| 
14378
 
69c4d5997669
generic of_nat and of_int functions, and generalization of iszero
 
paulson 
parents: 
14371 
diff
changeset
 | 
249  | 
apply (auto simp add: HNatInfinite_iff SHNat_eq hypnat_of_nat_eq)  | 
| 
17318
 
bc1c75855f3d
starfun, starset, and other functions on NS types are now polymorphic;
 
huffman 
parents: 
17299 
diff
changeset
 | 
250  | 
apply (rule bexI [OF _ Rep_star_star_n], clarify)  | 
| 
 
bc1c75855f3d
starfun, starset, and other functions on NS types are now polymorphic;
 
huffman 
parents: 
17299 
diff
changeset
 | 
251  | 
apply (auto simp add: hypnat_of_nat_def star_n_less)  | 
| 
14371
 
c78c7da09519
Conversion of HyperNat to Isar format and its declaration as a semiring
 
paulson 
parents: 
13487 
diff
changeset
 | 
252  | 
done  | 
| 
 
c78c7da09519
Conversion of HyperNat to Isar format and its declaration as a semiring
 
paulson 
parents: 
13487 
diff
changeset
 | 
253  | 
|
| 
 
c78c7da09519
Conversion of HyperNat to Isar format and its declaration as a semiring
 
paulson 
parents: 
13487 
diff
changeset
 | 
254  | 
lemma FreeUltrafilterNat_HNatInfinite:  | 
| 17299 | 255  | 
     "\<exists>X \<in> Rep_star x. \<forall>u. {n. u < X n}:  FreeUltrafilterNat
 | 
| 
14371
 
c78c7da09519
Conversion of HyperNat to Isar format and its declaration as a semiring
 
paulson 
parents: 
13487 
diff
changeset
 | 
256  | 
==> x \<in> HNatInfinite"  | 
| 
17318
 
bc1c75855f3d
starfun, starset, and other functions on NS types are now polymorphic;
 
huffman 
parents: 
17299 
diff
changeset
 | 
257  | 
apply (cases x)  | 
| 
 
bc1c75855f3d
starfun, starset, and other functions on NS types are now polymorphic;
 
huffman 
parents: 
17299 
diff
changeset
 | 
258  | 
apply (auto simp add: star_n_less HNatInfinite_iff SHNat_eq hypnat_of_nat_eq)  | 
| 
14371
 
c78c7da09519
Conversion of HyperNat to Isar format and its declaration as a semiring
 
paulson 
parents: 
13487 
diff
changeset
 | 
259  | 
apply (drule spec, ultra, auto)  | 
| 
 
c78c7da09519
Conversion of HyperNat to Isar format and its declaration as a semiring
 
paulson 
parents: 
13487 
diff
changeset
 | 
260  | 
done  | 
| 
 
c78c7da09519
Conversion of HyperNat to Isar format and its declaration as a semiring
 
paulson 
parents: 
13487 
diff
changeset
 | 
261  | 
|
| 
 
c78c7da09519
Conversion of HyperNat to Isar format and its declaration as a semiring
 
paulson 
parents: 
13487 
diff
changeset
 | 
262  | 
lemma HNatInfinite_FreeUltrafilterNat_iff:  | 
| 
 
c78c7da09519
Conversion of HyperNat to Isar format and its declaration as a semiring
 
paulson 
parents: 
13487 
diff
changeset
 | 
263  | 
"(x \<in> HNatInfinite) =  | 
| 17299 | 264  | 
      (\<exists>X \<in> Rep_star x. \<forall>u. {n. u < X n}:  FreeUltrafilterNat)"
 | 
| 
14378
 
69c4d5997669
generic of_nat and of_int functions, and generalization of iszero
 
paulson 
parents: 
14371 
diff
changeset
 | 
265  | 
by (blast intro: HNatInfinite_FreeUltrafilterNat  | 
| 
 
69c4d5997669
generic of_nat and of_int functions, and generalization of iszero
 
paulson 
parents: 
14371 
diff
changeset
 | 
266  | 
FreeUltrafilterNat_HNatInfinite)  | 
| 
14371
 
c78c7da09519
Conversion of HyperNat to Isar format and its declaration as a semiring
 
paulson 
parents: 
13487 
diff
changeset
 | 
267  | 
|
| 
14378
 
69c4d5997669
generic of_nat and of_int functions, and generalization of iszero
 
paulson 
parents: 
14371 
diff
changeset
 | 
268  | 
lemma HNatInfinite_gt_one [simp]: "x \<in> HNatInfinite ==> (1::hypnat) < x"  | 
| 
14371
 
c78c7da09519
Conversion of HyperNat to Isar format and its declaration as a semiring
 
paulson 
parents: 
13487 
diff
changeset
 | 
269  | 
by (auto simp add: HNatInfinite_iff)  | 
| 
 
c78c7da09519
Conversion of HyperNat to Isar format and its declaration as a semiring
 
paulson 
parents: 
13487 
diff
changeset
 | 
270  | 
|
| 
14378
 
69c4d5997669
generic of_nat and of_int functions, and generalization of iszero
 
paulson 
parents: 
14371 
diff
changeset
 | 
271  | 
lemma zero_not_mem_HNatInfinite [simp]: "0 \<notin> HNatInfinite"  | 
| 
14371
 
c78c7da09519
Conversion of HyperNat to Isar format and its declaration as a semiring
 
paulson 
parents: 
13487 
diff
changeset
 | 
272  | 
apply (auto simp add: HNatInfinite_iff)  | 
| 
 
c78c7da09519
Conversion of HyperNat to Isar format and its declaration as a semiring
 
paulson 
parents: 
13487 
diff
changeset
 | 
273  | 
apply (drule_tac a = " (1::hypnat) " in equals0D)  | 
| 
 
c78c7da09519
Conversion of HyperNat to Isar format and its declaration as a semiring
 
paulson 
parents: 
13487 
diff
changeset
 | 
274  | 
apply simp  | 
| 
 
c78c7da09519
Conversion of HyperNat to Isar format and its declaration as a semiring
 
paulson 
parents: 
13487 
diff
changeset
 | 
275  | 
done  | 
| 
 
c78c7da09519
Conversion of HyperNat to Isar format and its declaration as a semiring
 
paulson 
parents: 
13487 
diff
changeset
 | 
276  | 
|
| 
 
c78c7da09519
Conversion of HyperNat to Isar format and its declaration as a semiring
 
paulson 
parents: 
13487 
diff
changeset
 | 
277  | 
lemma HNatInfinite_not_eq_zero: "x \<in> HNatInfinite ==> 0 < x"  | 
| 
 
c78c7da09519
Conversion of HyperNat to Isar format and its declaration as a semiring
 
paulson 
parents: 
13487 
diff
changeset
 | 
278  | 
apply (drule HNatInfinite_gt_one)  | 
| 
 
c78c7da09519
Conversion of HyperNat to Isar format and its declaration as a semiring
 
paulson 
parents: 
13487 
diff
changeset
 | 
279  | 
apply (auto simp add: order_less_trans [OF zero_less_one])  | 
| 
 
c78c7da09519
Conversion of HyperNat to Isar format and its declaration as a semiring
 
paulson 
parents: 
13487 
diff
changeset
 | 
280  | 
done  | 
| 
 
c78c7da09519
Conversion of HyperNat to Isar format and its declaration as a semiring
 
paulson 
parents: 
13487 
diff
changeset
 | 
281  | 
|
| 
 
c78c7da09519
Conversion of HyperNat to Isar format and its declaration as a semiring
 
paulson 
parents: 
13487 
diff
changeset
 | 
282  | 
lemma HNatInfinite_ge_one [simp]: "x \<in> HNatInfinite ==> (1::hypnat) \<le> x"  | 
| 
 
c78c7da09519
Conversion of HyperNat to Isar format and its declaration as a semiring
 
paulson 
parents: 
13487 
diff
changeset
 | 
283  | 
by (blast intro: order_less_imp_le HNatInfinite_gt_one)  | 
| 
 
c78c7da09519
Conversion of HyperNat to Isar format and its declaration as a semiring
 
paulson 
parents: 
13487 
diff
changeset
 | 
284  | 
|
| 
 
c78c7da09519
Conversion of HyperNat to Isar format and its declaration as a semiring
 
paulson 
parents: 
13487 
diff
changeset
 | 
285  | 
|
| 17433 | 286  | 
subsubsection{*Closure Rules*}
 | 
| 
14371
 
c78c7da09519
Conversion of HyperNat to Isar format and its declaration as a semiring
 
paulson 
parents: 
13487 
diff
changeset
 | 
287  | 
|
| 
14378
 
69c4d5997669
generic of_nat and of_int functions, and generalization of iszero
 
paulson 
parents: 
14371 
diff
changeset
 | 
288  | 
lemma HNatInfinite_add:  | 
| 
 
69c4d5997669
generic of_nat and of_int functions, and generalization of iszero
 
paulson 
parents: 
14371 
diff
changeset
 | 
289  | 
"[| x \<in> HNatInfinite; y \<in> HNatInfinite |] ==> x + y \<in> HNatInfinite"  | 
| 
14371
 
c78c7da09519
Conversion of HyperNat to Isar format and its declaration as a semiring
 
paulson 
parents: 
13487 
diff
changeset
 | 
290  | 
apply (auto simp add: HNatInfinite_iff)  | 
| 
 
c78c7da09519
Conversion of HyperNat to Isar format and its declaration as a semiring
 
paulson 
parents: 
13487 
diff
changeset
 | 
291  | 
apply (drule bspec, assumption)  | 
| 
14378
 
69c4d5997669
generic of_nat and of_int functions, and generalization of iszero
 
paulson 
parents: 
14371 
diff
changeset
 | 
292  | 
apply (drule bspec [OF _ Nats_0])  | 
| 
14371
 
c78c7da09519
Conversion of HyperNat to Isar format and its declaration as a semiring
 
paulson 
parents: 
13487 
diff
changeset
 | 
293  | 
apply (drule add_strict_mono, assumption, simp)  | 
| 
 
c78c7da09519
Conversion of HyperNat to Isar format and its declaration as a semiring
 
paulson 
parents: 
13487 
diff
changeset
 | 
294  | 
done  | 
| 
 
c78c7da09519
Conversion of HyperNat to Isar format and its declaration as a semiring
 
paulson 
parents: 
13487 
diff
changeset
 | 
295  | 
|
| 
14378
 
69c4d5997669
generic of_nat and of_int functions, and generalization of iszero
 
paulson 
parents: 
14371 
diff
changeset
 | 
296  | 
lemma HNatInfinite_SHNat_add:  | 
| 
 
69c4d5997669
generic of_nat and of_int functions, and generalization of iszero
 
paulson 
parents: 
14371 
diff
changeset
 | 
297  | 
"[| x \<in> HNatInfinite; y \<in> Nats |] ==> x + y \<in> HNatInfinite"  | 
| 
 
69c4d5997669
generic of_nat and of_int functions, and generalization of iszero
 
paulson 
parents: 
14371 
diff
changeset
 | 
298  | 
apply (auto simp add: HNatInfinite_not_Nats_iff)  | 
| 14468 | 299  | 
apply (drule_tac a = "x + y" in Nats_diff, auto)  | 
| 
14371
 
c78c7da09519
Conversion of HyperNat to Isar format and its declaration as a semiring
 
paulson 
parents: 
13487 
diff
changeset
 | 
300  | 
done  | 
| 
 
c78c7da09519
Conversion of HyperNat to Isar format and its declaration as a semiring
 
paulson 
parents: 
13487 
diff
changeset
 | 
301  | 
|
| 
14378
 
69c4d5997669
generic of_nat and of_int functions, and generalization of iszero
 
paulson 
parents: 
14371 
diff
changeset
 | 
302  | 
lemma HNatInfinite_Nats_imp_less: "[| x \<in> HNatInfinite; y \<in> Nats |] ==> y < x"  | 
| 
 
69c4d5997669
generic of_nat and of_int functions, and generalization of iszero
 
paulson 
parents: 
14371 
diff
changeset
 | 
303  | 
by (simp add: HNatInfinite_iff)  | 
| 
 
69c4d5997669
generic of_nat and of_int functions, and generalization of iszero
 
paulson 
parents: 
14371 
diff
changeset
 | 
304  | 
|
| 
 
69c4d5997669
generic of_nat and of_int functions, and generalization of iszero
 
paulson 
parents: 
14371 
diff
changeset
 | 
305  | 
lemma HNatInfinite_SHNat_diff:  | 
| 
 
69c4d5997669
generic of_nat and of_int functions, and generalization of iszero
 
paulson 
parents: 
14371 
diff
changeset
 | 
306  | 
assumes x: "x \<in> HNatInfinite" and y: "y \<in> Nats"  | 
| 
 
69c4d5997669
generic of_nat and of_int functions, and generalization of iszero
 
paulson 
parents: 
14371 
diff
changeset
 | 
307  | 
shows "x - y \<in> HNatInfinite"  | 
| 
 
69c4d5997669
generic of_nat and of_int functions, and generalization of iszero
 
paulson 
parents: 
14371 
diff
changeset
 | 
308  | 
proof -  | 
| 
 
69c4d5997669
generic of_nat and of_int functions, and generalization of iszero
 
paulson 
parents: 
14371 
diff
changeset
 | 
309  | 
have "y < x" by (simp add: HNatInfinite_Nats_imp_less prems)  | 
| 
 
69c4d5997669
generic of_nat and of_int functions, and generalization of iszero
 
paulson 
parents: 
14371 
diff
changeset
 | 
310  | 
hence "x - y + y = x" by (simp add: order_less_imp_le)  | 
| 
 
69c4d5997669
generic of_nat and of_int functions, and generalization of iszero
 
paulson 
parents: 
14371 
diff
changeset
 | 
311  | 
with x show ?thesis  | 
| 
 
69c4d5997669
generic of_nat and of_int functions, and generalization of iszero
 
paulson 
parents: 
14371 
diff
changeset
 | 
312  | 
by (force simp add: HNatInfinite_not_Nats_iff  | 
| 
 
69c4d5997669
generic of_nat and of_int functions, and generalization of iszero
 
paulson 
parents: 
14371 
diff
changeset
 | 
313  | 
dest: Nats_add [of "x-y", OF _ y])  | 
| 
 
69c4d5997669
generic of_nat and of_int functions, and generalization of iszero
 
paulson 
parents: 
14371 
diff
changeset
 | 
314  | 
qed  | 
| 
14371
 
c78c7da09519
Conversion of HyperNat to Isar format and its declaration as a semiring
 
paulson 
parents: 
13487 
diff
changeset
 | 
315  | 
|
| 14415 | 316  | 
lemma HNatInfinite_add_one:  | 
317  | 
"x \<in> HNatInfinite ==> x + (1::hypnat) \<in> HNatInfinite"  | 
|
| 
14371
 
c78c7da09519
Conversion of HyperNat to Isar format and its declaration as a semiring
 
paulson 
parents: 
13487 
diff
changeset
 | 
318  | 
by (auto intro: HNatInfinite_SHNat_add)  | 
| 
 
c78c7da09519
Conversion of HyperNat to Isar format and its declaration as a semiring
 
paulson 
parents: 
13487 
diff
changeset
 | 
319  | 
|
| 
 
c78c7da09519
Conversion of HyperNat to Isar format and its declaration as a semiring
 
paulson 
parents: 
13487 
diff
changeset
 | 
320  | 
lemma HNatInfinite_is_Suc: "x \<in> HNatInfinite ==> \<exists>y. x = y + (1::hypnat)"  | 
| 
 
c78c7da09519
Conversion of HyperNat to Isar format and its declaration as a semiring
 
paulson 
parents: 
13487 
diff
changeset
 | 
321  | 
apply (rule_tac x = "x - (1::hypnat) " in exI)  | 
| 
 
c78c7da09519
Conversion of HyperNat to Isar format and its declaration as a semiring
 
paulson 
parents: 
13487 
diff
changeset
 | 
322  | 
apply auto  | 
| 
 
c78c7da09519
Conversion of HyperNat to Isar format and its declaration as a semiring
 
paulson 
parents: 
13487 
diff
changeset
 | 
323  | 
done  | 
| 
 
c78c7da09519
Conversion of HyperNat to Isar format and its declaration as a semiring
 
paulson 
parents: 
13487 
diff
changeset
 | 
324  | 
|
| 
 
c78c7da09519
Conversion of HyperNat to Isar format and its declaration as a semiring
 
paulson 
parents: 
13487 
diff
changeset
 | 
325  | 
|
| 
14378
 
69c4d5997669
generic of_nat and of_int functions, and generalization of iszero
 
paulson 
parents: 
14371 
diff
changeset
 | 
326  | 
subsection{*Embedding of the Hypernaturals into the Hyperreals*}
 | 
| 
14371
 
c78c7da09519
Conversion of HyperNat to Isar format and its declaration as a semiring
 
paulson 
parents: 
13487 
diff
changeset
 | 
327  | 
text{*Obtained using the nonstandard extension of the naturals*}
 | 
| 
 
c78c7da09519
Conversion of HyperNat to Isar format and its declaration as a semiring
 
paulson 
parents: 
13487 
diff
changeset
 | 
328  | 
|
| 
14378
 
69c4d5997669
generic of_nat and of_int functions, and generalization of iszero
 
paulson 
parents: 
14371 
diff
changeset
 | 
329  | 
constdefs  | 
| 
 
69c4d5997669
generic of_nat and of_int functions, and generalization of iszero
 
paulson 
parents: 
14371 
diff
changeset
 | 
330  | 
hypreal_of_hypnat :: "hypnat => hypreal"  | 
| 
17318
 
bc1c75855f3d
starfun, starset, and other functions on NS types are now polymorphic;
 
huffman 
parents: 
17299 
diff
changeset
 | 
331  | 
"hypreal_of_hypnat == *f* real"  | 
| 
14371
 
c78c7da09519
Conversion of HyperNat to Isar format and its declaration as a semiring
 
paulson 
parents: 
13487 
diff
changeset
 | 
332  | 
|
| 
17332
 
4910cf8c0cd2
added theorem attributes transfer_intro, transfer_unfold, transfer_refold; simplified some proofs; some rearranging
 
huffman 
parents: 
17318 
diff
changeset
 | 
333  | 
declare hypreal_of_hypnat_def [transfer_unfold]  | 
| 
14371
 
c78c7da09519
Conversion of HyperNat to Isar format and its declaration as a semiring
 
paulson 
parents: 
13487 
diff
changeset
 | 
334  | 
|
| 
14378
 
69c4d5997669
generic of_nat and of_int functions, and generalization of iszero
 
paulson 
parents: 
14371 
diff
changeset
 | 
335  | 
lemma HNat_hypreal_of_nat [simp]: "hypreal_of_nat N \<in> Nats"  | 
| 
 
69c4d5997669
generic of_nat and of_int functions, and generalization of iszero
 
paulson 
parents: 
14371 
diff
changeset
 | 
336  | 
by (simp add: hypreal_of_nat_def)  | 
| 
14371
 
c78c7da09519
Conversion of HyperNat to Isar format and its declaration as a semiring
 
paulson 
parents: 
13487 
diff
changeset
 | 
337  | 
|
| 
 
c78c7da09519
Conversion of HyperNat to Isar format and its declaration as a semiring
 
paulson 
parents: 
13487 
diff
changeset
 | 
338  | 
lemma hypreal_of_hypnat:  | 
| 
17318
 
bc1c75855f3d
starfun, starset, and other functions on NS types are now polymorphic;
 
huffman 
parents: 
17299 
diff
changeset
 | 
339  | 
"hypreal_of_hypnat (star_n X) = star_n (%n. real (X n))"  | 
| 
 
bc1c75855f3d
starfun, starset, and other functions on NS types are now polymorphic;
 
huffman 
parents: 
17299 
diff
changeset
 | 
340  | 
by (simp add: hypreal_of_hypnat_def starfun)  | 
| 
14371
 
c78c7da09519
Conversion of HyperNat to Isar format and its declaration as a semiring
 
paulson 
parents: 
13487 
diff
changeset
 | 
341  | 
|
| 
14378
 
69c4d5997669
generic of_nat and of_int functions, and generalization of iszero
 
paulson 
parents: 
14371 
diff
changeset
 | 
342  | 
lemma hypreal_of_hypnat_inject [simp]:  | 
| 
17318
 
bc1c75855f3d
starfun, starset, and other functions on NS types are now polymorphic;
 
huffman 
parents: 
17299 
diff
changeset
 | 
343  | 
"!!m n. (hypreal_of_hypnat m = hypreal_of_hypnat n) = (m=n)"  | 
| 
17332
 
4910cf8c0cd2
added theorem attributes transfer_intro, transfer_unfold, transfer_refold; simplified some proofs; some rearranging
 
huffman 
parents: 
17318 
diff
changeset
 | 
344  | 
by (transfer, simp)  | 
| 
14371
 
c78c7da09519
Conversion of HyperNat to Isar format and its declaration as a semiring
 
paulson 
parents: 
13487 
diff
changeset
 | 
345  | 
|
| 
 
c78c7da09519
Conversion of HyperNat to Isar format and its declaration as a semiring
 
paulson 
parents: 
13487 
diff
changeset
 | 
346  | 
lemma hypreal_of_hypnat_zero: "hypreal_of_hypnat 0 = 0"  | 
| 
17318
 
bc1c75855f3d
starfun, starset, and other functions on NS types are now polymorphic;
 
huffman 
parents: 
17299 
diff
changeset
 | 
347  | 
by (simp add: star_n_zero_num hypreal_of_hypnat)  | 
| 
14371
 
c78c7da09519
Conversion of HyperNat to Isar format and its declaration as a semiring
 
paulson 
parents: 
13487 
diff
changeset
 | 
348  | 
|
| 
 
c78c7da09519
Conversion of HyperNat to Isar format and its declaration as a semiring
 
paulson 
parents: 
13487 
diff
changeset
 | 
349  | 
lemma hypreal_of_hypnat_one: "hypreal_of_hypnat (1::hypnat) = 1"  | 
| 
17318
 
bc1c75855f3d
starfun, starset, and other functions on NS types are now polymorphic;
 
huffman 
parents: 
17299 
diff
changeset
 | 
350  | 
by (simp add: star_n_one_num hypreal_of_hypnat)  | 
| 
14371
 
c78c7da09519
Conversion of HyperNat to Isar format and its declaration as a semiring
 
paulson 
parents: 
13487 
diff
changeset
 | 
351  | 
|
| 
 
c78c7da09519
Conversion of HyperNat to Isar format and its declaration as a semiring
 
paulson 
parents: 
13487 
diff
changeset
 | 
352  | 
lemma hypreal_of_hypnat_add [simp]:  | 
| 
17318
 
bc1c75855f3d
starfun, starset, and other functions on NS types are now polymorphic;
 
huffman 
parents: 
17299 
diff
changeset
 | 
353  | 
"!!m n. hypreal_of_hypnat (m + n) = hypreal_of_hypnat m + hypreal_of_hypnat n"  | 
| 
17332
 
4910cf8c0cd2
added theorem attributes transfer_intro, transfer_unfold, transfer_refold; simplified some proofs; some rearranging
 
huffman 
parents: 
17318 
diff
changeset
 | 
354  | 
by (transfer, rule real_of_nat_add)  | 
| 
14371
 
c78c7da09519
Conversion of HyperNat to Isar format and its declaration as a semiring
 
paulson 
parents: 
13487 
diff
changeset
 | 
355  | 
|
| 
 
c78c7da09519
Conversion of HyperNat to Isar format and its declaration as a semiring
 
paulson 
parents: 
13487 
diff
changeset
 | 
356  | 
lemma hypreal_of_hypnat_mult [simp]:  | 
| 
17318
 
bc1c75855f3d
starfun, starset, and other functions on NS types are now polymorphic;
 
huffman 
parents: 
17299 
diff
changeset
 | 
357  | 
"!!m n. hypreal_of_hypnat (m * n) = hypreal_of_hypnat m * hypreal_of_hypnat n"  | 
| 
17332
 
4910cf8c0cd2
added theorem attributes transfer_intro, transfer_unfold, transfer_refold; simplified some proofs; some rearranging
 
huffman 
parents: 
17318 
diff
changeset
 | 
358  | 
by (transfer, rule real_of_nat_mult)  | 
| 
14371
 
c78c7da09519
Conversion of HyperNat to Isar format and its declaration as a semiring
 
paulson 
parents: 
13487 
diff
changeset
 | 
359  | 
|
| 
 
c78c7da09519
Conversion of HyperNat to Isar format and its declaration as a semiring
 
paulson 
parents: 
13487 
diff
changeset
 | 
360  | 
lemma hypreal_of_hypnat_less_iff [simp]:  | 
| 
17318
 
bc1c75855f3d
starfun, starset, and other functions on NS types are now polymorphic;
 
huffman 
parents: 
17299 
diff
changeset
 | 
361  | 
"!!m n. (hypreal_of_hypnat n < hypreal_of_hypnat m) = (n < m)"  | 
| 
17332
 
4910cf8c0cd2
added theorem attributes transfer_intro, transfer_unfold, transfer_refold; simplified some proofs; some rearranging
 
huffman 
parents: 
17318 
diff
changeset
 | 
362  | 
by (transfer, simp)  | 
| 
14371
 
c78c7da09519
Conversion of HyperNat to Isar format and its declaration as a semiring
 
paulson 
parents: 
13487 
diff
changeset
 | 
363  | 
|
| 
 
c78c7da09519
Conversion of HyperNat to Isar format and its declaration as a semiring
 
paulson 
parents: 
13487 
diff
changeset
 | 
364  | 
lemma hypreal_of_hypnat_eq_zero_iff: "(hypreal_of_hypnat N = 0) = (N = 0)"  | 
| 
 
c78c7da09519
Conversion of HyperNat to Isar format and its declaration as a semiring
 
paulson 
parents: 
13487 
diff
changeset
 | 
365  | 
by (simp add: hypreal_of_hypnat_zero [symmetric])  | 
| 
 
c78c7da09519
Conversion of HyperNat to Isar format and its declaration as a semiring
 
paulson 
parents: 
13487 
diff
changeset
 | 
366  | 
declare hypreal_of_hypnat_eq_zero_iff [simp]  | 
| 
 
c78c7da09519
Conversion of HyperNat to Isar format and its declaration as a semiring
 
paulson 
parents: 
13487 
diff
changeset
 | 
367  | 
|
| 
17318
 
bc1c75855f3d
starfun, starset, and other functions on NS types are now polymorphic;
 
huffman 
parents: 
17299 
diff
changeset
 | 
368  | 
lemma hypreal_of_hypnat_ge_zero [simp]: "!!n. 0 \<le> hypreal_of_hypnat n"  | 
| 
17332
 
4910cf8c0cd2
added theorem attributes transfer_intro, transfer_unfold, transfer_refold; simplified some proofs; some rearranging
 
huffman 
parents: 
17318 
diff
changeset
 | 
369  | 
by (transfer, simp)  | 
| 
14371
 
c78c7da09519
Conversion of HyperNat to Isar format and its declaration as a semiring
 
paulson 
parents: 
13487 
diff
changeset
 | 
370  | 
|
| 
14378
 
69c4d5997669
generic of_nat and of_int functions, and generalization of iszero
 
paulson 
parents: 
14371 
diff
changeset
 | 
371  | 
lemma HNatInfinite_inverse_Infinitesimal [simp]:  | 
| 
 
69c4d5997669
generic of_nat and of_int functions, and generalization of iszero
 
paulson 
parents: 
14371 
diff
changeset
 | 
372  | 
"n \<in> HNatInfinite ==> inverse (hypreal_of_hypnat n) \<in> Infinitesimal"  | 
| 
17318
 
bc1c75855f3d
starfun, starset, and other functions on NS types are now polymorphic;
 
huffman 
parents: 
17299 
diff
changeset
 | 
373  | 
apply (cases n)  | 
| 
 
bc1c75855f3d
starfun, starset, and other functions on NS types are now polymorphic;
 
huffman 
parents: 
17299 
diff
changeset
 | 
374  | 
apply (auto simp add: hypreal_of_hypnat star_n_inverse  | 
| 
14378
 
69c4d5997669
generic of_nat and of_int functions, and generalization of iszero
 
paulson 
parents: 
14371 
diff
changeset
 | 
375  | 
HNatInfinite_FreeUltrafilterNat_iff Infinitesimal_FreeUltrafilterNat_iff2)  | 
| 
17318
 
bc1c75855f3d
starfun, starset, and other functions on NS types are now polymorphic;
 
huffman 
parents: 
17299 
diff
changeset
 | 
376  | 
apply (rule bexI [OF _ Rep_star_star_n], auto)  | 
| 
14371
 
c78c7da09519
Conversion of HyperNat to Isar format and its declaration as a semiring
 
paulson 
parents: 
13487 
diff
changeset
 | 
377  | 
apply (drule_tac x = "m + 1" in spec, ultra)  | 
| 
 
c78c7da09519
Conversion of HyperNat to Isar format and its declaration as a semiring
 
paulson 
parents: 
13487 
diff
changeset
 | 
378  | 
done  | 
| 
 
c78c7da09519
Conversion of HyperNat to Isar format and its declaration as a semiring
 
paulson 
parents: 
13487 
diff
changeset
 | 
379  | 
|
| 
14420
 
4e72cd222e0b
converted Hyperreal/HTranscendental to Isar script
 
paulson 
parents: 
14415 
diff
changeset
 | 
380  | 
lemma HNatInfinite_hypreal_of_hypnat_gt_zero:  | 
| 
 
4e72cd222e0b
converted Hyperreal/HTranscendental to Isar script
 
paulson 
parents: 
14415 
diff
changeset
 | 
381  | 
"N \<in> HNatInfinite ==> 0 < hypreal_of_hypnat N"  | 
| 
 
4e72cd222e0b
converted Hyperreal/HTranscendental to Isar script
 
paulson 
parents: 
14415 
diff
changeset
 | 
382  | 
apply (rule ccontr)  | 
| 
 
4e72cd222e0b
converted Hyperreal/HTranscendental to Isar script
 
paulson 
parents: 
14415 
diff
changeset
 | 
383  | 
apply (simp add: hypreal_of_hypnat_zero [symmetric] linorder_not_less)  | 
| 
 
4e72cd222e0b
converted Hyperreal/HTranscendental to Isar script
 
paulson 
parents: 
14415 
diff
changeset
 | 
384  | 
done  | 
| 
 
4e72cd222e0b
converted Hyperreal/HTranscendental to Isar script
 
paulson 
parents: 
14415 
diff
changeset
 | 
385  | 
|
| 
14371
 
c78c7da09519
Conversion of HyperNat to Isar format and its declaration as a semiring
 
paulson 
parents: 
13487 
diff
changeset
 | 
386  | 
|
| 
 
c78c7da09519
Conversion of HyperNat to Isar format and its declaration as a semiring
 
paulson 
parents: 
13487 
diff
changeset
 | 
387  | 
ML  | 
| 
 
c78c7da09519
Conversion of HyperNat to Isar format and its declaration as a semiring
 
paulson 
parents: 
13487 
diff
changeset
 | 
388  | 
{*
 | 
| 
 
c78c7da09519
Conversion of HyperNat to Isar format and its declaration as a semiring
 
paulson 
parents: 
13487 
diff
changeset
 | 
389  | 
val hypnat_of_nat_def = thm"hypnat_of_nat_def";  | 
| 
 
c78c7da09519
Conversion of HyperNat to Isar format and its declaration as a semiring
 
paulson 
parents: 
13487 
diff
changeset
 | 
390  | 
val HNatInfinite_def = thm"HNatInfinite_def";  | 
| 
 
c78c7da09519
Conversion of HyperNat to Isar format and its declaration as a semiring
 
paulson 
parents: 
13487 
diff
changeset
 | 
391  | 
val hypreal_of_hypnat_def = thm"hypreal_of_hypnat_def";  | 
| 
 
c78c7da09519
Conversion of HyperNat to Isar format and its declaration as a semiring
 
paulson 
parents: 
13487 
diff
changeset
 | 
392  | 
val hypnat_omega_def = thm"hypnat_omega_def";  | 
| 
 
c78c7da09519
Conversion of HyperNat to Isar format and its declaration as a semiring
 
paulson 
parents: 
13487 
diff
changeset
 | 
393  | 
|
| 17299 | 394  | 
val starrel_iff = thm "starrel_iff";  | 
395  | 
val lemma_starrel_refl = thm "lemma_starrel_refl";  | 
|
| 
14371
 
c78c7da09519
Conversion of HyperNat to Isar format and its declaration as a semiring
 
paulson 
parents: 
13487 
diff
changeset
 | 
396  | 
val hypnat_minus_zero = thm "hypnat_minus_zero";  | 
| 
 
c78c7da09519
Conversion of HyperNat to Isar format and its declaration as a semiring
 
paulson 
parents: 
13487 
diff
changeset
 | 
397  | 
val hypnat_diff_0_eq_0 = thm "hypnat_diff_0_eq_0";  | 
| 
 
c78c7da09519
Conversion of HyperNat to Isar format and its declaration as a semiring
 
paulson 
parents: 
13487 
diff
changeset
 | 
398  | 
val hypnat_add_is_0 = thm "hypnat_add_is_0";  | 
| 
 
c78c7da09519
Conversion of HyperNat to Isar format and its declaration as a semiring
 
paulson 
parents: 
13487 
diff
changeset
 | 
399  | 
val hypnat_diff_diff_left = thm "hypnat_diff_diff_left";  | 
| 
 
c78c7da09519
Conversion of HyperNat to Isar format and its declaration as a semiring
 
paulson 
parents: 
13487 
diff
changeset
 | 
400  | 
val hypnat_diff_commute = thm "hypnat_diff_commute";  | 
| 
 
c78c7da09519
Conversion of HyperNat to Isar format and its declaration as a semiring
 
paulson 
parents: 
13487 
diff
changeset
 | 
401  | 
val hypnat_diff_add_inverse = thm "hypnat_diff_add_inverse";  | 
| 
 
c78c7da09519
Conversion of HyperNat to Isar format and its declaration as a semiring
 
paulson 
parents: 
13487 
diff
changeset
 | 
402  | 
val hypnat_diff_add_inverse2 = thm "hypnat_diff_add_inverse2";  | 
| 
 
c78c7da09519
Conversion of HyperNat to Isar format and its declaration as a semiring
 
paulson 
parents: 
13487 
diff
changeset
 | 
403  | 
val hypnat_diff_cancel = thm "hypnat_diff_cancel";  | 
| 
 
c78c7da09519
Conversion of HyperNat to Isar format and its declaration as a semiring
 
paulson 
parents: 
13487 
diff
changeset
 | 
404  | 
val hypnat_diff_cancel2 = thm "hypnat_diff_cancel2";  | 
| 
 
c78c7da09519
Conversion of HyperNat to Isar format and its declaration as a semiring
 
paulson 
parents: 
13487 
diff
changeset
 | 
405  | 
val hypnat_diff_add_0 = thm "hypnat_diff_add_0";  | 
| 
 
c78c7da09519
Conversion of HyperNat to Isar format and its declaration as a semiring
 
paulson 
parents: 
13487 
diff
changeset
 | 
406  | 
val hypnat_diff_mult_distrib = thm "hypnat_diff_mult_distrib";  | 
| 
 
c78c7da09519
Conversion of HyperNat to Isar format and its declaration as a semiring
 
paulson 
parents: 
13487 
diff
changeset
 | 
407  | 
val hypnat_diff_mult_distrib2 = thm "hypnat_diff_mult_distrib2";  | 
| 
 
c78c7da09519
Conversion of HyperNat to Isar format and its declaration as a semiring
 
paulson 
parents: 
13487 
diff
changeset
 | 
408  | 
val hypnat_mult_is_0 = thm "hypnat_mult_is_0";  | 
| 
 
c78c7da09519
Conversion of HyperNat to Isar format and its declaration as a semiring
 
paulson 
parents: 
13487 
diff
changeset
 | 
409  | 
val hypnat_not_less0 = thm "hypnat_not_less0";  | 
| 
 
c78c7da09519
Conversion of HyperNat to Isar format and its declaration as a semiring
 
paulson 
parents: 
13487 
diff
changeset
 | 
410  | 
val hypnat_less_one = thm "hypnat_less_one";  | 
| 
 
c78c7da09519
Conversion of HyperNat to Isar format and its declaration as a semiring
 
paulson 
parents: 
13487 
diff
changeset
 | 
411  | 
val hypnat_add_diff_inverse = thm "hypnat_add_diff_inverse";  | 
| 
 
c78c7da09519
Conversion of HyperNat to Isar format and its declaration as a semiring
 
paulson 
parents: 
13487 
diff
changeset
 | 
412  | 
val hypnat_le_add_diff_inverse = thm "hypnat_le_add_diff_inverse";  | 
| 
 
c78c7da09519
Conversion of HyperNat to Isar format and its declaration as a semiring
 
paulson 
parents: 
13487 
diff
changeset
 | 
413  | 
val hypnat_le_add_diff_inverse2 = thm "hypnat_le_add_diff_inverse2";  | 
| 
 
c78c7da09519
Conversion of HyperNat to Isar format and its declaration as a semiring
 
paulson 
parents: 
13487 
diff
changeset
 | 
414  | 
val hypnat_le0 = thm "hypnat_le0";  | 
| 
 
c78c7da09519
Conversion of HyperNat to Isar format and its declaration as a semiring
 
paulson 
parents: 
13487 
diff
changeset
 | 
415  | 
val hypnat_add_self_le = thm "hypnat_add_self_le";  | 
| 
 
c78c7da09519
Conversion of HyperNat to Isar format and its declaration as a semiring
 
paulson 
parents: 
13487 
diff
changeset
 | 
416  | 
val hypnat_add_one_self_less = thm "hypnat_add_one_self_less";  | 
| 
 
c78c7da09519
Conversion of HyperNat to Isar format and its declaration as a semiring
 
paulson 
parents: 
13487 
diff
changeset
 | 
417  | 
val hypnat_neq0_conv = thm "hypnat_neq0_conv";  | 
| 
 
c78c7da09519
Conversion of HyperNat to Isar format and its declaration as a semiring
 
paulson 
parents: 
13487 
diff
changeset
 | 
418  | 
val hypnat_gt_zero_iff = thm "hypnat_gt_zero_iff";  | 
| 
 
c78c7da09519
Conversion of HyperNat to Isar format and its declaration as a semiring
 
paulson 
parents: 
13487 
diff
changeset
 | 
419  | 
val hypnat_gt_zero_iff2 = thm "hypnat_gt_zero_iff2";  | 
| 14415 | 420  | 
val SHNat_eq = thm"SHNat_eq"  | 
| 
14371
 
c78c7da09519
Conversion of HyperNat to Isar format and its declaration as a semiring
 
paulson 
parents: 
13487 
diff
changeset
 | 
421  | 
val hypnat_of_nat_one = thm "hypnat_of_nat_one";  | 
| 
 
c78c7da09519
Conversion of HyperNat to Isar format and its declaration as a semiring
 
paulson 
parents: 
13487 
diff
changeset
 | 
422  | 
val hypnat_of_nat_Suc = thm "hypnat_of_nat_Suc";  | 
| 
 
c78c7da09519
Conversion of HyperNat to Isar format and its declaration as a semiring
 
paulson 
parents: 
13487 
diff
changeset
 | 
423  | 
val SHNAT_omega_not_mem = thm "SHNAT_omega_not_mem";  | 
| 
 
c78c7da09519
Conversion of HyperNat to Isar format and its declaration as a semiring
 
paulson 
parents: 
13487 
diff
changeset
 | 
424  | 
val cofinite_mem_FreeUltrafilterNat = thm "cofinite_mem_FreeUltrafilterNat";  | 
| 
 
c78c7da09519
Conversion of HyperNat to Isar format and its declaration as a semiring
 
paulson 
parents: 
13487 
diff
changeset
 | 
425  | 
val hypnat_omega_gt_SHNat = thm "hypnat_omega_gt_SHNat";  | 
| 
 
c78c7da09519
Conversion of HyperNat to Isar format and its declaration as a semiring
 
paulson 
parents: 
13487 
diff
changeset
 | 
426  | 
val hypnat_of_nat_less_whn = thm "hypnat_of_nat_less_whn";  | 
| 
 
c78c7da09519
Conversion of HyperNat to Isar format and its declaration as a semiring
 
paulson 
parents: 
13487 
diff
changeset
 | 
427  | 
val hypnat_of_nat_le_whn = thm "hypnat_of_nat_le_whn";  | 
| 
 
c78c7da09519
Conversion of HyperNat to Isar format and its declaration as a semiring
 
paulson 
parents: 
13487 
diff
changeset
 | 
428  | 
val hypnat_zero_less_hypnat_omega = thm "hypnat_zero_less_hypnat_omega";  | 
| 
 
c78c7da09519
Conversion of HyperNat to Isar format and its declaration as a semiring
 
paulson 
parents: 
13487 
diff
changeset
 | 
429  | 
val hypnat_one_less_hypnat_omega = thm "hypnat_one_less_hypnat_omega";  | 
| 
 
c78c7da09519
Conversion of HyperNat to Isar format and its declaration as a semiring
 
paulson 
parents: 
13487 
diff
changeset
 | 
430  | 
val HNatInfinite_whn = thm "HNatInfinite_whn";  | 
| 
 
c78c7da09519
Conversion of HyperNat to Isar format and its declaration as a semiring
 
paulson 
parents: 
13487 
diff
changeset
 | 
431  | 
val HNatInfinite_iff = thm "HNatInfinite_iff";  | 
| 
 
c78c7da09519
Conversion of HyperNat to Isar format and its declaration as a semiring
 
paulson 
parents: 
13487 
diff
changeset
 | 
432  | 
val HNatInfinite_FreeUltrafilterNat = thm "HNatInfinite_FreeUltrafilterNat";  | 
| 
 
c78c7da09519
Conversion of HyperNat to Isar format and its declaration as a semiring
 
paulson 
parents: 
13487 
diff
changeset
 | 
433  | 
val FreeUltrafilterNat_HNatInfinite = thm "FreeUltrafilterNat_HNatInfinite";  | 
| 
 
c78c7da09519
Conversion of HyperNat to Isar format and its declaration as a semiring
 
paulson 
parents: 
13487 
diff
changeset
 | 
434  | 
val HNatInfinite_FreeUltrafilterNat_iff = thm "HNatInfinite_FreeUltrafilterNat_iff";  | 
| 
 
c78c7da09519
Conversion of HyperNat to Isar format and its declaration as a semiring
 
paulson 
parents: 
13487 
diff
changeset
 | 
435  | 
val HNatInfinite_gt_one = thm "HNatInfinite_gt_one";  | 
| 
 
c78c7da09519
Conversion of HyperNat to Isar format and its declaration as a semiring
 
paulson 
parents: 
13487 
diff
changeset
 | 
436  | 
val zero_not_mem_HNatInfinite = thm "zero_not_mem_HNatInfinite";  | 
| 
 
c78c7da09519
Conversion of HyperNat to Isar format and its declaration as a semiring
 
paulson 
parents: 
13487 
diff
changeset
 | 
437  | 
val HNatInfinite_not_eq_zero = thm "HNatInfinite_not_eq_zero";  | 
| 
 
c78c7da09519
Conversion of HyperNat to Isar format and its declaration as a semiring
 
paulson 
parents: 
13487 
diff
changeset
 | 
438  | 
val HNatInfinite_ge_one = thm "HNatInfinite_ge_one";  | 
| 
 
c78c7da09519
Conversion of HyperNat to Isar format and its declaration as a semiring
 
paulson 
parents: 
13487 
diff
changeset
 | 
439  | 
val HNatInfinite_add = thm "HNatInfinite_add";  | 
| 
 
c78c7da09519
Conversion of HyperNat to Isar format and its declaration as a semiring
 
paulson 
parents: 
13487 
diff
changeset
 | 
440  | 
val HNatInfinite_SHNat_add = thm "HNatInfinite_SHNat_add";  | 
| 
 
c78c7da09519
Conversion of HyperNat to Isar format and its declaration as a semiring
 
paulson 
parents: 
13487 
diff
changeset
 | 
441  | 
val HNatInfinite_SHNat_diff = thm "HNatInfinite_SHNat_diff";  | 
| 
 
c78c7da09519
Conversion of HyperNat to Isar format and its declaration as a semiring
 
paulson 
parents: 
13487 
diff
changeset
 | 
442  | 
val HNatInfinite_add_one = thm "HNatInfinite_add_one";  | 
| 
 
c78c7da09519
Conversion of HyperNat to Isar format and its declaration as a semiring
 
paulson 
parents: 
13487 
diff
changeset
 | 
443  | 
val HNatInfinite_is_Suc = thm "HNatInfinite_is_Suc";  | 
| 
 
c78c7da09519
Conversion of HyperNat to Isar format and its declaration as a semiring
 
paulson 
parents: 
13487 
diff
changeset
 | 
444  | 
val HNat_hypreal_of_nat = thm "HNat_hypreal_of_nat";  | 
| 
 
c78c7da09519
Conversion of HyperNat to Isar format and its declaration as a semiring
 
paulson 
parents: 
13487 
diff
changeset
 | 
445  | 
val hypreal_of_hypnat = thm "hypreal_of_hypnat";  | 
| 
 
c78c7da09519
Conversion of HyperNat to Isar format and its declaration as a semiring
 
paulson 
parents: 
13487 
diff
changeset
 | 
446  | 
val hypreal_of_hypnat_zero = thm "hypreal_of_hypnat_zero";  | 
| 
 
c78c7da09519
Conversion of HyperNat to Isar format and its declaration as a semiring
 
paulson 
parents: 
13487 
diff
changeset
 | 
447  | 
val hypreal_of_hypnat_one = thm "hypreal_of_hypnat_one";  | 
| 
 
c78c7da09519
Conversion of HyperNat to Isar format and its declaration as a semiring
 
paulson 
parents: 
13487 
diff
changeset
 | 
448  | 
val hypreal_of_hypnat_add = thm "hypreal_of_hypnat_add";  | 
| 
 
c78c7da09519
Conversion of HyperNat to Isar format and its declaration as a semiring
 
paulson 
parents: 
13487 
diff
changeset
 | 
449  | 
val hypreal_of_hypnat_mult = thm "hypreal_of_hypnat_mult";  | 
| 
 
c78c7da09519
Conversion of HyperNat to Isar format and its declaration as a semiring
 
paulson 
parents: 
13487 
diff
changeset
 | 
450  | 
val hypreal_of_hypnat_less_iff = thm "hypreal_of_hypnat_less_iff";  | 
| 
 
c78c7da09519
Conversion of HyperNat to Isar format and its declaration as a semiring
 
paulson 
parents: 
13487 
diff
changeset
 | 
451  | 
val hypreal_of_hypnat_ge_zero = thm "hypreal_of_hypnat_ge_zero";  | 
| 
 
c78c7da09519
Conversion of HyperNat to Isar format and its declaration as a semiring
 
paulson 
parents: 
13487 
diff
changeset
 | 
452  | 
val HNatInfinite_inverse_Infinitesimal = thm "HNatInfinite_inverse_Infinitesimal";  | 
| 
 
c78c7da09519
Conversion of HyperNat to Isar format and its declaration as a semiring
 
paulson 
parents: 
13487 
diff
changeset
 | 
453  | 
*}  | 
| 
 
c78c7da09519
Conversion of HyperNat to Isar format and its declaration as a semiring
 
paulson 
parents: 
13487 
diff
changeset
 | 
454  | 
|
| 
 
c78c7da09519
Conversion of HyperNat to Isar format and its declaration as a semiring
 
paulson 
parents: 
13487 
diff
changeset
 | 
455  | 
end  |