equal
deleted
inserted
replaced
226 apply (rule zero_le_square) |
226 apply (rule zero_le_square) |
227 done |
227 done |
228 |
228 |
229 lemma zero_le_odd_power: "odd n ==> |
229 lemma zero_le_odd_power: "odd n ==> |
230 (0 <= (x::'a::{recpower,ordered_idom}) ^ n) = (0 <= x)" |
230 (0 <= (x::'a::{recpower,ordered_idom}) ^ n) = (0 <= x)" |
231 apply (simp add: odd_nat_equiv_def2) |
231 apply (auto simp: odd_nat_equiv_def2 power_Suc power_add zero_le_mult_iff) |
232 apply (erule exE) |
232 apply (metis field_power_not_zero no_zero_divirors_neq0 order_antisym_conv zero_le_square) |
233 apply (erule ssubst) |
233 done |
234 apply (subst power_Suc) |
|
235 apply (subst power_add) |
|
236 apply (subst zero_le_mult_iff) |
|
237 apply auto |
|
238 apply (subgoal_tac "x = 0 & y > 0") |
|
239 apply (erule conjE, assumption) |
|
240 apply (subst power_eq_0_iff [symmetric]) |
|
241 apply (subgoal_tac "0 <= x^y * x^y") |
|
242 apply simp |
|
243 apply (rule zero_le_square)+ |
|
244 done |
|
245 |
234 |
246 lemma zero_le_power_eq[presburger]: "(0 <= (x::'a::{recpower,ordered_idom}) ^ n) = |
235 lemma zero_le_power_eq[presburger]: "(0 <= (x::'a::{recpower,ordered_idom}) ^ n) = |
247 (even n | (odd n & 0 <= x))" |
236 (even n | (odd n & 0 <= x))" |
248 apply auto |
237 apply auto |
249 apply (subst zero_le_odd_power [symmetric]) |
238 apply (subst zero_le_odd_power [symmetric]) |