補助定理1.2.36と定理1.2.37の証明おわったー
終わったと同時に記事に書き起こす気力があまりなくなりましたが重要な部分だけ書きます。
「束縛変数が与えられた有限集合と重なりがないようにα変換できる」を有効に活用することでなんとか証明が完成しました。
証明の中で命題を適用する際の細かい前提条件の確認は省略します。
既知とする命題
- イコールに関する代入の交換
- イコールに関する代入の短縮
- 束縛変数が与えられた有限集合と重なりがないようにα変換できる
- 代入操作後の項に関する束縛変数全体と変数全体の集合の上からの評価
- α同値な二つの項にλxをつけてもα同値
M ≡α N, FV(Q) ∩ BV(N) = ∅, [Q/x]M ≡α [Q/x]Nの証明
Mの長さに関する帰納法で証明する。
M ≡ xのときとx ∉ FV(M)のときは明らかである。
M = M_1 M_2のときはM_1とM_2に対して帰納法の仮定を用いればよい。
M ≡ λy.R, x ∈ FV(M)のときを以下で議論する。
N ≡ λz.R'と表す。[Q/x]N ≡ λz.[Q/x]R'である。
y ∈ FV(Q)かどうかによって[Q/x]Mの内容は二つの場合がある。以下では省略してy ∈ FV(Q)の場合の証明のみ記す。y ∉ FV(Q)の場合の証明もだいたい同じような議論でできる。
このとき
と表せる。ただしvはV(xyQR)に属さない最初の変数。
変数u ∉ V(xvQMN)をとる。
R ≡α R_0, BV(R_0) ∩ FV(vuQ) = ∅となる項R_0をとる。
イコールに関する代入の交換と短縮より、
[u/v][Q/x][v/y]R_0 ≡ [Q/x][u/v][v/y]R_0 ≡ [Q/x][u/y]R_0 …(1) |
である。
R ≡α R_0に帰納法の仮定を2回適用して
両辺にλvをつけて
である。
R_0 ≡α Rの両辺にλyをつけて
λy.R ≡α λz.R'だから
1.2.32(2)から
帰納法の仮定から
(1),(2)を代入して
1.2.32(2)から
(3)を代入して
すなわち
□
M ≡α N ⇒ [Q/x]M ≡α [Q/x]Nの証明
M ≡α M', FV(Q) ∩ BV(M') = ∅となる項M'をとる。
すると先ほど証明した命題から[Q/x]M ≡α [Q/x]M', [Q/x]N ≡α [Q/x]M'である。
よって[Q/x]M ≡α [Q/x]N
□
この先の概略
上で示した命題を「代入操作をしてもα同値性は保たれる」と呼ぶことにする。
「イコールに関する代入の短縮」と「代入操作をしてもα同値性は保たれる」から補助定理1.2.36(1) (「代入の短縮」):
が従う。
また、「イコールに関する代入の交換」と「代入操作をしてもα同値性は保たれる」から「代入の交換」:
が従う。
「代入の交換」、「代入の短縮」、「代入操作をしてもα同値性は保たれる」から
が示せる。
これと「代入操作をしてもα同値性は保たれる」を合わせれば補助定理1.2.36(2):
が得られる。
「代入の短縮」と「代入操作をしてもα同値性は保たれる」から「二つの抽象の項がα同値となる条件」:
が示せる。
「代入の交換」と「二つの抽象の項がα同値となる条件」から定理1.2.37:
が示せる。
追記 (2012-12-19)
y ∈ FV(Q)かどうかの場合分けをひとつにまとめていたのだが、これには間違いがあったので、場合分けはまとめず、片方の場合の証明は省略することにした