Implicit Type f : R -> R.(****************************************************)
(** *         Basic operations on functions         *)
(****************************************************)
Definition plus_fct f1 f2 (x:R) : R := f1 x + f2 x.Definition opp_fct f (x:R) : R := - f x.Definition mult_fct f1 f2 (x:R) : R := f1 x * f2 x.Definition mult_real_fct (a:R) f (x:R) : R := a * f x.Definition minus_fct f1 f2 (x:R) : R := f1 x - f2 x.Definition div_fct f1 f2 (x:R) : R := f1 x / f2 x.Definition div_real_fct (a:R) f (x:R) : R := a / f x.Definition comp f1 f2 (x:R) : R := f1 (f2 x).Definition inv_fct f (x:R) : R := / f x.Definition mirr_fct f (x:R) : R := f (- x).Infix "+" := plus_fct : Rfun_scope.Notation "- x" := (opp_fct x) : Rfun_scope.Infix "*" := mult_fct : Rfun_scope.Infix "-" := minus_fct : Rfun_scope.Infix "/" := div_fct : Rfun_scope.Local Notation "f1 'o' f2" := (comp f1 f2)
  (at level 20, right associativity) : Rfun_scope.Notation "/ x" := (inv_fct x) : Rfun_scope.Definition fct_cte (a x:R) : R := a.Definition id (x:R) := x.(****************************************************)
(** *          Variations of functions              *)
(****************************************************)
Definition increasing f : Prop := forall x y:R, x <= y -> f x <= f y.Definition decreasing f : Prop := forall x y:R, x <= y -> f y <= f x.Definition strict_increasing f : Prop := forall x y:R, x < y -> f x < f y.Definition strict_decreasing f : Prop := forall x y:R, x < y -> f y < f x.Definition constant f : Prop := forall x y:R, f x = f y.(**********)
Definition no_cond (x:R) : Prop := True.(**********)
Definition constant_D_eq f (D:R -> Prop) (c:R) : Prop :=
  forall x:R, D x -> f x = c.(***************************************************)
(** *    Definition of continuity as a limit       *)
(***************************************************)

(**********)
Definition continuity_pt f (x0:R) : Prop := continue_in f no_cond x0.Definition continuity f : Prop := forall x:R, continuity_pt f x.

(* Specifications: *)
Lemma continuity_pt_locally_ext : forall f g a x, 0 < a -> (forall y, Rdist y x < a -> f y = g y) -> continuity_pt f x -> continuity_pt g x.
Lemma continuity_pt_plus : forall f1 f2 (x0:R), continuity_pt f1 x0 -> continuity_pt f2 x0 -> continuity_pt (f1 + f2) x0.
Lemma continuity_pt_opp : forall f (x0:R), continuity_pt f x0 -> continuity_pt (- f) x0.
Lemma continuity_pt_minus : forall f1 f2 (x0:R), continuity_pt f1 x0 -> continuity_pt f2 x0 -> continuity_pt (f1 - f2) x0.
Lemma continuity_pt_mult : forall f1 f2 (x0:R), continuity_pt f1 x0 -> continuity_pt f2 x0 -> continuity_pt (f1 * f2) x0.
Lemma continuity_pt_const : forall f (x0:R), constant f -> continuity_pt f x0.
Lemma continuity_pt_scal : forall f (a x0:R), continuity_pt f x0 -> continuity_pt (mult_real_fct a f) x0.
Lemma continuity_pt_inv : forall f (x0:R), continuity_pt f x0 -> f x0 <> 0 -> continuity_pt (/ f) x0.
Lemma div_eq_inv : forall f1 f2, (f1 / f2)%F = (f1 * / f2)%F.
Lemma continuity_pt_div : forall f1 f2 (x0:R), continuity_pt f1 x0 -> continuity_pt f2 x0 -> f2 x0 <> 0 -> continuity_pt (f1 / f2) x0.
Lemma continuity_pt_comp : forall f1 f2 (x:R), continuity_pt f1 x -> continuity_pt f2 (f1 x) -> continuity_pt (f2 o f1) x.
Lemma continuity_plus : forall f1 f2, continuity f1 -> continuity f2 -> continuity (f1 + f2).
Lemma continuity_opp : forall f, continuity f -> continuity (- f).
Lemma continuity_minus : forall f1 f2, continuity f1 -> continuity f2 -> continuity (f1 - f2).
Lemma continuity_mult : forall f1 f2, continuity f1 -> continuity f2 -> continuity (f1 * f2).
Lemma continuity_const : forall f, constant f -> continuity f.
Lemma continuity_scal : forall f (a:R), continuity f -> continuity (mult_real_fct a f).
Lemma continuity_inv : forall f, continuity f -> (forall x:R, f x <> 0) -> continuity (/ f).
Lemma continuity_div : forall f1 f2, continuity f1 -> continuity f2 -> (forall x:R, f2 x <> 0) -> continuity (f1 / f2).
Lemma continuity_comp : forall f1 f2, continuity f1 -> continuity f2 -> continuity (f2 o f1).