209 Addsimps [real_sqrt_sum_squares_mult_squared_eq]; |
209 Addsimps [real_sqrt_sum_squares_mult_squared_eq]; |
210 |
210 |
211 Goal "sqrt(x ^ 2) = abs(x)"; |
211 Goal "sqrt(x ^ 2) = abs(x)"; |
212 by (rtac (abs_realpow_two RS subst) 1); |
212 by (rtac (abs_realpow_two RS subst) 1); |
213 by (rtac (real_sqrt_abs_abs RS subst) 1); |
213 by (rtac (real_sqrt_abs_abs RS subst) 1); |
214 by (rtac (real_pow_sqrt_eq_sqrt_pow RS ssubst) 1); |
214 by (stac real_pow_sqrt_eq_sqrt_pow 1); |
215 by (auto_tac (claset(),simpset() addsimps [numeral_2_eq_2, abs_mult,abs_ge_zero])); |
215 by (auto_tac (claset(),simpset() addsimps [numeral_2_eq_2, abs_mult,abs_ge_zero])); |
216 qed "real_sqrt_abs"; |
216 qed "real_sqrt_abs"; |
217 Addsimps [real_sqrt_abs]; |
217 Addsimps [real_sqrt_abs]; |
218 |
218 |
219 Goal "sqrt(x*x) = abs(x)"; |
219 Goal "sqrt(x*x) = abs(x)"; |
226 Goal "0 < x ==> 0 < sqrt(x) ^ 2"; |
226 Goal "0 < x ==> 0 < sqrt(x) ^ 2"; |
227 by (asm_full_simp_tac (simpset() addsimps [real_sqrt_gt_zero_pow2]) 1); |
227 by (asm_full_simp_tac (simpset() addsimps [real_sqrt_gt_zero_pow2]) 1); |
228 qed "real_sqrt_pow2_gt_zero"; |
228 qed "real_sqrt_pow2_gt_zero"; |
229 |
229 |
230 Goal "0 < x ==> sqrt x ~= 0"; |
230 Goal "0 < x ==> sqrt x ~= 0"; |
231 by (forward_tac [real_sqrt_pow2_gt_zero] 1); |
231 by (ftac real_sqrt_pow2_gt_zero 1); |
232 by (auto_tac (claset(),simpset() addsimps [numeral_2_eq_2, real_less_not_refl])); |
232 by (auto_tac (claset(),simpset() addsimps [numeral_2_eq_2, real_less_not_refl])); |
233 qed "real_sqrt_not_eq_zero"; |
233 qed "real_sqrt_not_eq_zero"; |
234 |
234 |
235 Goal "0 < x ==> inverse (sqrt(x)) ^ 2 = inverse x"; |
235 Goal "0 < x ==> inverse (sqrt(x)) ^ 2 = inverse x"; |
236 by (forward_tac [real_sqrt_not_eq_zero] 1); |
236 by (ftac real_sqrt_not_eq_zero 1); |
237 by (cut_inst_tac [("n1","2"),("r1","sqrt x")] (realpow_inverse RS sym) 1); |
237 by (cut_inst_tac [("n1","2"),("r1","sqrt x")] (realpow_inverse RS sym) 1); |
238 by (auto_tac (claset() addDs [real_sqrt_gt_zero_pow2],simpset())); |
238 by (auto_tac (claset() addDs [real_sqrt_gt_zero_pow2],simpset())); |
239 qed "real_inv_sqrt_pow2"; |
239 qed "real_inv_sqrt_pow2"; |
240 |
240 |
241 Goal "[| 0 <= x; sqrt(x) = 0|] ==> x = 0"; |
241 Goal "[| 0 <= x; sqrt(x) = 0|] ==> x = 0"; |
284 by (res_inst_tac [("N","n"),("c","r")] ratio_test 1); |
284 by (res_inst_tac [("N","n"),("c","r")] ratio_test 1); |
285 by (auto_tac (claset(),simpset() addsimps [abs_mult,real_mult_assoc RS sym] |
285 by (auto_tac (claset(),simpset() addsimps [abs_mult,real_mult_assoc RS sym] |
286 delsimps [fact_Suc])); |
286 delsimps [fact_Suc])); |
287 by (rtac real_mult_le_le_mono2 1); |
287 by (rtac real_mult_le_le_mono2 1); |
288 by (res_inst_tac [("w1","abs x")] (real_mult_commute RS ssubst) 2); |
288 by (res_inst_tac [("w1","abs x")] (real_mult_commute RS ssubst) 2); |
289 by (rtac (fact_Suc RS ssubst) 2); |
289 by (stac fact_Suc 2); |
290 by (rtac (real_of_nat_mult RS ssubst) 2); |
290 by (stac real_of_nat_mult 2); |
291 by (auto_tac (claset(),simpset() addsimps [abs_mult,real_inverse_distrib, |
291 by (auto_tac (claset(),simpset() addsimps [abs_mult,real_inverse_distrib, |
292 abs_ge_zero])); |
292 abs_ge_zero])); |
293 by (auto_tac (claset(), simpset() addsimps |
293 by (auto_tac (claset(), simpset() addsimps |
294 [real_mult_assoc RS sym, abs_ge_zero, abs_eqI2, |
294 [real_mult_assoc RS sym, abs_ge_zero, abs_eqI2, |
295 real_inverse_gt_0])); |
295 real_inverse_gt_0])); |
400 Goal "sumr 0 (Suc n) (%p. (x ^ p) * y ^ ((Suc n) - p)) = \ |
400 Goal "sumr 0 (Suc n) (%p. (x ^ p) * y ^ ((Suc n) - p)) = \ |
401 \ y * sumr 0 (Suc n) (%p. (x ^ p) * (y ^ (n - p)))"; |
401 \ y * sumr 0 (Suc n) (%p. (x ^ p) * (y ^ (n - p)))"; |
402 by (auto_tac (claset(),simpset() addsimps [sumr_mult] delsimps [sumr_Suc])); |
402 by (auto_tac (claset(),simpset() addsimps [sumr_mult] delsimps [sumr_Suc])); |
403 by (rtac sumr_subst 1); |
403 by (rtac sumr_subst 1); |
404 by (strip_tac 1); |
404 by (strip_tac 1); |
405 by (rtac (lemma_realpow_diff RS ssubst) 1); |
405 by (stac lemma_realpow_diff 1); |
406 by (auto_tac (claset(),simpset() addsimps real_mult_ac)); |
406 by (auto_tac (claset(),simpset() addsimps real_mult_ac)); |
407 qed "lemma_realpow_diff_sumr"; |
407 qed "lemma_realpow_diff_sumr"; |
408 |
408 |
409 Goal "x ^ (Suc n) - y ^ (Suc n) = \ |
409 Goal "x ^ (Suc n) - y ^ (Suc n) = \ |
410 \ (x - y) * sumr 0 (Suc n) (%p. (x ^ p) * (y ^(n - p)))"; |
410 \ (x - y) * sumr 0 (Suc n) (%p. (x ^ p) * (y ^(n - p)))"; |
411 by (induct_tac "n" 1); |
411 by (induct_tac "n" 1); |
412 by (auto_tac (claset(),simpset() delsimps [sumr_Suc])); |
412 by (auto_tac (claset(),simpset() delsimps [sumr_Suc])); |
413 by (rtac (sumr_Suc RS ssubst) 1); |
413 by (stac sumr_Suc 1); |
414 by (dtac sym 1); |
414 by (dtac sym 1); |
415 by (auto_tac (claset(),simpset() addsimps [lemma_realpow_diff_sumr, |
415 by (auto_tac (claset(),simpset() addsimps [lemma_realpow_diff_sumr, |
416 real_add_mult_distrib2,real_diff_def] @ |
416 real_add_mult_distrib2,real_diff_def] @ |
417 real_mult_ac delsimps [sumr_Suc])); |
417 real_mult_ac delsimps [sumr_Suc])); |
418 qed "lemma_realpow_diff_sumr2"; |
418 qed "lemma_realpow_diff_sumr2"; |
422 by (case_tac "x = y" 1); |
422 by (case_tac "x = y" 1); |
423 by (auto_tac (claset(),simpset() addsimps [real_mult_commute, |
423 by (auto_tac (claset(),simpset() addsimps [real_mult_commute, |
424 realpow_add RS sym] delsimps [sumr_Suc])); |
424 realpow_add RS sym] delsimps [sumr_Suc])); |
425 by (res_inst_tac [("c1","x - y")] (real_mult_left_cancel RS iffD1) 1); |
425 by (res_inst_tac [("c1","x - y")] (real_mult_left_cancel RS iffD1) 1); |
426 by (rtac (real_minus_minus RS subst) 2); |
426 by (rtac (real_minus_minus RS subst) 2); |
427 by (rtac (real_minus_mult_eq1 RS ssubst) 2); |
427 by (stac real_minus_mult_eq1 2); |
428 by (auto_tac (claset(),simpset() addsimps [lemma_realpow_diff_sumr2 |
428 by (auto_tac (claset(),simpset() addsimps [lemma_realpow_diff_sumr2 |
429 RS sym] delsimps [sumr_Suc])); |
429 RS sym] delsimps [sumr_Suc])); |
430 qed "lemma_realpow_rev_sumr"; |
430 qed "lemma_realpow_rev_sumr"; |
431 |
431 |
432 (* ------------------------------------------------------------------------ *) |
432 (* ------------------------------------------------------------------------ *) |
579 qed "lemma_termdiff2"; |
579 qed "lemma_termdiff2"; |
580 |
580 |
581 Goal "[| h ~= 0; abs z <= K; abs (z + h) <= K |] \ |
581 Goal "[| h ~= 0; abs z <= K; abs (z + h) <= K |] \ |
582 \ ==> abs (((z + h) ^ n - z ^ n) * inverse h - real n * z ^ (n - Suc 0)) \ |
582 \ ==> abs (((z + h) ^ n - z ^ n) * inverse h - real n * z ^ (n - Suc 0)) \ |
583 \ <= real n * real (n - Suc 0) * K ^ (n - 2) * abs h"; |
583 \ <= real n * real (n - Suc 0) * K ^ (n - 2) * abs h"; |
584 by (rtac (lemma_termdiff2 RS ssubst) 1); |
584 by (stac lemma_termdiff2 1); |
585 by (asm_full_simp_tac (simpset() addsimps [abs_mult,real_mult_commute]) 2); |
585 by (asm_full_simp_tac (simpset() addsimps [abs_mult,real_mult_commute]) 2); |
586 by (stac real_mult_commute 2); |
586 by (stac real_mult_commute 2); |
587 by (rtac (sumr_rabs RS real_le_trans) 2); |
587 by (rtac (sumr_rabs RS real_le_trans) 2); |
588 by (asm_full_simp_tac (simpset() addsimps [real_mult_assoc RS sym]) 2); |
588 by (asm_full_simp_tac (simpset() addsimps [real_mult_assoc RS sym]) 2); |
589 by (rtac (real_mult_commute RS subst) 2); |
589 by (rtac (real_mult_commute RS subst) 2); |
810 (* ------------------------------------------------------------------------ *) |
810 (* ------------------------------------------------------------------------ *) |
811 |
811 |
812 Goalw [diffs_def] |
812 Goalw [diffs_def] |
813 "diffs (%n. inverse(real (fact n))) = (%n. inverse(real (fact n)))"; |
813 "diffs (%n. inverse(real (fact n))) = (%n. inverse(real (fact n)))"; |
814 by (rtac ext 1); |
814 by (rtac ext 1); |
815 by (rtac (fact_Suc RS ssubst) 1); |
815 by (stac fact_Suc 1); |
816 by (rtac (real_of_nat_mult RS ssubst) 1); |
816 by (stac real_of_nat_mult 1); |
817 by (rtac (real_inverse_distrib RS ssubst) 1); |
817 by (stac real_inverse_distrib 1); |
818 by (auto_tac (claset(),simpset() addsimps [real_mult_assoc RS sym])); |
818 by (auto_tac (claset(),simpset() addsimps [real_mult_assoc RS sym])); |
819 qed "exp_fdiffs"; |
819 qed "exp_fdiffs"; |
820 |
820 |
821 Goalw [diffs_def,real_divide_def] |
821 Goalw [diffs_def,real_divide_def] |
822 "diffs(%n. if even n then 0 \ |
822 "diffs(%n. if even n then 0 \ |
823 \ else (- 1) ^ ((n - Suc 0) div 2)/(real (fact n))) \ |
823 \ else (- 1) ^ ((n - Suc 0) div 2)/(real (fact n))) \ |
824 \ = (%n. if even n then \ |
824 \ = (%n. if even n then \ |
825 \ (- 1) ^ (n div 2)/(real (fact n)) \ |
825 \ (- 1) ^ (n div 2)/(real (fact n)) \ |
826 \ else 0)"; |
826 \ else 0)"; |
827 by (rtac ext 1); |
827 by (rtac ext 1); |
828 by (rtac (fact_Suc RS ssubst) 1); |
828 by (stac fact_Suc 1); |
829 by (rtac (real_of_nat_mult RS ssubst) 1); |
829 by (stac real_of_nat_mult 1); |
830 by (rtac (even_Suc RS ssubst) 1); |
830 by (stac even_Suc 1); |
831 by (rtac (real_inverse_distrib RS ssubst) 1); |
831 by (stac real_inverse_distrib 1); |
832 by Auto_tac; |
832 by Auto_tac; |
833 qed "sin_fdiffs"; |
833 qed "sin_fdiffs"; |
834 |
834 |
835 Goalw [diffs_def,real_divide_def] |
835 Goalw [diffs_def,real_divide_def] |
836 "diffs(%n. if even n then 0 \ |
836 "diffs(%n. if even n then 0 \ |
837 \ else (- 1) ^ ((n - Suc 0) div 2)/(real (fact n))) n \ |
837 \ else (- 1) ^ ((n - Suc 0) div 2)/(real (fact n))) n \ |
838 \ = (if even n then \ |
838 \ = (if even n then \ |
839 \ (- 1) ^ (n div 2)/(real (fact n)) \ |
839 \ (- 1) ^ (n div 2)/(real (fact n)) \ |
840 \ else 0)"; |
840 \ else 0)"; |
841 by (rtac (fact_Suc RS ssubst) 1); |
841 by (stac fact_Suc 1); |
842 by (rtac (real_of_nat_mult RS ssubst) 1); |
842 by (stac real_of_nat_mult 1); |
843 by (rtac (even_Suc RS ssubst) 1); |
843 by (stac even_Suc 1); |
844 by (rtac (real_inverse_distrib RS ssubst) 1); |
844 by (stac real_inverse_distrib 1); |
845 by Auto_tac; |
845 by Auto_tac; |
846 qed "sin_fdiffs2"; |
846 qed "sin_fdiffs2"; |
847 |
847 |
848 (* thms in EvenOdd needed *) |
848 (* thms in EvenOdd needed *) |
849 Goalw [diffs_def,real_divide_def] |
849 Goalw [diffs_def,real_divide_def] |
850 "diffs(%n. if even n then \ |
850 "diffs(%n. if even n then \ |
851 \ (- 1) ^ (n div 2)/(real (fact n)) else 0) \ |
851 \ (- 1) ^ (n div 2)/(real (fact n)) else 0) \ |
852 \ = (%n. - (if even n then 0 \ |
852 \ = (%n. - (if even n then 0 \ |
853 \ else (- 1) ^ ((n - Suc 0)div 2)/(real (fact n))))"; |
853 \ else (- 1) ^ ((n - Suc 0)div 2)/(real (fact n))))"; |
854 by (rtac ext 1); |
854 by (rtac ext 1); |
855 by (rtac (fact_Suc RS ssubst) 1); |
855 by (stac fact_Suc 1); |
856 by (rtac (real_of_nat_mult RS ssubst) 1); |
856 by (stac real_of_nat_mult 1); |
857 by (rtac (even_Suc RS ssubst) 1); |
857 by (stac even_Suc 1); |
858 by (rtac (real_inverse_distrib RS ssubst) 1); |
858 by (stac real_inverse_distrib 1); |
859 by (res_inst_tac [("z1","real (Suc n)")] (real_mult_commute RS ssubst) 1); |
859 by (res_inst_tac [("z1","real (Suc n)")] (real_mult_commute RS ssubst) 1); |
860 by (res_inst_tac [("z1","inverse(real (Suc n))")] |
860 by (res_inst_tac [("z1","inverse(real (Suc n))")] |
861 (real_mult_commute RS ssubst) 1); |
861 (real_mult_commute RS ssubst) 1); |
862 by (auto_tac (claset(),simpset() addsimps [real_mult_assoc, |
862 by (auto_tac (claset(),simpset() addsimps [real_mult_assoc, |
863 odd_not_even RS sym,odd_Suc_mult_two_ex])); |
863 odd_not_even RS sym,odd_Suc_mult_two_ex])); |
867 Goalw [diffs_def,real_divide_def] |
867 Goalw [diffs_def,real_divide_def] |
868 "diffs(%n. if even n then \ |
868 "diffs(%n. if even n then \ |
869 \ (- 1) ^ (n div 2)/(real (fact n)) else 0) n\ |
869 \ (- 1) ^ (n div 2)/(real (fact n)) else 0) n\ |
870 \ = - (if even n then 0 \ |
870 \ = - (if even n then 0 \ |
871 \ else (- 1) ^ ((n - Suc 0)div 2)/(real (fact n)))"; |
871 \ else (- 1) ^ ((n - Suc 0)div 2)/(real (fact n)))"; |
872 by (rtac (fact_Suc RS ssubst) 1); |
872 by (stac fact_Suc 1); |
873 by (rtac (real_of_nat_mult RS ssubst) 1); |
873 by (stac real_of_nat_mult 1); |
874 by (rtac (even_Suc RS ssubst) 1); |
874 by (stac even_Suc 1); |
875 by (rtac (real_inverse_distrib RS ssubst) 1); |
875 by (stac real_inverse_distrib 1); |
876 by (res_inst_tac [("z1","real (Suc n)")] (real_mult_commute RS ssubst) 1); |
876 by (res_inst_tac [("z1","real (Suc n)")] (real_mult_commute RS ssubst) 1); |
877 by (res_inst_tac [("z1","inverse (real (Suc n))")] |
877 by (res_inst_tac [("z1","inverse (real (Suc n))")] |
878 (real_mult_commute RS ssubst) 1); |
878 (real_mult_commute RS ssubst) 1); |
879 by (auto_tac (claset(),simpset() addsimps [real_mult_assoc, |
879 by (auto_tac (claset(),simpset() addsimps [real_mult_assoc, |
880 odd_not_even RS sym,odd_Suc_mult_two_ex])); |
880 odd_not_even RS sym,odd_Suc_mult_two_ex])); |
893 Goal "exp = (%x. suminf (%n. inverse (real (fact n)) * x ^ n))"; |
893 Goal "exp = (%x. suminf (%n. inverse (real (fact n)) * x ^ n))"; |
894 by (auto_tac (claset() addSIs [ext],simpset() addsimps [exp_def])); |
894 by (auto_tac (claset() addSIs [ext],simpset() addsimps [exp_def])); |
895 val lemma_exp_ext = result(); |
895 val lemma_exp_ext = result(); |
896 |
896 |
897 Goalw [exp_def] "DERIV exp x :> exp(x)"; |
897 Goalw [exp_def] "DERIV exp x :> exp(x)"; |
898 by (rtac (lemma_exp_ext RS ssubst) 1); |
898 by (stac lemma_exp_ext 1); |
899 by (subgoal_tac "DERIV (%u. suminf (%n. inverse (real (fact n)) * u ^ n)) x \ |
899 by (subgoal_tac "DERIV (%u. suminf (%n. inverse (real (fact n)) * u ^ n)) x \ |
900 \ :> suminf (%n. diffs (%n. inverse (real (fact n))) n * x ^ n)" 1); |
900 \ :> suminf (%n. diffs (%n. inverse (real (fact n))) n * x ^ n)" 1); |
901 by (res_inst_tac [("K","1 + abs(x)")] termdiffs 2); |
901 by (res_inst_tac [("K","1 + abs(x)")] termdiffs 2); |
902 by (auto_tac (claset() addIs [exp_converges RS sums_summable], |
902 by (auto_tac (claset() addIs [exp_converges RS sums_summable], |
903 simpset() addsimps [exp_fdiffs])); |
903 simpset() addsimps [exp_fdiffs])); |
916 \ else 0) * x ^ n))"; |
916 \ else 0) * x ^ n))"; |
917 by (auto_tac (claset() addSIs [ext],simpset() addsimps [cos_def])); |
917 by (auto_tac (claset() addSIs [ext],simpset() addsimps [cos_def])); |
918 val lemma_cos_ext = result(); |
918 val lemma_cos_ext = result(); |
919 |
919 |
920 Goalw [cos_def] "DERIV sin x :> cos(x)"; |
920 Goalw [cos_def] "DERIV sin x :> cos(x)"; |
921 by (rtac (lemma_sin_ext RS ssubst) 1); |
921 by (stac lemma_sin_ext 1); |
922 by (auto_tac (claset(),simpset() addsimps [sin_fdiffs2 RS sym])); |
922 by (auto_tac (claset(),simpset() addsimps [sin_fdiffs2 RS sym])); |
923 by (res_inst_tac [("K","1 + abs(x)")] termdiffs 1); |
923 by (res_inst_tac [("K","1 + abs(x)")] termdiffs 1); |
924 by (auto_tac (claset() addIs [sin_converges, cos_converges, sums_summable] |
924 by (auto_tac (claset() addIs [sin_converges, cos_converges, sums_summable] |
925 addSIs [sums_minus RS sums_summable], |
925 addSIs [sums_minus RS sums_summable], |
926 simpset() addsimps [cos_fdiffs,sin_fdiffs])); |
926 simpset() addsimps [cos_fdiffs,sin_fdiffs])); |
927 by (arith_tac 1); |
927 by (arith_tac 1); |
928 qed "DERIV_sin"; |
928 qed "DERIV_sin"; |
929 Addsimps [DERIV_sin]; |
929 Addsimps [DERIV_sin]; |
930 |
930 |
931 Goal "DERIV cos x :> -sin(x)"; |
931 Goal "DERIV cos x :> -sin(x)"; |
932 by (rtac (lemma_cos_ext RS ssubst) 1); |
932 by (stac lemma_cos_ext 1); |
933 by (auto_tac (claset(),simpset() addsimps [lemma_sin_minus, |
933 by (auto_tac (claset(),simpset() addsimps [lemma_sin_minus, |
934 cos_fdiffs2 RS sym,real_minus_mult_eq1])); |
934 cos_fdiffs2 RS sym,real_minus_mult_eq1])); |
935 by (res_inst_tac [("K","1 + abs(x)")] termdiffs 1); |
935 by (res_inst_tac [("K","1 + abs(x)")] termdiffs 1); |
936 by (auto_tac (claset() addIs [sin_converges,cos_converges, sums_summable] |
936 by (auto_tac (claset() addIs [sin_converges,cos_converges, sums_summable] |
937 addSIs [sums_minus RS sums_summable], |
937 addSIs [sums_minus RS sums_summable], |
986 Goal "DERIV (%x. exp (-x)) x :> - exp(-x)"; |
986 Goal "DERIV (%x. exp (-x)) x :> - exp(-x)"; |
987 by (auto_tac (claset(),simpset() addsimps |
987 by (auto_tac (claset(),simpset() addsimps |
988 [CLAIM_SIMP "(%x. exp(-x)) = exp o (%x. - x)" [ext]])); |
988 [CLAIM_SIMP "(%x. exp(-x)) = exp o (%x. - x)" [ext]])); |
989 by (rtac (real_mult_1_right RS subst) 1); |
989 by (rtac (real_mult_1_right RS subst) 1); |
990 by (rtac (real_minus_mult_eq1 RS subst) 1); |
990 by (rtac (real_minus_mult_eq1 RS subst) 1); |
991 by (rtac (real_minus_mult_eq2 RS ssubst) 1); |
991 by (stac real_minus_mult_eq2 1); |
992 by (rtac DERIV_chain 1); |
992 by (rtac DERIV_chain 1); |
993 by (rtac DERIV_minus 2); |
993 by (rtac DERIV_minus 2); |
994 by Auto_tac; |
994 by Auto_tac; |
995 qed "DERIV_exp_minus"; |
995 qed "DERIV_exp_minus"; |
996 Addsimps [DERIV_exp_minus]; |
996 Addsimps [DERIV_exp_minus]; |
1335 by (auto_tac (claset(), simpset() addsimps [numeral_2_eq_2])); |
1335 by (auto_tac (claset(), simpset() addsimps [numeral_2_eq_2])); |
1336 qed "sin_cos_squared_add"; |
1336 qed "sin_cos_squared_add"; |
1337 Addsimps [sin_cos_squared_add]; |
1337 Addsimps [sin_cos_squared_add]; |
1338 |
1338 |
1339 Goal "(cos(x) ^ 2) + (sin(x) ^ 2) = 1"; |
1339 Goal "(cos(x) ^ 2) + (sin(x) ^ 2) = 1"; |
1340 by (rtac (real_add_commute RS ssubst) 1); |
1340 by (stac real_add_commute 1); |
1341 by (simp_tac (simpset() delsimps [realpow_Suc]) 1); |
1341 by (simp_tac (simpset() delsimps [realpow_Suc]) 1); |
1342 qed "sin_cos_squared_add2"; |
1342 qed "sin_cos_squared_add2"; |
1343 Addsimps [sin_cos_squared_add2]; |
1343 Addsimps [sin_cos_squared_add2]; |
1344 |
1344 |
1345 Goal "cos x * cos x + sin x * sin x = 1"; |
1345 Goal "cos x * cos x + sin x * sin x = 1"; |
1584 (CLAIM "[|(0::real)<z; z*x<z*y |] ==> x<y") 1); |
1584 (CLAIM "[|(0::real)<z; z*x<z*y |] ==> x<y") 1); |
1585 by (asm_simp_tac (simpset() addsimps [numeral_2_eq_2 RS sym, real_mult_assoc RS sym]) 2); |
1585 by (asm_simp_tac (simpset() addsimps [numeral_2_eq_2 RS sym, real_mult_assoc RS sym]) 2); |
1586 by (stac (CLAIM "6 = 2 * (3::real)") 2); |
1586 by (stac (CLAIM "6 = 2 * (3::real)") 2); |
1587 by (rtac real_mult_less_mono 2); |
1587 by (rtac real_mult_less_mono 2); |
1588 by (auto_tac (claset(),simpset() addsimps [real_of_nat_Suc] delsimps [fact_Suc])); |
1588 by (auto_tac (claset(),simpset() addsimps [real_of_nat_Suc] delsimps [fact_Suc])); |
1589 by (rtac (fact_Suc RS ssubst) 1); |
1589 by (stac fact_Suc 1); |
1590 by (rtac (fact_Suc RS ssubst) 1); |
1590 by (stac fact_Suc 1); |
1591 by (rtac (fact_Suc RS ssubst) 1); |
1591 by (stac fact_Suc 1); |
1592 by (rtac (fact_Suc RS ssubst) 1); |
1592 by (stac fact_Suc 1); |
1593 by (rtac (real_of_nat_mult RS ssubst) 1); |
1593 by (stac real_of_nat_mult 1); |
1594 by (rtac (real_of_nat_mult RS ssubst) 1); |
1594 by (stac real_of_nat_mult 1); |
1595 by (rtac (real_of_nat_mult RS ssubst) 1); |
1595 by (stac real_of_nat_mult 1); |
1596 by (rtac (real_of_nat_mult RS ssubst) 1); |
1596 by (stac real_of_nat_mult 1); |
1597 by (simp_tac (simpset() addsimps [real_divide_def, |
1597 by (simp_tac (simpset() addsimps [real_divide_def, |
1598 real_inverse_distrib] delsimps [fact_Suc]) 1); |
1598 real_inverse_distrib] delsimps [fact_Suc]) 1); |
1599 by (auto_tac (claset(),simpset() addsimps [real_mult_assoc RS sym] |
1599 by (auto_tac (claset(),simpset() addsimps [real_mult_assoc RS sym] |
1600 delsimps [fact_Suc])); |
1600 delsimps [fact_Suc])); |
1601 by (multr_by_tac "real (Suc (Suc (4*m)))" 1); |
1601 by (multr_by_tac "real (Suc (Suc (4*m)))" 1); |
1657 by (rtac real_mult_inverse_cancel2 1); |
1657 by (rtac real_mult_inverse_cancel2 1); |
1658 by (TRYALL(rtac (real_of_nat_fact_gt_zero))); |
1658 by (TRYALL(rtac (real_of_nat_fact_gt_zero))); |
1659 by (simp_tac (simpset() addsimps [real_mult_assoc RS sym] |
1659 by (simp_tac (simpset() addsimps [real_mult_assoc RS sym] |
1660 delsimps [fact_Suc]) 1); |
1660 delsimps [fact_Suc]) 1); |
1661 by (rtac ((CLAIM "real(n::nat) * 4 = real(4 * n)") RS ssubst) 1); |
1661 by (rtac ((CLAIM "real(n::nat) * 4 = real(4 * n)") RS ssubst) 1); |
1662 by (rtac (fact_Suc RS ssubst) 1); |
1662 by (stac fact_Suc 1); |
1663 by (rtac (real_of_nat_mult RS ssubst) 1); |
1663 by (stac real_of_nat_mult 1); |
1664 by (rtac (real_of_nat_mult RS ssubst) 1); |
1664 by (stac real_of_nat_mult 1); |
1665 by (rtac real_mult_less_mono 1); |
1665 by (rtac real_mult_less_mono 1); |
1666 by (Force_tac 1); |
1666 by (Force_tac 1); |
1667 by (Force_tac 2); |
1667 by (Force_tac 2); |
1668 by (rtac real_of_nat_fact_gt_zero 2); |
1668 by (rtac real_of_nat_fact_gt_zero 2); |
1669 by (rtac (real_of_nat_less_iff RS iffD2) 1); |
1669 by (rtac (real_of_nat_less_iff RS iffD2) 1); |