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]); |