src/HOL/Nonstandard_Analysis/HyperDef.thy
changeset 75866 9eeed5c424f9
parent 70723 4e39d87c9737
equal deleted inserted replaced
75865:62c64e3e4741 75866:9eeed5c424f9
   276 
   276 
   277 lemma hpowr_Suc [simp]: "r ^ (Suc n) = r * (r ^ n)"
   277 lemma hpowr_Suc [simp]: "r ^ (Suc n) = r * (r ^ n)"
   278   for r :: hypreal
   278   for r :: hypreal
   279   by (rule power_Suc)
   279   by (rule power_Suc)
   280 
   280 
   281 lemma hrealpow_two: "r ^ Suc (Suc 0) = r * r"
       
   282   for r :: hypreal
       
   283   by simp
       
   284 
       
   285 lemma hrealpow_two_le [simp]: "0 \<le> r ^ Suc (Suc 0)"
       
   286   for r :: hypreal
       
   287   by (auto simp add: zero_le_mult_iff)
       
   288 
       
   289 lemma hrealpow_two_le_add_order [simp]: "0 \<le> u ^ Suc (Suc 0) + v ^ Suc (Suc 0)"
       
   290   for u v :: hypreal
       
   291   by (simp only: hrealpow_two_le add_nonneg_nonneg)
       
   292 
       
   293 lemma hrealpow_two_le_add_order2 [simp]: "0 \<le> u ^ Suc (Suc 0) + v ^ Suc (Suc 0) + w ^ Suc (Suc 0)"
       
   294   for u v w :: hypreal
       
   295   by (simp only: hrealpow_two_le add_nonneg_nonneg)
       
   296 
       
   297 lemma hypreal_add_nonneg_eq_0_iff: "0 \<le> x \<Longrightarrow> 0 \<le> y \<Longrightarrow> x + y = 0 \<longleftrightarrow> x = 0 \<and> y = 0"
       
   298   for x y :: hypreal
       
   299   by arith
       
   300 
       
   301 
       
   302 (* FIXME: DELETE THESE *)
       
   303 lemma hypreal_three_squares_add_zero_iff: "x * x + y * y + z * z = 0 \<longleftrightarrow> x = 0 \<and> y = 0 \<and> z = 0"
       
   304   for x y z :: hypreal
       
   305   by (simp only: zero_le_square add_nonneg_nonneg hypreal_add_nonneg_eq_0_iff) auto
       
   306 
       
   307 lemma hrealpow_three_squares_add_zero_iff [simp]:
       
   308   "x ^ Suc (Suc 0) + y ^ Suc (Suc 0) + z ^ Suc (Suc 0) = 0 \<longleftrightarrow> x = 0 \<and> y = 0 \<and> z = 0"
       
   309   for x y z :: hypreal
       
   310   by (simp only: hypreal_three_squares_add_zero_iff hrealpow_two)
       
   311 
       
   312 (*FIXME: This and RealPow.abs_realpow_two should be replaced by an abstract
       
   313   result proved in Rings or Fields*)
       
   314 lemma hrabs_hrealpow_two [simp]: "\<bar>x ^ Suc (Suc 0)\<bar> = x ^ Suc (Suc 0)"
       
   315   for x :: hypreal
       
   316   by (simp add: abs_mult)
       
   317 
       
   318 lemma two_hrealpow_ge_one [simp]: "(1::hypreal) \<le> 2 ^ n"
       
   319   using power_increasing [of 0 n "2::hypreal"] by simp
       
   320 
       
   321 lemma hrealpow: "star_n X ^ m = star_n (\<lambda>n. (X n::real) ^ m)"
   281 lemma hrealpow: "star_n X ^ m = star_n (\<lambda>n. (X n::real) ^ m)"
   322   by (induct m) (auto simp: star_n_one_num star_n_mult)
   282   by (induct m) (auto simp: star_n_one_num star_n_mult)
   323 
   283 
   324 lemma hrealpow_sum_square_expand:
   284 lemma hrealpow_sum_square_expand:
   325   "(x + y) ^ Suc (Suc 0) =
   285   "(x + y) ^ Suc (Suc 0) =
   334 
   294 
   335 lemma power_hypreal_of_real_neg_numeral:
   295 lemma power_hypreal_of_real_neg_numeral:
   336   "(- numeral v :: hypreal) ^ n = hypreal_of_real ((- numeral v) ^ n)"
   296   "(- numeral v :: hypreal) ^ n = hypreal_of_real ((- numeral v) ^ n)"
   337   by simp
   297   by simp
   338 declare power_hypreal_of_real_neg_numeral [of _ "numeral w", simp] for w
   298 declare power_hypreal_of_real_neg_numeral [of _ "numeral w", simp] for w
   339 (*
       
   340 lemma hrealpow_HFinite:
       
   341   fixes x :: "'a::{real_normed_algebra,power} star"
       
   342   shows "x \<in> HFinite ==> x ^ n \<in> HFinite"
       
   343 apply (induct_tac "n")
       
   344 apply (auto simp add: power_Suc intro: HFinite_mult)
       
   345 done
       
   346 *)
       
   347 
   299 
   348 
   300 
   349 subsection \<open>Powers with Hypernatural Exponents\<close>
   301 subsection \<open>Powers with Hypernatural Exponents\<close>
   350 
   302 
   351 text \<open>Hypernatural powers of hyperreals.\<close>
   303 text \<open>Hypernatural powers of hyperreals.\<close>