§D2.1帰納法と再帰的な定義

最終更新

帰納法は、無限個の主張を有限個の確認へ還元する、数学全体で最も基本的な証明の方法の一つです。ただし通常の帰納法が対象とするのは、自然数の大小関係のように要素が一列に並んだ集合だけです。空でないどの部分集合にもある元が存在し、その元より下に位置する要素がその部分集合の中には一つも存在しないという性質に着目すると、この性質を持つ関係のもとで同じ論法を使うことができます。この性質を整礎性といい、たとえば自然数の大小関係はこの意味で整礎です。文字列や二分木のように自然数の上に一列に並ばない対象については、対象そのものを有限個の規則から生成される集合として定め、その生成の構造に沿って証明を進めることができます。

以下、自然数の全体をN≥0={0,1,2,… }\N = \{0, 1, 2, \dots\}と書き、自然数についての加法と大小関係の基本的な性質、および最小数原理(空でない部分集合が最小元をもつこと、§A3.10 定理 2.1)を認めて用います。帰納法の原理そのものは集合と論理で確かめられていますが、本記事はこの原理を自然数の外側へ広げ、以降の記事の証明に使う方法をまとめて示します。

1 二つの形の帰納法

自然数についての帰納法には、直前の場合だけを仮定する形と、それより小さいすべての場合を仮定する形があります。「集合と論理」は11から始まる自然数についてこの二つを扱い、前者から後者が従うことを示しました(§A3.10 定理 1.1と§A3.10 定理 3.1)。本記事は00を含むN≥0\Nを対象とするので、基底を00とする形が最小数原理から従うことを先に確かめ、続いて二つの形が原理として同じ強さをもつことを示します。

命題 1.1 (基底が00の単純帰納法).PPを自然数についての述語とする。P(0)P(0)が真であり、かつすべてのn∈N≥0n \in \NについてP(n)⇒P(n+1)P(n) \Rightarrow P(n+1)が真であるならば、すべてのn∈N≥0n \in \NについてP(n)P(n)が真である。

証明.S={ n∈N≥0:P(n) が偽 }S = \{\, n \in \N : P(n) \text{ が偽} \,\}とおき、S≠∅S \ne \varnothingと仮定する。最小数原理によりSSは最小元n0n_0をもつ。P(0)P(0)は真であるからn0≠0n_0 \ne 0であり、n0=m+1n_0 = m + 1を満たすm∈N≥0m \in \Nが存在する。m<n0m < n_0でありn0n_0はSSの最小元であるからm∉Sm \notin S、すなわちP(m)P(m)は真である。仮定した含意P(m)⇒P(m+1)P(m) \Rightarrow P(m+1)からP(n0)P(n_0)が真になるが、これはn0∈Sn_0 \in Sに矛盾する。したがってS=∅S = \varnothingであり、すべてのn∈N≥0n \in \NについてP(n)P(n)が真である。▨

小さいすべての場合を仮定する形は、この形と原理として同じ強さをもちます。

命題 1.2 (二つの帰納法の同値). 自然数についての述語PPに関する次の二つの原理を考える。

  1. 単純帰納法:P(0)P(0)が真であり、かつすべてのn∈N≥0n \in \NについてP(n)⇒P(n+1)P(n) \Rightarrow P(n+1)が真であるならば、すべてのn∈N≥0n \in \NについてP(n)P(n)が真である。
  2. 累積帰納法: すべてのn∈N≥0n \in \Nについて「nnより小さいすべてのm∈N≥0m \in \NでP(m)P(m)が真」⇒\Rightarrow「P(n)P(n)が真」が成り立つならば、すべてのn∈N≥0n \in \NについてP(n)P(n)が真である。

一方の原理がすべての述語について成り立つならば、他方の原理もすべての述語について成り立つ。

証明.(1)⇒\Rightarrow(2)を示す。述語PPが累積帰納法の仮定を満たすとする。述語QQを「nnより小さいすべてのmmについてP(m)P(m)が真である」と定める。00より小さい自然数は存在しないので、Q(0)Q(0)は空虚に真である。次にQ(n)Q(n)を仮定する。Q(n)Q(n)は「nnより小さいすべてのmmでP(m)P(m)」であり、PPについての仮定からただちにP(n)P(n)が従う。したがってn+1n+1より小さいすべてのmm、すなわちm<nm < nであるmmとm=nm = nの両方についてP(m)P(m)が真であり、Q(n+1)Q(n+1)が成り立つ。(1)により、すべてのnnについてQ(n)Q(n)が真である。任意のnnに対してQ(n+1)Q(n+1)を用いればP(n)P(n)が得られる。

(2)⇒\Rightarrow(1)を示す。述語PPがP(0)P(0)を満たし、かつすべてのnnでP(n)⇒P(n+1)P(n) \Rightarrow P(n+1)を満たすとする。nnを任意にとり、nnより小さいすべてのmmについてP(m)P(m)が真であると仮定する。n=0n = 0のときは、仮定によらずP(0)P(0)が真である。n≥1n \ge 1のときはn=k+1n = k+1となる非負整数kkがあり、k<nk < nなのでP(k)P(k)が真であり、含意P(k)⇒P(k+1)P(k) \Rightarrow P(k+1)からP(n)=P(k+1)P(n) = P(k+1)が真である。したがってPPは累積帰納法の仮定を満たし、(2)からすべてのnnについてP(n)P(n)が真である。▨

命題 1.1と合わせると、累積帰納法もN≥0\Nについて成り立ちます。二つの原理は、証明することができる主張の範囲では違いがありません。違いは、帰納段階で使うことができる仮定の量と、基底段階を別に書くかどうかにあります。

注意 1.3 (累積帰納法に基底段階が現れない理由). 累積帰納法の仮定には、P(0)P(0)を別に確かめるという条件が現れない。これは基底段階が不要になったのではなく、n=0n = 0の場合として仮定に吸収されているためである。n=0n = 0における仮定「00より小さいすべてのmmでP(m)P(m)」は空虚に真なので、この場合の要求は「P(0)P(0)を無条件に示すこと」に等しい。累積帰納法で書いた証明がn=0n = 0の場合を扱っていなければ、その証明は完成していない。

2 整礎な関係と整礎帰納法

累積帰納法は、反例全体が空でないと仮定し、その最小元nnをとることによって最小数原理から直接導くこともできます。nnより小さい自然数は反例でないため、それらについての帰納法の仮定からP(n)P(n)が従い、nnが反例であることに矛盾します。この論法の核である「空でない部分集合が下方に極小な元をもつ」という性質を関係の条件として取り出すと、自然数以外の対象についても同じ論法を用いることができます。

定義 2.1 (整礎な関係). 集合AA上の二項関係≺\precが整礎 (well-founded) であるとは、AAの空でないどの部分集合SSにも、次の意味の極小元 (minimal element) が存在することをいう。すなわち、あるx∈Sx \in Sが存在して、y≺xy \prec xを満たすy∈Sy \in Sが一つも存在しない。

極小元は最小元ではありません。極小元は「自分より下にSSの要素が無い」ことだけを要求し、SSのすべての要素と比較可能であることを要求しません。

例 2.2 (整礎である関係と整礎でない関係).

  1. N≥0\N上の関係m≺n  ⟺  m<nm \prec n \iff m < nは整礎である。空でない部分集合は最小数原理により最小元をもち、最小元は極小元である。
  2. 有限集合AA上の関係≺\precは、x1≻x2≻⋯≻xk≻x1x_1 \succ x_2 \succ \cdots \succ x_k \succ x_1という形の巡回が存在しなければ整礎である。
  3. Z\mathbb{Z}上の関係m≺n  ⟺  m<nm \prec n \iff m < nは整礎でない。部分集合S=ZS = \mathbb{Z}は極小元をもたない。
  4. 正の有理数の全体Q>0\mathbb{Q}_{>0}上の関係x≺y  ⟺  x<yx \prec y \iff x < yは整礎でない。S=Q>0S = \mathbb{Q}_{>0}自身が極小元をもたない。

整礎な関係のもとでは、次の形で帰納法を用いることができます。

定理 2.3 (整礎帰納法).≺\precを集合AA上の整礎な関係とし、PPをAAの要素についての述語とする。すべてのx∈Ax \in Aについて

(y≺x を満たすすべての y∈A で P(y) が真)⇒P(x) が真\bigl(\text{$y \prec x$ を満たすすべての $y \in A$ で $P(y)$ が真}\bigr) \Rightarrow \text{$P(x)$ が真}

が成り立つならば、AAのすべての要素xxについてP(x)P(x)が真である。

証明.S={ x∈A:P(x) が偽 }S = \{\, x \in A : P(x) \text{ が偽} \,\}とおき、S≠∅S \ne \varnothingと仮定する。≺\precが整礎であることから、SSには極小元x0x_0が存在する。極小元の定義により、y≺x0y \prec x_0を満たすyyはSSに属さない。すなわち、y≺x0y \prec x_0を満たすすべてのy∈Ay \in AについてP(y)P(y)が真である。仮定した含意をx=x0x = x_0に適用するとP(x0)P(x_0)が真になるが、これはx0∈Sx_0 \in Sに矛盾する。したがってS=∅S = \varnothingであり、すべてのx∈Ax \in AについてP(x)P(x)が真である。▨

累積帰納法は、A=N≥0A = \N、≺\precを大小関係とした場合の整礎帰納法にほかなりません。整礎帰納法にも、累積帰納法と同じく基底段階は現れません。極小元xxに対しては仮定が空虚に真になるので、P(x)P(x)を無条件に示すことが要求されます。

整礎性は、しばしば「無限に下がり続ける列が存在しない」という言い方でも説明されます。二つの述べ方の関係は、次のとおりです。

命題 2.4 (整礎な関係には無限降下列がない).≺\precが集合AA上の整礎な関係ならば、すべてのn∈N≥0n \in \Nについてxn+1≺xnx_{n+1} \prec x_nを満たすAAの要素の列x0,x1,x2,…x_0, x_1, x_2, \dotsは存在しない。

証明. そのような列x0,x1,…x_0, x_1, \dotsが存在すると仮定し、S={ xn:n∈N≥0 }S = \{\, x_n : n \in \N \,\}とおく。SSはx0x_0を含むので空ではない。SSの任意の要素は、あるnnについてxnx_nと書くことができ、xn+1∈Sx_{n+1} \in Sかつxn+1≺xnx_{n+1} \prec x_nが成り立つ。したがってSSのどの要素も極小元ではなく、SSは極小元をもたない。これは≺\precが整礎であることに矛盾する。▨

注意 2.5 (逆向きの含意について). 無限に下がり続ける列が存在しないことから整礎性を導く向きの議論は、極小元をもたない部分集合から要素を次々と選び出す操作を必要とし、この操作は従属選択公理と呼ばれる選択公理の一種による。本記事は定義 2.1を整礎性の定義として採用し、逆向きの含意を本論の根拠に用いない。整礎性を確かめるときは、無限降下列が無いことではなく、空でない部分集合が極小元をもつことを示す。

3 規則から生成される集合と構造的帰納法

文字列や木は、自然数の上に一列に並んでいません。これらを帰納法の対象にするには、対象そのものを有限個の規則から作り出す形で定義します。以下では、あらかじめ用意した集合UUの中で生成を行います。UUを用意するのは、生成される集合をUUの部分集合として構成し、集合として存在することを確かめるためです。

定義 3.1 (生成される集合).UUを集合、BBをUUの部分集合とし、FFを写像の有限族とする。FFの各要素ffは、ある正の整数kkについてUkU^{k}からUUへの写像であるとし、このkkをffの引数の個数 (arity) という。BBの要素を基底 (base element)、FFの要素を構成子 (constructor) という。UUの部分集合の列を

G0=B,Gn+1=Gn∪{ f(x1,…,xk):f∈F, x1,…,xk∈Gn }G_0 = B, \qquad G_{n+1} = G_n \cup \{\, f(x_1, \dots, x_k) : f \in F,\ x_1, \dots, x_k \in G_n \,\}

によって定め、G=⋃n≥0GnG = \bigcup_{n \ge 0} G_nとおく。このGGを、BBとFFが生成する集合 (generated set) という。UUの部分集合HHがFFについて閉じている (closed under the constructors) とは、f∈Ff \in Fとx1,…,xk∈Hx_1, \dots, x_k \in Hに対してつねにf(x1,…,xk)∈Hf(x_1, \dots, x_k) \in Hが成り立つことをいう。

生成する集合は、基底を含み構成子について閉じている集合のうち最小のものです。この最小性が、以下のすべての議論の根拠になります。

命題 3.2 (生成する集合の最小性).GGをBBとFFが生成する集合とする。このとき次が成り立つ。

  1. B⊆GB \subseteq Gであり、GGはFFについて閉じている。
  2. UUの部分集合HHがB⊆HB \subseteq Hを満たしFFについて閉じているならば、G⊆HG \subseteq Hである。

証明. 定義からG0⊆G1⊆G2⊆⋯G_0 \subseteq G_1 \subseteq G_2 \subseteq \cdotsである。実際、Gn+1G_{n+1}はGnG_nとの合併として定められている。

(1)を示す。B=G0⊆GB = G_0 \subseteq Gである。f∈Ff \in Fを引数の個数kkの構成子とし、x1,…,xk∈Gx_1, \dots, x_k \in Gとする。各iiについてxi∈Gnix_i \in G_{n_i}となるnin_iを選び、n=max⁡{n1,…,nk}n = \max\{n_1, \dots, n_k\}とおく。引数は有限個なので最大値が存在し、列が増加することからすべてのiiについてxi∈Gnx_i \in G_nである。したがってf(x1,…,xk)∈Gn+1⊆Gf(x_1, \dots, x_k) \in G_{n+1} \subseteq Gである。

(2)を示す。HHをBBを含みFFについて閉じているUUの部分集合とし、Gn⊆HG_n \subseteq Hをnnについて示す。n=0n = 0のときはG0=B⊆HG_0 = B \subseteq Hである。Gn⊆HG_n \subseteq Hを仮定する。Gn+1G_{n+1}の要素はGnG_nの要素であるか、f∈Ff \in Fとx1,…,xk∈Gnx_1, \dots, x_k \in G_nについてf(x1,…,xk)f(x_1, \dots, x_k)の形をしている。前者は仮定からHHに属する。後者については、仮定からxi∈Hx_i \in Hであり、HHがFFについて閉じているのでf(x1,…,xk)∈Hf(x_1, \dots, x_k) \in Hである。よってGn+1⊆HG_{n+1} \subseteq Hが成り立ち、命題 1.1によりすべてのnnについてGn⊆HG_n \subseteq Hである。合併をとってG⊆HG \subseteq Hを得る。▨

最小性から、生成する集合についての帰納法がただちに従います。

定理 3.3 (構造的帰納法).GGをBBとFFが生成する集合とし、PPをUUの要素についての述語とする。次の二つが成り立つならば、GGのすべての要素xxについてP(x)P(x)が真である。

  1. BBのすべての要素bbについてP(b)P(b)が真である。
  2. 各構成子f∈Ff \in F(引数の個数kk)と、P(x1),…,P(xk)P(x_1), \dots, P(x_k)がすべて真であるようなx1,…,xk∈Gx_1, \dots, x_k \in Gについて、P(f(x1,…,xk))P(f(x_1, \dots, x_k))が真である。

証明.S={ x∈G:P(x) が真 }S = \{\, x \in G : P(x) \text{ が真} \,\}とおく。条件 (a)からB⊆SB \subseteq Sである。f∈Ff \in Fとx1,…,xk∈Sx_1, \dots, x_k \in Sをとると、S⊆GS \subseteq Gよりxi∈Gx_i \in Gであり、P(xi)P(x_i)はすべて真である。条件 (b)からP(f(x1,…,xk))P(f(x_1, \dots, x_k))が真であり、命題 3.2 (1)からf(x1,…,xk)∈Gf(x_1, \dots, x_k) \in Gなので、f(x1,…,xk)∈Sf(x_1, \dots, x_k) \in Sである。したがってSSはBBを含みFFについて閉じているので、命題 3.2 (2)によりG⊆SG \subseteq Sである。すなわちGGのすべての要素xxについてP(x)P(x)が真である。▨

構造的帰納法は、整礎帰納法の言い換えとしても読むことができます。そのために、各要素が何段目で現れたかを測る量を定めます。

定義 3.4 (構成の階数).GGをBBとFFが生成する集合とする。x∈Gx \in Gに対し、x∈Gnx \in G_nを満たす最小のnnをxxの階数 (rank) といい、rk(x)\mathrm{rk}(x)と書く。

x∈Gx \in Gならばx∈Gnx \in G_nとなるnnが存在し、そのようなnnの全体は自然数の空でない集合なので、最小数原理により最小元が存在します。したがって階数はすべてのx∈Gx \in Gに対して定まります。

命題 3.5 (階数の比較は整礎である).GG上の関係x≺y  ⟺  rk(x)<rk(y)x \prec y \iff \mathrm{rk}(x) < \mathrm{rk}(y)は整礎である。

証明.SSをGGの空でない部分集合とする。集合{ rk(x):x∈S }\{\, \mathrm{rk}(x) : x \in S \,\}は自然数の空でない集合なので、最小数原理により最小元n0n_0をもつ。rk(x0)=n0\mathrm{rk}(x_0) = n_0を満たすx0∈Sx_0 \in Sを一つとると、y∈Sy \in Sに対してrk(y)≥n0=rk(x0)\mathrm{rk}(y) \ge n_0 = \mathrm{rk}(x_0)なので、y≺x0y \prec x_0を満たすy∈Sy \in Sは存在しない。よってx0x_0はSSの極小元である。▨

注意 3.6 (構造的帰納法を整礎帰納法として読む).命題 3.5の関係≺\precをGG上にとると、定理 3.3の二つの条件は定理 2.3の仮定を導く。実際、x∈Gx \in Gをとり、y≺xy \prec xを満たすすべてのy∈Gy \in GについてP(y)P(y)が真であるとする。rk(x)=0\mathrm{rk}(x) = 0のときはx∈G0=Bx \in G_0 = Bであるから、定理 3.3 条件 (a)によりP(x)P(x)が真である。rk(x)=n≥1\mathrm{rk}(x) = n \ge 1のときはx∈Gnx \in G_nかつx∉Gn−1x \notin G_{n-1}であり、GnG_nの定義からあるf∈Ff \in Fとx1,…,xk∈Gn−1x_1, \dots, x_k \in G_{n-1}についてx=f(x1,…,xk)x = f(x_1, \dots, x_k)と書くことができる。このときrk(xi)≤n−1<rk(x)\mathrm{rk}(x_i) \le n - 1 < \mathrm{rk}(x)、すなわちxi≺xx_i \prec xであるからP(xi)P(x_i)はすべて真であり、定理 3.3 条件 (b)によりP(x)P(x)が真である。よって定理 2.3を≺\precに適用するとGGのすべての要素でPPが真になり、定理 3.3の結論が得られる。

次の二つが、本記事で扱う生成された集合です。

例 3.7 (文字列の集合). 有限集合Σ\Sigma(アルファベット)をとり、UUをΣ\Sigmaの要素からなる有限列の全体とする。B={ε}B = \{\varepsilon\}(ε\varepsilonは長さ00の列、すなわち空文字列)とし、各a∈Σa \in \Sigmaに対して構成子fa(w)=awf_a(w) = aw(列wwの先頭にaaを置いて得られる列)を与える。これらが生成する集合をΣ∗\Sigma^{*}と書き、その要素をΣ\Sigma上の文字列という。GnG_nは長さnn以下の列の全体であり、Σ∗\Sigma^{*}はUU自身、すなわち有限列の全体に一致する。文字列wwの階数はwwの長さである。

例 3.8 (二分木の集合). 順序対ではない対象ℓ\ellを一つ選び、

U0={ℓ},Un+1=Un∪(Un×Un),U=⋃n≥0UnU_0 = \{\ell\},\qquad U_{n+1} = U_n \cup (U_n \times U_n),\qquad U = \bigcup_{n \geq 0} U_n

とおく。B={ℓ}B = \{\ell\}とする。L,R∈UL, R \in Uならば、あるnnについてL,R∈UnL, R \in U_nであるから、(L,R)∈Un+1⊆U(L, R) \in U_{n+1} \subseteq Uである。したがって、構成子をf ⁣:U×U→Uf\colon U \times U \to U、f(L,R)=(L,R)f(L, R) = (L, R)と定めることができる。この基底と構成子による生成段階GnG_nは、すべてのnnでUnU_nに等しい。したがって、これらが生成する集合をT\mathcal{T}と書くと、T=⋃n≥0Gn=U\mathcal{T} = \bigcup_{n \geq 0} G_n = Uである。その要素を二分木という。ℓ\ellを葉、(L,R)(L, R)の形の二分木の最も外側の対を内部節点とよび、LLを左の部分木、RRを右の部分木という。二分木ttの階数は、ttの葉から最も外側の対までの対の入れ子の深さである。

4 再帰によって写像を定める

生成された集合の上では、値を「基底での値」と「構成子をどう反映するか」によって指定することができます。たとえば二分木ttの葉の個数をλ(t)\lambda(t)と書き、λ(ℓ)=1\lambda(\ell) = 1、λ((L,R))=λ(L)+λ(R)\lambda((L, R)) = \lambda(L) + \lambda(R)と定めたくなります。しかしこの書き方が写像を定めるためには、各要素の作り方が一通りに決まっていなければなりません。作り方が二通りあると、同じ要素に対して二つの値が指定されてしまいます。

定義 4.1 (自由に生成される).GGがBBとFFから自由に生成される (freely generated) とは、次の三つが成り立つことをいう。

  1. 各構成子f∈Ff \in FのGkG^{k}への制限は単射である。すなわち、x1,…,xkx_1, \dots, x_kとy1,…,yky_1, \dots, y_kがGGの要素でf(x1,…,xk)=f(y1,…,yk)f(x_1, \dots, x_k) = f(y_1, \dots, y_k)ならば、すべてのiiについてxi=yix_i = y_iである。
  2. 相異なる構成子f,g∈Ff, g \in Fについて、GGの要素を引数とするffの値とggの値は一致しない。
  3. BBの要素は、GGの要素を引数とするどの構成子の値とも一致しない。

この三つは、「GGの各要素は、BBの要素であるか、ただ一つの構成子とただ一組の引数から作られるかのいずれか一方である」と言い換えることができる。

例 4.2 (自由に生成されている例と、そうでない例).例 3.7のΣ∗\Sigma^{*}は自由に生成されている。fa(w)=fa(w′)f_a(w) = f_a(w')ならば先頭を除いてw=w′w = w'であり、a≠ba \ne bならばfa(w)f_a(w)とfb(w′)f_b(w')は先頭の文字が異なり、ε\varepsilonは長さ00なのでどのfaf_aの値とも一致しないからである。例 3.8のT\mathcal{T}も自由に生成されている。順序対が等しいことと成分がそれぞれ等しいことは同値であり、構成子は一つだけで、ℓ\ellは順序対でないからである。

自由に生成されていない例を挙げる。UUを記号aaと++からなる有限列の全体、B={a}B = \{a\}、構成子をg(s,t)=s + tg(s, t) = s\,{+}\,t(列ss、記号++、列ttをこの順に並べた列)とする。生成される集合GGは括弧を書かない加法の式の全体である。このとき列a+a+aa + a + aは、s=a+as = a + a、t=at = aとしても、s=as = a、t=a+at = a + aとしても得られるので、定義 4.1 条件 (a)が破れている。

自由に生成されていないと、再帰的な等式は写像を定めません。

注意 4.3 (自由生成が崩れると値が定まらない).例 4.2の括弧を書かない式の集合GGについて、φ(a)=0\varphi(a) = 0およびφ(g(s,t))=φ(s)+1\varphi(g(s, t)) = \varphi(s) + 1という等式で写像φ\varphiを定めようとする。列a+a+aa + a + aに対して、s=a+as = a + a、t=at = aと読めばφ(a+a+a)=φ(a+a)+1=(φ(a)+1)+1=2\varphi(a + a + a) = \varphi(a + a) + 1 = (\varphi(a) + 1) + 1 = 2となり、s=as = a、t=a+at = a + aと読めばφ(a+a+a)=φ(a)+1=1\varphi(a + a + a) = \varphi(a) + 1 = 1となる。値が一意に定まらないので、この等式は写像を定めていない。再帰的な等式を書くときは、対象の集合が自由に生成されていることを先に確かめる。

定理 4.4 (再帰による定義).GGがBBとFFから自由に生成されているとする。集合VV、写像g ⁣:B→Vg \colon B \to V、および各構成子f∈Ff \in F(引数の個数kk)に対する写像hf ⁣:Vk→Vh_f \colon V^{k} \to Vが与えられたとき、

φ(b)=g(b)(b∈B),φ(f(x1,…,xk))=hf(φ(x1),…,φ(xk))(x1,…,xk∈G)\varphi(b) = g(b) \quad (b \in B), \qquad \varphi(f(x_1, \dots, x_k)) = h_f(\varphi(x_1), \dots, \varphi(x_k)) \quad (x_1, \dots, x_k \in G)

をともに満たす写像φ ⁣:G→V\varphi \colon G \to Vが、ただ一つ存在する。

証明.φ\varphiとψ\psiがともに上の二つの等式を満たすとし、述語P(x)P(x)を「φ(x)=ψ(x)\varphi(x) = \psi(x)」と定めて定理 3.3を適用する。b∈Bb \in Bについてはφ(b)=g(b)=ψ(b)\varphi(b) = g(b) = \psi(b)である。f∈Ff \in Fとx1,…,xk∈Gx_1, \dots, x_k \in Gについてφ(xi)=ψ(xi)\varphi(x_i) = \psi(x_i)がすべて成り立つとすると、

φ(f(x1,…,xk))=hf(φ(x1),…,φ(xk))=hf(ψ(x1),…,ψ(xk))=ψ(f(x1,…,xk))\varphi(f(x_1, \dots, x_k)) = h_f(\varphi(x_1), \dots, \varphi(x_k)) = h_f(\psi(x_1), \dots, \psi(x_k)) = \psi(f(x_1, \dots, x_k))

である。構造的帰納法により、GGのすべての要素でφ\varphiとψ\psiは一致する。したがって、上の二つの等式をともに満たす写像は高々一つである。

以下、G≤n={ x∈G:rk(x)≤n }G^{\le n} = \{\, x \in G : \mathrm{rk}(x) \le n \,\}とおき、二つの等式をともに満たす写像を構成する。

主張 4.4.1.x∈Gx \in Gとする。rk(x)=0\mathrm{rk}(x) = 0であることとx∈Bx \in Bであることは同値である。またrk(x)≥1\mathrm{rk}(x) \ge 1ならば、x=f(x1,…,xk)x = f(x_1, \dots, x_k)を満たす構成子f∈Ff \in Fと組(x1,…,xk)∈Gk(x_1, \dots, x_k) \in G^{k}がただ一組存在し、この組は各iiについてrk(xi)<rk(x)\mathrm{rk}(x_i) < \mathrm{rk}(x)を満たす。

証明.G0=BG_0 = Bであるから、rk(x)=0\mathrm{rk}(x) = 0であることとx∈Bx \in Bであることは同値である。rk(x)=n≥1\mathrm{rk}(x) = n \ge 1とすると、x∈Gnx \in G_nかつx∉Gn−1x \notin G_{n-1}であり、GnG_nの定義からあるf∈Ff \in Fとx1,…,xk∈Gn−1x_1, \dots, x_k \in G_{n-1}についてx=f(x1,…,xk)x = f(x_1, \dots, x_k)と書くことができる。GGの要素を引数とする表示が二つあれば、定義 4.1 条件 (b)から構成子が一致し、定義 4.1 条件 (a)から引数の組が一致するので、この表示はただ一組である。xi∈Gn−1x_i \in G_{n-1}よりrk(xi)≤n−1<n=rk(x)\mathrm{rk}(x_i) \le n - 1 < n = \mathrm{rk}(x)である。とくにxxがG≤nG^{\le n}に属せば、その表示の引数xix_iもまたG≤nG^{\le n}に属する。▨

主張 4.4.2. すべてのn∈N≥0n \in \Nについて、写像φn ⁣:G≤n→V\varphi_n \colon G^{\le n} \to Vであって、BBの要素bbについてφn(b)=g(b)\varphi_n(b) = g(b)を満たし、かつx=f(x1,…,xk)∈G≤nx = f(x_1, \dots, x_k) \in G^{\le n}(f∈Ff \in F、xi∈Gx_i \in G)のときφn(x)=hf(φn(x1),…,φn(xk))\varphi_n(x) = h_f(\varphi_n(x_1), \dots, \varphi_n(x_k))を満たすものが、ただ一つ存在する。

証明.主張 4.4.1により引数xix_iはG≤nG^{\le n}に属するので、二つ目の条件は意味をもつ。n=0n = 0のとき、G≤0=BG^{\le 0} = Bである。φ0=g\varphi_0 = gと定めると一つ目の条件が成り立ち、定義 4.1 条件 (c)からBBの要素は構成子の値として書くことができないので、二つ目の条件は空虚に成り立つ。逆に二つの条件を満たす写像はBB上でggに一致するので、φ0\varphi_0は一つに定まる。

nnについて主張を仮定し、φn\varphi_nをその一意な写像とする。写像φn+1 ⁣:G≤n+1→V\varphi_{n+1} \colon G^{\le n+1} \to Vを、rk(x)≤n\mathrm{rk}(x) \le nのときφn+1(x)=φn(x)\varphi_{n+1}(x) = \varphi_n(x)、rk(x)=n+1\mathrm{rk}(x) = n+1のとき、主張 4.4.1が与える一意な表示x=f(x1,…,xk)x = f(x_1, \dots, x_k)を用いてφn+1(x)=hf(φn(x1),…,φn(xk))\varphi_{n+1}(x) = h_f(\varphi_n(x_1), \dots, \varphi_n(x_k))と定める。同じ主張によりrk(xi)≤n\mathrm{rk}(x_i) \le nなので右辺は定まっている。一つ目の条件はφn\varphi_nが満たしているので従う。二つ目の条件は、rk(x)≤n\mathrm{rk}(x) \le nの場合はφn\varphi_nが満たしていることと主張 4.4.1から従い、rk(x)=n+1\mathrm{rk}(x) = n+1の場合は表示の一意性から定め方そのものである。ψ ⁣:G≤n+1→V\psi \colon G^{\le n+1} \to Vが二つの条件を満たすとすると、主張 4.4.1によりψ\psiのG≤nG^{\le n}への制限もnnについて二つの条件を満たすので、nnについての一意性からG≤nG^{\le n}上でψ=φn\psi = \varphi_nである。rk(x)=n+1\mathrm{rk}(x) = n+1のxxについては、二つ目の条件と表示の一意性からψ(x)=hf(ψ(x1),…,ψ(xk))=hf(φn(x1),…,φn(xk))=φn+1(x)\psi(x) = h_f(\psi(x_1), \dots, \psi(x_k)) = h_f(\varphi_n(x_1), \dots, \varphi_n(x_k)) = \varphi_{n+1}(x)である。よってn+1n+1についても主張が成り立ち、命題 1.1からすべてのn∈N≥0n \in \Nについて主張が成り立つ。▨

x∈Gx \in Gに対してφ(x)=φrk(x)(x)\varphi(x) = \varphi_{\mathrm{rk}(x)}(x)と定める。m≤nm \le nのとき、φn\varphi_nのG≤mG^{\le m}への制限は主張 4.4.1により主張 4.4.2の二つの条件をmmについて満たすので、mmについての一意性からφm\varphi_mに一致する。したがってφ\varphiは各φn\varphi_nの拡張であり、主張 4.4.2の二つの条件がそのままφ\varphiの二つの等式になる。高々一つであることは先に示したので、φ\varphiはただ一つ存在する。▨

この定理により、次の二つの写像が定まります。

定義 4.5 (文字列の連結と、二分木の葉と内部節点の個数). 文字列v∈Σ∗v \in \Sigma^{*}を固定し、写像w↦w⋅vw \mapsto w \cdot vを

ε⋅v=v,(aw)⋅v=a (w⋅v)(a∈Σ, w∈Σ∗)\varepsilon \cdot v = v, \qquad (aw) \cdot v = a\,(w \cdot v) \quad (a \in \Sigma,\ w \in \Sigma^{*})

によって定め、w⋅vw \cdot vをwwとvvの連結 (concatenation) という。

二分木ttの葉の個数 (number of leaves)λ(t)\lambda(t)と内部節点の個数 (number of internal nodes)ι(t)\iota(t)を

λ(ℓ)=1,λ((L,R))=λ(L)+λ(R),\lambda(\ell) = 1, \qquad \lambda((L, R)) = \lambda(L) + \lambda(R),ι(ℓ)=0,ι((L,R))=ι(L)+ι(R)+1\iota(\ell) = 0, \qquad \iota((L, R)) = \iota(L) + \iota(R) + 1

によって定める。

Σ∗\Sigma^{*}とT\mathcal{T}はいずれも自由に生成されているので(例 4.2)、定理 4.4により、これらの等式はそれぞれ写像をただ一つ定めます。

定義が生成規則に沿って書かれているとき、その定義についての証明も同じ規則に沿って進みます。

命題 4.6 (連結の結合律).u,v,w∈Σ∗u, v, w \in \Sigma^{*}について(u⋅v)⋅w=u⋅(v⋅w)(u \cdot v) \cdot w = u \cdot (v \cdot w)が成り立つ。

証明.vvとwwを固定し、述語P(u)P(u)を「(u⋅v)⋅w=u⋅(v⋅w)(u \cdot v) \cdot w = u \cdot (v \cdot w)」と定めて定理 3.3をuuについて適用する。

基底の場合、u=εu = \varepsilonとすると(ε⋅v)⋅w=v⋅w=ε⋅(v⋅w)(\varepsilon \cdot v) \cdot w = v \cdot w = \varepsilon \cdot (v \cdot w)である。両端の等号は、いずれも連結の定義の第一の等式による。

構成子の場合、a∈Σa \in \Sigmaとu∈Σ∗u \in \Sigma^{*}についてP(u)P(u)を仮定する。連結の定義の第二の等式を三回用いると

((au)⋅v)⋅w=(a (u⋅v))⋅w=a ((u⋅v)⋅w)=a (u⋅(v⋅w))=(au)⋅(v⋅w)((au) \cdot v) \cdot w = (a\,(u \cdot v)) \cdot w = a\,((u \cdot v) \cdot w) = a\,(u \cdot (v \cdot w)) = (au) \cdot (v \cdot w)

となる。三つめの等号で帰納法の仮定P(u)P(u)を用いた。よってP(au)P(au)が成り立つ。構造的帰納法により、すべてのu∈Σ∗u \in \Sigma^{*}についてP(u)P(u)が真である。▨

命題 4.7 (二分木の葉と内部節点の個数の関係). すべての二分木ttについてλ(t)=ι(t)+1\lambda(t) = \iota(t) + 1が成り立つ。

証明. 述語P(t)P(t)を「λ(t)=ι(t)+1\lambda(t) = \iota(t) + 1」と定めて定理 3.3を適用する。

基底の場合、λ(ℓ)=1\lambda(\ell) = 1かつι(ℓ)+1=0+1=1\iota(\ell) + 1 = 0 + 1 = 1なのでP(ℓ)P(\ell)が成り立つ。

構成子の場合、二分木L,RL, RについてP(L)P(L)とP(R)P(R)を仮定する。定義と帰納法の仮定から

λ((L,R))=λ(L)+λ(R)=(ι(L)+1)+(ι(R)+1)=(ι(L)+ι(R)+1)+1=ι((L,R))+1\lambda((L, R)) = \lambda(L) + \lambda(R) = (\iota(L) + 1) + (\iota(R) + 1) = (\iota(L) + \iota(R) + 1) + 1 = \iota((L, R)) + 1

である。よってP((L,R))P((L, R))が成り立つ。構造的帰納法により、すべての二分木ttについてλ(t)=ι(t)+1\lambda(t) = \iota(t) + 1である。▨

例 4.8 (小さい二分木での検算).t1=ℓt_1 = \ellではλ=1\lambda = 1、ι=0\iota = 0で1=0+11 = 0 + 1が成り立つ。t2=(ℓ,ℓ)t_2 = (\ell, \ell)ではλ=1+1=2\lambda = 1 + 1 = 2、ι=0+0+1=1\iota = 0 + 0 + 1 = 1で2=1+12 = 1 + 1が成り立つ。t3=((ℓ,ℓ),ℓ)t_3 = ((\ell, \ell), \ell)ではλ=2+1=3\lambda = 2 + 1 = 3、ι=1+0+1=2\iota = 1 + 0 + 1 = 2で3=2+13 = 2 + 1が成り立つ。t4=((ℓ,ℓ),(ℓ,ℓ))t_4 = ((\ell, \ell), (\ell, \ell))ではλ=2+2=4\lambda = 2 + 2 = 4、ι=1+1+1=3\iota = 1 + 1 + 1 = 3で4=3+14 = 3 + 1が成り立つ。いずれも命題 4.7と一致する。

参考文献

  1. Kenneth H. Rosen, Discrete Mathematics and Its Applications, 8th ed., McGraw Hill, New York, 2019.
  2. Glynn Winskel, The Formal Semantics of Programming Languages, MIT Press, 1993.
  3. Paul R. Halmos, Naive Set Theory, Undergraduate Texts in Mathematics, Springer, New York, 1974, originally published 1960.

前提記事