What is the generic poset used in forcing, really?

The other answers are excellent, but let me augment them by offering an intuitive explanation of the kind you seem to seek.

In most forcing arguments, the main idea is to construct a partial order out of conditions that each consist of a tiny part of the generic object that we would like to add; each condition should make a tiny promise about what the new generic object will be like. The generic filter in effect provides a way to bundle these promises together into a coherent whole having the desired properties.

For example, with the Cohen forcing $\text{Add}(\omega,\theta)$, we want to add $\theta$ many new subsets of $\omega$, in order to violate CH, say. So we use conditions that specify finitely many bits in a $\omega\times\theta$ matrix of zeros and ones. Each condition makes a finite promise about how the entire matrix will be completed. The union of all conditions in the generic filter is a complete filling-in of the matrix. Genericity guarantees that each column of this matrix is a new real not present in the ground model and different from all other columns, since any finite condition can be extended so as to disagree on any particular column with any particular real or from any particular other column.

With the collapse forcing $\text{Coll}(\omega,\kappa)$, we want to add a new surjective function $f:\omega\to\kappa$. So we use conditions consisting of the finite partial functions $p:\omega\to\kappa$, ordered by extension. Each such condition is a tiny piece of the generic function we want to add, describing finitely much of it. The union of the generic filter provides a total function $g:\omega\to \kappa$, and the genericity of the filter will guarantee that $g$ is surjective, since for any $\alpha<\kappa$, any condition $p$ can be extended to a stronger condition having $\alpha$ in the range.

And similarly with many other forcing arguments. We design the partial order to consist of tiny pieces of the object that we are trying to add, each of which makes a small promise about the generic object. If $G$ is a generic filter for this partial order, then the union of $G$ is the joint collection of all these promises.

In many forcing arguments, it is not enough just to build a partial order consisting of tiny pieces of the desired object, since one also wants to know that the forcing preserves other features. For example, we want to know that the forcing does not inadvertently collapse cardinals or that it can be iterated without collapsing cardinals. This adds a wrinkle to the idea above, since one wants to use tiny pieces of the generic object, but impose other requirements on the conditions that will ensure that the partial order has a nice chain-condition or is proper and so on. So the design of a forcing notion is often a trade-off between these requirements---one must find a balance between simple-mindedly added pieces of the desired generic object and ensuring that the partial order has sufficient nice properties that it doesn't destroy too much.

In this sense, I would say that the difficult part of most forcing arguments is not the mastery of the forcing technology, the construction of the generic filter and of the model---although that aspect of forcing is indeed nontrivial---but rather it is the detailed design of the partial order to achieve the desired effect.


First, a point of clarification: you're not adding the poset but rather forcing with it, and the poset itself remains unchanged after the forcing. The generic object that you're adding is actually a filter on this set meeting every dense subset (or maximal antichain) of the partial order.

The elements of the partial order, often called conditions in the context of forcing, form the possible components and the generic filter is responsible for collecting them in such a way to add an object of the desired form. In this way, the poset is highly correlated with the object you want to add because if you don't have the correct building blocks, there is no way to filter out the ones you want to use to construct an object of the desired form. The key property of the generic filter is that it consists of a compatible collection of conditions simultaneously meeting every dense subset. You can think of these dense subsets as the individual properties that we are going to want this filter to have. This is all better illustrated with examples:

Forcing To Add $\kappa$ many Cohen Reals: Here your forcing poset consists of finite partial functions from $\omega \times \kappa$ into {0, 1} ordered by reverse inclusion (longer is stronger). The conditions are the finite pieces of the $\kappa$ many Reals (subsets of $\omega$) that you're adding. By virtue of consisting of a compatible set of conditions meeting all dense subsets, a generic filter $G$ will pick them out in such a way that $\bigcup G: \omega \times \kappa \rightarrow \{0, 1\}$ is a total function with all of its $\kappa$ columns representing a newly added distinct Real. Specifically, the filter part insures that these conditions can be put together to form a partial function while the generic part makes sure that we've met all of the conditions imposed by the dense subsets, which include making sure the function is total, and that every column defines a distinct Real that's different from every one in the ground model. Because of the simplicity of the forcing poset, the cardinals between the ground model and the forcing extension are the same so if $\kappa = \omega_2$, then you've really forced $\lnot$CH to hold in the extension.

Forcing to Collapse a Cardinal $\lambda$ to have size $\kappa$: Here we force with the partial order consisting of partial functions from $\kappa$ into $\lambda$, each having size strictly less than $\kappa$. Again the partial order is ordered by reverse inclusion so the more the domain is filled in, the stronger the condition (lower in the partial order). A generic filter $G$ will again select these partial functions in such a way that $\bigcup G: \kappa \rightarrow \lambda$ is a total function. By virtue of meeting all dense subsets, $\bigcup G$ will have all elements from $\lambda$ in its range so it will be a newly added surjection. Consequently, if $\lambda > \kappa$ for $\kappa$ and $\lambda$ cardinals in the ground model (pre-forcing), then $\lambda$ will have been collapsed to be a $\kappa$-sized ordinal in the forcing extension. Because of the poset's closure, we didn't add any ${<} \kappa$-sized subsets of objects from the ground model or collapse any cardinals at or below $\kappa$, and we sometimes use these facts or even stronger properties to argue about truth in the ground model by virtue of truth in the forcing extension.

Sacks forcing: Here we add a "minimal Real" by forcing with the partial order consisting of perfect trees of finite binary sequences ordered by inclusion. A generic filter $G$ will thus consist of a collection of trees with larger and larger stalks so that $\bigcap G$ is a new branch through the tree ${}^{\omega}2$ that can be associated with a new Real.

Prikry forcing: If we have a nonprincipal normal $\kappa$-complete measure on a cardinal $\kappa$, then we can force with the collection of conditions of the form $\langle s, A\rangle$ where $s$ is a finite sequence of ordinals from $\kappa$ and $A$ is a subset of $\kappa$ from the normal measure. $\langle t, B\rangle \leq \langle s, A\rangle$ if $B \subseteq A$ and $t$ is an end extension of $s$ only adding ordinals from $A$ to the range of $t$. Here we won't take the union or the intersection of the generic filter $G$ but only the union of the finite sequences of ordinals in $\kappa$ from the first coordinates of the conditions in $G$. Again, the filter will make sure that this constructed object is a function, and by virtue of meeting all dense subsets, this union will form a countable unbounded sequence in $\kappa$. The importance of using a normal measure was making sure that no cardinals collapse, which is used for showing the relative consistency of the negation of the Singular Cardinal Hypothesis with a measurable cardinal. In this case, we winded up getting rid of unnecessary parts of the conditions, but they were used to guide the construction. Specifically, they were used to make sure our functions reached up high but did so without collapsing cardinals.

However, despite the fact that all of these forcing posets (notions) guide what our construction will look like, we can have much less intuitive posets accomplishing the same things. Mainly, we can associate each of these partial orders with some strange ordering on the elements of a cardinal and still accomplish the same result. Specifically, all of these forcing extensions would be equivalent to forcing extensions adding a subset of some cardinal.

There are obviously a number of other known forcing notions, but since this post is already long enough and maybe a little too technical for your question, let me just conclude with the main point. Mainly, we choose our posets looking ahead to the properties we want our generic object to have. The more complex the generic object that we want to add, the more complex the dense subsets we're going to need to have to make sure that the filter meeting them has all of the desired characteristics. This greater complexity often comes in terms of some combination of larger possible antichain sizes, more dense subsets, less closure, etc. While we can always define a descending sequence of conditions so that we meet any countable collection of dense subsets or maximal antichains, the genericity of the filter magically does this in a way to simultaneously meet all of them in a compatible way.


This is easier to understand in terms of locales. The double-negation locale associated to a forcing is the space in which the generic filter lives. The trouble is that non-trivial double-negation locales do not have points, so one has to be adjoined to form the generic extension.

In other words, if $X$ is the double-negation locale we want to force with, we would like to have a pair of geometric morphisms $Set \to Sh(X) \to Set$. The second part $Sh(X) \to Set$ is no problem, but the first part $Set \to Sh(X)$ usually doesn't exist. So we expand the universe of sets a bit by adding a generic point to $X$. Note that the double-negation locale $X$ gets destroyed in the final process of generating the generic extension.