author | kleing |
Sat, 01 Mar 2003 16:45:51 +0100 | |
changeset 13840 | 399c8103a98f |
parent 11713 | 883d559b0b8c |
child 14348 | 744c868ee0b7 |
permissions | -rw-r--r-- |
10751 | 1 |
(* Title : HyperPow.thy |
2 |
Author : Jacques D. Fleuriot |
|
3 |
Copyright : 1998 University of Cambridge |
|
4 |
Description : Powers theory for hyperreals |
|
5 |
*) |
|
6 |
||
7 |
HyperPow = HRealAbs + HyperNat + RealPow + |
|
8 |
||
10778
2c6605049646
more tidying, especially to remove real_of_posnat
paulson
parents:
10751
diff
changeset
|
9 |
(** First: hypnat is linearly ordered **) |
2c6605049646
more tidying, especially to remove real_of_posnat
paulson
parents:
10751
diff
changeset
|
10 |
|
2c6605049646
more tidying, especially to remove real_of_posnat
paulson
parents:
10751
diff
changeset
|
11 |
instance hypnat :: order (hypnat_le_refl,hypnat_le_trans,hypnat_le_anti_sym, |
2c6605049646
more tidying, especially to remove real_of_posnat
paulson
parents:
10751
diff
changeset
|
12 |
hypnat_less_le) |
2c6605049646
more tidying, especially to remove real_of_posnat
paulson
parents:
10751
diff
changeset
|
13 |
instance hypnat :: linorder (hypnat_le_linear) |
2c6605049646
more tidying, especially to remove real_of_posnat
paulson
parents:
10751
diff
changeset
|
14 |
|
2c6605049646
more tidying, especially to remove real_of_posnat
paulson
parents:
10751
diff
changeset
|
15 |
instance hypnat :: plus_ac0(hypnat_add_commute,hypnat_add_assoc, |
2c6605049646
more tidying, especially to remove real_of_posnat
paulson
parents:
10751
diff
changeset
|
16 |
hypnat_add_zero_left) |
2c6605049646
more tidying, especially to remove real_of_posnat
paulson
parents:
10751
diff
changeset
|
17 |
|
2c6605049646
more tidying, especially to remove real_of_posnat
paulson
parents:
10751
diff
changeset
|
18 |
|
10751 | 19 |
instance hypreal :: {power} |
20 |
||
21 |
consts hpowr :: "[hypreal,nat] => hypreal" |
|
22 |
primrec |
|
11713
883d559b0b8c
sane numerals (stage 3): provide generic "1" on all number types;
wenzelm
parents:
10834
diff
changeset
|
23 |
hpowr_0 "r ^ 0 = (1::hypreal)" |
10751 | 24 |
hpowr_Suc "r ^ (Suc n) = (r::hypreal) * (r ^ n)" |
25 |
||
26 |
consts |
|
27 |
"pow" :: [hypreal,hypnat] => hypreal (infixr 80) |
|
28 |
||
29 |
defs |
|
30 |
||
31 |
(* hypernatural powers of hyperreals *) |
|
32 |
hyperpow_def |
|
33 |
"(R::hypreal) pow (N::hypnat) |
|
34 |
== Abs_hypreal(UN X:Rep_hypreal(R). UN Y: Rep_hypnat(N). |
|
10834 | 35 |
hyprel``{%n::nat. (X n) ^ (Y n)})" |
10751 | 36 |
end |