“Lambda-Calculus and Combinators: An Introduction”メモ(その5)
Lemma A1.7
$\begin{array} &
\mbox{For all } M, x \mbox{ and } y \notin FV(xM),
\mbox{there exists } M^\prime \mbox{ such that } \\
y \mbox{ is neither free nor bound in } M^\prime
\mbox{ and } x \mbox{ is not bound in } M^\prime \mbox{, and } \\
M \rhd_{\alpha0} M^\prime, \qquad [y/x]M \rhd_{\alpha0} [y/x]M^\prime
\end{array}$
$M$ の構造的帰納法で証明します。
$(1) M ≡ x$ の時
$\begin{array} &
M ≡ x \mbox{ の時 } M^\prime ≡ x \\
\mbox{ここで } [y/x]M ≡ y \mbox{, } [y/x]M^\prime ≡ y \mbox{ なので }
[y/x]M ≡ [y/x]M^\prime \\
\therefore [y/x]M \rhd_{\alpha0} [y/x]M^\prime \\
\end{array}$
$(2) M ≡ y$ の時
$\begin{array} &
M ≡ y \mbox{ の時 } M^\prime ≡ y \\
\mbox{ここで } [y/x]M ≡ y \mbox{, } [y/x]M^\prime ≡ y \mbox{ なので }
[y/x]M ≡ [y/x]M^\prime \\
\therefore [y/x]M \rhd_{\alpha0} [y/x]M^\prime \\
\end{array}$
$(3) M ≡ a$ の時
$\begin{array} &
M ≡ a \mbox{ の時 } M^\prime ≡ a \\
\mbox{ここで } [y/x]M ≡ a \mbox{, } [y/x]M^\prime ≡ a \mbox{ なので }
[y/x]M ≡ [y/x]M^\prime \\
\therefore [y/x]M \rhd_{\alpha0} [y/x]M^\prime \\
\end{array}$
$(4) M ≡ λx.L$ の時
$\begin{array} &
M^\prime ≡ λa.[a/x]L \mbox{ ;; } a \notin FV(L) \\
[y/x]M ≡ [y/x]λx.L ≡ λx.L ~ \cdots (A)\\
[y/x]M^\prime ≡ [y/x]λa.[a/x]L ≡ λa.[y/x][a/x]L \\
\mbox{;; Lemma1.16(e) より } \\
≡ λa.[([y/x]a)/x]L ≡ λa.[a/x]L ~ \cdots (B) \\
\mbox{帰納法により }
L^\prime \rhd_{\alpha0} [a^\prime/x^\prime]L^\prime \\
\mbox{が正しいと仮定して以下を導きます} \\
\mbox{(A), (B) は定義から } λx.L \rhd_{\alpha0} λa.[a/x]L \\
\therefore [y/x]M \rhd_{\alpha0} [y/x]M^\prime \\
\end{array}$
$(5) M ≡ λy.L$ の時
$\begin{array} &
M^\prime ≡ λa.[a/y]L, ~ a \notin FV(L) \\
[y/x]M ≡ [y/x]λy.L ≡ λz.[y/x][z/y]L \\
\mbox{;; Lemma1.16(c) より } \\
\mbox{;; } [P/x][Q/y]M ≡ [([P/x]Q)/y][P/x]M, ~ y \notin FV(P) \\
≡ λz.[([y/x]z)/y][y/x]L ≡ λz.[z/y][y/x]L \\
\mbox{;; Lemma1.16(a) より } \\
\mbox{;; } [P/v][v/x]M ≡ [P/x]M, ~ v \notin FV(M) \\
\mbox{;; 条件 } y \notin FV(xM) \mbox{ より} \\
≡ λz.[z/x]L ~ \cdots (A) \\
[y/x]M^\prime ≡ [y/x]λa.[a/y]L ≡ λa.[y/x][a/y]L \\
\mbox{;; 同様に Lemma1.16(c) より} \\
≡ λa.[([y/x]a)/y][y/x]L ≡ λa.[a/y][y/x]L \\
\mbox{;; 同様に Lemma1.16(a) より } \\
≡ λa.[a/x]L ~ \cdots (B) \\
\mbox{帰納法により }
[z^\prime/x^\prime]L^\prime \rhd_{\alpha0} [a^\prime/x^\prime]L^\prime \\
\mbox{が正しいと仮定して以下を導きます} \\
\mbox{(A),(B) より } λz.[z/x]L \rhd_{\alpha0} λa.[a/x]L \\
\therefore [y/x]M \rhd_{\alpha0} [y/x]M^\prime \\
\end{array}$
$(6) M ≡ λa.L$ の時
$\begin{array} &
M^\prime ≡ λb.[b/a]L \mbox{ ;; } b \notin FV(L) \\
[y/x]M ≡ [y/x]λa.L ≡ λa.[y/x]L ~ \cdots (A) \\
\mbox{(条件より} y \notin FV(L) \mbox{ なので 1.12(g) はおこらない)} \\
[y/x]M^\prime ≡ [y/x]λb.[b/a]L ≡ λb.[y/x][b/a]L \\
\mbox{;; Lemma1.16(d) }
[P/x][Q/y]M ≡ [Q/y][P/x]M ~ y \notin FV(P), ~ x \notin FV(Q) \mbox{ より} \\
\mbox{;; } a \notin FV(y), ~ x \notin FV(b) \mbox{ なので}\\
≡ λb.[b/a][y/x]L ~ \cdots (B) \\
\mbox{(条件より} y \notin FV(L) \mbox{ なので 1.12(g) はおこらない)} \\
\mbox{帰納法により }
[y^\prime/x^\prime]L^\prime \rhd_{\alpha0}
[b^\prime/a^\prime][y^\prime/x^\prime]L^\prime \\
\mbox{が正しいと仮定して以下を導きます} \\
\mbox{(A), (B) は定義から } λa.[y/x]L \rhd_{\alpha0} λb.[b/a][y/x]L \\
\therefore [y/x]M \rhd_{\alpha0} [y/x]M^\prime \\
\end{array}$
$(7)M ≡ (PQ)$ の時
$\begin{array} &
M^\prime ≡ (RS) \mbox{ とする} \\
[y/x]M ≡ [y/x](PQ) ≡ ([y/x]P [y/x]Q) \\
[y/x]M^\prime ≡ [y/x](RS) ≡ ([y/x]R [y/x]S) \\
\mbox{帰納法により } \\
[y^\prime/x^\prime]P^\prime \rhd_{\alpha0} [y^\prime/x^\prime]R^\prime,
~ [y^\prime/x^\prime]Q^\prime \rhd_{\alpha0} [y^\prime/x^\prime]S^\prime
\mbox{ が正しいと仮定して以下を導きます} \\
(PQ) \rhd_{\alpha0} (RS)
\end{array}$
$\mbox{(1)〜(7) より 条件の時、}
M \rhd_{\alpha0} M^\prime, ~ [y/x]M \rhd_{\alpha0} [y/x]M^\prime.$