(** Multiplication *)

(* Specifications: *)
Lemma filterlim_Rbar_mult :
forall x y z,
is_Rbar_mult x y z ->
filterlim (fun z => fst z * snd z) (filter_prod (Rbar_locally x) (Rbar_locally y)) (Rbar_locally z).
Lemma is_lim_seq_mult (u v : nat -> R) (l1 l2 l : Rbar) :
is_lim_seq u l1 -> is_lim_seq v l2 ->
is_Rbar_mult l1 l2 l ->
is_lim_seq (fun n => u n * v n) l.
Lemma is_lim_seq_mult' (u v : nat -> R) (l1 l2 : R) :
is_lim_seq u l1 -> is_lim_seq v l2 ->
is_lim_seq (fun n => u n * v n) (l1 * l2).
Lemma ex_lim_seq_mult (u v : nat -> R) :
ex_lim_seq u -> ex_lim_seq v ->
ex_Rbar_mult (Lim_seq u) (Lim_seq v) ->
ex_lim_seq (fun n => u n * v n).
Lemma Lim_seq_mult (u v : nat -> R) :
ex_lim_seq u -> ex_lim_seq v ->
ex_Rbar_mult (Lim_seq u) (Lim_seq v) ->
Lim_seq (fun n => u n * v n) = Rbar_mult (Lim_seq u) (Lim_seq v).
Lemma is_lim_mult (f g : R -> R) (x lf lg : Rbar) :
is_lim f x lf -> is_lim g x lg ->
ex_Rbar_mult lf lg ->
is_lim (fun y => f y * g y) x (Rbar_mult lf lg).
Lemma ex_lim_mult (f g : R -> R) (x : Rbar) :
ex_lim f x -> ex_lim g x ->
ex_Rbar_mult (Lim f x) (Lim g x) ->
ex_lim (fun y => f y * g y) x.
Lemma Lim_mult (f g : R -> R) (x : Rbar) :
ex_lim f x -> ex_lim g x ->
ex_Rbar_mult (Lim f x) (Lim g x) ->
Lim (fun y => f y * g y) x = Rbar_mult (Lim f x) (Lim g x).