Veterans of this group may recall that a long time ago, I said that I would write an expository article entitled "Forcing for dummies" and post it here. Well, here it is at last. I'm still not totally happy with it, but I figured if I postponed any longer I might never post it. Logicians may wish to skip right to the end where I have some questions that I don't know the answer to. I am deeply indebted to Matthew Wiener and Andreas Blass, who have patiently answered my many stupid questions on the subject. The book I have studied most is Kunen's _Set_Theory_. I apologize that this article is so long; I have tried to be concise but the subject is complex. 1. Models of ZFC Perhaps the most famous theorem proved using forcing is the independence of the continuum hypothesis (CH). More precisely, what Cohen proved was that if ZFC is consistent, then CH is not a theorem of ZFC. Goedel had already proved that if ZFC is consistent then ~CH, the negation of CH, is not a theorem of ZFC (using his concept of "constructible sets"). Just how does one go about proving such a result? At a very high level, the structure of the proof is what you would expect: one writes down a very precise statement of what the axioms of set theory are (ZFC) and what ~CH is, and then one constructs a mathematical structure that satisfies both ZFC and ~CH. This structure is said to be a "model" of the axioms. Although the term "model" is not often seen in mathematics outside of formal logic, it is actually a familiar concept. For example, in group theory, a "model of the group-theoretic axioms" is just a group, i.e., a set with a binary operation satisfying blah blah blah. Analogously, we could invent a term---say, "universe"---to mean "a structure that is a model of ZFC." Then we could begin a course in set theory with a definition like, "A `universe' is a set M together with a binary relation E satisfying..." followed by a long list of axioms such as If x and y are distinct elements of M then either there exists z in M such that z E x but not z E y, or there exists z in M such that z E y but not z E x. (This is the "Axiom of Extensionality.") [Note: It so happens that the term "universe" is not a standard one; for some reason there is standard name for the *axioms* but no standard name for the *structures that satisfy the axioms*, even though in the rest of mathematics it's the other way around. But the point is still valid.] Early on in a course in group theory, one gives lots of examples of groups. Here we encounter the first awkward feature of ZFC; strictly speaking, nobody has ever exhibited even *one* model of ZFC (without using assumptions that are not universally accepted among all mathematicians)! Moreover, Goedel's second incompleteness theorem essentially says that nobody ever will. Fortunately, this is not as nasty a problem as it might seem at first. For example, one object that is almost a model of ZFC is V, the class of all sets. If we take M = V and we take E to mean "is a member of," then we see that the axiom of extensionality simply says that two sets are equal if and only if they contain the same elements---a manifestly true statement. The rest of the axioms of ZFC are similarly self-evident when M = V. The catch, of course, is that V is too large to actually be a *set*, and we stipulated that M had to be a set. Furthermore, Goedel incompleteness notwithstanding, nobody has ever proved that there *aren't* any models of ZFC, so if we are bothered by this point, we can treat the existence of models of ZFC like any other unproved hypothesis, such as the Riemann hypothesis or P != NP. That is, we can assume it freely as long as we remember to put a conditional clause in our theorems. So from now on, let us assume that models of ZFC exist. A second possible stumbling block is that some people initially approach axiomatic set theory with the expectation that we have to suspend all our previous preconceptions about sets. It may therefore seem surprising that I suggested starting the discussion by saying, "A `universe' is a *set* together with..." Wait a minute---what's a set? Isn't it circular to define axioms for sets in terms of sets? Different people give different answers to this question. My recommendation is to approach the study of ZFC like the study of any other mathematical subject. In particular, you should use your ordinary, "naive" mathematical knowledge of sets to understand the sentence, "A `universe' is a set together with..." Do not harbor expectations, at least not at first, that ZFC will tell you what sets "really are" or which mathematical practices are "really rigorous." If it helps, think of ZFC as axioms for "universe theory" not "set theory"; then the apparent circularity goes away. Next point: In group theory, the deepest theorems are not theorems about *all* groups, but about special classes of groups (finite simple groups, compact Lie groups, etc.). Similarly, in the theory of forcing, we will be interested in models of ZFC with some additional properties. The first property we will require is that the elements of M be "well-founded sets." This means sets that are built up from the empty set recursively, using operations such as union, pairing, powerset, etc. Thus the empty set {} is well-founded, as are {{}} and {{}, {{}}, {{{}}}, ...}. This requirement is not really crucial; as in the rest of mathematics, it doesn't really matter what the "atoms" out of which your structures are built are, so long as they have the properties you want them to have. In fact, it might seem rather confusing that not only is M a set, but now the elements of M (and the elements of the elements of M, and...) are also sets! However, well-foundedness turns out to be very convenient. The second requirement is a requirement on the relation E. We will require that x E y if and only if x is a member of y. (Remember, x and y, being elements of M, are [well-founded] sets, and hence it makes sense to talk about x being a member of y.) This might again seem like a confusing requirement. Naively, we might guess that to construct "weird" models of ZFC in which ~CH holds, we might have to let E be some kind of weird relation that bears no resemblance whatsoever to ordinary set membership. Once we require E to coincide with ordinary set membership, we might wonder whether there is any model of ZFC other than V itself (ignoring temporarily the fact that V is not a set). Surprisingly, it turns out that there is still plenty of "wiggle room" left after this requirement. The third requirement is that M be "transitive," i.e., that every member of M is actually a subset of M. If you have worked with ordinal numbers before, you will not be too surprised that transitivity turns out to be a very useful condition. Otherwise, it might seem unmotivated; however, some motivation will become apparent later. The final requirement is perhaps the most important (from the point of view of forcing), and that is that M be a *countable* set. If you have studied some logic then you may remember the Loewenheim-Skolem theorem, which says that if a countable set of axioms has any models at all, then it has a model which is a countable set. Otherwise, the countability condition may make you even more incredulous that any such M could exist. Since our main purpose here is to discuss forcing and I don't want to spend any more time on preliminaries, I will simply have to ask you to take it on faith that a very rich array of examples remains even after the countability condition is imposed. We use the standard abbreviation "c.t.m." (countable transitive model) for models of ZFC that satisfy the four extra requirements above. 2. What a c.t.m. satisfying ~CH looks like What do c.t.m.'s look like? It turns out that every c.t.m. M contains all the natural numbers, if we adopt the understanding that 0 is the empty set, 1 = {{}}, 2 = {{}, {{}}}, and in general n is the set {0, 1, ..., n-1}. It also contains omega, the infinite set of all the natural numbers. What about the powerset 2^omega (the set of all subsets of omega)? This is easy to get confused about, because on the one hand 2^omega is uncountable, and since M is transitive, if 2^omega were a member of M it would also be a subset of M, but since M is countable it can't have an uncountable subset. On the other hand, ZFC contains a Powerset Axiom which says that if x is in M then so is the powerset of x. So what's going on? Let us look carefully at what the Powerset Axiom really states. It says that for every x in M, there exists a y in M with the following property: if z is a member of M such that every w in M satisfying w E z also satisfies w E x, then z E y. We see now that even if E is interpreted as membership (requirement 2 in the previous section), it does not follow that y is the set of *all* subsets of z. First of all, it is not even clear that the z's in this axiom are actually subsets of x; the axiom doesn't require that *every w* satisfying w E z also satisfies w E x; it just requires that *every w in M* satisfying w E z satisfies w E x. Now, it turns out that because M is transitive, the z's *are* in fact subsets of x. What "goes wrong" is the rest of the axiom: y does not contain *every subset of x*; it only contains *those subsets of x that are in M*. So it is perfectly possible that this "powerset" of x is countable. What should we call y? Calling it the "powerset of x" is potentially confusing; I prefer to reserve this term for the actual set of all subsets of x. The usual jargon is to call y "the powerset of x in M." As an exercise in understanding this concept, consider Cantor's famous theorem that the powerset of omega is uncountable. Cantor's proof can be mimicked using the axioms of ZFC to produce a formal theorem of ZFC. This yields: "The powerset of omega in M is uncountable in M." In order to see more clearly what this is saying, let us expand this out more fully to obtain: "There is no bijection in M between omega and the powerset of omega in M," where a bijection is a certain set (in fact, a certain set of ordered pairs, where an "ordered pair" is defined set-theoretically as {{x}, {x,y}}). So even though the powerset of omega in M is countable, and we can construct a bijection in the "real world" between omega and the powerset of omega in M, it turns out that this bijection is *not a member of M*. There is therefore no contradiction between being "uncountable in M" and being countable (this is known as "Skolem's paradox"). Once you grasp this point that appending "in M" is crucial and can change the meaning of a term or a sentence dramatically, you may start to worry about all kinds of things in the preceding paragraphs. For example, shouldn't we distinguish between "omega" and "omega in M"? This is a legitimate worry. Fortunately, the transitivity of M implies that a lot of things, including "is a subset of," "is a function," "omega," and other basic concepts, are *absolute*, meaning that they mean the same whether or not you append "in M." A complete treatment of forcing must necessarily include a careful discussion of which concepts are absolute and which are not. However, this is a rather tedious affair, so we will gloss over it. Instead, we will simply warn the reader when something is not absolute. We can now present the outlines of how one might go about constructing a model for ZFC + ~CH. Start with any c.t.m. M. By the elementary theory of cardinals, there is a set k in M that is omega_2 in M (omega_2, or aleph_2 if you prefer, is the second cardinal larger than omega). Of course k is countable, but there is no bijection *in M* between k and omega. So now let us construct a function f from the Cartesian product k x omega into 2. This may be interpreted as a sequence of k functions from omega into 2. We can easily arrange that these k functions are all distinct. Now if f is already in M, then M satisfies ~CH! The reason is that functions from omega into 2 can be identified with subsets of omega, and f therefore shows us that the powerset of omega in M must be at least omega_2 in M. If f is missing from M, then we simply insert it into M to get a bigger set M' that satisfies ~CH. Q.E.D., right? If this sounds too easy, you're right. There are many problems with this naive idea. First of all, just adding an arbitrary set out of the blue to M isn't necessarily going to result in something else that satisfies ZFC. We can't take just any group and adjoin an arbitrary extra element and hope that the result will still be a group, so why should we expect that this will work with models of ZFC? Where, for instance, is the powerset of f in M'? We have not done anything to ensure that it exists. Nevertheless, this basic idea, of adding f (along with some other associated sets that we need to keep ZFC happy) to M to get a larger c.t.m. M' that contains some sets that were "missing" from M, turns out to work, if we are sufficiently careful and clever about the details. Specifically, we have the following. Fundamental Theorem. If M is a c.t.m., P is an element of M [satisfying certain technical conditions], and G is a subset of P [satisfying certain technical conditions], then the set M[G], obtained by adjoining G [plus some other auxiliary sets] to M, is also a c.t.m. The bracketed omissions will be filled in and explained shortly, but let me first remark that the Fundamental Theorem is very powerful, because the technical conditions on G and P are fairly mild, leaving tremendous scope for creativity. By cleverly choosing G and P one can construct M[G]'s that satisfy all kinds of set-theoretic statements. Even today, nearly all of the hundreds of known independence results in logic are ultimately based in one way or another on this one fundamental construction. The reader may be puzzled that the word "forcing" does not appear in the Fundamental Theorem. Forcing, as we shall see later, comes in when one tries to prove that M[G] satisfies various statements (or, in the usual jargon, that various statements are "true in M[G]"). Forcing is needed to prove the Fundamental Theorem, since we have to prove that each axiom of ZFC is true in M[G]. Forcing is also needed to prove that ~CH is true in M[G] (for a suitable G). 3. Names We begin by describing the "auxiliary sets" that, along with G, comprise M[G]. A crucial idea that pervades the theory of forcing is that some facts about G (or more generally M[G]) depend on the particular G in question, while others are "general" facts that are true for all G. Consider the analogy of field extensions: If F is a field and we want to adjoin a new element X to the field, then no matter what X is, we know that there is also going to be an element X^2 + 1 in F(X); on the other hand, whether X^2 + 1 = 0 depends on the particular X chosen. In the case of fields there is no pressing need to have different notations for a "general" X and a "particular" X because the situation is sufficiently simple that no confusion arises if we use "X" for everything. Things are more complicated in ZFC, and it is important to have different notations for the "general" and "particular" cases. By analogy with the way natural language mirrors certain general features of the real world, we will define "names" for the elements of M[G]. The names will be defined without reference to G; however, the *values* of the names---the sets that the names are names *of*---will depend on G. The precise definition of a name (or more precisely, a "P-name" since it depends on P) is: A set x is a P-name if (and only if) all its members are ordered pairs where y is a P-name and p is in P. If x is a P-name then we also define the domain dom(x) by dom(x) = {y : is in x for some p in P} The definition of a P-name is rather tricky so let us examine it carefully. The first subtlety is that it appears to be circular. However, this apparent circularity is really just a shorthand for a recursive definition. For example, the empty set is a P-name, because all the members of the empty set certainly satisfy the required property. Then, once we know that the empty set is a P-name, we can build other sets that are P-names using the definition. A P-name x is supposed to name some set X that is related to G, but x is designed for discussion of facts that are true "in general" for all G, so the members of x (or more precisely, of dom(x)) are not, as we might at first expect, the names of all the elements of X---that's "too specific." Rather, the members of x are the names of everything that is *potentially* in X. Now, if I happen to know exactly which particular G I'm interested in, then I should be able to figure out *exactly* which set x names. To this end, each member of x is "tagged" with an element of P. If I know G, then I can go through each member of x, and whenever the "tag" is actually in G, then I transform the potential membership into actual membership, whereas if the tag is not in G, then I discard the potential member. Formally, the "value of a P-name x with respect to G," written val(x,G), is defined to be val(x,G) = {val(y,G) : is in x for some p in G} This is again a recursive definition. The value of the empty set is always the empty set, and we can build up other values from this. One thing that may still seem obscure in this definition is the role of P. Couldn't we simply replace "P" by "M" everywhere? Why do we need P? It is true that we could define names and their values without reference to P, but there are two reasons for including it: (1) to prove the main theorems of forcing, we will need to impose a certain structure on P, which we cannot in general impose on M itself, and (2) after we finish building the machinery and want to apply it, having the extra degree of freedom of choosing a good P will be very valuable in constructing c.t.m.'s with special properties. The names construction is quite powerful. For example, let us, now and throughout the rest of this article, require that P always contain a distinguished element called "1" and let us also require that G always contain 1. (We previously used "1" for the set {{}} but there should be no confusion because we will have no further occasion to mention {{}}.) Then there is a name---in fact, a "canonical" name---for every element X of M. This can be proved by recursion: if every element Y of X has a name Y*, then we can formulate the name X* = { : all Y in X}. Then since 1 is always in G, it follows that val(X*,G) = X. (Furthermore, this construction turns out to be absolute, so X* is in M.) From this we can deduce that G has a name too, the "diagonal" name G* = { : all X in P}. Chasing the definition, we see that the value of this name is the set of values of X* as X runs over all elements of G, i.e., val(G*,G) = G. We can now fill in one blank in the Fundamental Theorem. Given M, P, and G, the formal definition of M[G] is: M[G] = {val(x,G) : x is a P-name in M}. We would like to claim is that M[G] is a c.t.m. if M is. However, this turns out to be false without further conditions on P and G. Why this is so is the topic of the next section. 4. A naive attempt to prove that ZFC is true in M[G] The ideas presented so far, while not sufficient to prove that M[G] satisfies ZFC, do buy us *some* of the axioms of ZFC. In particular, M[G] satisfies the Pairing and Union axioms of ZFC. I didn't define what these axioms are, but they are easy to state. For example, Pairing says that for every X and Y in M[G] there exists Z in M[G] such that X E Z and Y E Z. To see this, suppose that X and Y are in M[G]. By definition of M[G], X = val(x,G) and Y = val(y,G) for some P-names x and y in M. Now set z = {, }. This is a P-name, and it is also in M (the latter fact requires proof, but it is essentially because M satisfies Pairing). So Z = val(z,G) = {X,Y} is in M[G] and it has the desired property (remember that "E" denotes membership). Pairing is so easy that we don't even need most of the power of the concept of names to prove that it is true in M[G]. Trouble arises, however, with other axioms of ZFC, such as the Powerset axiom. Suppose X is in M[G], and let x be a P-name in M such that val(x,G) = X. We need to find a P-name y in M such that Y = val(y,G) contains every subset of X that lies in M[G]. The following definition is a natural try: y = { : z is a P-name in M and dom(z) is a subset of dom(x)} Now suppose Z is a subset of X in M[G]. There must exist a P-name z in M such that Z = val(z,G). We would love to be able to say that dom(z) must be a subset of dom(x), because val(z,G) would then be in Y, and we would be done. But unfortunately, this need not be true. The problem is that z might contain a lot of "potential" elements that are not in dom(x) but that "disappear" when you take the value, because they are tagged with elements of P that are not in G. So it seems we're stuck. All is not lost, though. Different P-names in M may actually have the same value; although an arbitrary z that names Z might not have a domain contained in dom(x), perhaps a careful choice of z will. But how do we find such a z? Answering this question leads us (finally!) to the concept of forcing, to which we now turn. 5. Forcing To make progress we need to investigate further the idea that some facts about G are specific to G while other facts are "true in general." For example, whether or not the empty set is a member of G is something that is very specific to G. In contrast, consider the following statement: If the empty set is a member of G, then G is nonempty. This is something that can be said about G *without* knowing anything specific about G. For a slightly less trivial example, we can also say that if omega is a member of G, then the union of all the members of G is an infinite set. More generally, without any knowledge of facts that are particular to G, it is possible to construct quite sophisticated statements of the form, "*If* G contains a certain element p, *then* such-and-such must be true." Let us now define forcing: Let p be an element of P and let phi be any sentence whose nouns are P-names. Then we say that "p ||- phi" (read: "p forces phi") if, for any subset G of P [satisfying technical conditions], p being a member of G implies that phi is true in M[G] (i.e., phi is true when the names are replaced by their values). This definition requires some explanation. First, it is not actually the true definition of forcing, unless the technical conditions are inserted (we will return to this later; ignore it for now). The main part of the definition is best clarified by example. Write 0 for the empty set, and let G* be the canonical name of G. Let phi be the sentence, "G* is nonempty." Then "0 ||- phi" states that for any G, 0 being a member of G implies the following statement: "G is nonempty" (I have replaced, in phi, the name G* by its value, G). This is true. On the other hand, if omega* is the canonical name of omega, then we would not expect "0 ||- omega* is in G*" to be true; that is, we would not expect the fact that 0 is in G to imply that omega is in G, because some G's might contain 0 and not omega. How does this concept help us? Let us return to the problem in the previous section, of proving that M[G] satisfies the Powerset Axiom. With the same notation that was used there, suppose we now define z' as follows: z' = { : q is in dom(x) and r ||- "q is in z"}. By definition, dom(z') is a subset of dom(x). What is val(z',G)? Well, this is determined by which "tags" are in G. But note that by the definition of forcing, if r is in G, then val(q,G) is in val(z,G) = Z. Therefore, val(z',G) is a subset of Z. This is progress, but what we really want is for val(z',G) to be actually equal to Z, and this is not at all clear. What we need in order to prove val(z',G) = Z is that for every Q in Z, there is a P-name q of Q in dom(x) and a P-name r in G such that r ||- "q is in z." Finding a suitable q turns out not to be that hard, but the existence of r is not so clear; what we need is a theorem that for every statement phi (such as "Q is in Z") that is actually true in M[G] for a particular G, there is some element r of that particular G such that merely knowing that r is in G is enough to deduce that phi is true of G. This doesn't seem plausible. In general, knowing just one element of G doesn't tell us very much about G. However, we can fix this problem if we restrict G and P to have a certain structure, so that some elements r of G are "more informative" than others, i.e., knowing that r is in G tells us more about G than knowing that some other element p is in G. The simplest way to achieve this is to impose a partial ordering < on P (with "1" being the unique maximal element) and to require G to be a *filter*, i.e., for G to have the following two properties: 1. If r is in G and r <= p then p is also in G. 2. For every p and q in G there exists r in G such that r <= p and r <= q. The first of these conditions ensures that knowing that some element r is in G tells us not only that r is in G but that every element >= r is also in G. Thus, r is "more informative" than p if r <= p. The second condition may be thought of as capturing the idea that for any two elements p and q, there is some element r that is at least as informative as p and q put together. If we are going to insist on looking at only single elements of G to get information about G, then this is clearly a useful condition to impose. If we now revise our definition of ||- by inserting the technical conditions that P be a partially ordered set and G be a filter, then this gives us more hope of being able to find r in G such that r ||- "Q is in Z." Unfortunately, even the condition of being a filter turns out not to be quite good enough. Intuitively, the reason is that since P may be infinite, there is no guarantee that, for an arbitrary statement phi that asserts something about G, there will exist an r in G that will give us enough information to decide phi. We might try finding smaller and smaller r's in the partial order that give us more and more information but we might never find one that tells us what we need to know. The following condition on G solves this problem. Define a subset D of P to be "dense" if for every p in P there exists q in D such that q <= p. A filter G is "generic" if it intersects every dense subset. It can now be proved that if we require P to be a partially ordered set with unique maximal element 1 and we define "p ||- phi" to mean that for all generic filters G in P, phi is true in M[G], then the following is true: Forcing Fact 1. Fix a particular generic filter G of P. Then for any phi that is true in M[G], there exists r in G such that r ||- phi. If we now go back to our attempt to prove the Powerset Axiom, we see that Forcing Fact 1 is just what we need to prove that val(z',G) = Z. The only thing left to prove is that z' is actually in M. For this, one needs the following: Forcing Fact 2. ||- is definable in M. I won't say precisely what Forcing Fact 2 means, but intuitively it asserts that even when we add the side conditions (partial order, generic filter), the definition of ||- is still sufficiently "general" that it does not require any specific knowledge of G; therefore, sets like z' that are defined using ||- still lie inside M. Proving Forcing Facts 1 and 2 is not easy, even after all the above definitions (which themselves are not easy to come up with!) have been provided. Here I must refer you to a Kunen's book for details. The work required to prove them, however, pays off great dividends. Not only Powerset, but all the other axioms of ZFC, can be proved to be true in M[G], using just the two Forcing Facts (without ever having to delve into the proof of the Facts themselves), and following a similar pattern to our proof of Powerset. The Fundamental Theorem is therefore proved! For convenience, we restate it with all the blanks filled in. Fundamental Theorem. If M is a c.t.m., P is a partially ordered set in M with unique maximum element 1, and G is a nonempty generic filter of P, then the set M[G] = {val(x,G) : x is a P-name in M} is also a c.t.m. 6. ~CH revisited Let's see how to apply the Fundamental Theorem to the continuum hypothesis. One's first thought might be to take P to be the set of all ordered pairs with x in k x omega and y in 2, hoping that G can be chosen to be a function from k x omega to 2. However, this does not quite work because the members of a function are ordered pairs, and no particular ordered pair is "more informative" about the function than any other ordered pair. On the other hand, large *subsets* of ordered pairs carry more information than smaller subsets, so this is a hint that we should "pass to the powerset." More precisely, let P be the set of all "finite partial functions" from k x omega into 2, i.e., functions from a finite subset of k x omega into 2. Partially order these functions by reverse inclusion, i.e., f <= g if the set of all ordered pairs in g is contained in the set of all ordered pairs of f. Now it is not hard to see that for each y in k x omega, the set D_y of all elements of P that are defined on y (i.e., that include y as part of their domain) is dense. Therefore, if G is a generic filter in P, G must intersect every such D_y, and the union of all the elements of G will be a *total* function from k x omega to 2. The Fundamental Theorem tells us that we can successfully "insert" this "missing" function into M if it wasn't there already. Furthermore, the fact that G is generic gives us automatically, as a bonus, the fact that each of the k functions from omega to 2 are distinct! (See if you can prove this, by constructing a suitable dense subset in P. You can look up the answer in Kunen.) There is no need to cleverly choose the "right" generic filter; any generic filter will do in this case. Are we done? Well, almost...there are two more points to take care of. First of all, we haven't yet established that generic filters exist. This turns out not to be difficult to prove, but it does hinge on the countability of M (this is where the countability of M turns out to be important). Essentially, because of countability, one can enumerate all the dense subsets, and pick one from each; the filter generated by all these elements will be generic. The second point is more substantial. It is conceivable to me that Cohen could have devised forcing, proved the Fundamental Theorem, and still failed to prove anything new about the continuum hypothesis! The reason is that nothing in the general framework of forcing guarantees that in M[G], the cardinal k will still equal omega_2. Being a cardinal is not an absolute property, so large cardinals can "collapse" into lower ordinals when you pass to M[G]. The reason is that the auxiliary sets in M[G] might include a bijection between k and a smaller cardinal. Luckily for Cohen, though, it can be proved that cardinal collapse does not occur for the particular P described above. See Kunen for details. 7. Epilogue One reason I'm still not totally happy with this exposition is that the definitions "p ||- phi" and "G is a generic filter" still seem to be pulled out of a hat, even though one can get some a posteriori intuition about why each part of the definition is important. There do exist alternative approaches to forcing, e.g., using "Boolean-valued models." This is somewhat more intuitive because the idea that some statements require more "particular information about G" to be decided is encoded "directly," i.e., we take the set of all statements and impose a partial order on this set. The concept of a generic filter becomes simpler (essentially, it becomes an "ultrafilter" in a complete Boolean algebra). However, with this approach one needs to hit on the idea of embedding partial orders in a complete Boolean algebra; I'm not sure how to motivate this. Question for the logicians: are there nice applications of forcing where P is a complete Boolean algebra and no embedding is involved? Another question for the logicians: Say we drop the word "generic" from the definition of forcing, and we say that "p pseudoforces phi" if for every filter G in P, p being in G implies that phi is true in M[G]. Is pseudoforcing definable in M? At first I thought it might be, because it doesn't seem that one needs to know anything about any particular G to decide whether p pseudoforces phi, but Andreas Blass thinks the answer is probably no.