(** * Integration by parts *)
Section ByParts.
Context {V : CompleteNormedModule R_AbsRing}.

(* Specifications: *)
Lemma is_RInt_scal_derive :
forall (f : R -> R) (g : R -> V) (f' : R -> R) (g' : R -> V) (a b : R),
(forall t, Rmin a b <= t <= Rmax a b -> is_derive f t (f' t)) ->
(forall t, Rmin a b <= t <= Rmax a b -> is_derive g t (g' t)) ->
(forall t, Rmin a b <= t <= Rmax a b -> continuous f' t) ->
(forall t, Rmin a b <= t <= Rmax a b -> continuous g' t) ->
is_RInt (fun t => plus (scal (f' t) (g t)) (scal (f t) (g' t))) a b (minus (scal (f b) (g b)) (scal (f a) (g a))).
Lemma is_RInt_scal_derive_r :
forall (f : R -> R) (g : R -> V) (f' : R -> R) (g' : R -> V) (a b : R) (l : V),
(forall t, Rmin a b <= t <= Rmax a b -> is_derive f t (f' t)) ->
(forall t, Rmin a b <= t <= Rmax a b -> is_derive g t (g' t)) ->
(forall t, Rmin a b <= t <= Rmax a b -> continuous f' t) ->
(forall t, Rmin a b <= t <= Rmax a b -> continuous g' t) ->
is_RInt (fun t => scal (f' t) (g t)) a b l ->
is_RInt (fun t => scal (f t) (g' t)) a b (minus (minus (scal (f b) (g b)) (scal (f a) (g a))) l).
Lemma is_RInt_scal_derive_l :
forall (f : R -> R) (g : R -> V) (f' : R -> R) (g' : R -> V) (a b : R) (l : V),
(forall t, Rmin a b <= t <= Rmax a b -> is_derive f t (f' t)) ->
(forall t, Rmin a b <= t <= Rmax a b -> is_derive g t (g' t)) ->
(forall t, Rmin a b <= t <= Rmax a b -> continuous f' t) ->
(forall t, Rmin a b <= t <= Rmax a b -> continuous g' t) ->
is_RInt (fun t => scal (f t) (g' t)) a b l ->
is_RInt (fun t => scal (f' t) (g t)) a b (minus (minus (scal (f b) (g b)) (scal (f a) (g a))) l).