Condition for an Ultrafilter to be Ramsey. I read in the english Ultrafilter article on Wikipedia that one can prove that a non-principal ultrafilter $D$ on $\omega$ is a Ramsey ultrafilter if and only if for every coloration $c:[\omega]^2 \longrightarrow 2 $ there exists an element of $D$ that is homogeneous in color, and I've been trying to find a proof, however I'm having trouble with the "if" implication. 
My initial idea was, for any partition $\{A_n : n \in \omega \}$ of $\omega$ in $\aleph_0$ pieces, such that all $A_n$ are not members of $D$ to give a coloration such that there's only one member of each $A_n$ painted of one colour, and then paint the rest of $\omega$ with the other colour. But then I thought the homogeneous set in D may not be of the colour I wanted. So in truth where I'm having trouble is in finding a way to make the condition that $D$ has a member that intersects with every part in the partition in exactly one element. Any hints?
 A: I told Asaf that I'd write out the proof, so here goes.  I'll divide it into individual steps that use different parts of the hypothesis.  Assume that $\mathcal D$ is an ultrafilter on $\omega$ such that, whenever $\omega$ is partitioned into sets that are not in $\mathcal D$, there is a set in $\mathcal D$ containing at most one element from each piece of the partition.  Equivalently, given any function $f$ with domain $\omega$, there is a set in $\mathcal D$ on which $f$ is either one-to-one or constant. (To see that the two versions of the definition are equivalent, let the partition in the first version consist of the sets $f^{-1}(\{n\})$ in the second version.)  And let $c:[\omega]^2\to \{0,1\}$ be any coloring of pairs from $\omega$ with two colors.
Step 1: For any $x\in\omega$, partition $\{y\in\omega:y>x\}$ (which is in $\mathcal D$ as $\mathcal D$ is nonprincipal) into the two sets $\{y:y>x\text{ and }c(\{x,y\})=0\}$ and $\{y:y>x\text{ and }c(\{x,y\})=1\}$. Since $\mathcal D$ is an ultrafilter, it contains exactly one of these two sets, say the set $A(x)=\{y:y>x\text{ and }c(\{x,y\})=j(x)\}$.  (This step used only that $\mathcal D$ is a nonprincipal utrafilter on $\omega$.)
Step 2: The function $j:\omega\to2$ defined at the end of Step 1 is constant, say with value $i$, on a set $B\in\mathcal D$.  (Again, I've used only that $\mathcal D$ is a nonprincipal ultrafilter on $\omega$.)
Step 3: Note that, for any $y\in\omega$, there is an $x$ such that $y\notin A(x)$; indeed, any $x\geq y$ will do, since $A(x)$ was defined to contain only numbers $>x$.  So we can define $f:\omega\to\omega$ by letting $f(y)$ be the smallest $x$ such that $y\notin A(x)$.  Any set $C\subseteq\omega$ on which this function $f$ is constant, say with value $x_0$, would be disjoint from $A(x_0)$ and thus could not be in $\mathcal D$ (because $A(x_0)\in\mathcal D$).  By selectivity, there must be a set $C\in\mathcal D$ such that $f$ is one-to-one on $C$.  We may assume that $C\subseteq B$, because otherwise we could just use $C\cap B$ in place of $C$.  (This step used selectivity, but in fact, as you'll see below, I don't really need the full strength of the fact that $f$ is one-to-one on $C$; finite-to-one would suffice.  So this step would be OK for any P-point $\mathcal D$.)
Step 4: Because $f$ is finite-to-one on $C$, if we're given any $k\in\omega$, there will be only finitely many elements $y$ of $C$ for which $f(y)\leq k$.  Using this observation, we can inductively define an increasing sequence of natural numbers $0=k_0<k_1<k_2<\dots$ such that, for each $i$, all elements $y\in C$ that are $\geq k_{i+1}$ have $f(y)>k_i$.  Use these $k_i$'s to partition $\omega$ into the (infinitely many) finite intervals $I_i=[k_i,k_{i+1})$.  By our choice of the $k_i$'s, we have that the only way for two elements $x,y\in C$ to have $f(y)\leq x<y$ is for $x$ and $y$ to be either in the same block $I_i$ of this partition or in adjacent blocks $I_{i-1}$ and $I_i$.  Specifically, if $x<k_i$ then from $f(y)\leq x<k_i$ we get $y<k_{i+1}$, so $y$ can be at most one interval beyond $x$.  (This step didn't use the ultrafilter at all.)
Step 5: Define $g:\omega\to\omega$ by setting $g(x)=i$ for all $x\in I_i$.  $g$ is not constant on any set in $\mathcal D$, because it's constant only on finite sets, subsets of the $I_i$'s.  So, by selectivity, $g$ must be one-to-one on some set $K\in\mathcal D$.  We may assume $K\subseteq C$, since we can replace $K$ with $K\cap C$.  Notice that, for $x,y\in K$, the only way we can have  $f(y)\leq x<y$ is for $x$ and $y$ to be consecutive in $K$. (This step uses selectivity, but it would suffice to have a Q-point, since $g$ is finite-to-one.)
Step 6: Finally, partition $K$ into two pieces by putting the elements of $K$ alternatingly into the pieces.  So one piece consists of the elements of $K$ that have an even number of predecessors in $K$, and the other is the same for "odd" instead of "even". As $\mathcal D$ is an ultrafilter and contains $K$, it must contain one of the two pieces, say $H$.  Any two elements $x,y$ of $H$ are in $K$ but are not consecutive in $K$. So, if $x<y$ then also $x<f(y)$.  This means that $y\in A(x)$ (by definition of $f$) and so $c(\{x,y\})=j(x)=i$ (by Steps 1 and 2).  That is, the set $H\in\mathcal D$ is homogeneous for color $i$.
Note that selectivity was used twice, once to get that $\mathcal D$ is a P-point in Step 3, and once to get that it is a Q-point in Step 5.
