intros YAfull YBfull; split.
apply enumerate_YA; trivial with arith.
apply YB_enumerate_YA; trivial with arith.
Qed.
End dimension_one.
Definition inter (A B : nat -> Prop) (n : nat) := A n /\ B n.
Definition combine (YA YB : (nat -> nat) -> nat) (f : nat -> nat) :=
enumerate (fun g : nat -> nat => YA (fun x : nat => f (g x)))
((fun g : nat -> nat => YB (fun x : nat => f (g x)))
(enumerate (fun g : nat -> nat => YA (fun x : nat => f (g x))))).

(* Specifications: *)
Theorem Ramsey1 :
forall (A B : nat -> Prop) (YA YB : (nat -> nat) -> nat),
full A YA -> full B YB -> full (inter A B) (combine YA YB).