doc-src/TutorialI/Types/Numbers.thy
author blanchet
Wed, 04 Mar 2009 11:05:29 +0100
changeset 30242 aea5d7fa7ef5
parent 30240 5b25fee0362c
parent 30224 79136ce06bdb
child 32834 a4e0b8d88f28
permissions -rw-r--r--
Merge.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
27376
ffe9b958bada adjusted import
haftmann
parents: 23504
diff changeset
     1
theory Numbers
ffe9b958bada adjusted import
haftmann
parents: 23504
diff changeset
     2
imports Complex_Main
ffe9b958bada adjusted import
haftmann
parents: 23504
diff changeset
     3
begin
10603
539735ddaea9 theory file for Numbers section
paulson
parents:
diff changeset
     4
539735ddaea9 theory file for Numbers section
paulson
parents:
diff changeset
     5
ML "Pretty.setmargin 64"
22097
7ee0529c5674 renamed IsarOutput to ThyOutput;
wenzelm
parents: 16585
diff changeset
     6
ML "ThyOutput.indent := 0"  (*we don't want 5 for listing theorems*)
10603
539735ddaea9 theory file for Numbers section
paulson
parents:
diff changeset
     7
539735ddaea9 theory file for Numbers section
paulson
parents:
diff changeset
     8
text{*
539735ddaea9 theory file for Numbers section
paulson
parents:
diff changeset
     9
539735ddaea9 theory file for Numbers section
paulson
parents:
diff changeset
    10
numeric literals; default simprules; can re-orient
539735ddaea9 theory file for Numbers section
paulson
parents:
diff changeset
    11
*}
539735ddaea9 theory file for Numbers section
paulson
parents:
diff changeset
    12
11711
ecdfd237ffee fixed numerals;
wenzelm
parents: 11480
diff changeset
    13
lemma "2 * m = m + m"
10880
729a36e469ec updated for new version of numerics.tex
paulson
parents: 10777
diff changeset
    14
txt{*
729a36e469ec updated for new version of numerics.tex
paulson
parents: 10777
diff changeset
    15
@{subgoals[display,indent=0,margin=65]}
729a36e469ec updated for new version of numerics.tex
paulson
parents: 10777
diff changeset
    16
*};
10603
539735ddaea9 theory file for Numbers section
paulson
parents:
diff changeset
    17
oops
539735ddaea9 theory file for Numbers section
paulson
parents:
diff changeset
    18
10880
729a36e469ec updated for new version of numerics.tex
paulson
parents: 10777
diff changeset
    19
consts h :: "nat \<Rightarrow> nat"
729a36e469ec updated for new version of numerics.tex
paulson
parents: 10777
diff changeset
    20
recdef h "{}"
11711
ecdfd237ffee fixed numerals;
wenzelm
parents: 11480
diff changeset
    21
"h i = (if i = 3 then 2 else i)"
10880
729a36e469ec updated for new version of numerics.tex
paulson
parents: 10777
diff changeset
    22
10603
539735ddaea9 theory file for Numbers section
paulson
parents:
diff changeset
    23
text{*
11711
ecdfd237ffee fixed numerals;
wenzelm
parents: 11480
diff changeset
    24
@{term"h 3 = 2"}
10880
729a36e469ec updated for new version of numerics.tex
paulson
parents: 10777
diff changeset
    25
@{term"h i  = i"}
729a36e469ec updated for new version of numerics.tex
paulson
parents: 10777
diff changeset
    26
*}
10603
539735ddaea9 theory file for Numbers section
paulson
parents:
diff changeset
    27
10880
729a36e469ec updated for new version of numerics.tex
paulson
parents: 10777
diff changeset
    28
text{*
10603
539735ddaea9 theory file for Numbers section
paulson
parents:
diff changeset
    29
@{thm[display] numeral_0_eq_0[no_vars]}
539735ddaea9 theory file for Numbers section
paulson
parents:
diff changeset
    30
\rulename{numeral_0_eq_0}
539735ddaea9 theory file for Numbers section
paulson
parents:
diff changeset
    31
539735ddaea9 theory file for Numbers section
paulson
parents:
diff changeset
    32
@{thm[display] numeral_1_eq_1[no_vars]}
539735ddaea9 theory file for Numbers section
paulson
parents:
diff changeset
    33
\rulename{numeral_1_eq_1}
539735ddaea9 theory file for Numbers section
paulson
parents:
diff changeset
    34
539735ddaea9 theory file for Numbers section
paulson
parents:
diff changeset
    35
@{thm[display] add_2_eq_Suc[no_vars]}
539735ddaea9 theory file for Numbers section
paulson
parents:
diff changeset
    36
\rulename{add_2_eq_Suc}
539735ddaea9 theory file for Numbers section
paulson
parents:
diff changeset
    37
539735ddaea9 theory file for Numbers section
paulson
parents:
diff changeset
    38
@{thm[display] add_2_eq_Suc'[no_vars]}
539735ddaea9 theory file for Numbers section
paulson
parents:
diff changeset
    39
\rulename{add_2_eq_Suc'}
539735ddaea9 theory file for Numbers section
paulson
parents:
diff changeset
    40
539735ddaea9 theory file for Numbers section
paulson
parents:
diff changeset
    41
@{thm[display] add_assoc[no_vars]}
539735ddaea9 theory file for Numbers section
paulson
parents:
diff changeset
    42
\rulename{add_assoc}
539735ddaea9 theory file for Numbers section
paulson
parents:
diff changeset
    43
539735ddaea9 theory file for Numbers section
paulson
parents:
diff changeset
    44
@{thm[display] add_commute[no_vars]}
539735ddaea9 theory file for Numbers section
paulson
parents:
diff changeset
    45
\rulename{add_commute}
539735ddaea9 theory file for Numbers section
paulson
parents:
diff changeset
    46
539735ddaea9 theory file for Numbers section
paulson
parents:
diff changeset
    47
@{thm[display] add_left_commute[no_vars]}
539735ddaea9 theory file for Numbers section
paulson
parents:
diff changeset
    48
\rulename{add_left_commute}
539735ddaea9 theory file for Numbers section
paulson
parents:
diff changeset
    49
539735ddaea9 theory file for Numbers section
paulson
parents:
diff changeset
    50
these form add_ac; similarly there is mult_ac
539735ddaea9 theory file for Numbers section
paulson
parents:
diff changeset
    51
*}
539735ddaea9 theory file for Numbers section
paulson
parents:
diff changeset
    52
539735ddaea9 theory file for Numbers section
paulson
parents:
diff changeset
    53
lemma "Suc(i + j*l*k + m*n) = f (n*m + i + k*j*l)"
10880
729a36e469ec updated for new version of numerics.tex
paulson
parents: 10777
diff changeset
    54
txt{*
729a36e469ec updated for new version of numerics.tex
paulson
parents: 10777
diff changeset
    55
@{subgoals[display,indent=0,margin=65]}
729a36e469ec updated for new version of numerics.tex
paulson
parents: 10777
diff changeset
    56
*};
10603
539735ddaea9 theory file for Numbers section
paulson
parents:
diff changeset
    57
apply (simp add: add_ac mult_ac)
10880
729a36e469ec updated for new version of numerics.tex
paulson
parents: 10777
diff changeset
    58
txt{*
729a36e469ec updated for new version of numerics.tex
paulson
parents: 10777
diff changeset
    59
@{subgoals[display,indent=0,margin=65]}
729a36e469ec updated for new version of numerics.tex
paulson
parents: 10777
diff changeset
    60
*};
10603
539735ddaea9 theory file for Numbers section
paulson
parents:
diff changeset
    61
oops
539735ddaea9 theory file for Numbers section
paulson
parents:
diff changeset
    62
539735ddaea9 theory file for Numbers section
paulson
parents:
diff changeset
    63
text{*
539735ddaea9 theory file for Numbers section
paulson
parents:
diff changeset
    64
539735ddaea9 theory file for Numbers section
paulson
parents:
diff changeset
    65
@{thm[display] div_le_mono[no_vars]}
539735ddaea9 theory file for Numbers section
paulson
parents:
diff changeset
    66
\rulename{div_le_mono}
539735ddaea9 theory file for Numbers section
paulson
parents:
diff changeset
    67
539735ddaea9 theory file for Numbers section
paulson
parents:
diff changeset
    68
@{thm[display] diff_mult_distrib[no_vars]}
539735ddaea9 theory file for Numbers section
paulson
parents:
diff changeset
    69
\rulename{diff_mult_distrib}
539735ddaea9 theory file for Numbers section
paulson
parents:
diff changeset
    70
539735ddaea9 theory file for Numbers section
paulson
parents:
diff changeset
    71
@{thm[display] mod_mult_distrib[no_vars]}
539735ddaea9 theory file for Numbers section
paulson
parents:
diff changeset
    72
\rulename{mod_mult_distrib}
539735ddaea9 theory file for Numbers section
paulson
parents:
diff changeset
    73
539735ddaea9 theory file for Numbers section
paulson
parents:
diff changeset
    74
@{thm[display] nat_diff_split[no_vars]}
539735ddaea9 theory file for Numbers section
paulson
parents:
diff changeset
    75
\rulename{nat_diff_split}
539735ddaea9 theory file for Numbers section
paulson
parents:
diff changeset
    76
*}
539735ddaea9 theory file for Numbers section
paulson
parents:
diff changeset
    77
539735ddaea9 theory file for Numbers section
paulson
parents:
diff changeset
    78
12156
d2758965362e new-style numerals without leading #, along with generic 0 and 1
paulson
parents: 11711
diff changeset
    79
lemma "(n - 1) * (n + 1) = n * n - (1::nat)"
12843
50bd380e6675 iff del: less_Suc0 -- luckily this does NOT affect the printed text;
wenzelm
parents: 12156
diff changeset
    80
apply (clarsimp split: nat_diff_split iff del: less_Suc0)
12156
d2758965362e new-style numerals without leading #, along with generic 0 and 1
paulson
parents: 11711
diff changeset
    81
 --{* @{subgoals[display,indent=0,margin=65]} *}
d2758965362e new-style numerals without leading #, along with generic 0 and 1
paulson
parents: 11711
diff changeset
    82
apply (subgoal_tac "n=0", force, arith)
d2758965362e new-style numerals without leading #, along with generic 0 and 1
paulson
parents: 11711
diff changeset
    83
done
d2758965362e new-style numerals without leading #, along with generic 0 and 1
paulson
parents: 11711
diff changeset
    84
d2758965362e new-style numerals without leading #, along with generic 0 and 1
paulson
parents: 11711
diff changeset
    85
11711
ecdfd237ffee fixed numerals;
wenzelm
parents: 11480
diff changeset
    86
lemma "(n - 2) * (n + 2) = n * n - (4::nat)"
12156
d2758965362e new-style numerals without leading #, along with generic 0 and 1
paulson
parents: 11711
diff changeset
    87
apply (simp split: nat_diff_split, clarify)
11480
0fba0357c04c Getting it working again with 1' instead of 1
paulson
parents: 11174
diff changeset
    88
 --{* @{subgoals[display,indent=0,margin=65]} *}
0fba0357c04c Getting it working again with 1' instead of 1
paulson
parents: 11174
diff changeset
    89
apply (subgoal_tac "n=0 | n=1", force, arith)
10603
539735ddaea9 theory file for Numbers section
paulson
parents:
diff changeset
    90
done
539735ddaea9 theory file for Numbers section
paulson
parents:
diff changeset
    91
539735ddaea9 theory file for Numbers section
paulson
parents:
diff changeset
    92
text{*
539735ddaea9 theory file for Numbers section
paulson
parents:
diff changeset
    93
@{thm[display] mod_if[no_vars]}
539735ddaea9 theory file for Numbers section
paulson
parents:
diff changeset
    94
\rulename{mod_if}
539735ddaea9 theory file for Numbers section
paulson
parents:
diff changeset
    95
539735ddaea9 theory file for Numbers section
paulson
parents:
diff changeset
    96
@{thm[display] mod_div_equality[no_vars]}
539735ddaea9 theory file for Numbers section
paulson
parents:
diff changeset
    97
\rulename{mod_div_equality}
539735ddaea9 theory file for Numbers section
paulson
parents:
diff changeset
    98
539735ddaea9 theory file for Numbers section
paulson
parents:
diff changeset
    99
539735ddaea9 theory file for Numbers section
paulson
parents:
diff changeset
   100
@{thm[display] div_mult1_eq[no_vars]}
539735ddaea9 theory file for Numbers section
paulson
parents:
diff changeset
   101
\rulename{div_mult1_eq}
539735ddaea9 theory file for Numbers section
paulson
parents:
diff changeset
   102
30224
79136ce06bdb removed and renamed redundant lemmas
nipkow
parents: 30200
diff changeset
   103
@{thm[display] mod_mult_right_eq[no_vars]}
79136ce06bdb removed and renamed redundant lemmas
nipkow
parents: 30200
diff changeset
   104
\rulename{mod_mult_right_eq}
10603
539735ddaea9 theory file for Numbers section
paulson
parents:
diff changeset
   105
539735ddaea9 theory file for Numbers section
paulson
parents:
diff changeset
   106
@{thm[display] div_mult2_eq[no_vars]}
539735ddaea9 theory file for Numbers section
paulson
parents:
diff changeset
   107
\rulename{div_mult2_eq}
539735ddaea9 theory file for Numbers section
paulson
parents:
diff changeset
   108
539735ddaea9 theory file for Numbers section
paulson
parents:
diff changeset
   109
@{thm[display] mod_mult2_eq[no_vars]}
539735ddaea9 theory file for Numbers section
paulson
parents:
diff changeset
   110
\rulename{mod_mult2_eq}
539735ddaea9 theory file for Numbers section
paulson
parents:
diff changeset
   111
539735ddaea9 theory file for Numbers section
paulson
parents:
diff changeset
   112
@{thm[display] div_mult_mult1[no_vars]}
539735ddaea9 theory file for Numbers section
paulson
parents:
diff changeset
   113
\rulename{div_mult_mult1}
539735ddaea9 theory file for Numbers section
paulson
parents:
diff changeset
   114
27658
674496eb5965 (adjusted)
haftmann
parents: 27376
diff changeset
   115
@{thm[display] div_by_0 [no_vars]}
674496eb5965 (adjusted)
haftmann
parents: 27376
diff changeset
   116
\rulename{div_by_0}
10603
539735ddaea9 theory file for Numbers section
paulson
parents:
diff changeset
   117
27658
674496eb5965 (adjusted)
haftmann
parents: 27376
diff changeset
   118
@{thm[display] mod_by_0 [no_vars]}
674496eb5965 (adjusted)
haftmann
parents: 27376
diff changeset
   119
\rulename{mod_by_0}
10603
539735ddaea9 theory file for Numbers section
paulson
parents:
diff changeset
   120
539735ddaea9 theory file for Numbers section
paulson
parents:
diff changeset
   121
@{thm[display] dvd_anti_sym[no_vars]}
539735ddaea9 theory file for Numbers section
paulson
parents:
diff changeset
   122
\rulename{dvd_anti_sym}
539735ddaea9 theory file for Numbers section
paulson
parents:
diff changeset
   123
539735ddaea9 theory file for Numbers section
paulson
parents:
diff changeset
   124
@{thm[display] dvd_add[no_vars]}
539735ddaea9 theory file for Numbers section
paulson
parents:
diff changeset
   125
\rulename{dvd_add}
539735ddaea9 theory file for Numbers section
paulson
parents:
diff changeset
   126
539735ddaea9 theory file for Numbers section
paulson
parents:
diff changeset
   127
For the integers, I'd list a few theorems that somehow involve negative 
13757
33b84d172c97 new int induction rules
paulson
parents: 12843
diff changeset
   128
numbers.*}
10603
539735ddaea9 theory file for Numbers section
paulson
parents:
diff changeset
   129
13757
33b84d172c97 new int induction rules
paulson
parents: 12843
diff changeset
   130
33b84d172c97 new int induction rules
paulson
parents: 12843
diff changeset
   131
text{*
10603
539735ddaea9 theory file for Numbers section
paulson
parents:
diff changeset
   132
Division, remainder of negatives
539735ddaea9 theory file for Numbers section
paulson
parents:
diff changeset
   133
539735ddaea9 theory file for Numbers section
paulson
parents:
diff changeset
   134
539735ddaea9 theory file for Numbers section
paulson
parents:
diff changeset
   135
@{thm[display] pos_mod_sign[no_vars]}
539735ddaea9 theory file for Numbers section
paulson
parents:
diff changeset
   136
\rulename{pos_mod_sign}
539735ddaea9 theory file for Numbers section
paulson
parents:
diff changeset
   137
539735ddaea9 theory file for Numbers section
paulson
parents:
diff changeset
   138
@{thm[display] pos_mod_bound[no_vars]}
539735ddaea9 theory file for Numbers section
paulson
parents:
diff changeset
   139
\rulename{pos_mod_bound}
539735ddaea9 theory file for Numbers section
paulson
parents:
diff changeset
   140
539735ddaea9 theory file for Numbers section
paulson
parents:
diff changeset
   141
@{thm[display] neg_mod_sign[no_vars]}
539735ddaea9 theory file for Numbers section
paulson
parents:
diff changeset
   142
\rulename{neg_mod_sign}
539735ddaea9 theory file for Numbers section
paulson
parents:
diff changeset
   143
539735ddaea9 theory file for Numbers section
paulson
parents:
diff changeset
   144
@{thm[display] neg_mod_bound[no_vars]}
539735ddaea9 theory file for Numbers section
paulson
parents:
diff changeset
   145
\rulename{neg_mod_bound}
539735ddaea9 theory file for Numbers section
paulson
parents:
diff changeset
   146
539735ddaea9 theory file for Numbers section
paulson
parents:
diff changeset
   147
@{thm[display] zdiv_zadd1_eq[no_vars]}
539735ddaea9 theory file for Numbers section
paulson
parents:
diff changeset
   148
\rulename{zdiv_zadd1_eq}
539735ddaea9 theory file for Numbers section
paulson
parents:
diff changeset
   149
30224
79136ce06bdb removed and renamed redundant lemmas
nipkow
parents: 30200
diff changeset
   150
@{thm[display] mod_add_eq[no_vars]}
79136ce06bdb removed and renamed redundant lemmas
nipkow
parents: 30200
diff changeset
   151
\rulename{mod_add_eq}
10603
539735ddaea9 theory file for Numbers section
paulson
parents:
diff changeset
   152
539735ddaea9 theory file for Numbers section
paulson
parents:
diff changeset
   153
@{thm[display] zdiv_zmult1_eq[no_vars]}
539735ddaea9 theory file for Numbers section
paulson
parents:
diff changeset
   154
\rulename{zdiv_zmult1_eq}
539735ddaea9 theory file for Numbers section
paulson
parents:
diff changeset
   155
539735ddaea9 theory file for Numbers section
paulson
parents:
diff changeset
   156
@{thm[display] zmod_zmult1_eq[no_vars]}
539735ddaea9 theory file for Numbers section
paulson
parents:
diff changeset
   157
\rulename{zmod_zmult1_eq}
539735ddaea9 theory file for Numbers section
paulson
parents:
diff changeset
   158
539735ddaea9 theory file for Numbers section
paulson
parents:
diff changeset
   159
@{thm[display] zdiv_zmult2_eq[no_vars]}
539735ddaea9 theory file for Numbers section
paulson
parents:
diff changeset
   160
\rulename{zdiv_zmult2_eq}
539735ddaea9 theory file for Numbers section
paulson
parents:
diff changeset
   161
539735ddaea9 theory file for Numbers section
paulson
parents:
diff changeset
   162
@{thm[display] zmod_zmult2_eq[no_vars]}
539735ddaea9 theory file for Numbers section
paulson
parents:
diff changeset
   163
\rulename{zmod_zmult2_eq}
539735ddaea9 theory file for Numbers section
paulson
parents:
diff changeset
   164
*}  
539735ddaea9 theory file for Numbers section
paulson
parents:
diff changeset
   165
11174
96a533d300a6 revisions in response to comments by Tobias
paulson
parents: 10880
diff changeset
   166
lemma "abs (x+y) \<le> abs x + abs (y :: int)"
10880
729a36e469ec updated for new version of numerics.tex
paulson
parents: 10777
diff changeset
   167
by arith
729a36e469ec updated for new version of numerics.tex
paulson
parents: 10777
diff changeset
   168
11711
ecdfd237ffee fixed numerals;
wenzelm
parents: 11480
diff changeset
   169
lemma "abs (2*x) = 2 * abs (x :: int)"
16585
02cf78f0afce replacing zabs_def by abs_if
paulson
parents: 16417
diff changeset
   170
by (simp add: abs_if) 
11174
96a533d300a6 revisions in response to comments by Tobias
paulson
parents: 10880
diff changeset
   171
13757
33b84d172c97 new int induction rules
paulson
parents: 12843
diff changeset
   172
33b84d172c97 new int induction rules
paulson
parents: 12843
diff changeset
   173
text {*Induction rules for the Integers
33b84d172c97 new int induction rules
paulson
parents: 12843
diff changeset
   174
33b84d172c97 new int induction rules
paulson
parents: 12843
diff changeset
   175
@{thm[display] int_ge_induct[no_vars]}
33b84d172c97 new int induction rules
paulson
parents: 12843
diff changeset
   176
\rulename{int_ge_induct}
33b84d172c97 new int induction rules
paulson
parents: 12843
diff changeset
   177
33b84d172c97 new int induction rules
paulson
parents: 12843
diff changeset
   178
@{thm[display] int_gr_induct[no_vars]}
33b84d172c97 new int induction rules
paulson
parents: 12843
diff changeset
   179
\rulename{int_gr_induct}
33b84d172c97 new int induction rules
paulson
parents: 12843
diff changeset
   180
33b84d172c97 new int induction rules
paulson
parents: 12843
diff changeset
   181
@{thm[display] int_le_induct[no_vars]}
33b84d172c97 new int induction rules
paulson
parents: 12843
diff changeset
   182
\rulename{int_le_induct}
33b84d172c97 new int induction rules
paulson
parents: 12843
diff changeset
   183
33b84d172c97 new int induction rules
paulson
parents: 12843
diff changeset
   184
@{thm[display] int_less_induct[no_vars]}
33b84d172c97 new int induction rules
paulson
parents: 12843
diff changeset
   185
\rulename{int_less_induct}
33b84d172c97 new int induction rules
paulson
parents: 12843
diff changeset
   186
*}  
33b84d172c97 new int induction rules
paulson
parents: 12843
diff changeset
   187
14400
6069098854b9 new numerics section using type classes
paulson
parents: 14353
diff changeset
   188
text {*FIELDS
10764
329d5f4aa43c some HOL-Real material
paulson
parents: 10603
diff changeset
   189
14295
7f115e5c5de4 more general lemmas for Ring_and_Field
paulson
parents: 14288
diff changeset
   190
@{thm[display] dense[no_vars]}
7f115e5c5de4 more general lemmas for Ring_and_Field
paulson
parents: 14288
diff changeset
   191
\rulename{dense}
10603
539735ddaea9 theory file for Numbers section
paulson
parents:
diff changeset
   192
14288
d149e3cbdb39 Moving some theorems from Real/RealArith0.ML
paulson
parents: 13757
diff changeset
   193
@{thm[display] times_divide_eq_right[no_vars]}
d149e3cbdb39 Moving some theorems from Real/RealArith0.ML
paulson
parents: 13757
diff changeset
   194
\rulename{times_divide_eq_right}
10764
329d5f4aa43c some HOL-Real material
paulson
parents: 10603
diff changeset
   195
14288
d149e3cbdb39 Moving some theorems from Real/RealArith0.ML
paulson
parents: 13757
diff changeset
   196
@{thm[display] times_divide_eq_left[no_vars]}
d149e3cbdb39 Moving some theorems from Real/RealArith0.ML
paulson
parents: 13757
diff changeset
   197
\rulename{times_divide_eq_left}
10764
329d5f4aa43c some HOL-Real material
paulson
parents: 10603
diff changeset
   198
14288
d149e3cbdb39 Moving some theorems from Real/RealArith0.ML
paulson
parents: 13757
diff changeset
   199
@{thm[display] divide_divide_eq_right[no_vars]}
d149e3cbdb39 Moving some theorems from Real/RealArith0.ML
paulson
parents: 13757
diff changeset
   200
\rulename{divide_divide_eq_right}
10764
329d5f4aa43c some HOL-Real material
paulson
parents: 10603
diff changeset
   201
14288
d149e3cbdb39 Moving some theorems from Real/RealArith0.ML
paulson
parents: 13757
diff changeset
   202
@{thm[display] divide_divide_eq_left[no_vars]}
d149e3cbdb39 Moving some theorems from Real/RealArith0.ML
paulson
parents: 13757
diff changeset
   203
\rulename{divide_divide_eq_left}
10764
329d5f4aa43c some HOL-Real material
paulson
parents: 10603
diff changeset
   204
14295
7f115e5c5de4 more general lemmas for Ring_and_Field
paulson
parents: 14288
diff changeset
   205
@{thm[display] minus_divide_left[no_vars]}
7f115e5c5de4 more general lemmas for Ring_and_Field
paulson
parents: 14288
diff changeset
   206
\rulename{minus_divide_left}
10764
329d5f4aa43c some HOL-Real material
paulson
parents: 10603
diff changeset
   207
14295
7f115e5c5de4 more general lemmas for Ring_and_Field
paulson
parents: 14288
diff changeset
   208
@{thm[display] minus_divide_right[no_vars]}
7f115e5c5de4 more general lemmas for Ring_and_Field
paulson
parents: 14288
diff changeset
   209
\rulename{minus_divide_right}
10764
329d5f4aa43c some HOL-Real material
paulson
parents: 10603
diff changeset
   210
329d5f4aa43c some HOL-Real material
paulson
parents: 10603
diff changeset
   211
This last NOT a simprule
329d5f4aa43c some HOL-Real material
paulson
parents: 10603
diff changeset
   212
14295
7f115e5c5de4 more general lemmas for Ring_and_Field
paulson
parents: 14288
diff changeset
   213
@{thm[display] add_divide_distrib[no_vars]}
7f115e5c5de4 more general lemmas for Ring_and_Field
paulson
parents: 14288
diff changeset
   214
\rulename{add_divide_distrib}
10764
329d5f4aa43c some HOL-Real material
paulson
parents: 10603
diff changeset
   215
*}
10603
539735ddaea9 theory file for Numbers section
paulson
parents:
diff changeset
   216
11711
ecdfd237ffee fixed numerals;
wenzelm
parents: 11480
diff changeset
   217
lemma "3/4 < (7/8 :: real)"
11174
96a533d300a6 revisions in response to comments by Tobias
paulson
parents: 10880
diff changeset
   218
by simp 
96a533d300a6 revisions in response to comments by Tobias
paulson
parents: 10880
diff changeset
   219
11711
ecdfd237ffee fixed numerals;
wenzelm
parents: 11480
diff changeset
   220
lemma "P ((3/4) * (8/15 :: real))"
11174
96a533d300a6 revisions in response to comments by Tobias
paulson
parents: 10880
diff changeset
   221
txt{*
96a533d300a6 revisions in response to comments by Tobias
paulson
parents: 10880
diff changeset
   222
@{subgoals[display,indent=0,margin=65]}
96a533d300a6 revisions in response to comments by Tobias
paulson
parents: 10880
diff changeset
   223
*};
96a533d300a6 revisions in response to comments by Tobias
paulson
parents: 10880
diff changeset
   224
apply simp 
96a533d300a6 revisions in response to comments by Tobias
paulson
parents: 10880
diff changeset
   225
txt{*
96a533d300a6 revisions in response to comments by Tobias
paulson
parents: 10880
diff changeset
   226
@{subgoals[display,indent=0,margin=65]}
96a533d300a6 revisions in response to comments by Tobias
paulson
parents: 10880
diff changeset
   227
*};
96a533d300a6 revisions in response to comments by Tobias
paulson
parents: 10880
diff changeset
   228
oops
96a533d300a6 revisions in response to comments by Tobias
paulson
parents: 10880
diff changeset
   229
11711
ecdfd237ffee fixed numerals;
wenzelm
parents: 11480
diff changeset
   230
lemma "(3/4) * (8/15) < (x :: real)"
11174
96a533d300a6 revisions in response to comments by Tobias
paulson
parents: 10880
diff changeset
   231
txt{*
96a533d300a6 revisions in response to comments by Tobias
paulson
parents: 10880
diff changeset
   232
@{subgoals[display,indent=0,margin=65]}
96a533d300a6 revisions in response to comments by Tobias
paulson
parents: 10880
diff changeset
   233
*};
96a533d300a6 revisions in response to comments by Tobias
paulson
parents: 10880
diff changeset
   234
apply simp 
96a533d300a6 revisions in response to comments by Tobias
paulson
parents: 10880
diff changeset
   235
txt{*
96a533d300a6 revisions in response to comments by Tobias
paulson
parents: 10880
diff changeset
   236
@{subgoals[display,indent=0,margin=65]}
96a533d300a6 revisions in response to comments by Tobias
paulson
parents: 10880
diff changeset
   237
*};
96a533d300a6 revisions in response to comments by Tobias
paulson
parents: 10880
diff changeset
   238
oops
96a533d300a6 revisions in response to comments by Tobias
paulson
parents: 10880
diff changeset
   239
14400
6069098854b9 new numerics section using type classes
paulson
parents: 14353
diff changeset
   240
text{*
6069098854b9 new numerics section using type classes
paulson
parents: 14353
diff changeset
   241
Ring and Field
6069098854b9 new numerics section using type classes
paulson
parents: 14353
diff changeset
   242
6069098854b9 new numerics section using type classes
paulson
parents: 14353
diff changeset
   243
Requires a field, or else an ordered ring
6069098854b9 new numerics section using type classes
paulson
parents: 14353
diff changeset
   244
6069098854b9 new numerics section using type classes
paulson
parents: 14353
diff changeset
   245
@{thm[display] mult_eq_0_iff[no_vars]}
6069098854b9 new numerics section using type classes
paulson
parents: 14353
diff changeset
   246
\rulename{mult_eq_0_iff}
6069098854b9 new numerics section using type classes
paulson
parents: 14353
diff changeset
   247
6069098854b9 new numerics section using type classes
paulson
parents: 14353
diff changeset
   248
@{thm[display] mult_cancel_right[no_vars]}
6069098854b9 new numerics section using type classes
paulson
parents: 14353
diff changeset
   249
\rulename{mult_cancel_right}
23504
2b2323124e8e changes for type class ring_no_zero_divisors
paulson
parents: 23501
diff changeset
   250
2b2323124e8e changes for type class ring_no_zero_divisors
paulson
parents: 23501
diff changeset
   251
@{thm[display] mult_cancel_left[no_vars]}
2b2323124e8e changes for type class ring_no_zero_divisors
paulson
parents: 23501
diff changeset
   252
\rulename{mult_cancel_left}
14400
6069098854b9 new numerics section using type classes
paulson
parents: 14353
diff changeset
   253
*}
6069098854b9 new numerics section using type classes
paulson
parents: 14353
diff changeset
   254
6069098854b9 new numerics section using type classes
paulson
parents: 14353
diff changeset
   255
ML{*set show_sorts*}
6069098854b9 new numerics section using type classes
paulson
parents: 14353
diff changeset
   256
6069098854b9 new numerics section using type classes
paulson
parents: 14353
diff changeset
   257
text{*
6069098854b9 new numerics section using type classes
paulson
parents: 14353
diff changeset
   258
effect of show sorts on the above
23504
2b2323124e8e changes for type class ring_no_zero_divisors
paulson
parents: 23501
diff changeset
   259
2b2323124e8e changes for type class ring_no_zero_divisors
paulson
parents: 23501
diff changeset
   260
@{thm[display] mult_cancel_left[no_vars]}
2b2323124e8e changes for type class ring_no_zero_divisors
paulson
parents: 23501
diff changeset
   261
\rulename{mult_cancel_left}
14400
6069098854b9 new numerics section using type classes
paulson
parents: 14353
diff changeset
   262
*}
6069098854b9 new numerics section using type classes
paulson
parents: 14353
diff changeset
   263
6069098854b9 new numerics section using type classes
paulson
parents: 14353
diff changeset
   264
ML{*reset show_sorts*}
6069098854b9 new numerics section using type classes
paulson
parents: 14353
diff changeset
   265
6069098854b9 new numerics section using type classes
paulson
parents: 14353
diff changeset
   266
6069098854b9 new numerics section using type classes
paulson
parents: 14353
diff changeset
   267
text{*
6069098854b9 new numerics section using type classes
paulson
parents: 14353
diff changeset
   268
absolute value
6069098854b9 new numerics section using type classes
paulson
parents: 14353
diff changeset
   269
6069098854b9 new numerics section using type classes
paulson
parents: 14353
diff changeset
   270
@{thm[display] abs_mult[no_vars]}
6069098854b9 new numerics section using type classes
paulson
parents: 14353
diff changeset
   271
\rulename{abs_mult}
6069098854b9 new numerics section using type classes
paulson
parents: 14353
diff changeset
   272
6069098854b9 new numerics section using type classes
paulson
parents: 14353
diff changeset
   273
@{thm[display] abs_le_iff[no_vars]}
6069098854b9 new numerics section using type classes
paulson
parents: 14353
diff changeset
   274
\rulename{abs_le_iff}
6069098854b9 new numerics section using type classes
paulson
parents: 14353
diff changeset
   275
6069098854b9 new numerics section using type classes
paulson
parents: 14353
diff changeset
   276
@{thm[display] abs_triangle_ineq[no_vars]}
6069098854b9 new numerics section using type classes
paulson
parents: 14353
diff changeset
   277
\rulename{abs_triangle_ineq}
6069098854b9 new numerics section using type classes
paulson
parents: 14353
diff changeset
   278
6069098854b9 new numerics section using type classes
paulson
parents: 14353
diff changeset
   279
@{thm[display] power_add[no_vars]}
6069098854b9 new numerics section using type classes
paulson
parents: 14353
diff changeset
   280
\rulename{power_add}
6069098854b9 new numerics section using type classes
paulson
parents: 14353
diff changeset
   281
6069098854b9 new numerics section using type classes
paulson
parents: 14353
diff changeset
   282
@{thm[display] power_mult[no_vars]}
6069098854b9 new numerics section using type classes
paulson
parents: 14353
diff changeset
   283
\rulename{power_mult}
6069098854b9 new numerics section using type classes
paulson
parents: 14353
diff changeset
   284
6069098854b9 new numerics section using type classes
paulson
parents: 14353
diff changeset
   285
@{thm[display] power_abs[no_vars]}
6069098854b9 new numerics section using type classes
paulson
parents: 14353
diff changeset
   286
\rulename{power_abs}
6069098854b9 new numerics section using type classes
paulson
parents: 14353
diff changeset
   287
6069098854b9 new numerics section using type classes
paulson
parents: 14353
diff changeset
   288
6069098854b9 new numerics section using type classes
paulson
parents: 14353
diff changeset
   289
*}
11174
96a533d300a6 revisions in response to comments by Tobias
paulson
parents: 10880
diff changeset
   290
96a533d300a6 revisions in response to comments by Tobias
paulson
parents: 10880
diff changeset
   291
10603
539735ddaea9 theory file for Numbers section
paulson
parents:
diff changeset
   292
end