強制法

数学の集合論における**強制法**（きょうせいほう、Forcing）とは、ポール・コーエンによって開発された無矛盾性や独立性を証明するための手法である。強制法が初めて使われたのは1962年、連続体仮説と選択公理のZFからの独立性を証明した時のことである。強制法は60年代に大きく再構成されシンプルになり、集合論や、再帰理論などの数理論理学の分野で、極めて強力な手法として使われてきた。

## 直観的意味合い

強制法はより概念的には自然で直観的であるブール値モデルの方法と等価であるが、そちらのほうは応用が利きにくい。

直観的には、強制法は集合論の宇宙 *V* をより大きい宇宙 *V** に拡大することから成り立っている。
この大きい宇宙では、拡大する前の宇宙には無かった *ω* = {0,1,2,…} の新しい部分集合をたくさん要素に持っている。
そしてそれにより連続体仮説を否定することができる。が、このような議論は表面上不可能である。

原理的には、次のようなものを考える。
:V^* = V \times \{0,1\}, \, 

x \in V を (x,0) で特定し、(x,1) の形をした"新しい"集合にも
関係する拡大された所属関係を導入する。

強制法はこのアイデアを洗練したもので、新しい集合の存在を認めて利用するというより、拡大された宇宙の性質を元の宇宙からよりよく操作することを許したものである。

コーエンの元々のテクニックは今ではと呼ばれるもので、強制法の説明によく使われる**unramified forcing**とは少々異なる。

## 強制半順序

**強制半順序**は3つ組順序対

:(**P**, ≤, 1) 

である。ここで "≤" は**P**上の前順序関係(広義の半順序)で、以下のsplitting condition（アトムの非存在性）を満たすもの。

:任意の *p* ∈ **P**に対して、*s* ≤ *q*, *r* となる *s* ∈ **P** が存在しないような*q*, *r* ≤ *p* である *q*, *r* ∈ **P** が存在する。

1 は最大元である。すなわち、

:全ての *p* ∈ **P** に対して *p* ≤ 1

**P** の要素は*条件*と呼ばれ、

:*p* ≤ *q* 

を 

:*p* は *q* より*強い* 

とよぶ。直観的には、これは"小さい"条件がより"多く"情報をもたらしているということである。区間[3.1415926,3.1415927]はπの値について、より広い区間[3.1,3.2]よりも多くの情報を与えている。

(ここで使われる条件は多様である。"≤"に反対称律を求める場合もあり、そのときはこの順序は狭義(広く使われている意味の)半順序である。最大要素の存在を仮定しないこともある。逆順序も利用された。これはシェラハとその共著者の研究でも知られている。)

強制半順序 **P** は **P**-*名前*と関連付けられる。**P**-名前は集合で、

:{(*u*,*p*):*u* は **P**-名前 かつ *p* ∈ **P**}

この定義は超限再帰によるものである。

::*Name(0) = {};
::*Name(α + 1) = (Name(α) &times; **P**)の冪集合の定義可能な部分集合;
::*Name(λ) =  ∪{Name(α) : α (**P**) =  ∪{Name(α) : α は順序数}

と定義する。**P**-名前は宇宙の拡大の様子を表している。*V* の要素 *x* に対して

:*x*ˇ 

は**P**-名前であり

:{(*y*ˇ,1) : *y* ∈ *x*}.

で定義する。これもやはり超限再帰による定義である。

**P** の部分集合 *G* に対して、*解釈* とか *付値* というのは、名前に対する関数で 

:val(*u*, *G*) = {val(*v*, *G*) : ∃ *p* ∈ *G* , (*v*, *p*) ∈ *u*}.

と定義する(この定義も超限再帰による)。ここで、もし 1 が *G* の要素なら

:val(*x*ˇ, *G*) = *x*. 

となる。

:*G* = {(*p*ˇ, *p*) : *p* ∈ *G*},

と定義すると、

:val(*G*,*G*) = *G*.

となる。強制半順序の良い例が 

:(Bor(**I**) , ⊆ , **I** ), 

である。ここで **I** = [0,1] であり、Bor(**I**) は **I**のボレル部分集合で非零ルベーグ測度を持つもの全体である。この場合、半順序の条件は確からしさを表していると説明され、Bor(**I**)-名前は所属関係を確率的な意味で割り当てる。この例でも得られている確率的言語の考えは他の強制半順序でも使われる。

## 可算推移モデルとジェネリックフィルター

強制法の鍵となるステップはZFCの宇宙 *V* に対して、*V* の要素でない適切な *G* を見つけることである。
結果としては *G* による**P**-名前の解釈全てによるクラスが元々の *V* の拡大になるZFCのモデルになるようにする。

*V* で作業する代わりに、**可算推移モデル M** と (**P**,≤,1) ∈ **M**を考える。
ここで言うモデルというのはZFCの十分多くの有限個の公理を満たすものを言う。
推移性というのは *x* ∈ *y* ∈ **M** ならば *x* ∈ **M**となることである。

モストフスキ崩壊補題によると所属関係は整礎的であると仮定してよい。
推移性は所属関係や初等的な概念を直観的に扱いやすくする。
可算性はレーヴェンハイム-スコーレムの定理から得ているものである。

**M** は集合なので **M** に属さない集合が存在する。それはラッセルのパラドックスから分かる。
強制に際して取り **M** に付け加える適切な **G** は**Pのジェネリックフィルター**である。
**フィルター**条件とは *G*⊆**P** であって、

:*1 ∈ *G*&nbsp;;
:**p* ≥ *q* ∈ *G* ならば *p* ∈ *G*&nbsp;;
:**p*,*q* ∈ *G* ならば ∃*r* ∈ *G*, *r* ≤ *p* かつ *r* ≤ *q*&nbsp;;

を満たすこと、*G* が *ジェネリック* であるとは

:**D* ∈ **M** が **P**の*稠密*部分集合 (すなわち *p* ∈ **P** ならば ∃*q* ∈ *D*, *q* ≤ *p* である)ならば *G*∩*D* ≠ 0&nbsp;

となることである。

ジェネリックフィルター *G* の存在性はラショーヴァ＝シコルスキの補題から分かる。
さらに、以下のことが分かる: 条件*p* ∈ **P**が与えられたとする、このとき *p* ∈ *G* であるジェネリックフィルター *G* を見つけられる。splitting conditionと *G* がフィルターであることから **P**\*G* は稠密である。
もし *G* が **M** の要素なら **P**\*G* も **M** の元となるから *G* は **M**の元にはならない。

## 強制

ジェネリックフィルター *G*⊆**P** が与えられたとする。
**M** の要素である**P**-名前全体によるクラスを **M**(**P**) で表す。
**M**[*G*]={val(*u*,*G*):*u*∈**M**(**P**)}とする。
**M**[*G*] で集合論を論じるのではなく、 **M** で論じるため、*強制言語* を用いる。
これは一階述語論理のように構成され、所属関係は2項関係として、名前は定数として実現される。

*p* \Vdash_{M,P} φ(*u*1,…,*u**n*)
("半順序Pとモデル **M** の中で *p* が φ を強制する"と読む。)を定義する。
ここで *p* は条件、φ は強制言語の式、各 *u**i* は名前である。
この式の意味は、*G* が *p* を要素に持つジェネリックフィルターであるなら
**M**[*G*] ⊨ φ(val(*u*1,*G*),…,val(*u**n*,*G*))となることである。
特に、1 \Vdash_{M,P} φ は **P** \Vdash_{M,P} φ とか \Vdash_{M,P} φとも書かれる。そのような文は *G* が何であるかによらず **M**[*G*] で真となる。

この強制関係 *p* \Vdash_{M,P} φ の、"外部"を見ている定義が、
名前と式の複雑性に関する帰納法による"内部"を見ている定義と同値であるという点は重要である。
これは、**M**[*G*] の性質は実は **M** で把握され、ZFCが **M**[*G*] で成立することを
確かめられることに影響する。このことは以下の3つの重要な性質として要約される。:

***真理性**: **M**[*G*] ⊨ φ(val(*u*1,*G*),…,val(*u**n*,*G*)) となるのは、それが *G* によって強制されているとき、すなわちある条件 *p* ∈ *G* があって *p* \Vdash_{M,P} φ(*u*1,…,*u**n*) となること。
***定義可能性**: 文 "*p* \Vdash_{M,P} φ(*u*1,…,*u**n*)" は **M** で定義可能である。
***干渉性**: *p* \Vdash_{M,P} φ(*u*1,…,*u**n*) かつ *q* ≤ *p* ならば *q* \Vdash_{M,P} φ(*u*1,…,*u**n*)である。

**V** 上に強制関係を式の複雑性に関する帰納法で定義する。

1. *p* \Vdash_{P} *a* ∈ *b* とは、任意の *q* ≤ *p* に対して *r* ≤ *s* かつ *r* \Vdash_{P} *a* = *c* となる (*s*, c) ∈ *b* が存在するような *r* ≤ *q* が存在すること

2. *p* \Vdash_{P} *a* = *b* とは、*p* \Vdash_{P} *a* ⊆ *b* かつ *p* \Vdash_{P} *b* ⊆ *a* となること。

:ここで

:*p* \Vdash_{P} *a* ⊆ *b* とは任意の *q* ≤ *p* と任意の (r,*c*) ∈ *a* に対して、*q* ≤ *r* ならば *q* \Vdash_{P} *c* ∈ *b* となることである。

3. *p* \Vdash_{P} ¬ *f* とは、*q* \Vdash_{P} *f* となるような *q* ≤ *p* が存在しないこと。

4. *p* \Vdash_{P} *f* ∧ *g* とは、*p* \Vdash_{P} *f* かつ *p* \Vdash_{P} *g* となること。

5. *p* \Vdash_{P} ∀ *x* *f* とは、任意の名前 *a* に対して *p* \Vdash_{P} *f*(*a*) となること、ここで *f*(*a*) は *f* に出現する自由変数 *x* を全て *a* で置き換えた結果の式である。

1–5 の *p* は任意の条件であり、1,2 の *a*,*b* は任意の名前であり、3–5 の *f*,*g* は任意の式である。

この定義は **V** で働くもので可算推移モデル **M** の中ではそのままでは働かない。
しかし、次の命題は定義可能性を与えている。:

*p* \Vdash_{M,P} *f* は **M** ⊨ *p* \Vdash_{P} *f* となることと同値である。

(混乱が無ければ単に \Vdash とも書く。)

*G* を可算推移モデル **M** や全宇宙 *V* に付け加える方法のどちらのスタイルもよく使われてきた。
強制法の"内部"を見る定義を使うアプローチで集合,クラスモデルが作られることに言及しない方法は珍しく、
これはコーエンの元々の方法で、洗練,研究されたことによってこれはブール代数値解析の方法になった。

## コーエン強制

非自明で最も単純な強制半順序は ( Fin(ω,2) , ⊇ , 0 ) である。
これは ω から 2={0,1} への有限部分関数全体に包含関係の*逆* 順序を入れたものである。

すなわち、条件 *p* は有限個の自然数に"yes"(1)と"no"(0)を割り当てているが、
それ以外の数には"yes"と"no"は割り当てていない。*q* が *p* より強いというのを *q* ⊇ *p* としている。
*q* は *p* の割り当て情報を保ちながらより多くの情報をも与えており強いという表現に合致している。

*G* をこの半順序のジェネリックフィルターとする。*p*,*q* を *G* の要素とするとき、
フィルター性から *p*∪*q* は条件である。このことから *g*=⋃*G* は から ω から 2 へのwell-definedな部分関数である。*G* のいかなる2要素も共通の定義域では一致しているからである。

実際は *g* は全域関数である。
いかなる *n* ∈ ω に対しても *D**n*={ *p* : *p*(*n*) が定義されている } とすると *D**n* は稠密集合である(いかなる *p* に対しても、もし *n* が *p* の定義域に入っていなくても *n* に対する値を定義して付け加えるとその関数は *D**n* の要素となる)。条件 *p* ∈ *G*∩*D**n* はその定義域に *n* をもつから *p* ⊆ *g* であり、*g*(*n*) は定義されていることになる。

ジェネリック関数 *g* の"yes"な要素の集合を *X*=*g*&minus;1[1] とする。
*X* に名前を直接与えることは可能である。*X* = { ( *n*ˇ , *p* ) : *p*(*n*)=1 } とすれば val( *X* , *G* ) = *X* である。
今、*A*⊆ω を *V* の要素とする。*X*≠*A* であることを示す。
*D**A* = { *p* : ∃*n*, *n*∈dom(*p*) かつ (*p*(*n*)=1 と *n*∉*A* は同値) } と
する。*D**A* は稠密である(任意の *p* に対して、*n* が *p* の定義域に入っていなくても *n* に対する値を *n*∈*A* かどうかに矛盾するように定義すればよい)。このとき *p*∈*G*∩*D**A* は *X*≠*A* の証拠となる。つまり、*X* は ω の*新しい* 無限部分集合である。

ω を ω&times;ω2 で置き換える、すなわち今度の有限部分関数は、入力は *n*2 を用いて(*n*,α) の形で、出力はこれらに 0 と 1 を割り当てるものを考える。これにより ω2 個の ω の部分集合を得る。それらが全て異なることは稠密性に関する議論から分かる。α2 に対して *D*α,β={*p*:∃*n*, *p*(*n*,α)≠*p*(*n*,β)} はそれぞれ稠密で、
それに交わるジェネリック条件は α 番目の新しい集合は β 番目の新しい集合に一致しない。

これではまだ連続体仮説の否定が成り立つことにはなっていない。
作られた新しい関数が ω から ω1 や ω1 から ω2 への全射になっていないことを示す必要がある。というのも、Fin(ω,ω1) を考えたとき、*V*[*G*] では ω から ω1への全単射が
得られている。言い換えると、ω1 は *潰されて*いて、強制拡大内では可算順序数になっているのである。

連続体仮説の独立性を証明する最後のステップは、コーエン強制が基数を潰さないことを示すことである。
これには、組み合わせ論的性質としてはこの半順序の反鎖が可算個しかないこと、すなわち可算鎖条件があれば十分である。

## 可算鎖条件
**P** の部分集合 *A* が **P** の反鎖であるとは、*p, q* という *A* の任意の2要素が、
*両立しない* (*p* ⊥ *q* と表す。)ことを言う。
両立しないとは、**P** の要素 *r* で *r* ≤ *p* かつ *r* ≤ *q* を満たすようなものが存在しないこと。

ボレル集合の集まりの例では、両立しないことは *p*∩*q* の測度が0であることであった。
有限部分関数の集まりの例では、両立しないことは *p*∪*q* が関数を成さないこと
(すなわち、*p* と *q* が共通の定義域で一致しない振る舞いをしていること)であった。

**P** が **[[可算鎖条件]]**(c.c.c.) を満たすとは、**P** のいかなる反鎖も可算であること。
(この一見明らかに不適切と思われるネーミングは、ブール代数に関する結果の歴史的な経緯による。
一部の数学者には"可算反鎖条件 (c.a.c.)" と表している者もいる。)

Bor(**I**) が c.c.c. を満たすことは簡単に分かる。ここでの測度はいくら足しても最大で1である。
Fin(*E*,2) もまた c.c.c. を満たす。しかしその証明はもう少し難しい。(Δ-システム補題等を使う証明が知られている)。

強制法における反鎖の重要性は稠密集合と極大反鎖が同値に捉えられることにある。
*極大* 反鎖 *A* は反鎖であることを保ったまま拡大することができない。
それはすなわち、いかなる*p* ∈ **P** も *A*の要素のどれかとは両立しないことを意味する。
極大反鎖の存在はツォルンの補題による。
極大反鎖 *A* が与えられたとして、*D* = { *p* : ある *q*∈*A* があって *p*≤*q*} と定義する。
このとき*D* は稠密で、*G*∩*D*≠0 と *G*∩*A*≠0 は同値である。
逆に、稠密集合 *D* が与えられたとして、ツォルンの補題はから極大反鎖 *A*⊆*D* の存在が分かり、
*G*∩*D*≠0 と *G*∩*A*≠0 が同値になる。

**P** が c.c.c. を満たすとする。*x*,*y* ∈ *V* と *V*[*G*] 内の関数 *f*:*x*→*y*が与えられたとする。
*f* を *V* の内部から以下のように近似できる。
*u* を*f*の名前とする。*p* を条件で、*u* が *x* から *y* への関数となることを強制するものとする。
関数 *F* を次のように定義する。
定義域は *x* で *F*(*a*) = { *b* : ∃ *q* ≤ *p*, *q* は *u*(*a*ˇ) = *b*ˇ を強制する } である。
強制関係の定義可能性により、この定義は *V* で意味をなす。
c.c.c. により *F*(*a*) は可算である。

要約すると、*f* は *G* によって決まってくる*V* 内では何か分からないが、単に全く分からないのではなく、
c.c.c. forcing においては、*G* によらずに、任意の入力に対する *f* の値を推定する可算集合を特定することができる。 

このことから重要な帰結が得られる。*V*[*G*] の中で *f*:α→β が無限順序数間の全射であるとき、
全射 *g*:ω×α→β が *V* の中にあって、全射 *h*:α→β が *V* の中にある。特に、基数が崩壊しない。
このことから、 2ℵ₀ ≥ ℵ2 が *V*[*G*]の中で成り立つ。