1 構文木のタグ
変数をv 0 , v 1 , … v_0,v_1,\ldots v 0 , v 1 , … と列挙する。次の相異なる標準自然数をタグとして固定する。
タグ 1 2 3 4 5 6 7 8 9 構成子 V a r Z e r o S u c c A d d M u l E q N e g I m p A l l \begin{array}{c|cccccccccc}
\text{タグ}&1&2&3&4&5&6&7&8&9\\ \hline
\text{構成子}&\mathrm{Var}&\mathrm{Zero}&\mathrm{Succ}&\mathrm{Add}&\mathrm{Mul}
&\mathrm{Eq}&\mathrm{Neg}&\mathrm{Imp}&\mathrm{All}
\end{array} タグ 構成子 1 Var 2 Zero 3 Succ 4 Add 5 Mul 6 Eq 7 Neg 8 Imp 9 All
定義 1.1. §E19.17 定義 2.1 の有限列符号を用いて、構成子を次の全域関数で表す。
Var ( i ) = SeqCode ( 1 , i ) , Zero = SeqCode ( 2 ) , Succ ( t ) = SeqCode ( 3 , t ) , Add ( t , u ) = SeqCode ( 4 , t , u ) , Mul ( t , u ) = SeqCode ( 5 , t , u ) , Eq ( t , u ) = SeqCode ( 6 , t , u ) , NegRaw ( y ) = SeqCode ( 7 , y ) , ImpRaw ( y , z ) = SeqCode ( 8 , y , z ) , AllRaw ( i , y ) = SeqCode ( 9 , i , y ) . \begin{aligned}
\operatorname{Var}(i)&=\operatorname{SeqCode}(1,i),\\
\operatorname{Zero}&=\operatorname{SeqCode}(2),\\
\operatorname{Succ}(t)&=\operatorname{SeqCode}(3,t),\\
\operatorname{Add}(t,u)&=\operatorname{SeqCode}(4,t,u),\\
\operatorname{Mul}(t,u)&=\operatorname{SeqCode}(5,t,u),\\
\operatorname{Eq}(t,u)&=\operatorname{SeqCode}(6,t,u),\\
\operatorname{NegRaw}(y)&=\operatorname{SeqCode}(7,y),\\
\operatorname{ImpRaw}(y,z)&=\operatorname{SeqCode}(8,y,z),\\
\operatorname{AllRaw}(i,y)&=\operatorname{SeqCode}(9,i,y).
\end{aligned} Var ( i ) Zero Succ ( t ) Add ( t , u ) Mul ( t , u ) Eq ( t , u ) NegRaw ( y ) ImpRaw ( y , z ) AllRaw ( i , y ) = SeqCode ( 1 , i ) , = SeqCode ( 2 ) , = SeqCode ( 3 , t ) , = SeqCode ( 4 , t , u ) , = SeqCode ( 5 , t , u ) , = SeqCode ( 6 , t , u ) , = SeqCode ( 7 , y ) , = SeqCode ( 8 , y , z ) , = SeqCode ( 9 , i , y ) . 自然数y y y が項符号 (term code ) であるとは、Var、Zero、Succ、Add、Mul の規則から有限回で作られることをいう。自然数y y y が論理式符号 (formula code ) であるとは、項符号t , u t,u t , u に対する Eq( t , u ) (t,u) ( t , u ) から始め、NegRaw、ImpRaw、AllRaw により有限回で作られることをいう。
各構成子は Cons、固定長の有限列、および定数との合成なので原始再帰的である。定数タグを関数として用いる箇所では、単項ダミー定数関数C c ( x ) = c C_c(x)=c C c ( x ) = c を用いる。零項の自然数関数を初期関数へ追加したわけではない。
補題 1.2. 次の二つが成り立つ。
構文符号y y y の直下に現れる項または論理式の符号u u u はu < y u<y u < y を満たす。変数添字も、それを含む Var 符号より小さい。
項符号または論理式符号y y y に自由に現れる変数の添字i i i はi < y i<y i < y を満たす。これはy y y の直下に現れる添字だけでなく、入れ子の任意の深さに現れる自由な添字について成り立つ。
証明. 主張 (1) を示す。u u u はy y y を表す右入れ子の Cons 列の成分である。Cons ( a , t ) = 1 + pair ( a , t ) \operatorname{Cons}(a,t)=1+\operatorname{pair}(a,t) Cons ( a , t ) = 1 + pair ( a , t ) であり、pair ( a , t ) ≥ a , t \operatorname{pair}(a,t)\ge a,t pair ( a , t ) ≥ a , t なので、各成分と各尾は Cons 全体より小さい。外側のタグを含む Cons について同じ評価を行えばu < y u<y u < y を得る。Var の添字についても同じである。
主張 (2) を、y y y の構成に関する帰納法で示す。主張 (1) では直下の一段しか述べられていないので、入れ子の深さについての帰納法をここで別に行う。y = Var ( j ) y=\operatorname{Var}(j) y = Var ( j ) では、自由に現れる添字はj j j だけであり、主張 (1) によりj < y j<y j < y である。y = Zero y=\operatorname{Zero} y = Zero では自由に現れる添字が無い。
Succ、Add、Mul、Eq、NegRaw、ImpRaw では、y y y に自由に現れる添字i i i は直下の対象u u u のいずれかに自由に現れるので、帰納法の仮定によりi < u i<u i < u であり、主張 (1) のu < y u<y u < y と合わせてi < y i<y i < y である。y = AllRaw ( j , z ) y=\operatorname{AllRaw}(j,z) y = AllRaw ( j , z ) では、y y y に自由に現れる添字i i i はi ≠ j i\ne j i = j を満たしz z z に自由に現れるので、同じくi < z < y i<z<y i < z < y である。▨
2 項、論理式、文の判定
Free の再帰節は通常の構文定義そのものである。Var( j ) (j) ( j ) ではi = j i=j i = j 、Zero では偽、関数構成子と Eq、NegRaw、ImpRaw では直下の対象の選言を取る。
AllRaw( j , z ) (j,z) ( j , z ) ではi = j i=j i = j なら偽、i ≠ j i\ne j i = j なら Free( z , i ) (z,i) ( z , i ) とする。v i v_i v i がy y y に自由に現れるなら補題 1.2 (2) によりi < y i<y i < y なので、Sentence の有界全称量化の範囲i ≤ y i\le y i ≤ y は、y y y に自由に現れる変数の添字をすべて含む。
定理 2.2. Term、Formula、Free、Sentence は正のアリティをもつ原始再帰関係である。
証明. Len、Entry、等号、有限の場合分けは原始再帰的である。
Term、Formula、Free を一つの有限分岐評価へ具体化する。要求の種類を
Req T ( y ) , Req F ( y ) , Req f r e e ( y , i ) \operatorname{Req}_{\rm T}(y),\qquad
\operatorname{Req}_{\rm F}(y),\qquad
\operatorname{Req}_{\rm free}(y,i) Req T ( y ) , Req F ( y ) , Req free ( y , i ) の三つとし、階数をいずれもy y y とする。Term 要求では Succ に一つ、Add と Mul に二つの
Term 要求を子として割り当てる。Formula 要求では Eq に二つの Term 要求、NegRaw に一つの Formula 要求、
ImpRaw に二つの Formula 要求、AllRaw に一つの Formula 要求を割り当てる。Free 要求では、Var と Zero は子をもたず、各一項構成子に一つ、各二項構成子に二つの同じ添字i i i をもつ Free 要求を割り当てる。
AllRaw( j , z ) (j,z) ( j , z ) ではi = j i=j i = j なら子をもたず偽を返し、i ≠ j i\ne j i = j なら Reqf r e e ( z , i ) _{\rm free}(z,i) free ( z , i ) を唯一の子とする。親の結合関数はタグに応じて、子の特性値の連言または選言を取る。不正なタグでは子をもたず偽を返す。
子の個数は高々2 2 2 であり、すべての子の第1成分は補題 1.2 (1) によりy y y より小さい。要求の生成と親での結合は
Len、Entry、等号、および有限の場合分けから原始再帰的である。したがって§E19.17 補題 3.2 をK = 2 K=2 K = 2 で適用することができる。この適用では、
Eq の二つの Term 値、Add、Mul、ImpRaw の左右二つの値を同じ親が実際に受け取るため、一つの子の値だけを読む再帰に置き換えてはいない。
Sentence は Formula、Free、およびi ≤ y i\le y i ≤ y の有界全称量化の合成である。原始再帰関係は有界量化について閉じているため Sentence も原始再帰的である。▨
3 数詞と捕獲回避代入
定義 3.1 (数詞符号).
Num ( 0 ) = Zero , Num ( n + 1 ) = Succ ( Num ( n ) ) \operatorname{Num}(0)=\operatorname{Zero},
\qquad
\operatorname{Num}(n+1)=\operatorname{Succ}(\operatorname{Num}(n)) Num ( 0 ) = Zero , Num ( n + 1 ) = Succ ( Num ( n )) と定める。Num \operatorname{Num} Num を 数詞符号関数 (numeral-code function ) という。Num( n ) (n) ( n ) は数詞n ‾ \overline n n の項符号である。
Num はパラメータ列が空の原始再帰である。基底は自然数 Zero であり、再帰引数n n n が残るため Num は一変数関数である。
捕獲を避けるため、束縛変数の改名を記録する環境を用いる。環境E E E はpair ( i , j ) \operatorname{pair}(i,j) pair ( i , j ) の有限列である。E E E の最も左にあるpair ( i , j ) \operatorname{pair}(i,j) pair ( i , j ) を、現在有効な束縛v i v_i v i の新しい名前v j v_j v j と読む。第1成分がi i i である成分が一つも無ければ、v i v_i v i を未束縛とする。環境を先頭から調べてv i v_i v i の新しい名前を求める関数をLook \operatorname{Look} Look と書き、その原始再帰的定義列を次の一つに固定する。後続の記事では、原始再帰性だけでなく、この定義列が満たす等式を対象理論の内部で用いるからである。
定義 3.2 (環境の走査). 環境検索関数 (environment-lookup function )Look ( E , i ) \operatorname{Look}(E,i) Look ( E , i ) を、第2引数i i i をパラメータとし、第1引数E E E を再帰引数とする次のコース再帰で定める。
Look ( 0 , i ) = 0 , Look ( E , i ) = { S right ( Head ( E ) ) left ( Head ( E ) ) = i , Look ( Tail ( E ) , i ) それ以外 ( 0 < E ) \operatorname{Look}(0,i)=0,
\qquad
\operatorname{Look}(E,i)=
\begin{cases}
S\operatorname{right}(\operatorname{Head}(E))
&\operatorname{left}(\operatorname{Head}(E))=i,\\
\operatorname{Look}(\operatorname{Tail}(E),i)&\text{それ以外}
\end{cases}
\quad(0<E) Look ( 0 , i ) = 0 , Look ( E , i ) = { S right ( Head ( E )) Look ( Tail ( E ) , i ) left ( Head ( E )) = i , それ以外 ( 0 < E ) ここでleft \operatorname{left} left とright \operatorname{right} right は§E19.17 補題 1.2 の対関数の逆、Head \operatorname{Head} Head とTail \operatorname{Tail} Tail は§E19.17 定義 2.1 の先頭と尾である。
§E19.17 補題 1.2 のleft ( pair ( i , j ) ) = i \operatorname{left}(\operatorname{pair}(i,j))=i left ( pair ( i , j )) = i とright ( pair ( i , j ) ) = j \operatorname{right}(\operatorname{pair}(i,j))=j right ( pair ( i , j )) = j により、Look ( E , i ) \operatorname{Look}(E,i) Look ( E , i ) は、E E E の成分を先頭から順に調べ、第1成分がi i i に一致する最初の成分pair ( i , j ) \operatorname{pair}(i,j) pair ( i , j ) についてその第2成分j j j の後続者S j Sj S j を返し、一致する成分が一つも無ければ0 0 0 を返す。したがって「E E E がi i i の対応先をもつ」ことはLook ( E , i ) ≠ 0 \operatorname{Look}(E,i)\ne0 Look ( E , i ) = 0 と同値であり、そのときの対応先はLook ( E , i ) = S j \operatorname{Look}(E,i)=Sj Look ( E , i ) = S j を満たすj j j である。とくにLook ( 0 , i ) = 0 \operatorname{Look}(0,i)=0 Look ( 0 , i ) = 0 であり、Cons ( p , E ) \operatorname{Cons}(p,E) Cons ( p , E ) の先頭と尾がp p p とE E E であることから、Look ( Cons ( pair ( i ′ , j ) , E ) , i ) \operatorname{Look}\bigl(\operatorname{Cons}(\operatorname{pair}(i',j),E),i\bigr) Look ( Cons ( pair ( i ′ , j ) , E ) , i ) はi ′ = i i'=i i ′ = i のときS j Sj S j 、i ′ ≠ i i'\ne i i ′ = i のときLook ( E , i ) \operatorname{Look}(E,i) Look ( E , i ) に等しい。§E19.17 命題 2.2 により0 < E 0<E 0 < E のときTail ( E ) < E \operatorname{Tail}(E)<E Tail ( E ) < E が成り立つので、この再帰は§E19.17 補題 3.1 の形であり、Look \operatorname{Look} Look は正のアリティをもつ原始再帰全関数である。
定義 3.3. WalkTerm ( y , v , t , E ) \operatorname{WalkTerm}(y,v,t,E) WalkTerm ( y , v , t , E ) とWalkFormula ( y , v , t , E ) \operatorname{WalkFormula}(y,v,t,E) WalkFormula ( y , v , t , E ) (capture-avoiding substitution functions ) を次の構文再帰で定める。
Var( i ) (i) ( i ) では、Look ( E , i ) ≠ 0 \operatorname{Look}(E,i)\ne0 Look ( E , i ) = 0 ならばLook ( E , i ) = S j \operatorname{Look}(E,i)=Sj Look ( E , i ) = S j を満たすj j j について Var( j ) (j) ( j ) を返す。Look ( E , i ) = 0 \operatorname{Look}(E,i)=0 Look ( E , i ) = 0 かつi = v i=v i = v ならt t t 、Look ( E , i ) = 0 \operatorname{Look}(E,i)=0 Look ( E , i ) = 0 かつi ≠ v i\ne v i = v なら Var( i ) (i) ( i ) を返す。
Zero は Zero を返し、Succ、Add、Mul、Eq、NegRaw、ImpRaw は直下の対象へ同じ操作を適用して再構成する。
AllRaw( i , z ) (i,z) ( i , z ) では、次の三つがすべて成り立つときに限り
j = 1 + y + t + E + v + i j=1+y+t+E+v+i j = 1 + y + t + E + v + i
とし、それ以外の場合はj = i j=i j = i とする。
Look ( E , v ) = 0 \operatorname{Look}(E,v)=0 Look ( E , v ) = 0 であること、すなわちこの量化子より外側にv v v_v v v を束縛する量化子が無いことである。
i ≠ v i\ne v i = v であることである。
v i v_i v i がt t t に自由に現れ、かつv v v_v v v がz z z に自由に現れることである。
改名を発動する場合と発動しない場合のいずれにおいても、pair( i , j ) (i,j) ( i , j ) をE E E の先頭へ追加し、元の真部分符号z z z を一度だけ再帰的に処理して AllRaw( j , − ) (j,-) ( j , − ) を返す。
一般の項符号t t t による代入を
SubTermCode ( y , v , t ) = { WalkTerm ( y , v , t , 0 ) Term ( y ) ∧ Term ( t ) , WalkFormula ( y , v , t , 0 ) Formula ( y ) ∧ Term ( t ) , 0 それ以外 \operatorname{SubTermCode}(y,v,t)=
\begin{cases}
\operatorname{WalkTerm}(y,v,t,0)&\operatorname{Term}(y)\land\operatorname{Term}(t),\\
\operatorname{WalkFormula}(y,v,t,0)&\operatorname{Formula}(y)\land\operatorname{Term}(t),\\
0&\text{それ以外}
\end{cases} SubTermCode ( y , v , t ) = ⎩ ⎨ ⎧ WalkTerm ( y , v , t , 0 ) WalkFormula ( y , v , t , 0 ) 0 Term ( y ) ∧ Term ( t ) , Formula ( y ) ∧ Term ( t ) , それ以外 とする。下流で用いる数詞代入 API は
Sub ( y , v , n ) = SubTermCode ( y , v , Num ( n ) ) \operatorname{Sub}(y,v,n)
=\operatorname{SubTermCode}(y,v,\operatorname{Num}(n)) Sub ( y , v , n ) = SubTermCode ( y , v , Num ( n )) である。
選んだj j j はy , t , E , v , i y,t,E,v,i y , t , E , v , i より大きい。構文中のすべての変数添字はその構文符号より小さいので、v j v_j v j は対象y y y と代入項t t t のいずれにも現れない。環境E E E については、pair \operatorname{pair} pair が両引数以上の値を返し、Cons \operatorname{Cons} Cons が両引数より大きい値を返すことを用いる。E E E は右入れ子の Cons 列であるから、その各成分p p p はp < E p<E p < E を満たす。成分p = pair ( k , k ′ ) p=\operatorname{pair}(k,k') p = pair ( k , k ′ ) に現れる添字はk , k ′ ≤ p k,k'\le p k , k ′ ≤ p を満たすので、k , k ′ < E < j k,k'<E<j k , k ′ < E < j である。よってv j v_j v j は対象、代入項、現在の環境のいずれにも現れない新鮮変数である。Look \operatorname{Look} Look は環境を先頭から調べるので、同名の量化子が入れ子になった場合には最も内側の束縛が優先される。
改名の条件に条件 (3-a) と条件 (3-b) を置くのは、その量化子の下で実際に代入が起こる場合に限って改名する ためである。条件 (3-b) が破れる場合、すなわちi = v i=v i = v の場合、v v v_v v v は AllRaw( i , z ) (i,z) ( i , z ) に自由に現れず、この部分符号のどこにもt t t は入らない。条件 (3-a) が破れる場合、すなわち外側にすでにv v v_v v v の束縛がある場合も、z z z に現れるv v v_v v v はその束縛に属するのでt t t は入らない。どちらの場合にも捕獲は起こり得ないので、改名は不要である。これらの場合にも pair( i , j ) (i,j) ( i , j ) をj = i j=i j = i として環境へ追加するため、i = v i=v i = v のときは更新後の環境E ′ = Cons ( pair ( i , i ) , E ) E'=\operatorname{Cons}(\operatorname{pair}(i,i),E) E ′ = Cons ( pair ( i , i ) , E ) についてLook ( E ′ , v ) \operatorname{Look}(E',v) Look ( E ′ , v ) がS i Si S i を返す。そのため、z z z の中のv v v_v v v は代入対象ではなく束縛出現として扱われる。i = v i=v i = v のときに改名を発動させると、AllRaw ( i , z ) \operatorname{AllRaw}(i,z) AllRaw ( i , z ) を返すべき場合にAllRaw ( j , − ) \operatorname{AllRaw}(j,-) AllRaw ( j , − ) (j ≠ i j\ne i j = i )を返すことになる。そのため、代入対象が自由に現れない論理式を代入が変えないという性質が破れる。
定理 3.4. Num、SubTermCode、および Sub は正のアリティをもつ原始再帰全関数である。整形式入力では SubTermCode が名前付き構文に対する捕獲回避代入の符号を返し、Sub( y , v , n ) (y,v,n) ( y , v , n ) は自由なv v v_v v v へ数詞n ‾ \overline n n を代入した符号を返す。
証明. Num は表示した通常の原始再帰で得る。環境の走査Look \operatorname{Look} Look は、定義 3.2 が固定したとおり、0 < E 0<E 0 < E についてTail ( E ) < E \operatorname{Tail}(E)<E Tail ( E ) < E を減少量とするコース再帰であり、§E19.17 補題 3.1 により原始再帰的である。親節で用いるHead \operatorname{Head} Head 、left \operatorname{left} left 、right \operatorname{right} right 、等号判定、および有限の場合分けはいずれも原始再帰的である。新鮮変数j j j の計算、環境への Cons、Free の判定、および各構成子も原始再帰的である。
WalkTerm と WalkFormula を
Req W T ( y , v , t , E ) , Req W F ( y , v , t , E ) \operatorname{Req}_{\rm WT}(y,v,t,E),\qquad
\operatorname{Req}_{\rm WF}(y,v,t,E) Req WT ( y , v , t , E ) , Req WF ( y , v , t , E ) という二種類の要求として、階数y y y 、最大子数K = 2 K=2 K = 2 の有限分岐評価へ移す。
Succ、NegRaw、AllRaw は一つ、Add、Mul、Eq、ImpRaw は左右二つの要求を子にもつ。二項構成子の左右の子は同じv , t , E v,t,E v , t , E を受け取り、親の結合関数は返った二つの値から構成子を再構成する。
AllRaw( i , z ) (i,z) ( i , z ) では、表示した原始再帰的な場合分けでj j j を計算する。改名を発動させる三条件は、Look ( E , v ) = 0 \operatorname{Look}(E,v)=0 Look ( E , v ) = 0 という零判定、i ≠ v i\ne v i = v という等号判定、および Free の二つの判定の連言である。Look \operatorname{Look} Look は上で見たとおり原始再帰的であり、等号判定と零判定は原始再帰的で、Free は定理 2.2 により原始再帰的である。したがって、この場合分けを加えても親節は原始再帰関数の合成のままであり、原始再帰性は壊れない。このj j j から
E ′ = Cons ( pair ( i , j ) , E ) E'=\operatorname{Cons}(\operatorname{pair}(i,j),E) E ′ = Cons ( pair ( i , j ) , E ) を作り、ReqW F ( z , v , t , E ′ ) _{\rm WF}(z,v,t,E') WF ( z , v , t , E ′ ) を唯一の子とする。親はその子の値b b b から
AllRaw( j , b ) (j,b) ( j , b ) を返す。したがって、再帰的に呼び出される第1成分は常に元の構文y y y の真部分符号である一方、補助環境は親のE E E ではなく更新済みのE ′ E' E ′ でよい。改名後の構文全体を再帰引数にしないため、z < y z<y z < y という階数の減少も保たれる。
要求の生成と親の結合は原始再帰的であるから、§E19.17 補題 3.2 を適用すると、有限スタックの接頭トレースを長さに関する通常の原始再帰で作ることができる。これにより、二つの子の値と再帰呼出しごとの環境変更をともに扱った
WalkTerm と WalkFormula が原始再帰的になる。不正入力を零判定と場合分けで0 0 0 へ送れば全域性も保たれる。
正しさは元の構文y y y に関する構造帰納法で示す。変数の場合、環境にある変数は束縛出現として改名され、環境にないv v v_v v v だけがt t t へ置き換わる。各関数・論理結合子では帰納法の仮定を各直下の対象へ適用する。例えば Add と ImpRaw では、左右二つの子要求がそれぞれの変換値を返し、親がその二値を同じ構成子へ戻す。量化子∀ v i θ \forall v_i\,\theta ∀ v i θ では、改名の三条件のいずれかが破れる場合に名前を保つ。外側にすでにv v v_v v v の束縛がある場合(定義 3.3 条件 (3-a) が破れる場合)とi = v i=v i = v の場合(定義 3.3 条件 (3-b) が破れる場合)には、θ \theta θ の中のv v v_v v v の出現がすべて束縛出現でありt t t が入らないので、捕獲は起こり得ない。束縛変数がt t t に自由に現れない場合、または置換対象が本体に自由に現れない場合(定義 3.3 条件 (3-c) が破れる場合)も同様である。捕獲が実際に起こり得る場合だけ、どこにも現れないv j v_j v j へ束縛とその束縛出現を同時に改名するため、t t t の自由変数は捕獲されない。同名の量化子∀ v i ∀ v i θ \forall v_i\forall v_i\,\theta ∀ v i ∀ v i θ では、内側で追加した pair( i , j ′ ) (i,j') ( i , j ′ ) が環境の先頭にあり、外側の pair( i , j ) (i,j) ( i , j ) を遮断する。さらにLook ( E , v ) = 0 \operatorname{Look}(E,v)=0 Look ( E , v ) = 0 、i ≠ v i\ne v i = v 、v i v_i v i がt t t に自由に現れ、v v v_v v v がθ \theta θ に自由に現れる∀ v i θ \forall v_i\,\theta ∀ v i θ では、子要求だけがE ′ E' E ′ を受け取るため、結果は∀ v j θ ′ \forall v_j\,\theta' ∀ v j θ ′ となり、t t t に由来する自由なv i v_i v i は束縛されない。よって得た符号は捕獲回避代入の結果である。▨
4 否定、含意、公理例
定義 4.1 (全域構文操作 Neg と Imp).
Neg ( y ) = { NegRaw ( y ) Formula ( y ) , 0 それ以外 , Imp ( y , z ) = { ImpRaw ( y , z ) Formula ( y ) ∧ Formula ( z ) , 0 それ以外 . \begin{aligned}
\operatorname{Neg}(y)&=
\begin{cases}\operatorname{NegRaw}(y)&\operatorname{Formula}(y),\\0&\text{それ以外},\end{cases}\\
\operatorname{Imp}(y,z)&=
\begin{cases}\operatorname{ImpRaw}(y,z)&\operatorname{Formula}(y)\land\operatorname{Formula}(z),\\0&\text{それ以外}.\end{cases}
\end{aligned} Neg ( y ) Imp ( y , z ) = { NegRaw ( y ) 0 Formula ( y ) , それ以外 , = { ImpRaw ( y , z ) 0 Formula ( y ) ∧ Formula ( z ) , それ以外 . Neg \operatorname{Neg} Neg を 全域否定符号関数 (total negation-code function ) 、Imp \operatorname{Imp} Imp を 全域含意符号関数 (total implication-code function ) という。
Neg と Imp は構成子、構文判定、および有限の場合分けの合成なので原始再帰全関数である。
算術言語L A L_A L A の Hilbert 型体系をここで局所的に固定する。論理式符号a , b , c a,b,c a , b , c に対する命題公理は、次の三つの構文木パターンである。
H 1 ( a , b ) = ImpRaw ( a , ImpRaw ( b , a ) ) , H 2 ( a , b , c ) = ImpRaw ( ImpRaw ( a , ImpRaw ( b , c ) ) , ImpRaw ( ImpRaw ( a , b ) , ImpRaw ( a , c ) ) ) , H 3 ( a , b ) = ImpRaw ( ImpRaw ( NegRaw ( b ) , NegRaw ( a ) ) , ImpRaw ( a , b ) ) . \begin{aligned}
\mathrm{H1}(a,b)&=\operatorname{ImpRaw}(a,\operatorname{ImpRaw}(b,a)),\\
\mathrm{H2}(a,b,c)&=\operatorname{ImpRaw}\bigl(
\operatorname{ImpRaw}(a,\operatorname{ImpRaw}(b,c)),
\operatorname{ImpRaw}(\operatorname{ImpRaw}(a,b),\operatorname{ImpRaw}(a,c))\bigr),\\
\mathrm{H3}(a,b)&=\operatorname{ImpRaw}\bigl(
\operatorname{ImpRaw}(\operatorname{NegRaw}(b),\operatorname{NegRaw}(a)),
\operatorname{ImpRaw}(a,b)\bigr).
\end{aligned} H1 ( a , b ) H2 ( a , b , c ) H3 ( a , b ) = ImpRaw ( a , ImpRaw ( b , a )) , = ImpRaw ( ImpRaw ( a , ImpRaw ( b , c )) , ImpRaw ( ImpRaw ( a , b ) , ImpRaw ( a , c )) ) , = ImpRaw ( ImpRaw ( NegRaw ( b ) , NegRaw ( a )) , ImpRaw ( a , b ) ) .
連言と双条件を原始構成子へ展開した符号を
AndCode ( a , b ) = NegRaw ( ImpRaw ( a , NegRaw ( b ) ) ) , IffCode ( a , b ) = AndCode ( ImpRaw ( a , b ) , ImpRaw ( b , a ) ) \begin{aligned}
\operatorname{AndCode}(a,b)
&=\operatorname{NegRaw}(\operatorname{ImpRaw}(a,\operatorname{NegRaw}(b))),\\
\operatorname{IffCode}(a,b)
&=\operatorname{AndCode}(\operatorname{ImpRaw}(a,b),\operatorname{ImpRaw}(b,a))
\end{aligned} AndCode ( a , b ) IffCode ( a , b ) = NegRaw ( ImpRaw ( a , NegRaw ( b ))) , = AndCode ( ImpRaw ( a , b ) , ImpRaw ( b , a ))
と定める。またe 0 = Eq ( Zero , Zero ) e_0=\operatorname{Eq}(\operatorname{Zero},\operatorname{Zero}) e 0 = Eq ( Zero , Zero ) と置き、空連言の符号を
Top A = ImpRaw ( e 0 , e 0 ) \operatorname{Top}_A=\operatorname{ImpRaw}(e_0,e_0) Top A = ImpRaw ( e 0 , e 0 )
に固定する。したがって、零項関数0 0 0 の合同公理でも空連言を省略せず、この一つの符号を前件として用いる。
項t t t が論理式φ \varphi φ の変数v i v_i v i へ自由に代入可能 であることを FreeFor( t , i , φ ) (t,i,\varphi) ( t , i , φ ) と書く。原子式では真とし、否定と含意では直下の論理式の条件を取る。∀ v j ψ \forall v_j\psi ∀ v j ψ では、j = i j=i j = i なら真、j ≠ i j\ne i j = i なら
FreeFor ( t , i , ψ ) ∧ ( ¬ Free ( ψ , i ) ∨ ¬ Free ( t , j ) ) \operatorname{FreeFor}(t,i,\psi)\land
\bigl(\neg\operatorname{Free}(\psi,i)\lor\neg\operatorname{Free}(t,j)\bigr) FreeFor ( t , i , ψ ) ∧ ( ¬ Free ( ψ , i ) ∨ ¬ Free ( t , j ) )
とする。この判定を Reqf f ( t , i , φ ) _{\rm ff}(t,i,\varphi) ff ( t , i , φ ) という要求で表し、階数をφ \varphi φ の符号とする。否定と量化には高々一つ、含意には左右二つの子要求を割り当て、親で表示した連言を取る。子の論理式符号は真部分符号であり、その階数は親の階数より真に小さいので、§E19.17 補題 3.2 をK = 2 K=2 K = 2 で適用することができる。したがって FreeFor も原始再帰的である。
以下で§E19.10 定義 1.1 (H1) –§E19.10 定義 1.1 (H3) 、§E19.10 定義 1.1 (Q1) 、§E19.10 定義 1.1 (Q2) と書くのは§E19.10 定義 1.1 で定められた一階 Hilbert 系の論理公理スキーマであり、Robinson 算術Q Q Q の公理§E19.15 定義 2.1 (Q1) –§E19.15 定義 2.1 (Q7) とは別のものである。名前が重なるのは量化子の二つの公理スキーマだけなので、以下ではこの二つの公理スキーマを全称具体化の公理 §E19.10 定義 1.1 (Q1) と全称分配の公理 §E19.10 定義 1.1 (Q2) と呼び、どちらの体系の公理であるかを明示する。
定義 4.2. LogAx ( y ) \operatorname{LogAx}(y) LogAx ( y ) (logical-axiom instance predicate ) は、以下の有限個のコードパターンのいずれかへ一致することを表す。表示する小文字の式符号には Formula、項符号には Term を要求し、同じ文字を置いた位置では同じ自然数符号を要求する。
y = H 1 ( a , b ) y=\mathrm{H1}(a,b) y = H1 ( a , b ) 、y = H 2 ( a , b , c ) y=\mathrm{H2}(a,b,c) y = H2 ( a , b , c ) 、またはy = H 3 ( a , b ) y=\mathrm{H3}(a,b) y = H3 ( a , b ) である。
次の三つをすべて満たすi , t , a , b ≤ y i,t,a,b\le y i , t , a , b ≤ y が存在する。
y = ImpRaw ( AllRaw ( i , a ) , b ) , FreeFor ( t , i , a ) , b = SubTermCode ( a , i , t ) y=\operatorname{ImpRaw}(\operatorname{AllRaw}(i,a),b),
\quad
\operatorname{FreeFor}(t,i,a),
\quad
b=\operatorname{SubTermCode}(a,i,t) y = ImpRaw ( AllRaw ( i , a ) , b ) , FreeFor ( t , i , a ) , b = SubTermCode ( a , i , t )
これは全称具体化の公理§E19.10 定義 1.1 (Q1) の∀ v i φ → φ [ v i : = t ] \forall v_i\varphi\to\varphi[v_i:=t] ∀ v i φ → φ [ v i := t ] を表す。
次の等式と¬ Free ( a , i ) \neg\operatorname{Free}(a,i) ¬ Free ( a , i ) をともに満たすi , a , b ≤ y i,a,b\le y i , a , b ≤ y が存在する。
y = ImpRaw ( AllRaw ( i , ImpRaw ( a , b ) ) , ImpRaw ( a , AllRaw ( i , b ) ) ) y=\operatorname{ImpRaw}\bigl(
\operatorname{AllRaw}(i,\operatorname{ImpRaw}(a,b)),
\operatorname{ImpRaw}(a,\operatorname{AllRaw}(i,b))\bigr) y = ImpRaw ( AllRaw ( i , ImpRaw ( a , b )) , ImpRaw ( a , AllRaw ( i , b )) )
これは全称分配の公理§E19.10 定義 1.1 (Q2) を表す。
y = Eq ( t , t ) y=\operatorname{Eq}(t,t) y = Eq ( t , t ) を満たす項符号t t t が存在する。
0 , S , + , × 0,S,+,\times 0 , S , + , × の合同公理として、次のいずれかである。
y = ImpRaw ( Top A , Eq ( Zero , Zero ) ) , y = ImpRaw ( Eq ( t , u ) , Eq ( Succ ( t ) , Succ ( u ) ) ) , y = ImpRaw ( AndCode ( Eq ( t 1 , u 1 ) , Eq ( t 2 , u 2 ) ) , Eq ( Add ( t 1 , t 2 ) , Add ( u 1 , u 2 ) ) ) , y = ImpRaw ( AndCode ( Eq ( t 1 , u 1 ) , Eq ( t 2 , u 2 ) ) , Eq ( Mul ( t 1 , t 2 ) , Mul ( u 1 , u 2 ) ) ) . \begin{aligned}
y={}&\operatorname{ImpRaw}(\operatorname{Top}_A,
\operatorname{Eq}(\operatorname{Zero},\operatorname{Zero})),\\
y={}&\operatorname{ImpRaw}(\operatorname{Eq}(t,u),
\operatorname{Eq}(\operatorname{Succ}(t),\operatorname{Succ}(u))),\\
y={}&\operatorname{ImpRaw}\bigl(
\operatorname{AndCode}(\operatorname{Eq}(t_1,u_1),\operatorname{Eq}(t_2,u_2)),
\operatorname{Eq}(\operatorname{Add}(t_1,t_2),\operatorname{Add}(u_1,u_2))\bigr),\\
y={}&\operatorname{ImpRaw}\bigl(
\operatorname{AndCode}(\operatorname{Eq}(t_1,u_1),\operatorname{Eq}(t_2,u_2)),
\operatorname{Eq}(\operatorname{Mul}(t_1,t_2),\operatorname{Mul}(u_1,u_2))\bigr).
\end{aligned} y = y = y = y = ImpRaw ( Top A , Eq ( Zero , Zero )) , ImpRaw ( Eq ( t , u ) , Eq ( Succ ( t ) , Succ ( u ))) , ImpRaw ( AndCode ( Eq ( t 1 , u 1 ) , Eq ( t 2 , u 2 )) , Eq ( Add ( t 1 , t 2 ) , Add ( u 1 , u 2 )) ) , ImpRaw ( AndCode ( Eq ( t 1 , u 1 ) , Eq ( t 2 , u 2 )) , Eq ( Mul ( t 1 , t 2 ) , Mul ( u 1 , u 2 )) ) .
等号を二項関係として扱う合同公理
y = ImpRaw ( AndCode ( Eq ( t 1 , u 1 ) , Eq ( t 2 , u 2 ) ) , IffCode ( Eq ( t 1 , t 2 ) , Eq ( u 1 , u 2 ) ) ) y=\operatorname{ImpRaw}\bigl(
\operatorname{AndCode}(\operatorname{Eq}(t_1,u_1),\operatorname{Eq}(t_2,u_2)),
\operatorname{IffCode}(\operatorname{Eq}(t_1,t_2),\operatorname{Eq}(u_1,u_2))\bigr) y = ImpRaw ( AndCode ( Eq ( t 1 , u 1 ) , Eq ( t 2 , u 2 )) , IffCode ( Eq ( t 1 , t 2 ) , Eq ( u 1 , u 2 )) )
である。
(2) では Term( t ) (t) ( t ) 、(4) から(6) では表示したすべての項符号に Term を要求する。各場合で最外タグ、有限列の長さ、各成分、および必要な同一性を照合するので、ここに表示していない公理スキーマは LogAx に含めない。
命題 4.3. LogAx は原始再帰関係である。
証明. §E19.10 定義 1.1 (H1) –§E19.10 定義 1.1 (H3) は三つ、全称分配の公理§E19.10 定義 1.1 (Q2) は一つの構文木パターンであり、構成子タグ、固定された有限列の長さ、および繰り返し現れる成分符号の等号を有限回検査すればよい。全称分配の公理§E19.10 定義 1.1 (Q2) の変数条件は、原始再帰関係 Free の否定である。
全称具体化の公理§E19.10 定義 1.1 (Q1) ではi , a , b i,a,b i , a , b をy y y の成分から取得し、候補項t ≤ y t\le y t ≤ y を有界探索する。v i v_i v i がa a a に自由に現れる場合、置換結果b b b にt t t が部分項として現れるのでt < y t<y t < y である。v i v_i v i が自由に現れない場合は置換結果がa a a と一致する。この場合、a a a の原子部分式に現れる任意の項を候補に取ることができ、その項符号はa a a の真部分符号なのでy y y より小さい。したがって有界探索はすべての場合を含む。各候補について Term( t ) (t) ( t ) 、FreeFor( t , i , a ) (t,i,a) ( t , i , a ) 、およびb = SubTermCode ( a , i , t ) b=\operatorname{SubTermCode}(a,i,t) b = SubTermCode ( a , i , t ) を検査する。FreeFor は、最大二個の真部分式へ進む直前の有限分岐コース再帰で構成されており、Formula、Free、および有限の場合分けだけを親節で用いるため原始再帰的である。
L A L_A L A の非論理記号は0 , S , + , × 0,S,+,\times 0 , S , + , × の四個で、項数はそれぞれ0 , 1 , 2 , 2 0,1,2,2 0 , 1 , 2 , 2 に固定されている。反射律、四つの関数合同、および一つの等号関係合同は、定義に列挙した有限個のパターンだけである。AndCode、IffCode、TopA _A A は固定構成子の合成であり、零項の場合にも追加の探索を要しない。各項位置の Term と構文上の等号を検査すればよい。
原始再帰関係は有限選言、有限連言、否定、および有界存在量化について閉じている。以上の全場合を有限選言で結ぶと LogAx が原始再帰的になる。▨
上の証明で与えた構成を、LogAx \operatorname{LogAx} LogAx の原始再帰的定義列として次の一つに固定する。後続の記事では、原始再帰性だけでなく、この定義列が満たす等式を対象理論の内部で用いるからである。
定義 4.4 (論理公理例の判定の原始再帰的定義列). 定義 4.2 で並べた6節のそれぞれについて、命題 4.3 の証明で挙げた検査、すなわち構成子タグと有限列の長さと各成分の照合、繰り返し現れる成分符号の等号、Formula \operatorname{Formula} Formula 、Term \operatorname{Term} Term 、Free \operatorname{Free} Free 、FreeFor \operatorname{FreeFor} FreeFor 、SubTermCode \operatorname{SubTermCode} SubTermCode の値による条件、およびy y y で押さえた有界探索の合成として、その節への一致を表す関係の特性関数を定める。Formula \operatorname{Formula} Formula は、同定義で冒頭に表示される小文字の式符号へ課す検査であり、定義 4.2 (1) から定義 4.2 (3) のa , b , c a,b,c a , b , c がこれにあたる。定義列は、これら6個の特性関数の定義列を節の番号の順に並べ、最終段でそれらの有限選言を取るものとする。この定義列を 論理公理例判定の原始再帰的定義列 (primitive-recursive definition sequence for logical-axiom instances ) という。
定義列の最終段では、6節のいずれかへの一致からLogAx ( y ) \operatorname{LogAx}(y) LogAx ( y ) を導く合成の等式を定める。個別に与えた符号についてLogAx \operatorname{LogAx} LogAx の成立を対象理論の内部で示すときは、当該の節の条件を確かめたうえで、この最終段の等式を用いる。
5 導出と証明列
証明の一行を
Line ( k , y , p , q , i ) = SeqCode ( k , y , p , q , i ) \operatorname{Line}(k,y,p,q,i)=\operatorname{SeqCode}(k,y,p,q,i) Line ( k , y , p , q , i ) = SeqCode ( k , y , p , q , i )
と符号化する。k k k は規則タグ、y y y はその行の論理式、p , q p,q p , q は先行行の添字、i i i は一般化する変数の添字である。規則タグを1 = 1= 1 = LogAx、2 = 2= 2 = 理論公理、3 = 3= 3 = modus ponens、4 = 4= 4 = 一般化と固定する。未使用欄には0 0 0 を入れる。Line の各成分取得は原始再帰的である。
定義 5.1. A ( y ) A(y) A ( y ) を原始再帰的な述語とし、A ( y ) → Sentence ( y ) A(y)\to\operatorname{Sentence}(y) A ( y ) → Sentence ( y ) をすべてのy y y について仮定する。有限列P P P の第r r r 成分ℓ r \ell_r ℓ r が長さ5 5 5 の Line 符号であることを要求し、その五成分を
ℓ r = Line ( k r , y r , p r , q r , i r ) \ell_r=\operatorname{Line}(k_r,y_r,p_r,q_r,i_r) ℓ r = Line ( k r , y r , p r , q r , i r ) とする。一般化行の変数条件を表す有界述語を
GenOK A ( P , r , i ) ⟺ ∀ s < r ( k s = 2 → ¬ Free ( y s , i ) ) \operatorname{GenOK}_A(P,r,i)\quad\Longleftrightarrow\quad
\forall s<r\,(k_s=2\to\neg\operatorname{Free}(y_s,i)) GenOK A ( P , r , i ) ⟺ ∀ s < r ( k s = 2 → ¬ Free ( y s , i )) と定める。ProofSeq A ( P ) \operatorname{ProofSeq}_A(P) ProofSeq A ( P ) (proof-sequence predicate ) は、各r < Len ( P ) r<\operatorname{Len}(P) r < Len ( P ) について Formula( y r ) (y_r) ( y r ) かつ、行ℓ r \ell_r ℓ r が次のいずれかのタグ付きパターンへ一致することを表す。
k r = 1 k_r=1 k r = 1 、LogAx( y r ) (y_r) ( y r ) 、p r = q r = i r = 0 p_r=q_r=i_r=0 p r = q r = i r = 0 である。
k r = 2 k_r=2 k r = 2 、A ( y r ) A(y_r) A ( y r ) 、p r = q r = i r = 0 p_r=q_r=i_r=0 p r = q r = i r = 0 である。
k r = 3 k_r=3 k r = 3 、p r , q r < r p_r,q_r<r p r , q r < r 、i r = 0 i_r=0 i r = 0 であり、次の二つの等式をともに満たす論理式符号a a a が存在する。
y p r = ImpRaw ( a , y r ) , y q r = a y_{p_r}=\operatorname{ImpRaw}(a,y_r),
\qquad
y_{q_r}=a y p r = ImpRaw ( a , y r ) , y q r = a
k r = 4 k_r=4 k r = 4 、p r < r p_r<r p r < r 、q r = 0 q_r=0 q r = 0 、y r = AllRaw ( i r , y p r ) y_r=\operatorname{AllRaw}(i_r,y_{p_r}) y r = AllRaw ( i r , y p r ) 、および GenOKA ( P , r , i r ) _A(P,r,i_r) A ( P , r , i r ) が成り立つ。
末尾関数を
End ( P ) = { y Len ( P ) − 1 Len ( P ) > 0 , 0 Len ( P ) = 0 \operatorname{End}(P)=
\begin{cases}
y_{\operatorname{Len}(P)-1}&\operatorname{Len}(P)>0,\\
0&\operatorname{Len}(P)=0
\end{cases} End ( P ) = { y Len ( P ) − 1 0 Len ( P ) > 0 , Len ( P ) = 0 とする。Deriv A ( P , y ) \operatorname{Deriv}_A(P,y) Deriv A ( P , y ) (derivation predicate ) はProofSeq A ( P ) ∧ End ( P ) = y \operatorname{ProofSeq}_A(P)\land\operatorname{End}(P)=y ProofSeq A ( P ) ∧ End ( P ) = y と定める。
LogAx の行は論理公理であり、一般化規則の前提依存条件へ入らない。タグ2 2 2 の行だけが理論A A A に由来するが、A ( y ) → Sentence ( y ) A(y)\to\operatorname{Sentence}(y) A ( y ) → Sentence ( y ) なので、任意のi i i について¬ Free ( y , i ) \neg\operatorname{Free}(y,i) ¬ Free ( y , i ) である。したがって GenOKA _A A は本記事の対象では常に成り立つ。この有界条件を第4のタグパターンに明示したことにより、一般化条件を省略したのではなく、文公理だけからなる理論証明へ特殊化したことをコード上でも確認することができる。
本記事の ProofSeqA _A A は、文公理をもつ理論における定理証明だけを扱う。自由変数を含む任意の仮定からの導出には、各行の依存前提集合を符号化する別の API が必要である。本記事では、その拡張を定義しない。
定理 5.2. Term、Formula、Sentence、Free、FreeFor、Sub、Neg、Imp、LogAx、GenOKA _A A 、および End は原始再帰的である。さらにA A A が原始再帰的な文符号の述語なら ProofSeqA _A A と DerivA _A A も原始再帰的である。不正な自然数に対して、構文述語は偽、構文を返す関数と End は0 0 0 を返す。
証明. Term、Formula、Sentence、Free は定理 2.2 、FreeFor はその直前のコース再帰、
Sub は定理 3.4 、Neg と Imp は構成子と場合分け、LogAx は命題 4.3 により原始再帰的である。
End は Len、切捨て減法、Entry、行の固定成分取得、および零判定の合成である。
GenOKA _A A は、s < r s<r s < r の有界全称量化、規則タグの等号、および Free の否定からなるので原始再帰的である。
ProofSeqA _A A の各行条件はk r ∈ { 1 , 2 , 3 , 4 } k_r\in\{1,2,3,4\} k r ∈ { 1 , 2 , 3 , 4 } の有限場合分けである。タグ1 1 1 と2 2 2 では LogAx またはA A A と未使用欄の零を検査する。タグ3 3 3 ではp r , q r < r p_r,q_r<r p r , q r < r と先行行の式符号を取得し、ImpRaw の固定タグ、長さ、左右成分を照合する。タグ4 4 4 ではp r < r p_r<r p r < r 、AllRaw の固定タグと成分、および GenOKA _A A を照合する。各検査は原始再帰的であり、r < Len ( P ) r<\operatorname{Len}(P) r < Len ( P ) の有界全称量化も原始再帰性を保つ。
DerivA _A A は ProofSeqA _A A と End の等式の連言である。
この証明は「構文を符号化することができる」という存在主張だけに依存していない。各述語のタグ照合、各再帰で参照する真部分符号の減少、代入時の環境更新、各証明行の先行添字検査を具体的に構成した。▨
6 演習
問題 6.1.
項符号の最小値と論理式符号の最小値を求めよ。
z = Eq ( Var ( 0 ) , Var ( 1 ) ) z=\operatorname{Eq}(\operatorname{Var}(0),\operatorname{Var}(1)) z = Eq ( Var ( 0 ) , Var ( 1 )) 、y = AllRaw ( 1 , z ) y=\operatorname{AllRaw}(1,z) y = AllRaw ( 1 , z ) 、t = Var ( 1 ) t=\operatorname{Var}(1) t = Var ( 1 ) とする。WalkFormula ( y , 0 , t , 0 ) \operatorname{WalkFormula}(y,0,t,0) WalkFormula ( y , 0 , t , 0 ) とWalkFormula ( y , 1 , t , 0 ) \operatorname{WalkFormula}(y,1,t,0) WalkFormula ( y , 1 , t , 0 ) を、y y y を用いた式で求めよ。ここでVar ( 1 ) = 9 \operatorname{Var}(1)=9 Var ( 1 ) = 9 である。
Sentence ( y ) \operatorname{Sentence}(y) Sentence ( y ) ならば、すべてのv , n v,n v , n についてSub ( y , v , n ) = y \operatorname{Sub}(y,v,n)=y Sub ( y , v , n ) = y であることを証明せよ。
e e e を一変数の原始再帰関数とし、すべてのn n n についてSentence ( e ( n ) ) \operatorname{Sentence}(e(n)) Sentence ( e ( n )) が成り立つとする。And ( x , w ) = Neg ( Imp ( x , Neg ( w ) ) ) \operatorname{And}(x,w)=\operatorname{Neg}(\operatorname{Imp}(x,\operatorname{Neg}(w))) And ( x , w ) = Neg ( Imp ( x , Neg ( w ))) とおき、C ( a , 0 ) = a C(a,0)=a C ( a , 0 ) = a 、C ( a , n + 1 ) = And ( C ( a , n ) , a ) C(a,n+1)=\operatorname{And}(C(a,n),a) C ( a , n + 1 ) = And ( C ( a , n ) , a ) と定める。述語A ′ ( y ) A'(y) A ′ ( y ) を「あるn n n についてy = C ( e ( n ) , n ) y=C(e(n),n) y = C ( e ( n ) , n ) 」と定めると、A ′ A' A ′ が原始再帰的であることを示せ。さらに、符号e ( n ) e(n) e ( n ) が表す文の全体を公理とする理論と、A ′ A' A ′ を満たす符号が表す文の全体を公理とする理論について、同じ文が導出されることを示せ。
解答 (確認問題の解答).
pair ( a , b ) = T a + b + b \operatorname{pair}(a,b)=T_{a+b}+b pair ( a , b ) = T a + b + b は各引数について狭義単調増加であるから、Cons \operatorname{Cons} Cons とSeqCode \operatorname{SeqCode} SeqCode も各成分について狭義単調増加である。Zero = Cons ( 2 , 0 ) = 1 + pair ( 2 , 0 ) = 4 \operatorname{Zero}=\operatorname{Cons}(2,0)=1+\operatorname{pair}(2,0)=4 Zero = Cons ( 2 , 0 ) = 1 + pair ( 2 , 0 ) = 4 であり、Var ( i ) ≥ Var ( 0 ) = Cons ( 1 , Cons ( 0 , 0 ) ) = Cons ( 1 , 1 ) = 1 + pair ( 1 , 1 ) = 5 \operatorname{Var}(i)\geq\operatorname{Var}(0)=\operatorname{Cons}(1,\operatorname{Cons}(0,0))=\operatorname{Cons}(1,1)=1+\operatorname{pair}(1,1)=5 Var ( i ) ≥ Var ( 0 ) = Cons ( 1 , Cons ( 0 , 0 )) = Cons ( 1 , 1 ) = 1 + pair ( 1 , 1 ) = 5 である。Succ、Add、Mul の値は補題 1.2 (1) により直下の項符号より大きい。したがって、項符号の構成に関する帰納法により、すべての項符号は4 4 4 以上であり、4 = Zero 4=\operatorname{Zero} 4 = Zero は項符号であるから、項符号の最小値は4 4 4 である。
論理式符号は Eq( t , u ) (t,u) ( t , u ) から始めて NegRaw、ImpRaw、AllRaw で作られ、これらの値は直下の論理式符号より大きい。Eq( t , u ) = SeqCode ( 6 , t , u ) (t,u)=\operatorname{SeqCode}(6,t,u) ( t , u ) = SeqCode ( 6 , t , u ) はt , u ≥ 4 t,u\geq4 t , u ≥ 4 について単調であるから、Eq( t , u ) ≥ Eq ( 4 , 4 ) (t,u)\geq\operatorname{Eq}(4,4) ( t , u ) ≥ Eq ( 4 , 4 ) である。Cons ( 4 , 0 ) = 1 + pair ( 4 , 0 ) = 11 \operatorname{Cons}(4,0)=1+\operatorname{pair}(4,0)=11 Cons ( 4 , 0 ) = 1 + pair ( 4 , 0 ) = 11 、Cons ( 4 , 11 ) = 1 + pair ( 4 , 11 ) = 1 + 120 + 11 = 132 \operatorname{Cons}(4,11)=1+\operatorname{pair}(4,11)=1+120+11=132 Cons ( 4 , 11 ) = 1 + pair ( 4 , 11 ) = 1 + 120 + 11 = 132 、Cons ( 6 , 132 ) = 1 + pair ( 6 , 132 ) = 1 + 9591 + 132 = 9724 \operatorname{Cons}(6,132)=1+\operatorname{pair}(6,132)=1+9591+132=9724 Cons ( 6 , 132 ) = 1 + pair ( 6 , 132 ) = 1 + 9591 + 132 = 9724 である。よって論理式符号の最小値はEq ( Zero , Zero ) = 9724 \operatorname{Eq}(\operatorname{Zero},\operatorname{Zero})=9724 Eq ( Zero , Zero ) = 9724 である。
まずv = 0 v=0 v = 0 の場合を計算する。量化子の節で、Look ( 0 , 0 ) = 0 \operatorname{Look}(0,0)=0 Look ( 0 , 0 ) = 0 、i = 1 ≠ 0 i=1\neq0 i = 1 = 0 、v 1 v_1 v 1 はt t t に自由に現れ、v 0 v_0 v 0 はz z z に自由に現れるので、改名の三条件がすべて成り立つ。よってj = 1 + y + t + 0 + 0 + 1 = y + 11 j=1+y+t+0+0+1=y+11 j = 1 + y + t + 0 + 0 + 1 = y + 11 であり、E ′ = Cons ( pair ( 1 , y + 11 ) , 0 ) E'=\operatorname{Cons}(\operatorname{pair}(1,y+11),0) E ′ = Cons ( pair ( 1 , y + 11 ) , 0 ) のもとでz z z を処理する。Eq の二つの子のうち、Var ( 0 ) \operatorname{Var}(0) Var ( 0 ) ではE ′ E' E ′ の唯一の成分の第1成分が1 ≠ 0 1\neq0 1 = 0 であるからLook ( E ′ , 0 ) = Look ( 0 , 0 ) = 0 \operatorname{Look}(E',0)=\operatorname{Look}(0,0)=0 Look ( E ′ , 0 ) = Look ( 0 , 0 ) = 0 であり、0 = v 0=v 0 = v なのでt = Var ( 1 ) t=\operatorname{Var}(1) t = Var ( 1 ) を返す。Var ( 1 ) \operatorname{Var}(1) Var ( 1 ) ではLook ( E ′ , 1 ) = S ( y + 11 ) \operatorname{Look}(E',1)=S(y+11) Look ( E ′ , 1 ) = S ( y + 11 ) であるからVar ( y + 11 ) \operatorname{Var}(y+11) Var ( y + 11 ) を返す。したがって
WalkFormula ( y , 0 , t , 0 ) = AllRaw ( y + 11 , Eq ( Var ( 1 ) , Var ( y + 11 ) ) ) \operatorname{WalkFormula}(y,0,t,0)=\operatorname{AllRaw}\bigl(y+11,\operatorname{Eq}(\operatorname{Var}(1),\operatorname{Var}(y+11))\bigr) WalkFormula ( y , 0 , t , 0 ) = AllRaw ( y + 11 , Eq ( Var ( 1 ) , Var ( y + 11 )) )
であり、これは∀ v y + 11 ( v 1 = v y + 11 ) \forall v_{y+11}\,(v_1=v_{y+11}) ∀ v y + 11 ( v 1 = v y + 11 ) の符号である。改名しなければ結果は∀ v 1 ( v 1 = v 1 ) \forall v_1\,(v_1=v_1) ∀ v 1 ( v 1 = v 1 ) となり、代入したv 1 v_1 v 1 が捕獲される。
次にv = 1 v=1 v = 1 の場合、i = v i=v i = v であるから改名せずj = 1 j=1 j = 1 とし、E ′ ′ = Cons ( pair ( 1 , 1 ) , 0 ) E''=\operatorname{Cons}(\operatorname{pair}(1,1),0) E ′′ = Cons ( pair ( 1 , 1 ) , 0 ) のもとでz z z を処理する。Var ( 0 ) \operatorname{Var}(0) Var ( 0 ) ではLook ( E ′ ′ , 0 ) = 0 \operatorname{Look}(E'',0)=0 Look ( E ′′ , 0 ) = 0 かつ0 ≠ v 0\neq v 0 = v であるからVar ( 0 ) \operatorname{Var}(0) Var ( 0 ) を返す。Var ( 1 ) \operatorname{Var}(1) Var ( 1 ) ではLook ( E ′ ′ , 1 ) = S 1 \operatorname{Look}(E'',1)=S1 Look ( E ′′ , 1 ) = S 1 であるからVar ( 1 ) \operatorname{Var}(1) Var ( 1 ) を返す。よってWalkFormula ( y , 1 , t , 0 ) = AllRaw ( 1 , z ) = y \operatorname{WalkFormula}(y,1,t,0)=\operatorname{AllRaw}(1,z)=y WalkFormula ( y , 1 , t , 0 ) = AllRaw ( 1 , z ) = y である。
すべての成分がpair ( k , k ) \operatorname{pair}(k,k) pair ( k , k ) の形の環境を恒等環境と呼ぶ。0 0 0 は恒等環境である。項符号または論理式符号y y y について、次の主張を構文の構成に関する帰納法で示す。「恒等環境E E E が、Look ( E , v ) = 0 \operatorname{Look}(E,v)=0 Look ( E , v ) = 0 ならば¬ Free ( y , v ) \neg\operatorname{Free}(y,v) ¬ Free ( y , v ) を満たすとき、WalkTerm( y , v , t , E ) (y,v,t,E) ( y , v , t , E ) または WalkFormula( y , v , t , E ) (y,v,t,E) ( y , v , t , E ) はy y y に等しい。」
y = Var ( i ) y=\operatorname{Var}(i) y = Var ( i ) とする。Look ( E , i ) ≠ 0 \operatorname{Look}(E,i)\neq0 Look ( E , i ) = 0 ならば、最初に一致する成分はpair ( i , i ) \operatorname{pair}(i,i) pair ( i , i ) であるからVar ( i ) \operatorname{Var}(i) Var ( i ) を返す。Look ( E , i ) = 0 \operatorname{Look}(E,i)=0 Look ( E , i ) = 0 のとき、i = v i=v i = v ならばLook ( E , v ) = 0 \operatorname{Look}(E,v)=0 Look ( E , v ) = 0 であるのにv v v_v v v がVar ( v ) \operatorname{Var}(v) Var ( v ) に自由に現れ、仮定に反する。よってi ≠ v i\neq v i = v であり、Var ( i ) \operatorname{Var}(i) Var ( i ) を返す。Zero は Zero を返す。Succ、Add、Mul、Eq、NegRaw、ImpRaw では、直下の対象u u u についてFree ( u , v ) \operatorname{Free}(u,v) Free ( u , v ) ならばFree ( y , v ) \operatorname{Free}(y,v) Free ( y , v ) であるから、仮定がu u u と同じE E E へ継承され、帰納法の仮定により各子は変わらず、y y y が再構成される。
y = AllRaw ( i , z ) y=\operatorname{AllRaw}(i,z) y = AllRaw ( i , z ) とする。改名の三条件が成り立つと仮定すると、Look ( E , v ) = 0 \operatorname{Look}(E,v)=0 Look ( E , v ) = 0 により¬ Free ( y , v ) \neg\operatorname{Free}(y,v) ¬ Free ( y , v ) であり、i ≠ v i\neq v i = v と合わせて¬ Free ( z , v ) \neg\operatorname{Free}(z,v) ¬ Free ( z , v ) となり、第三条件に反する。よってj = i j=i j = i であり、E ′ = Cons ( pair ( i , i ) , E ) E'=\operatorname{Cons}(\operatorname{pair}(i,i),E) E ′ = Cons ( pair ( i , i ) , E ) は恒等環境である。Look ( E ′ , v ) = 0 \operatorname{Look}(E',v)=0 Look ( E ′ , v ) = 0 ならばi ≠ v i\neq v i = v かつLook ( E , v ) = 0 \operatorname{Look}(E,v)=0 Look ( E , v ) = 0 であるから、¬ Free ( y , v ) \neg\operatorname{Free}(y,v) ¬ Free ( y , v ) とi ≠ v i\neq v i = v により¬ Free ( z , v ) \neg\operatorname{Free}(z,v) ¬ Free ( z , v ) である。帰納法の仮定によりz z z の処理はz z z を返し、結果はAllRaw ( i , z ) = y \operatorname{AllRaw}(i,z)=y AllRaw ( i , z ) = y である。
Sentence ( y ) \operatorname{Sentence}(y) Sentence ( y ) とする。i ≤ y i\leq y i ≤ y ならば定義により¬ Free ( y , i ) \neg\operatorname{Free}(y,i) ¬ Free ( y , i ) であり、i > y i>y i > y ならば補題 1.2 (2) により¬ Free ( y , i ) \neg\operatorname{Free}(y,i) ¬ Free ( y , i ) である。よってすべてのv v v について¬ Free ( y , v ) \neg\operatorname{Free}(y,v) ¬ Free ( y , v ) であり、E = 0 E=0 E = 0 について主張の仮定が成り立つ。Formula ( y ) \operatorname{Formula}(y) Formula ( y ) とTerm ( Num ( n ) ) \operatorname{Term}(\operatorname{Num}(n)) Term ( Num ( n )) からSub ( y , v , n ) = WalkFormula ( y , v , Num ( n ) , 0 ) = y \operatorname{Sub}(y,v,n)=\operatorname{WalkFormula}(y,v,\operatorname{Num}(n),0)=y Sub ( y , v , n ) = WalkFormula ( y , v , Num ( n ) , 0 ) = y である。
文符号a a a について、Neg \operatorname{Neg} Neg とImp \operatorname{Imp} Imp は論理式符号に構成子を適用するだけであるから、n n n についての帰納法によりC ( a , n ) C(a,n) C ( a , n ) は文符号である。補題 1.2 (1) によりAnd ( x , a ) = NegRaw ( ImpRaw ( x , NegRaw ( a ) ) ) > x \operatorname{And}(x,a)=\operatorname{NegRaw}(\operatorname{ImpRaw}(x,\operatorname{NegRaw}(a)))>x And ( x , a ) = NegRaw ( ImpRaw ( x , NegRaw ( a ))) > x であるからC ( a , n + 1 ) > C ( a , n ) C(a,n+1)>C(a,n) C ( a , n + 1 ) > C ( a , n ) であり、C ( a , n ) ≥ a + n ≥ n C(a,n)\geq a+n\geq n C ( a , n ) ≥ a + n ≥ n である。C C C は第二引数についての原始再帰であり原始再帰的である。y = C ( e ( n ) , n ) y=C(e(n),n) y = C ( e ( n ) , n ) ならばn ≤ y n\leq y n ≤ y であるから
A ′ ( y ) ⟺ ∃ n ≤ y ( y = C ( e ( n ) , n ) ) A'(y)\iff\exists n\leq y\,\bigl(y=C(e(n),n)\bigr) A ′ ( y ) ⟺ ∃ n ≤ y ( y = C ( e ( n ) , n ) )
であり、原始再帰関数の合成と有界存在量化によりA ′ A' A ′ は原始再帰的である。
σ n \sigma_n σ n をe ( n ) e(n) e ( n ) が表す文とし、σ n ( k ) \sigma_n^{(k)} σ n ( k ) をC ( e ( n ) , k ) C(e(n),k) C ( e ( n ) , k ) が表す文とする。σ n ( 0 ) = σ n \sigma_n^{(0)}=\sigma_n σ n ( 0 ) = σ n 、σ n ( k + 1 ) = σ n ( k ) ∧ σ n \sigma_n^{(k+1)}=\sigma_n^{(k)}\land\sigma_n σ n ( k + 1 ) = σ n ( k ) ∧ σ n である。§E19.10 補題 2.1 (2) の連言の除去と導入により、k k k についての帰納法で{ σ n ( k ) } ⊢ σ n \{\sigma_n^{(k)}\}\vdash\sigma_n { σ n ( k ) } ⊢ σ n かつ{ σ n } ⊢ σ n ( k ) \{\sigma_n\}\vdash\sigma_n^{(k)} { σ n } ⊢ σ n ( k ) である。T = { σ n ∣ n ∈ N ≥ 0 } T=\{\sigma_n\mid n\in\N\} T = { σ n ∣ n ∈ N ≥ 0 } 、T ′ = { σ n ( n ) ∣ n ∈ N ≥ 0 } T'=\{\sigma_n^{(n)}\mid n\in\N\} T ′ = { σ n ( n ) ∣ n ∈ N ≥ 0 } とおくと、T T T の各公理はT ′ T' T ′ から、T ′ T' T ′ の各公理はT T T から導出される。前提がすべて文であるから、一方の導出の前提の行を他方からの導出で置き換えても一般化の条件は保たれ、T ⊢ φ T\vdash\varphi T ⊢ φ とT ′ ⊢ φ T'\vdash\varphi T ′ ⊢ φ は同値である。したがって、公理集合が原始再帰関数の値域として与えられる理論は、同じ定理をもち原始再帰的な所属判定をもつ公理集合で置き換えることができる。
▨