(** Composed operations *)
Section Operations_fct.
Context {K : AbsRing} {U V : NormedModule K}.

(* Specifications: *)
Lemma filterdiff_opp_fct {F} {FF : Filter F} (f lf : U -> V) :
filterdiff f F lf ->
filterdiff (fun t => opp (f t)) F (fun t => opp (lf t)).
Lemma ex_filterdiff_opp_fct {F} {FF : Filter F} (f : U -> V) :
ex_filterdiff f F ->
ex_filterdiff (fun t => opp (f t)) F.
Lemma filterdiff_plus_fct {F} {FF : Filter F} (f g : U -> V) (lf lg : U -> V) :
filterdiff f F lf -> filterdiff g F lg ->
filterdiff (fun u => plus (f u) (g u)) F (fun u => plus (lf u) (lg u)).
Lemma ex_filterdiff_plus_fct {F} {FF : Filter F} (f g : U -> V) :
ex_filterdiff f F -> ex_filterdiff g F ->
ex_filterdiff (fun u => plus (f u) (g u)) F.
Lemma filterdiff_iter_plus_fct {I} {F} {FF : Filter F}
(l : list I) (f : I -> U -> V) df (x : U) :
(forall (j : I), List.In j l -> filterdiff (f j) F (df j)) ->
filterdiff (fun y => iter plus zero l (fun j => f j y)) F
(fun x => iter plus zero l (fun j => df j x)).
Lemma filterdiff_minus_fct {F} {FF : Filter F} (f g : U -> V) (lf lg : U -> V) :
filterdiff f F lf -> filterdiff g F lg ->
filterdiff (fun u => minus (f u) (g u)) F (fun u => minus (lf u) (lg u)).
Lemma ex_filterdiff_minus_fct {F} {FF : Filter F} (f g : U -> V) :
ex_filterdiff f F -> ex_filterdiff g F ->
ex_filterdiff (fun u => minus (f u) (g u)) F.
Lemma filterdiff_scal_fct x (f : U -> K) (g : U -> V) lf lg :
(forall (n m : K), mult n m = mult m n) ->
filterdiff f (locally x) lf -> filterdiff g (locally x) lg ->
filterdiff (fun t => scal (f t) (g t)) (locally x)
(fun t => plus (scal (lf t) (g x)) (scal (f x) (lg t))).
Lemma ex_filterdiff_scal_fct x (f : U -> K) (g : U -> V) :
(forall (n m : K), mult n m = mult m n) ->
ex_filterdiff f (locally x) -> ex_filterdiff g (locally x) ->
ex_filterdiff (fun t => scal (f t) (g t)) (locally x).
Lemma filterdiff_scal_l_fct : forall {F} {FF : Filter F} (x : V) (f : U -> K) lf,
filterdiff f F lf ->
filterdiff (fun u => scal (f u) x) F (fun u => scal (lf u) x).
Lemma ex_filterdiff_scal_l_fct : forall {F} {FF : Filter F} (x : V) (f : U -> K),
ex_filterdiff f F ->
ex_filterdiff (fun u => scal (f u) x) F.
Lemma filterdiff_scal_r_fct : forall {F} {FF : Filter F} (k : K) (f lf : U -> V),
(forall (n m : K), mult n m = mult m n) ->
filterdiff f F lf ->
filterdiff (fun x => scal k (f x)) F (fun x => scal k (lf x)).
Lemma ex_filterdiff_scal_r_fct : forall {F} {FF : Filter F} (k : K) (f : U -> V),
(forall (n m : K), mult n m = mult m n) ->
ex_filterdiff f F ->
ex_filterdiff (fun x => scal k (f x)) F.