src/HOL/Real/RealPow.ML
changeset 8838 4eaa99f0d223
parent 8442 96023903c2df
child 9013 9dd0274f76af
equal deleted inserted replaced
8837:9ee87bdcba05 8838:4eaa99f0d223
    28 by (forw_inst_tac [("n","n")] realpow_not_zero 1);
    28 by (forw_inst_tac [("n","n")] realpow_not_zero 1);
    29 by (auto_tac (claset() addDs [real_rinv_distrib],
    29 by (auto_tac (claset() addDs [real_rinv_distrib],
    30     simpset()));
    30     simpset()));
    31 qed_spec_mp "realpow_rinv";
    31 qed_spec_mp "realpow_rinv";
    32 
    32 
    33 Goal "rabs r ^ n = rabs (r ^ n)";
    33 Goal "abs (r::real) ^ n = abs (r ^ n)";
    34 by (induct_tac "n" 1);
    34 by (induct_tac "n" 1);
    35 by (auto_tac (claset(),simpset() addsimps 
    35 by (auto_tac (claset(),simpset() addsimps 
    36     [rabs_mult,rabs_one]));
    36     [abs_mult,abs_one]));
    37 qed "realpow_rabs";
    37 qed "realpow_abs";
    38 
    38 
    39 Goal "(r::real) ^ (n + m) = (r ^ n) * (r ^ m)";
    39 Goal "(r::real) ^ (n + m) = (r ^ n) * (r ^ m)";
    40 by (induct_tac "n" 1);
    40 by (induct_tac "n" 1);
    41 by (auto_tac (claset(),simpset() addsimps real_mult_ac));
    41 by (auto_tac (claset(),simpset() addsimps real_mult_ac));
    42 qed "realpow_add";
    42 qed "realpow_add";
    98     REMOVE AFTER CONVERTING THIS FILE TO USE #0 AND #1 **)
    98     REMOVE AFTER CONVERTING THIS FILE TO USE #0 AND #1 **)
    99 
    99 
   100 Addsimps (map (rename_numerals thy) [realpow_zero, realpow_eq_one]);
   100 Addsimps (map (rename_numerals thy) [realpow_zero, realpow_eq_one]);
   101 
   101 
   102 
   102 
   103 Goal "rabs(-(1r ^ n)) = 1r";
   103 Goal "abs(-(1r ^ n)) = 1r";
   104 by (simp_tac (simpset() addsimps 
   104 by (simp_tac (simpset() addsimps 
   105     [rabs_minus_cancel,rabs_one]) 1);
   105     [abs_minus_cancel,abs_one]) 1);
   106 qed "rabs_minus_realpow_one";
   106 qed "abs_minus_realpow_one";
   107 Addsimps [rabs_minus_realpow_one];
   107 Addsimps [abs_minus_realpow_one];
   108 
   108 
   109 Goal "rabs((-1r) ^ n) = 1r";
   109 Goal "abs((-1r) ^ n) = 1r";
   110 by (induct_tac "n" 1);
   110 by (induct_tac "n" 1);
   111 by (auto_tac (claset(),simpset() addsimps [rabs_mult,
   111 by (auto_tac (claset(),simpset() addsimps [abs_mult,
   112          rabs_minus_cancel,rabs_one]));
   112          abs_minus_cancel,abs_one]));
   113 qed "rabs_realpow_minus_one";
   113 qed "abs_realpow_minus_one";
   114 Addsimps [rabs_realpow_minus_one];
   114 Addsimps [abs_realpow_minus_one];
   115 
   115 
   116 Goal "((r::real) * s) ^ n = (r ^ n) * (s ^ n)";
   116 Goal "((r::real) * s) ^ n = (r ^ n) * (s ^ n)";
   117 by (induct_tac "n" 1);
   117 by (induct_tac "n" 1);
   118 by (auto_tac (claset(),simpset() addsimps real_mult_ac));
   118 by (auto_tac (claset(),simpset() addsimps real_mult_ac));
   119 qed "realpow_mult";
   119 qed "realpow_mult";
   121 Goal "0r <= r ^ 2";
   121 Goal "0r <= r ^ 2";
   122 by (simp_tac (simpset() addsimps [realpow_two]) 1);
   122 by (simp_tac (simpset() addsimps [realpow_two]) 1);
   123 qed "realpow_two_le";
   123 qed "realpow_two_le";
   124 Addsimps [realpow_two_le];
   124 Addsimps [realpow_two_le];
   125 
   125 
   126 Goal "rabs(x ^ 2) = x ^ 2";
   126 Goal "abs((x::real) ^ 2) = x ^ 2";
   127 by (simp_tac (simpset() addsimps [rabs_eqI1]) 1);
   127 by (simp_tac (simpset() addsimps [abs_eqI1]) 1);
   128 qed "rabs_realpow_two";
   128 qed "abs_realpow_two";
   129 Addsimps [rabs_realpow_two];
   129 Addsimps [abs_realpow_two];
   130 
   130 
   131 Goal "rabs(x) ^ 2 = x ^ 2";
   131 Goal "abs(x::real) ^ 2 = x ^ 2";
   132 by (simp_tac (simpset() addsimps 
   132 by (simp_tac (simpset() addsimps 
   133     [realpow_rabs,rabs_eqI1] delsimps [realpow_Suc]) 1);
   133     [realpow_abs,abs_eqI1] delsimps [realpow_Suc]) 1);
   134 qed "realpow_two_rabs";
   134 qed "realpow_two_abs";
   135 Addsimps [realpow_two_rabs];
   135 Addsimps [realpow_two_abs];
   136 
   136 
   137 Goal "1r < r ==> 1r < r ^ 2";
   137 Goal "1r < r ==> 1r < r ^ 2";
   138 by (auto_tac (claset(),simpset() addsimps [realpow_two]));
   138 by (auto_tac (claset(),simpset() addsimps [realpow_two]));
   139 by (cut_facts_tac [real_zero_less_one] 1);
   139 by (cut_facts_tac [real_zero_less_one] 1);
   140 by (forw_inst_tac [("R1.0","0r")] real_less_trans 1);
   140 by (forw_inst_tac [("R1.0","0r")] real_less_trans 1);
   371 (** New versions using #0 and #1 instead of 0r and 1r
   371 (** New versions using #0 and #1 instead of 0r and 1r
   372     REMOVE AFTER CONVERTING THIS FILE TO USE #0 AND #1 **)
   372     REMOVE AFTER CONVERTING THIS FILE TO USE #0 AND #1 **)
   373 
   373 
   374 Addsimps (map (rename_numerals thy) 
   374 Addsimps (map (rename_numerals thy) 
   375 	  [realpow_two_le, realpow_zero_le,
   375 	  [realpow_two_le, realpow_zero_le,
   376 	   rabs_minus_realpow_one, rabs_realpow_minus_one,
   376 	   abs_minus_realpow_one, abs_realpow_minus_one,
   377 	   realpow_minus_one, realpow_minus_one2, realpow_minus_one_odd]);
   377 	   realpow_minus_one, realpow_minus_one2, realpow_minus_one_odd]);