(** ** Specific filters *)
(** Filters for pairs *)
Inductive filter_prod {T U : Type} (F G : _ -> Prop) (P : T * U -> Prop) : Prop :=
Filter_prod (Q : T -> Prop) (R : U -> Prop) :
F Q -> G R -> (forall x y, Q x -> R y -> P (x, y)) -> filter_prod F G P.
Global Instance filter_prod_filter :
forall T U (F : (T -> Prop) -> Prop) (G : (U -> Prop) -> Prop),
Filter F -> Filter G -> Filter (filter_prod F G).
Global Instance filter_prod_proper' {T1 T2 : Type}
{F : (T1 -> Prop) -> Prop} {G : (T2 -> Prop) -> Prop}
{FF : ProperFilter' F} {FG : ProperFilter' G} :
ProperFilter' (filter_prod F G).
Global Instance filter_prod_proper {T1 T2 : Type}
{F : (T1 -> Prop) -> Prop} {G : (T2 -> Prop) -> Prop}
{FF : ProperFilter F} {FG : ProperFilter G} :
ProperFilter (filter_prod F G).

Lemma filterlimi_comp_2 :
forall {T U V W F G H I} {FF : Filter F},
forall (f : T -> U) (g : T -> V) (h : U -> V -> W -> Prop),
filterlim f F G ->
filterlim g F H ->
filterlimi (fun x => h (fst x) (snd x)) (filter_prod G H) I ->
filterlimi (fun x => h (f x) (g x)) F I.