src/HOL/Hyperreal/Lim.ML
changeset 14348 744c868ee0b7
parent 14334 6137d24eef79
child 14365 3d4df8c166ae
equal deleted inserted replaced
14347:1fff56703e29 14348:744c868ee0b7
  1346         Derivative of inverse 
  1346         Derivative of inverse 
  1347  -------------------------------------------------------------*)
  1347  -------------------------------------------------------------*)
  1348 Goal "[| DERIV f x :> d; f(x) \\<noteq> 0 |] \
  1348 Goal "[| DERIV f x :> d; f(x) \\<noteq> 0 |] \
  1349 \     ==> DERIV (%x. inverse(f x)) x :> (- (d * inverse(f(x) ^ Suc (Suc 0))))";
  1349 \     ==> DERIV (%x. inverse(f x)) x :> (- (d * inverse(f(x) ^ Suc (Suc 0))))";
  1350 by (rtac (real_mult_commute RS subst) 1);
  1350 by (rtac (real_mult_commute RS subst) 1);
  1351 by (asm_simp_tac (HOL_ss addsimps [minus_mult_left, realpow_inverse]) 1);
  1351 by (asm_simp_tac (HOL_ss addsimps [minus_mult_left, power_inverse]) 1);
  1352 by (fold_goals_tac [o_def]);
  1352 by (fold_goals_tac [o_def]);
  1353 by (blast_tac (claset() addSIs [DERIV_chain,DERIV_inverse]) 1);
  1353 by (blast_tac (claset() addSIs [DERIV_chain,DERIV_inverse]) 1);
  1354 qed "DERIV_inverse_fun";
  1354 qed "DERIV_inverse_fun";
  1355 
  1355 
  1356 Goal "[| NSDERIV f x :> d; f(x) \\<noteq> 0 |] \
  1356 Goal "[| NSDERIV f x :> d; f(x) \\<noteq> 0 |] \
  1367 by (dres_inst_tac [("f","g")] DERIV_inverse_fun 1);
  1367 by (dres_inst_tac [("f","g")] DERIV_inverse_fun 1);
  1368 by (dtac DERIV_mult 2);
  1368 by (dtac DERIV_mult 2);
  1369 by (REPEAT(assume_tac 1));
  1369 by (REPEAT(assume_tac 1));
  1370 by (asm_full_simp_tac
  1370 by (asm_full_simp_tac
  1371     (simpset() addsimps [real_divide_def, right_distrib,
  1371     (simpset() addsimps [real_divide_def, right_distrib,
  1372                          realpow_inverse,minus_mult_left] @ mult_ac 
  1372                          power_inverse,minus_mult_left] @ mult_ac 
  1373        delsimps [realpow_Suc, minus_mult_right RS sym, minus_mult_left RS sym]) 1);
  1373        delsimps [realpow_Suc, minus_mult_right RS sym, minus_mult_left RS sym]) 1);
  1374 qed "DERIV_quotient";
  1374 qed "DERIV_quotient";
  1375 
  1375 
  1376 Goal "[| NSDERIV f x :> d; DERIV g x :> e; g(x) \\<noteq> 0 |] \
  1376 Goal "[| NSDERIV f x :> d; DERIV g x :> e; g(x) \\<noteq> 0 |] \
  1377 \      ==> NSDERIV (%y. f(y) / (g y)) x :> (d*g(x) \
  1377 \      ==> NSDERIV (%y. f(y) / (g y)) x :> (d*g(x) \