src/HOL/Complex/CLim.ML
changeset 14318 7dbd3988b15b
parent 13957 10dbf16be15f
child 14320 fb7a114826be
equal deleted inserted replaced
14317:85125b18d38a 14318:7dbd3988b15b
   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);