44 |
44 |
45 Goal "(r::real)^ (Suc (Suc 0)) = r * r"; |
45 Goal "(r::real)^ (Suc (Suc 0)) = r * r"; |
46 by (Simp_tac 1); |
46 by (Simp_tac 1); |
47 qed "realpow_two"; |
47 qed "realpow_two"; |
48 |
48 |
49 Goal "(Numeral0::real) < r --> Numeral0 < r ^ n"; |
49 Goal "(0::real) < r --> 0 < r ^ n"; |
50 by (induct_tac "n" 1); |
50 by (induct_tac "n" 1); |
51 by (auto_tac (claset() addIs [rename_numerals real_mult_order], |
51 by (auto_tac (claset() addIs [real_mult_order], |
52 simpset() addsimps [real_zero_less_one])); |
52 simpset() addsimps [real_zero_less_one])); |
53 qed_spec_mp "realpow_gt_zero"; |
53 qed_spec_mp "realpow_gt_zero"; |
54 |
54 |
55 Goal "(Numeral0::real) <= r --> Numeral0 <= r ^ n"; |
55 Goal "(0::real) <= r --> 0 <= r ^ n"; |
56 by (induct_tac "n" 1); |
56 by (induct_tac "n" 1); |
57 by (auto_tac (claset(), simpset() addsimps [real_0_le_mult_iff])); |
57 by (auto_tac (claset(), simpset() addsimps [real_0_le_mult_iff])); |
58 qed_spec_mp "realpow_ge_zero"; |
58 qed_spec_mp "realpow_ge_zero"; |
59 |
59 |
60 Goal "(Numeral0::real) <= x & x <= y --> x ^ n <= y ^ n"; |
60 Goal "(0::real) <= x & x <= y --> x ^ n <= y ^ n"; |
61 by (induct_tac "n" 1); |
61 by (induct_tac "n" 1); |
62 by (auto_tac (claset() addSIs [real_mult_le_mono], simpset())); |
62 by (auto_tac (claset() addSIs [real_mult_le_mono], simpset())); |
63 by (asm_simp_tac (simpset() addsimps [realpow_ge_zero]) 1); |
63 by (asm_simp_tac (simpset() addsimps [realpow_ge_zero]) 1); |
64 qed_spec_mp "realpow_le"; |
64 qed_spec_mp "realpow_le"; |
65 |
65 |
66 Goal "(Numeral0::real) < x & x < y & 0 < n --> x ^ n < y ^ n"; |
66 Goal "(0::real) < x & x < y & 0 < n --> x ^ n < y ^ n"; |
67 by (induct_tac "n" 1); |
67 by (induct_tac "n" 1); |
68 by (auto_tac (claset() addIs [rename_numerals real_mult_less_mono, gr0I] |
68 by (auto_tac (claset() addIs [real_mult_less_mono, gr0I] |
69 addDs [realpow_gt_zero], |
69 addDs [realpow_gt_zero], |
70 simpset())); |
70 simpset())); |
71 qed_spec_mp "realpow_less"; |
71 qed_spec_mp "realpow_less"; |
72 |
72 |
73 Goal "Numeral1 ^ n = (Numeral1::real)"; |
73 Goal "1 ^ n = (1::real)"; |
74 by (induct_tac "n" 1); |
74 by (induct_tac "n" 1); |
75 by Auto_tac; |
75 by Auto_tac; |
76 qed "realpow_eq_one"; |
76 qed "realpow_eq_one"; |
77 Addsimps [realpow_eq_one]; |
77 Addsimps [realpow_eq_one]; |
78 |
78 |
79 Goal "abs((-1) ^ n) = (Numeral1::real)"; |
79 Goal "abs((-1) ^ n) = (1::real)"; |
80 by (induct_tac "n" 1); |
80 by (induct_tac "n" 1); |
81 by (auto_tac (claset(), simpset() addsimps [abs_mult])); |
81 by (auto_tac (claset(), simpset() addsimps [abs_mult])); |
82 qed "abs_realpow_minus_one"; |
82 qed "abs_realpow_minus_one"; |
83 Addsimps [abs_realpow_minus_one]; |
83 Addsimps [abs_realpow_minus_one]; |
84 |
84 |
85 Goal "((r::real) * s) ^ n = (r ^ n) * (s ^ n)"; |
85 Goal "((r::real) * s) ^ n = (r ^ n) * (s ^ n)"; |
86 by (induct_tac "n" 1); |
86 by (induct_tac "n" 1); |
87 by (auto_tac (claset(),simpset() addsimps real_mult_ac)); |
87 by (auto_tac (claset(),simpset() addsimps real_mult_ac)); |
88 qed "realpow_mult"; |
88 qed "realpow_mult"; |
89 |
89 |
90 Goal "(Numeral0::real) <= r^ Suc (Suc 0)"; |
90 Goal "(0::real) <= r^ Suc (Suc 0)"; |
91 by (simp_tac (simpset() addsimps [rename_numerals real_le_square]) 1); |
91 by (simp_tac (simpset() addsimps [real_le_square]) 1); |
92 qed "realpow_two_le"; |
92 qed "realpow_two_le"; |
93 Addsimps [realpow_two_le]; |
93 Addsimps [realpow_two_le]; |
94 |
94 |
95 Goal "abs((x::real)^Suc (Suc 0)) = x^Suc (Suc 0)"; |
95 Goal "abs((x::real)^Suc (Suc 0)) = x^Suc (Suc 0)"; |
96 by (simp_tac (simpset() addsimps [abs_eqI1, |
96 by (simp_tac (simpset() addsimps [abs_eqI1, |
97 rename_numerals real_le_square]) 1); |
97 real_le_square]) 1); |
98 qed "abs_realpow_two"; |
98 qed "abs_realpow_two"; |
99 Addsimps [abs_realpow_two]; |
99 Addsimps [abs_realpow_two]; |
100 |
100 |
101 Goal "abs(x::real)^Suc (Suc 0) = x^Suc (Suc 0)"; |
101 Goal "abs(x::real)^Suc (Suc 0) = x^Suc (Suc 0)"; |
102 by (simp_tac (simpset() addsimps [realpow_abs,abs_eqI1] |
102 by (simp_tac (simpset() addsimps [realpow_abs,abs_eqI1] |
103 delsimps [realpow_Suc]) 1); |
103 delsimps [realpow_Suc]) 1); |
104 qed "realpow_two_abs"; |
104 qed "realpow_two_abs"; |
105 Addsimps [realpow_two_abs]; |
105 Addsimps [realpow_two_abs]; |
106 |
106 |
107 Goal "(Numeral1::real) < r ==> Numeral1 < r^ (Suc (Suc 0))"; |
107 Goal "(1::real) < r ==> 1 < r^ (Suc (Suc 0))"; |
108 by Auto_tac; |
108 by Auto_tac; |
109 by (cut_facts_tac [rename_numerals real_zero_less_one] 1); |
109 by (cut_facts_tac [real_zero_less_one] 1); |
110 by (forw_inst_tac [("x","Numeral0")] order_less_trans 1); |
110 by (forw_inst_tac [("x","0")] order_less_trans 1); |
111 by (assume_tac 1); |
111 by (assume_tac 1); |
112 by (dres_inst_tac [("z","r"),("x","Numeral1")] |
112 by (dres_inst_tac [("z","r"),("x","1")] |
113 (rename_numerals real_mult_less_mono1) 1); |
113 (real_mult_less_mono1) 1); |
114 by (auto_tac (claset() addIs [order_less_trans], simpset())); |
114 by (auto_tac (claset() addIs [order_less_trans], simpset())); |
115 qed "realpow_two_gt_one"; |
115 qed "realpow_two_gt_one"; |
116 |
116 |
117 Goal "(Numeral1::real) < r --> Numeral1 <= r ^ n"; |
117 Goal "(1::real) < r --> 1 <= r ^ n"; |
118 by (induct_tac "n" 1); |
118 by (induct_tac "n" 1); |
119 by Auto_tac; |
119 by Auto_tac; |
120 by (subgoal_tac "Numeral1*Numeral1 <= r * r^n" 1); |
120 by (subgoal_tac "1*1 <= r * r^n" 1); |
121 by (rtac real_mult_le_mono 2); |
121 by (rtac real_mult_le_mono 2); |
122 by Auto_tac; |
122 by Auto_tac; |
123 qed_spec_mp "realpow_ge_one"; |
123 qed_spec_mp "realpow_ge_one"; |
124 |
124 |
125 Goal "(Numeral1::real) <= r ==> Numeral1 <= r ^ n"; |
125 Goal "(1::real) <= r ==> 1 <= r ^ n"; |
126 by (dtac order_le_imp_less_or_eq 1); |
126 by (dtac order_le_imp_less_or_eq 1); |
127 by (auto_tac (claset() addDs [realpow_ge_one], simpset())); |
127 by (auto_tac (claset() addDs [realpow_ge_one], simpset())); |
128 qed "realpow_ge_one2"; |
128 qed "realpow_ge_one2"; |
129 |
129 |
130 Goal "(Numeral1::real) <= 2 ^ n"; |
130 Goal "(1::real) <= 2 ^ n"; |
131 by (res_inst_tac [("y","Numeral1 ^ n")] order_trans 1); |
131 by (res_inst_tac [("y","1 ^ n")] order_trans 1); |
132 by (rtac realpow_le 2); |
132 by (rtac realpow_le 2); |
133 by (auto_tac (claset() addIs [order_less_imp_le], simpset())); |
133 by (auto_tac (claset() addIs [order_less_imp_le], simpset())); |
134 qed "two_realpow_ge_one"; |
134 qed "two_realpow_ge_one"; |
135 |
135 |
136 Goal "real (n::nat) < 2 ^ n"; |
136 Goal "real (n::nat) < 2 ^ n"; |
140 by (rtac real_add_less_le_mono 1); |
140 by (rtac real_add_less_le_mono 1); |
141 by (auto_tac (claset(), simpset() addsimps [two_realpow_ge_one])); |
141 by (auto_tac (claset(), simpset() addsimps [two_realpow_ge_one])); |
142 qed "two_realpow_gt"; |
142 qed "two_realpow_gt"; |
143 Addsimps [two_realpow_gt,two_realpow_ge_one]; |
143 Addsimps [two_realpow_gt,two_realpow_ge_one]; |
144 |
144 |
145 Goal "(-1) ^ (2*n) = (Numeral1::real)"; |
145 Goal "(-1) ^ (2*n) = (1::real)"; |
146 by (induct_tac "n" 1); |
146 by (induct_tac "n" 1); |
147 by Auto_tac; |
147 by Auto_tac; |
148 qed "realpow_minus_one"; |
148 qed "realpow_minus_one"; |
149 Addsimps [realpow_minus_one]; |
149 Addsimps [realpow_minus_one]; |
150 |
150 |
151 Goal "(-1) ^ Suc (2*n) = -(Numeral1::real)"; |
151 Goal "(-1) ^ Suc (2*n) = -(1::real)"; |
152 by Auto_tac; |
152 by Auto_tac; |
153 qed "realpow_minus_one_odd"; |
153 qed "realpow_minus_one_odd"; |
154 Addsimps [realpow_minus_one_odd]; |
154 Addsimps [realpow_minus_one_odd]; |
155 |
155 |
156 Goal "(-1) ^ Suc (Suc (2*n)) = (Numeral1::real)"; |
156 Goal "(-1) ^ Suc (Suc (2*n)) = (1::real)"; |
157 by Auto_tac; |
157 by Auto_tac; |
158 qed "realpow_minus_one_even"; |
158 qed "realpow_minus_one_even"; |
159 Addsimps [realpow_minus_one_even]; |
159 Addsimps [realpow_minus_one_even]; |
160 |
160 |
161 Goal "(Numeral0::real) < r & r < (Numeral1::real) --> r ^ Suc n < r ^ n"; |
161 Goal "(0::real) < r & r < (1::real) --> r ^ Suc n < r ^ n"; |
162 by (induct_tac "n" 1); |
162 by (induct_tac "n" 1); |
163 by Auto_tac; |
163 by Auto_tac; |
164 qed_spec_mp "realpow_Suc_less"; |
164 qed_spec_mp "realpow_Suc_less"; |
165 |
165 |
166 Goal "Numeral0 <= r & r < (Numeral1::real) --> r ^ Suc n <= r ^ n"; |
166 Goal "0 <= r & r < (1::real) --> r ^ Suc n <= r ^ n"; |
167 by (induct_tac "n" 1); |
167 by (induct_tac "n" 1); |
168 by (auto_tac (claset() addIs [order_less_imp_le] |
168 by (auto_tac (claset() addIs [order_less_imp_le] |
169 addSDs [order_le_imp_less_or_eq], |
169 addSDs [order_le_imp_less_or_eq], |
170 simpset())); |
170 simpset())); |
171 qed_spec_mp "realpow_Suc_le"; |
171 qed_spec_mp "realpow_Suc_le"; |
172 |
172 |
173 Goal "(Numeral0::real) <= Numeral0 ^ n"; |
173 Goal "(0::real) <= 0 ^ n"; |
174 by (case_tac "n" 1); |
174 by (case_tac "n" 1); |
175 by Auto_tac; |
175 by Auto_tac; |
176 qed "realpow_zero_le"; |
176 qed "realpow_zero_le"; |
177 Addsimps [realpow_zero_le]; |
177 Addsimps [realpow_zero_le]; |
178 |
178 |
179 Goal "Numeral0 < r & r < (Numeral1::real) --> r ^ Suc n <= r ^ n"; |
179 Goal "0 < r & r < (1::real) --> r ^ Suc n <= r ^ n"; |
180 by (blast_tac (claset() addSIs [order_less_imp_le, |
180 by (blast_tac (claset() addSIs [order_less_imp_le, |
181 realpow_Suc_less]) 1); |
181 realpow_Suc_less]) 1); |
182 qed_spec_mp "realpow_Suc_le2"; |
182 qed_spec_mp "realpow_Suc_le2"; |
183 |
183 |
184 Goal "[| Numeral0 <= r; r < (Numeral1::real) |] ==> r ^ Suc n <= r ^ n"; |
184 Goal "[| 0 <= r; r < (1::real) |] ==> r ^ Suc n <= r ^ n"; |
185 by (etac (order_le_imp_less_or_eq RS disjE) 1); |
185 by (etac (order_le_imp_less_or_eq RS disjE) 1); |
186 by (rtac realpow_Suc_le2 1); |
186 by (rtac realpow_Suc_le2 1); |
187 by Auto_tac; |
187 by Auto_tac; |
188 qed "realpow_Suc_le3"; |
188 qed "realpow_Suc_le3"; |
189 |
189 |
190 Goal "Numeral0 <= r & r < (Numeral1::real) & n < N --> r ^ N <= r ^ n"; |
190 Goal "0 <= r & r < (1::real) & n < N --> r ^ N <= r ^ n"; |
191 by (induct_tac "N" 1); |
191 by (induct_tac "N" 1); |
192 by (ALLGOALS Asm_simp_tac); |
192 by (ALLGOALS Asm_simp_tac); |
193 by (Clarify_tac 1); |
193 by (Clarify_tac 1); |
194 by (subgoal_tac "r * r ^ na <= Numeral1 * r ^ n" 1); |
194 by (subgoal_tac "r * r ^ na <= 1 * r ^ n" 1); |
195 by (Asm_full_simp_tac 1); |
195 by (Asm_full_simp_tac 1); |
196 by (rtac real_mult_le_mono 1); |
196 by (rtac real_mult_le_mono 1); |
197 by (auto_tac (claset(), simpset() addsimps [realpow_ge_zero, less_Suc_eq])); |
197 by (auto_tac (claset(), simpset() addsimps [realpow_ge_zero, less_Suc_eq])); |
198 qed_spec_mp "realpow_less_le"; |
198 qed_spec_mp "realpow_less_le"; |
199 |
199 |
200 Goal "[| Numeral0 <= r; r < (Numeral1::real); n <= N |] ==> r ^ N <= r ^ n"; |
200 Goal "[| 0 <= r; r < (1::real); n <= N |] ==> r ^ N <= r ^ n"; |
201 by (dres_inst_tac [("n","N")] le_imp_less_or_eq 1); |
201 by (dres_inst_tac [("n","N")] le_imp_less_or_eq 1); |
202 by (auto_tac (claset() addIs [realpow_less_le], |
202 by (auto_tac (claset() addIs [realpow_less_le], |
203 simpset())); |
203 simpset())); |
204 qed "realpow_le_le"; |
204 qed "realpow_le_le"; |
205 |
205 |
206 Goal "[| Numeral0 < r; r < (Numeral1::real) |] ==> r ^ Suc n <= r"; |
206 Goal "[| 0 < r; r < (1::real) |] ==> r ^ Suc n <= r"; |
207 by (dres_inst_tac [("n","1"),("N","Suc n")] |
207 by (dres_inst_tac [("n","1"),("N","Suc n")] |
208 (order_less_imp_le RS realpow_le_le) 1); |
208 (order_less_imp_le RS realpow_le_le) 1); |
209 by Auto_tac; |
209 by Auto_tac; |
210 qed "realpow_Suc_le_self"; |
210 qed "realpow_Suc_le_self"; |
211 |
211 |
212 Goal "[| Numeral0 < r; r < (Numeral1::real) |] ==> r ^ Suc n < Numeral1"; |
212 Goal "[| 0 < r; r < (1::real) |] ==> r ^ Suc n < 1"; |
213 by (blast_tac (claset() addIs [realpow_Suc_le_self, order_le_less_trans]) 1); |
213 by (blast_tac (claset() addIs [realpow_Suc_le_self, order_le_less_trans]) 1); |
214 qed "realpow_Suc_less_one"; |
214 qed "realpow_Suc_less_one"; |
215 |
215 |
216 Goal "(Numeral1::real) <= r --> r ^ n <= r ^ Suc n"; |
216 Goal "(1::real) <= r --> r ^ n <= r ^ Suc n"; |
217 by (induct_tac "n" 1); |
217 by (induct_tac "n" 1); |
218 by Auto_tac; |
218 by Auto_tac; |
219 qed_spec_mp "realpow_le_Suc"; |
219 qed_spec_mp "realpow_le_Suc"; |
220 |
220 |
221 Goal "(Numeral1::real) < r --> r ^ n < r ^ Suc n"; |
221 Goal "(1::real) < r --> r ^ n < r ^ Suc n"; |
222 by (induct_tac "n" 1); |
222 by (induct_tac "n" 1); |
223 by Auto_tac; |
223 by Auto_tac; |
224 qed_spec_mp "realpow_less_Suc"; |
224 qed_spec_mp "realpow_less_Suc"; |
225 |
225 |
226 Goal "(Numeral1::real) < r --> r ^ n <= r ^ Suc n"; |
226 Goal "(1::real) < r --> r ^ n <= r ^ Suc n"; |
227 by (blast_tac (claset() addSIs [order_less_imp_le, realpow_less_Suc]) 1); |
227 by (blast_tac (claset() addSIs [order_less_imp_le, realpow_less_Suc]) 1); |
228 qed_spec_mp "realpow_le_Suc2"; |
228 qed_spec_mp "realpow_le_Suc2"; |
229 |
229 |
230 Goal "(Numeral1::real) < r & n < N --> r ^ n <= r ^ N"; |
230 Goal "(1::real) < r & n < N --> r ^ n <= r ^ N"; |
231 by (induct_tac "N" 1); |
231 by (induct_tac "N" 1); |
232 by Auto_tac; |
232 by Auto_tac; |
233 by (ALLGOALS(forw_inst_tac [("n","na")] realpow_ge_one)); |
233 by (ALLGOALS(forw_inst_tac [("n","na")] realpow_ge_one)); |
234 by (ALLGOALS(dtac (rename_numerals real_mult_self_le))); |
234 by (ALLGOALS(dtac (real_mult_self_le))); |
235 by (assume_tac 1); |
235 by (assume_tac 1); |
236 by (assume_tac 2); |
236 by (assume_tac 2); |
237 by (auto_tac (claset() addIs [order_trans], |
237 by (auto_tac (claset() addIs [order_trans], |
238 simpset() addsimps [less_Suc_eq])); |
238 simpset() addsimps [less_Suc_eq])); |
239 qed_spec_mp "realpow_gt_ge"; |
239 qed_spec_mp "realpow_gt_ge"; |
240 |
240 |
241 Goal "(Numeral1::real) <= r & n < N --> r ^ n <= r ^ N"; |
241 Goal "(1::real) <= r & n < N --> r ^ n <= r ^ N"; |
242 by (induct_tac "N" 1); |
242 by (induct_tac "N" 1); |
243 by Auto_tac; |
243 by Auto_tac; |
244 by (ALLGOALS(forw_inst_tac [("n","na")] realpow_ge_one2)); |
244 by (ALLGOALS(forw_inst_tac [("n","na")] realpow_ge_one2)); |
245 by (ALLGOALS(dtac (rename_numerals real_mult_self_le2))); |
245 by (ALLGOALS(dtac (real_mult_self_le2))); |
246 by (assume_tac 1); |
246 by (assume_tac 1); |
247 by (assume_tac 2); |
247 by (assume_tac 2); |
248 by (auto_tac (claset() addIs [order_trans], |
248 by (auto_tac (claset() addIs [order_trans], |
249 simpset() addsimps [less_Suc_eq])); |
249 simpset() addsimps [less_Suc_eq])); |
250 qed_spec_mp "realpow_gt_ge2"; |
250 qed_spec_mp "realpow_gt_ge2"; |
251 |
251 |
252 Goal "[| (Numeral1::real) < r; n <= N |] ==> r ^ n <= r ^ N"; |
252 Goal "[| (1::real) < r; n <= N |] ==> r ^ n <= r ^ N"; |
253 by (dres_inst_tac [("n","N")] le_imp_less_or_eq 1); |
253 by (dres_inst_tac [("n","N")] le_imp_less_or_eq 1); |
254 by (auto_tac (claset() addIs [realpow_gt_ge], simpset())); |
254 by (auto_tac (claset() addIs [realpow_gt_ge], simpset())); |
255 qed "realpow_ge_ge"; |
255 qed "realpow_ge_ge"; |
256 |
256 |
257 Goal "[| (Numeral1::real) <= r; n <= N |] ==> r ^ n <= r ^ N"; |
257 Goal "[| (1::real) <= r; n <= N |] ==> r ^ n <= r ^ N"; |
258 by (dres_inst_tac [("n","N")] le_imp_less_or_eq 1); |
258 by (dres_inst_tac [("n","N")] le_imp_less_or_eq 1); |
259 by (auto_tac (claset() addIs [realpow_gt_ge2], simpset())); |
259 by (auto_tac (claset() addIs [realpow_gt_ge2], simpset())); |
260 qed "realpow_ge_ge2"; |
260 qed "realpow_ge_ge2"; |
261 |
261 |
262 Goal "(Numeral1::real) < r ==> r <= r ^ Suc n"; |
262 Goal "(1::real) < r ==> r <= r ^ Suc n"; |
263 by (dres_inst_tac [("n","1"),("N","Suc n")] |
263 by (dres_inst_tac [("n","1"),("N","Suc n")] |
264 realpow_ge_ge 1); |
264 realpow_ge_ge 1); |
265 by Auto_tac; |
265 by Auto_tac; |
266 qed_spec_mp "realpow_Suc_ge_self"; |
266 qed_spec_mp "realpow_Suc_ge_self"; |
267 |
267 |
268 Goal "(Numeral1::real) <= r ==> r <= r ^ Suc n"; |
268 Goal "(1::real) <= r ==> r <= r ^ Suc n"; |
269 by (dres_inst_tac [("n","1"),("N","Suc n")] |
269 by (dres_inst_tac [("n","1"),("N","Suc n")] |
270 realpow_ge_ge2 1); |
270 realpow_ge_ge2 1); |
271 by Auto_tac; |
271 by Auto_tac; |
272 qed_spec_mp "realpow_Suc_ge_self2"; |
272 qed_spec_mp "realpow_Suc_ge_self2"; |
273 |
273 |
274 Goal "[| (Numeral1::real) < r; 0 < n |] ==> r <= r ^ n"; |
274 Goal "[| (1::real) < r; 0 < n |] ==> r <= r ^ n"; |
275 by (dtac (less_not_refl2 RS not0_implies_Suc) 1); |
275 by (dtac (less_not_refl2 RS not0_implies_Suc) 1); |
276 by (auto_tac (claset() addSIs |
276 by (auto_tac (claset() addSIs |
277 [realpow_Suc_ge_self],simpset())); |
277 [realpow_Suc_ge_self],simpset())); |
278 qed "realpow_ge_self"; |
278 qed "realpow_ge_self"; |
279 |
279 |
280 Goal "[| (Numeral1::real) <= r; 0 < n |] ==> r <= r ^ n"; |
280 Goal "[| (1::real) <= r; 0 < n |] ==> r <= r ^ n"; |
281 by (dtac (less_not_refl2 RS not0_implies_Suc) 1); |
281 by (dtac (less_not_refl2 RS not0_implies_Suc) 1); |
282 by (auto_tac (claset() addSIs [realpow_Suc_ge_self2],simpset())); |
282 by (auto_tac (claset() addSIs [realpow_Suc_ge_self2],simpset())); |
283 qed "realpow_ge_self2"; |
283 qed "realpow_ge_self2"; |
284 |
284 |
285 Goal "0 < n --> (x::real) ^ (n - 1) * x = x ^ n"; |
285 Goal "0 < n --> (x::real) ^ (n - 1) * x = x ^ n"; |