Definition fct_UniformSpace_mixin :=
UniformSpace.Mixin _ _ fct_ball_center fct_ball_sym fct_ball_triangle.
Canonical fct_UniformSpace :=
UniformSpace.Pack (T -> U) fct_UniformSpace_mixin (T -> U).
End fct_UniformSpace.
(** ** Local predicates *)
(** locally_dist *)
Definition locally_dist {T : Type} (d : T -> R) (P : T -> Prop) :=
exists delta : posreal, forall y, d y < delta -> P y.
Global Instance locally_dist_filter :
forall T (d : T -> R), Filter (locally_dist d).
(** locally *)
Section Locally.
Context {T : UniformSpace}.
Definition locally (x : T) (P : T -> Prop) :=
exists eps : posreal, forall y, ball x eps y -> P y.
Global Instance locally_filter :
forall x : T, ProperFilter (locally x).

(* Specifications: *)
Lemma locally_locally :
forall (x : T) (P : T -> Prop),
locally x P -> locally x (fun y => locally y P).
Lemma locally_singleton :
forall (x : T) (P : T -> Prop),
locally x P -> P x.
Lemma locally_ball :
forall (x : T) (eps : posreal), locally x (ball x eps).
Lemma locally_not' :
forall (x : T) (P : T -> Prop),
not (forall eps : posreal, not (forall y, ball x eps y -> not (P y))) ->
{d : posreal | forall y, ball x d y -> not (P y)}.
Lemma locally_not :
forall (x : T) (P : T -> Prop),
not (forall eps : posreal, not (forall y, ball x eps y -> not (P y))) ->
locally x (fun y => not (P y)).
Lemma locally_ex_not :
forall (x : T) (P : T -> Prop),
locally x (fun y => not (P y)) ->
{d : posreal | forall y, ball x d y -> not (P y)}.
Lemma locally_ex_dec :
forall (x : T) (P : T -> Prop),
(forall x, P x \/ ~P x) ->
locally x P ->
{d : posreal | forall y, ball x d y -> P y}.