(** This file is part of the Coquelicot formalization of real analysis in Coq: http://coquelicot.saclay.inria.fr/  Copyright (C) 2011-2015 Sylvie Boldo #<br /># Copyright (C) 2011-2015 Catherine Lelay #<br /># Copyright (C) 2011-2015 Guillaume Melquiond  This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 3 of the License, or (at your option) any later version.  This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the COPYING file for more details. *)
(** This file gives definitions of equivalent (g ~ f) and dominant (g = o(f)). This is used for defining differentiability on a [NormedModule]. *)
Definition is_domin {T} {Ku Kv : AbsRing}
{U : NormedModule Ku} {V : NormedModule Kv}
(F : (T -> Prop) -> Prop) (f : T -> U) (g : T -> V) :=
forall eps : posreal, F (fun x => norm (g x) <= eps * norm (f x)).
Definition is_equiv {T} {K : AbsRing} {V : NormedModule K}
(F : (T -> Prop) -> Prop) (f g : T -> V) :=
is_domin F g (fun x => minus (g x) (f x)).
(** To be dominant is a partial strict order *)

(* Specifications: *)
Lemma domin_antisym {T} {K : AbsRing} {V : NormedModule K} :
forall {F : (T -> Prop) -> Prop} {FF : ProperFilter F} (f : T -> V),
F (fun x => norm (f x) <> 0) -> ~ is_domin F f f.
Lemma domin_trans {T} {Ku Kv Kw : AbsRing}
{U : NormedModule Ku} {V : NormedModule Kv} {W : NormedModule Kw} :
forall {F : (T -> Prop) -> Prop} {FF : Filter F} (f : T -> U) (g : T -> V) (h : T -> W),
is_domin F f g -> is_domin F g h -> is_domin F f h.