(** *   Derivability of the reciprocal function        *)

(* Specifications: *)
Lemma derivable_pt_lim_recip_interv : forall (f g:R->R) (lb ub x:R)
(Prf:forall a : R, g lb <= a <= g ub -> derivable_pt f a) (Prg : continuity_pt g x),
lb < ub ->
lb < x < ub ->
forall (Prg_incr:g lb <= g x <= g ub),
(forall x, lb <= x <= ub -> (comp f g) x = id x) ->
derive_pt f (g x) (Prf (g x) Prg_incr) <> 0 ->
derivable_pt_lim g x (1 / derive_pt f (g x) (Prf (g x) Prg_incr)).
Lemma derivable_pt_recip_interv_prelim0 : forall (f g : R -> R) (lb ub x : R)
(Prf : forall a : R, g lb <= a <= g ub -> derivable_pt f a),
continuity_pt g x ->
lb < ub ->
lb < x < ub ->
forall Prg_incr : g lb <= g x <= g ub,
(forall x0 : R, lb <= x0 <= ub -> comp f g x0 = id x0) ->
derive_pt f (g x) (Prf (g x) Prg_incr) <> 0 ->
derivable_pt g x.
Lemma derivable_pt_recip_interv_prelim1 : forall (f g:R->R) (lb ub x : R),
lb < ub ->
f lb < x < f ub ->
(forall x : R, f lb <= x -> x <= f ub -> lb <= g x <= ub) ->
(forall a : R, lb <= a <= ub -> derivable_pt f a) ->
derivable_pt f (g x).
Lemma derivable_pt_recip_interv_prelim1_decr : forall (f g:R->R) (lb ub x : R),
lb < ub ->
f ub < x < f lb ->
(forall x : R, f ub <= x -> x <= f lb -> lb <= g x <= ub) ->
(forall a : R, lb <= a <= ub -> derivable_pt f a) ->
derivable_pt f (g x).
Lemma derivable_pt_recip_interv
(f g:R->R) (lb ub x : R)
(lb_lt_ub:lb < ub) (x_encad:f lb < x < f ub)
(f_eq_g:forall x : R, f lb <= x -> x <= f ub -> comp f g x = id x)
(g_wf:forall x : R, f lb <= x -> x <= f ub -> lb <= g x <= ub)
(f_incr:forall x y : R, lb <= x -> x < y -> y <= ub -> f x < f y)
(f_derivable:forall a : R, lb <= a <= ub -> derivable_pt f a)
: derive_pt f (g x)
(derivable_pt_recip_interv_prelim1 f g lb ub x lb_lt_ub
x_encad g_wf f_derivable)
<> 0 ->
derivable_pt g x.
Lemma derivable_pt_recip_interv_decr (f g:R->R) (lb ub x : R)
(lb_lt_ub:lb < ub)
(x_encad:f ub < x < f lb)
(f_eq_g:forall x : R, f ub <= x -> x <= f lb -> comp f g x = id x)
(g_wf:forall x : R, f ub <= x -> x <= f lb -> lb <= g x <= ub)
(f_decr:forall x y : R, lb <= x -> x < y -> y <= ub -> f y < f x)
(f_derivable:forall a : R, lb <= a <= ub -> derivable_pt f a)
: derive_pt f (g x)
(derivable_pt_recip_interv_prelim1_decr f g lb ub x lb_lt_ub
x_encad g_wf f_derivable)
<> 0 ->
derivable_pt g x.