src/HOL/Power.thy
changeset 15251 bb6f072c8d10
parent 15140 322485b816ac
child 16733 236dfafbeb63
--- a/src/HOL/Power.thy	Mon Oct 18 13:40:45 2004 +0200
+++ b/src/HOL/Power.thy	Tue Oct 19 18:18:45 2004 +0200
@@ -22,10 +22,10 @@
 
 text{*It looks plausible as a simprule, but its effect can be strange.*}
 lemma power_0_left: "0^n = (if n=0 then 1 else (0::'a::recpower))"
-by (induct_tac "n", auto)
+by (induct "n", auto)
 
 lemma power_one [simp]: "1^n = (1::'a::recpower)"
-apply (induct_tac "n")
+apply (induct "n")
 apply (auto simp add: power_Suc)
 done
 
@@ -33,23 +33,23 @@
 by (simp add: power_Suc)
 
 lemma power_add: "(a::'a::recpower) ^ (m+n) = (a^m) * (a^n)"
-apply (induct_tac "n")
+apply (induct "n")
 apply (simp_all add: power_Suc mult_ac)
 done
 
 lemma power_mult: "(a::'a::recpower) ^ (m*n) = (a^m) ^ n"
-apply (induct_tac "n")
+apply (induct "n")
 apply (simp_all add: power_Suc power_add)
 done
 
 lemma power_mult_distrib: "((a::'a::recpower) * b) ^ n = (a^n) * (b^n)"
-apply (induct_tac "n")
+apply (induct "n")
 apply (auto simp add: power_Suc mult_ac)
 done
 
 lemma zero_less_power:
      "0 < (a::'a::{ordered_semidom,recpower}) ==> 0 < a^n"
-apply (induct_tac "n")
+apply (induct "n")
 apply (simp_all add: power_Suc zero_less_one mult_pos)
 done
 
@@ -62,7 +62,7 @@
 
 lemma one_le_power:
      "1 \<le> (a::'a::{ordered_semidom,recpower}) ==> 1 \<le> a^n"
-apply (induct_tac "n")
+apply (induct "n")
 apply (simp_all add: power_Suc)
 apply (rule order_trans [OF _ mult_mono [of 1 _ 1]])
 apply (simp_all add: zero_le_one order_trans [OF zero_le_one])
@@ -124,7 +124,7 @@
 
 lemma power_mono:
      "[|a \<le> b; (0::'a::{recpower,ordered_semidom}) \<le> a|] ==> a^n \<le> b^n"
-apply (induct_tac "n")
+apply (induct "n")
 apply (simp_all add: power_Suc)
 apply (auto intro: mult_mono zero_le_power order_trans [of 0 a b])
 done
@@ -132,20 +132,20 @@
 lemma power_strict_mono [rule_format]:
      "[|a < b; (0::'a::{recpower,ordered_semidom}) \<le> a|]
       ==> 0 < n --> a^n < b^n"
-apply (induct_tac "n")
+apply (induct "n")
 apply (auto simp add: mult_strict_mono zero_le_power power_Suc
                       order_le_less_trans [of 0 a b])
 done
 
 lemma power_eq_0_iff [simp]:
      "(a^n = 0) = (a = (0::'a::{ordered_idom,recpower}) & 0<n)"
-apply (induct_tac "n")
+apply (induct "n")
 apply (auto simp add: power_Suc zero_neq_one [THEN not_sym])
 done
 
 lemma field_power_eq_0_iff [simp]:
      "(a^n = 0) = (a = (0::'a::{field,recpower}) & 0<n)"
-apply (induct_tac "n")
+apply (induct "n")
 apply (auto simp add: power_Suc field_mult_eq_0_iff zero_neq_one[THEN not_sym])
 done
 
@@ -154,14 +154,14 @@
 
 lemma nonzero_power_inverse:
   "a \<noteq> 0 ==> inverse ((a::'a::{field,recpower}) ^ n) = (inverse a) ^ n"
-apply (induct_tac "n")
+apply (induct "n")
 apply (auto simp add: power_Suc nonzero_inverse_mult_distrib mult_commute)
 done
 
 text{*Perhaps these should be simprules.*}
 lemma power_inverse:
   "inverse ((a::'a::{field,division_by_zero,recpower}) ^ n) = (inverse a) ^ n"
-apply (induct_tac "n")
+apply (induct "n")
 apply (auto simp add: power_Suc inverse_mult_distrib)
 done
 
@@ -177,7 +177,7 @@
 done
 
 lemma power_abs: "abs(a ^ n) = abs(a::'a::{ordered_idom,recpower}) ^ n"
-apply (induct_tac "n")
+apply (induct "n")
 apply (auto simp add: power_Suc abs_mult)
 done
 
@@ -193,7 +193,7 @@
 
 lemma zero_le_power_abs [simp]:
      "(0::'a::{ordered_idom,recpower}) \<le> (abs a)^n"
-apply (induct_tac "n")
+apply (induct "n")
 apply (auto simp add: zero_le_one zero_le_power)
 done
 
@@ -207,7 +207,7 @@
 lemma power_Suc_less:
      "[|(0::'a::{ordered_semidom,recpower}) < a; a < 1|]
       ==> a * a^n < a^n"
-apply (induct_tac n)
+apply (induct n)
 apply (auto simp add: power_Suc mult_strict_left_mono)
 done
 
@@ -215,7 +215,7 @@
      "[|n < N; 0 < a; a < (1::'a::{ordered_semidom,recpower})|]
       ==> a^N < a^n"
 apply (erule rev_mp)
-apply (induct_tac "N")
+apply (induct "N")
 apply (auto simp add: power_Suc power_Suc_less less_Suc_eq)
 apply (rename_tac m)
 apply (subgoal_tac "a * a^m < 1 * a^n", simp)
@@ -228,7 +228,7 @@
      "[|n \<le> N; 0 \<le> a; a \<le> (1::'a::{ordered_semidom,recpower})|]
       ==> a^N \<le> a^n"
 apply (erule rev_mp)
-apply (induct_tac "N")
+apply (induct "N")
 apply (auto simp add: power_Suc  le_Suc_eq)
 apply (rename_tac m)
 apply (subgoal_tac "a * a^m \<le> 1 * a^n", simp)
@@ -245,7 +245,7 @@
 lemma power_increasing:
      "[|n \<le> N; (1::'a::{ordered_semidom,recpower}) \<le> a|] ==> a^n \<le> a^N"
 apply (erule rev_mp)
-apply (induct_tac "N")
+apply (induct "N")
 apply (auto simp add: power_Suc le_Suc_eq)
 apply (rename_tac m)
 apply (subgoal_tac "1 * a^n \<le> a * a^m", simp)
@@ -256,14 +256,14 @@
 text{*Lemma for @{text power_strict_increasing}*}
 lemma power_less_power_Suc:
      "(1::'a::{ordered_semidom,recpower}) < a ==> a^n < a * a^n"
-apply (induct_tac n)
+apply (induct n)
 apply (auto simp add: power_Suc mult_strict_left_mono order_less_trans [OF zero_less_one])
 done
 
 lemma power_strict_increasing:
      "[|n < N; (1::'a::{ordered_semidom,recpower}) < a|] ==> a^n < a^N"
 apply (erule rev_mp)
-apply (induct_tac "N")
+apply (induct "N")
 apply (auto simp add: power_less_power_Suc power_Suc less_Suc_eq)
 apply (rename_tac m)
 apply (subgoal_tac "1 * a^n < a * a^m", simp)
@@ -332,10 +332,10 @@
 done
 
 lemma nat_zero_less_power_iff [simp]: "(0 < x^n) = (x \<noteq> (0::nat) | n=0)"
-by (induct_tac "n", auto)
+by (induct "n", auto)
 
 lemma power_le_dvd [rule_format]: "k^j dvd n --> i\<le>j --> k^i dvd (n::nat)"
-apply (induct_tac "j")
+apply (induct "j")
 apply (simp_all add: le_Suc_eq)
 apply (blast dest!: dvd_mult_right)
 done
@@ -371,7 +371,7 @@
 by simp
 
 lemma binomial_eq_0 [rule_format]: "\<forall>k. n < k --> (n choose k) = 0"
-apply (induct_tac "n", auto)
+apply (induct "n", auto)
 apply (erule allE)
 apply (erule mp, arith)
 done
@@ -379,15 +379,15 @@
 declare binomial_0 [simp del] binomial_Suc [simp del]
 
 lemma binomial_n_n [simp]: "(n choose n) = 1"
-apply (induct_tac "n")
+apply (induct "n")
 apply (simp_all add: binomial_eq_0)
 done
 
 lemma binomial_Suc_n [simp]: "(Suc n choose n) = Suc n"
-by (induct_tac "n", simp_all)
+by (induct "n", simp_all)
 
 lemma binomial_1 [simp]: "(n choose Suc 0) = n"
-by (induct_tac "n", simp_all)
+by (induct "n", simp_all)
 
 lemma zero_less_binomial [rule_format]: "k \<le> n --> 0 < (n choose k)"
 by (rule_tac m = n and n = k in diff_induct, simp_all)
@@ -404,7 +404,7 @@
 (*Might be more useful if re-oriented*)
 lemma Suc_times_binomial_eq [rule_format]:
      "\<forall>k. k \<le> n --> Suc n * (n choose k) = (Suc n choose Suc k) * Suc k"
-apply (induct_tac "n")
+apply (induct "n")
 apply (simp add: binomial_0, clarify)
 apply (case_tac "k")
 apply (auto simp add: add_mult_distrib add_mult_distrib2 le_Suc_eq