824 simpset() addsimps [starfunC_lambda_cancel, lemma_nscderiv1, |
824 simpset() addsimps [starfunC_lambda_cancel, lemma_nscderiv1, |
825 hcomplex_of_complex_zero])); |
825 hcomplex_of_complex_zero])); |
826 by (simp_tac (simpset() addsimps [hcomplex_add_divide_distrib]) 1); |
826 by (simp_tac (simpset() addsimps [hcomplex_add_divide_distrib]) 1); |
827 by (REPEAT(dtac (bex_CInfinitesimal_iff2 RS iffD2) 1)); |
827 by (REPEAT(dtac (bex_CInfinitesimal_iff2 RS iffD2) 1)); |
828 by (auto_tac (claset(), |
828 by (auto_tac (claset(), |
829 simpset() delsimps [hcomplex_times_divide1_eq] |
829 simpset() delsimps [times_divide_eq_right] |
830 addsimps [hcomplex_times_divide1_eq RS sym])); |
830 addsimps [times_divide_eq_right RS sym])); |
831 by (rewtac hcomplex_diff_def); |
831 by (rewtac hcomplex_diff_def); |
832 by (dres_inst_tac [("D","Db")] lemma_nscderiv2 1); |
832 by (dres_inst_tac [("D","Db")] lemma_nscderiv2 1); |
833 by (dtac (capprox_minus_iff RS iffD2 RS (bex_CInfinitesimal_iff2 RS iffD2)) 4); |
833 by (dtac (capprox_minus_iff RS iffD2 RS (bex_CInfinitesimal_iff2 RS iffD2)) 4); |
834 by (auto_tac (claset() addSIs [capprox_add_mono1], |
834 by (auto_tac (claset() addSIs [capprox_add_mono1], |
835 simpset() addsimps [hcomplex_add_mult_distrib, hcomplex_add_mult_distrib2, |
835 simpset() addsimps [hcomplex_add_mult_distrib, hcomplex_add_mult_distrib2, |
1048 (*used once, in NSCDERIV_inverse*) |
1048 (*used once, in NSCDERIV_inverse*) |
1049 Goal "[| h: CInfinitesimal; x ~= 0 |] ==> hcomplex_of_complex x + h ~= 0"; |
1049 Goal "[| h: CInfinitesimal; x ~= 0 |] ==> hcomplex_of_complex x + h ~= 0"; |
1050 by Auto_tac; |
1050 by Auto_tac; |
1051 qed "CInfinitesimal_add_not_zero"; |
1051 qed "CInfinitesimal_add_not_zero"; |
1052 |
1052 |
1053 (*** |
|
1054 Goal "[|(x::hcomplex) ~= 0; y ~= 0 |] \ |
|
1055 \ ==> inverse(x) + inverse(y) = (x + y)*inverse(x*y)"; |
|
1056 by (asm_full_simp_tac (simpset() addsimps [hcomplex_inverse_distrib, |
|
1057 hcomplex_add_mult_distrib,hcomplex_mult_assoc RS sym]) 1); |
|
1058 qed "hcomplex_inverse_add"; |
|
1059 ***) |
|
1060 |
|
1061 (*Can't get rid of x ~= 0 because it isn't continuous at zero*) |
1053 (*Can't get rid of x ~= 0 because it isn't continuous at zero*) |
1062 |
1054 |
1063 Goalw [nscderiv_def] |
1055 Goalw [nscderiv_def] |
1064 "x ~= 0 ==> NSCDERIV (%x. inverse(x)) x :> (- (inverse x ^ 2))"; |
1056 "x ~= 0 ==> NSCDERIV (%x. inverse(x)) x :> (- (inverse x ^ 2))"; |
1065 by (rtac ballI 1 THEN Asm_full_simp_tac 1 THEN Step_tac 1); |
1057 by (rtac ballI 1 THEN Asm_full_simp_tac 1 THEN Step_tac 1); |
1069 simpset() addsimps [starfunC_inverse_inverse,hcomplex_diff_def] |
1061 simpset() addsimps [starfunC_inverse_inverse,hcomplex_diff_def] |
1070 delsimps [hcomplex_minus_mult_eq1 RS sym, |
1062 delsimps [hcomplex_minus_mult_eq1 RS sym, |
1071 hcomplex_minus_mult_eq2 RS sym])); |
1063 hcomplex_minus_mult_eq2 RS sym])); |
1072 by (asm_simp_tac |
1064 by (asm_simp_tac |
1073 (simpset() addsimps [hcomplex_inverse_add, |
1065 (simpset() addsimps [hcomplex_inverse_add, |
1074 hcomplex_inverse_distrib RS sym, hcomplex_minus_inverse RS sym] |
1066 inverse_mult_distrib RS sym, hcomplex_minus_inverse RS sym] |
1075 @ hcomplex_add_ac @ hcomplex_mult_ac |
1067 @ hcomplex_add_ac @ hcomplex_mult_ac |
1076 delsimps [hcomplex_minus_mult_eq1 RS sym, |
1068 delsimps [thm"Ring_and_Field.inverse_minus_eq", |
|
1069 inverse_mult_distrib, hcomplex_minus_mult_eq1 RS sym, |
1077 hcomplex_minus_mult_eq2 RS sym] ) 1); |
1070 hcomplex_minus_mult_eq2 RS sym] ) 1); |
1078 by (asm_simp_tac (simpset() addsimps [hcomplex_mult_assoc RS sym, |
1071 by (asm_simp_tac (simpset() addsimps [hcomplex_mult_assoc RS sym, |
1079 hcomplex_add_mult_distrib2] |
1072 hcomplex_add_mult_distrib2] |
1080 delsimps [hcomplex_minus_mult_eq1 RS sym, |
1073 delsimps [hcomplex_minus_mult_eq1 RS sym, |
1081 hcomplex_minus_mult_eq2 RS sym]) 1); |
1074 hcomplex_minus_mult_eq2 RS sym]) 1); |