(********************************************************)
(** *      Proof of Bolzano-Weierstrass theorem         *)
(********************************************************)
Definition ValAdh (un:nat -> R) (x:R) : Prop :=
forall (V:R -> Prop) (N:nat),
neighbourhood V x ->  exists p : nat, (N <= p)%nat /\ V (un p).
Definition intersection_family (f:family) (x:R) : Prop :=
forall y:R, ind f y -> f y x.

(* Specifications: *)
Lemma ValAdh_un_exists :
forall (un:nat -> R) (D:=fun x:R =>  exists n : nat, x = INR n)
(f:=
fun x:R =>
adherence
(fun y:R => (exists p : nat, y = un p /\ x <= INR p) /\ D x))
(x:R), (exists y : R, f x y) -> D x.