(* Baire Space *)
Definition B := nat -> nat.Definition Top := B -> Prop.Definition inclusion (X Y : Top) := forall z : B, X z -> Y z.Definition equal (X Y : Top) := inclusion X Y /\ inclusion Y X.Definition complement (X : Top) (z : B) := ~ X z.Definition union (X Y : Top) (z : B) := X z \/ Y z.Definition inter (X Y : Top) (z : B) := X z /\ Y z.Definition neighbour (f : B) (n : nat) (g : B) :=
  forall m : nat, m <= n -> f m = g m.Definition open (X : Top) :=
  forall f : B, X f -> exists n : nat, inclusion (neighbour f n) X.Definition closed (X : Top) := open (complement X).Definition dense (X : Top) :=
  forall (f : B) (n : nat), exists g : B, X g /\ neighbour f n g.Definition closure (X : Top) (f : B) :=
  forall n : nat, exists g : B, X g /\ neighbour f n g.

Lemma trans_neighbour : forall (n : nat) (f g h : B), neighbour f n g -> neighbour g n h -> neighbour f n h.