Heyting算術と帰納的関数
本節では、自然数論において、加法と乗法が扱えれば、帰納的に定義されるすべての関数が扱えるという事実を解説します。
等号 = の他に1変項述語 N
、定項 0 、1変項関数記号 s
、2変項関数記号 + 及び ·
を持ち、等号 = を持つ直観主義論理の推論規則 (LJ )
に加えて次の公理群:
(A5-1a) |
(A5-1b) N(x) |
(A5-1c) N(x) , N( y) |
(A5-1d) N(x) , N( y) |
(A5-1e) N(x) ,x' |
(A5-1f) N(x) ,x' |
(A5-1g) N(x) |
(A5-1h) N(x) , N( y)' |
(A5-1i) N(x) |
(A5-1j) N(x) , N( y) |
及び帰納法とよばれる推論規則:
(A5-2) |
A , N(x) , R(x) |
を持つ推論体系をHeyting
算術とよびます。
ただし、s
xØ x = y ¹ y+xy + y·
xy"N
" と略記し、$N
$ と略記し、(x)
(T )
¢
A
以下、変数はすべて N
項を表すものとすると、本文第10節 (10-25),(10-27),(10-30),(10-32)
の証明がそのまま適用できて、
(A5-3a) (x |
(A5-3b) |
(A5-3c) x'' |
(A5-3d)x |
が得られます。(A5-3a)
と (A5-3d)
をそれぞれ加法に関する結合律及び交換律といいます。
また、乗法についても本文第10節 (10-41)~(10-44),(10-49),(10-50)
の証明がそのまま適用できて、
(A5-4a) (xz |
(A5-4b) |
(A5-4c)x |
(A5-4d) x( y |
(A5-4e) x( yz)z |
(A5-4f)xy |
(A5-4g)xy |
が得られます。(A5-4a)
を左分配律、(A5-4d)
を右分配律、(A5-4e)
を乗法に対する結合律、(A5-4g)
を乗法の交換律といいます。
次に、2項関係 < , > , £ , ³ を
(A5-5a) x |
(A5-5b) x |
で定義します。このとき、本文第11節 (11-1)~(11-23)
の議論がそのまま使えて
(A5-6a)x |
(A5-6b)x |
(A5-6c) xy |
(A5-6d)xy |
(A5-7a)x |
(A5-7b) |
(A5-7c) |
(A5-7d)x |
(A5-7e)x |
(A5-7f) ( x |
(A5-7g)y |
(A5-7h) x |
(A5-7i) x |
(A5-8a)x |
(A5-8b) |
(A5-8c) ( x |
(A5-8d)x |
(A5-8e)x |
(A5-8f)x |
(A5-9) xy |
(A5-10a)x |
(A5-10b)x |
(A5-10c)x |
(A5-10d)x |
(A5-10e) ( x |
(A5-10f)x |
(A5-10g) ( x |
(A5-10h) ( x |
(A5-10i)x |
(A5-10j)x' |
(A5-10k)y |
(A5-10l) x |
が成り立つことがわかりますが、更に (A5-10i),(A5-5b),(A5-10i),(A5-10j)
により
(A5-10m) z |
(A5-10n) z |
(A5-10o) z |
が成り立ちます。なお、 < y Ù y £ z < y £ z
また、本文第11節 (11-26)~(11-29)
及びその直後の注意により、任意の命題 P , Q に対して
(A5-11a) ( |
(A5-11b) |
(A5-11c) |
(A5-11d) ( |
(A5-11e) ( |
(A5-11f) ( |
(A5-11g) ( |
が成り立つことがわかります。また、
(A5-12a) Min(x, P) |
と置いて
(A5-12b) (( |
を証明しましょう。
そのためには、"x : ( P(x)
Ú Ø P(x) )$z < x : P(z)
Þ $z : Min(z, P)
まず x が 0 なら仮定が偽なので明らかです。
次に x のとき成り立つと仮定して、$z < x' : P(z)
(A5-10m)
により $z < x : P(z)
(x)
一方、(A5-11d)
で Q に P を、P に Ø P$z < x : P(x)
"z < x :
Ø P(x)$z < x : P(z)
(x)
Min(x, P)
同様に、
(A5-13a) Max(x, P) |
と置いて
(A5-13b) (( |
を証明しましょう。
そのためには、$x : P(x)
"x : ( P(x)
Ú Ø P(x) )"z > x :
Ø P(z) Þ $z : Max(z, P)
まず x が 0 なら、Max(
0, P)
次に x のとき成り立つと仮定して、"z > x' :
Ø P(z)(x' )
Ø P(x' )
Max(x', P)
(A5-10o)
により "z > x :
Ø P(z)
さて、付録4の後半により、$!x : P(x)
(x)
ι
量化記号を導入して、(x)
ιxP(x)
ι
量化記号を用いることにします。このとき
(A5-14) Q(ιxP(x)) |
が成り立ちます。
さて、明らかに、$x : Min(x, P)
$!x : Min(x, P)
(A5-15a) min{ x | P(x) } |
という省略記号を用いることにします。同様に、$x : Max(x, P)
$!x : Max(x, P)
(A5-15b) max{ x | P(x) } |
という省略記号を用います。
特に、命題 = a Ú x = b(x)
$x P(x)
"x > a + b :
Ø P(x)$x : Min(x, P)
$x : Max(x, P)
(A5-16a) min{a, b} |
(A5-16a) max{a, b} |
と略記することにします。
さて、本文第12節 (12-1)
の証明をそのまま利用すると、
(A5-17a) yx |
(A5-17b) ( y |
が得られますから、特に
(A5-18a) y |
(A5-18b) y |
が成り立つので
(A5-19a) y |
(A5-19b) y |
と書くことにします。ただし、├ の左辺の条件が成り立っている場合のみ、右辺の省略記号が導入できることを意味します。また、
(A5-20) y | xx |
と定義すると、本文第12節 (12-7)
直後の議論がそのまま使えて、 |
x(12-8)
の議論がそのまま使えて、
(A5-21a)x |
(A5-21b) x |x |
(A5-21c) ( x | yz |
(A5-21d) ( x | y |
(A5-21e) x | y |
(A5-21f) ( x | y |
(A5-21g) ( x | y |
が成り立ちます。
さて、「z は x と y の公約数である」という関係を
(A5-22) Cd(z, x, y)y |
で定義すると、(A5-21a)
により Cd(
1, x, y) > 0 Ú y > 0(A5-21f)
により "z > x + y :
Ø Cd(z, x, y)$z : Max(z, Cd(z, x, y))
(A5-23) x |
と置けば、本文第12節 (12-11)~(12-15)
の証明がそのまま使えて
(A5-24) y |
(A5-25) xux |
(A5-26) xux |
(A5-27) xz |
(A5-28) xz |
が成り立ちます。なお、gcd(x, y)
= 1
さて、x が素数であるということを Prim(x)
(A5-29) Prim(x) |
この命題 Prim(x)
(A5-30) Prim(x) |
更に、合成数は必ず素数を約数に持つことや、本文第12節 (12-17)
の結果もそのまま成り立ちます:
(A5-31) ( x |
(A5-32) ( Prim(z) |
ゆえに (A5-30),(A5-31),(A5-21b)
により
(A5-33) x |
が成り立ちます。
また、階乗に相当する自然数の存在も証明できます:
(A5-34) |
実際、n に関する帰納法で証明することにし、まず n が 0 なら明らかです。
また n で成り立つとし、そのような c を取ります。
さて、k が 0 < k £ n'(A5-10n)
により £ n Ú k = n' £ n |
c = n'(A5-21b)
により |
n'(A5-21e)
により、いずれにせよ | (cn' )
そこで、 > 0 Ù "k £ n : ( k
> 0 Þ k | c )Fact(n, c)
(A5-35) ( Fact(n, c) |
が成り立つことを証明しましょう。
実際、 = gcd(k'c
+ 1, l'c + 1) > 1(A5-33)
により、 |
g
このとき = k + m > 0 = k' + m + 1 = k'c + 1 + mc |
g | (l'c
+ 1) | (k'c
+ 1)(A5-21c),(A5-21d)
により | (mc)
(A5-32)
により |
m Ú p |
c
ここで |
m(A5-21f)
により £ m £ l £ nFact(n, c)
|
c |
cØ p | (k'c
+ 1) | (k'c
+ 1)Ø g > 1 > 0 = 1(A5-35)
は証明されました。
次に
(A5-36) Fact(n, c) |
が成り立つことを k に関する帰納法で証明しましょう。
まず、k が 0 なら g を 1 とすれば成り立ちます。
次に k について正しいとして "l £ n : (( l
< k Þ (l'c + 1) | g ) Ù ( l ³ k Þ gcd(l'c + 1, g) = 1 )) £ n
このとき、仮定により "l £ k : (l'c
+ 1) | (g(k'c + 1)) < l £ n Þ gcd(l'c
+ 1, g(k'c + 1)) = 1
実際、 < l £ ngcd(l'c
+ 1, g(k'c + 1)) > 1(A5-33)
により素数 p が存在して | (l'c
+ 1) | (g(k'c
+ 1))(A5-32)
により | g
Ú p | (k'c + 1)(A5-35)
により、g も + 1 + 1
よって (A5-36)
は、k を k' に、g を (k'c
+ 1)
さて、項 (k)
(A5-37) |
が成り立つことを n に対する帰納法で証明しましょう。
まず n が 0 なら自明なので、n で正しいと仮定します。(A5-34)
により
(A5-38) Fact(l, c) |
となる > 0 = n(A5-36)
を用いると、
(A5-39) |
が成り立つので、そのような g を取ると、(A5-26)
により
(A5-40) |
となります。このとき = rem(a, n'c
+ 1) < n'c + 1 + 1 + T(
n)
= p + q(A5-39)
と帰納法の仮定により
(A5-41a) k |
となり、また (n)
£ l(A5-38)
により (n)
£ l £ c < n'c + 1
(A5-41b) rem(a |
となるので、a を + ugq(A5-37)
は n' でも成り立ち、帰納法が完成し、(A5-37)
は証明されました。
さて、(A5-37)
において、仮定 (k)
£ l
(A5-42) |
が成り立ちます。これを n に関する帰納法で証明しましょう。
まず n が 0 なら自明ですから、n で成り立つと仮定し、そのような a , c を取ると、 < n(k)
< k'c + 1 £ nc + 1 = max{nc
+ 1, T(n)}"k < n' : T(k)
£ l(A5-37)
で n を n' に置き換えた式から $b :
$d : "k < n' : rem(b, k'd + 1) = T(k)(A5-42)
は証明されました。
上の (A5-42)
に出てくる項 rem(a, k'c
+ 1)Heyting
算術では帰納的に定義された任意の関数を扱うことができます。すなわち、項 (x)
(x, y)
(A5-43a) F( |
(A5-43b) F(x' ) |
を満たす項 (x)
(A5-44) |
が成り立つことを n に関する帰納法で証明します。
まず n が 0 の場合は、rem(S, S
+ 1) = S
次に n で成り立つと仮定して、(A5-44)
を満たす a , c を取り、
(A5-45) A(k, x) |
と置けば、明らかに $!x A(k, x)
ι xA(k, x)
(A5-42)
により
(A5-46) |
を満たす b , d するので、(A5-45)
により
(A5-47a) |
(A5-47b) rem(b, n"d |
が成り立ちます。ゆえに (A5-47a)
で k を 0 として、(A5-44)
の帰納法の仮定を用いれば、
(A5-48a) rem(b, d |
また、 < n £ n(A5-47a)
と、(A5-44)
の帰納法の仮定により
(A5-48b) rem(b, k"d |
また (A5-47b)
と、(A5-47a)
で k に n を代入したものにより
(A5-48c) rem(b, n"d |
ゆえに (A5-48b),(A5-48c)
を併せると、
(A5-48d) |
となりますが、(A5-48a),(A5-48d)
の組は、(A5-44)
の n に n' を代入したものが成り立つことを示しており、(A5-44)
の帰納法が完成しました。
さて、
(A5-49) B(n, a, c) |
と置くと、(A5-44)
は
(A5-50) |
が成り立つことを意味しますが、更に
(A5-51a) ( k |
(A5-51b) ( B(n, a, c) |
が成り立ちます。実際、(A5-51a)
は明らかですから (A5-51b)
を k に対する帰納法で証明します。
まず k が 0 のときは、(n, a, c)
(n, b, d)
(A5-52a) rem(a, c |
となるので明らかです。
次に k で成り立つと仮定し、更に £ n < n(n, a, c)
(n, b, d)
(A5-52b) rem(a, k"c |
となって帰納法が完成し、(A5-51)
は証明されました。
さて、最後に
(A5-53) R(x, y) |
と置き、これが
(A5-54) |
を満たすことを証明しましょう。
まず (A5-50)
により $x R(x, y)
更に、(x, y)
(z, y)
( y, a, c)
Ù x = rem(a, y'c + 1)( y, b, d)
Ù z = rem(b, y'd + 1)(A5-51b)
により = z(A5-54)
は証明されました。
ゆえに
(A5-55) F( y) |
と置くことができますが、あとはこれが (A5-43)
を満たすことを示せば十分です。
定義 (A5-49)
と (A5-55)
により
(A5-56a) B(n, a, c) |
(A5-56b) B(n, a, c) |
ですから、特に n を 0 と置いて (A5-50)
を満たす a , c を取れば、(A5-56)
の右辺同士は一致するので、まず (A5-43a)
が得られます。
また、定義 (A5-49)
で特に n を n' に置き換え、k に n を代入すれば
(A5-57) B(n', a, c) |
が得られ、(A5-56b)
の n に n' を代入すれば
(A5-58) B(n', a, c) |
が得られます。ゆえに (A5-50)
により (n', a, c)
(A5-51)
により (n, a, c)
(A5-56b),(A5-57),(A5-58)
により (A5-43b)
が得られます。
以上で (A5-43)
を満たす項 (n)
すなわち、Heyting
算術では関数記号として加法と乗法しか用意されていないにもかかわらず、帰納的に定義される任意の関数が扱えます。
その実例として、まず1変項関数 pd
を
(A5-59a) pd |
(A5-59b) pda' |
で定義し、2変項関数 - を
(A5-60a)a |
(A5-60b) a |
で定義します。このとき
(A5-61a) pda |
(A5-61b) (a |
(A5-61c) a |
(A5-61d) a |
(A5-61e) a |
(A5-61f)a |
が成り立ちます。
実際、(A5-61a)
は (A5-60b)
で b を 0 とすれば (A5-60a)
により明らかです。
次に (A5-61b)
は、b が 0 のときは (a
+ 0) - 0 = a - 0 = a
また、"b : (a
+ b) - b = a + b' = a' + b(a
a' + b' ) - b' = pd((a' + b) - b) = pd = a
次に (A5-61c)
は、b が 0 のときは、(A5-61b)
により - (a
+ 0) = (0 + a) - a = 0
また、 - (a + b) = 0 - (a
+ b' ) = a - (a + b)' = pd(a - (a + b)) = pd 0 = 0
また (A5-61d)
は、 ³ bÞ $c :
a = b + cÞ $c : (a
- b) + b = ((c + b) - b) + b = c + b = aÞ (a
- b) + b = aÞ $d :
a = d + bÞ ³ b
最後に (A5-61e)
と (A5-61f)
は、まず £ bÞ $c :
b = a + cÞ - b = a - (a
+ c) = 0 > bÞ $c :
a = b + c'Þ - b = (b
+ c' ) - b = c' > 0
また、2個の自然数の冪を
(A5-62a)a |
(A5-62b)an' |
で定義します。このとき、本文第10節 (10-34)
以降の議論がすべて適用できて、
(A5-63a)a |
(A5-63b) |
(A5-63c) aman |
(A5-63d) (a · b)nbn |
(A5-63e) (am )n |
が成り立つことがわかります。
また、一般の2項演算 * と項 (i)
(A5-64a) |
(A5-64b) |
と定義します。ただし、2項演算が加法 + のときは + のかわりに記号 å を用いてこれを有限和とよび、2項演算が乗法 ·
のときは · のかわりに記号 Õ を用いてこれを有限積とよびます。
なお、*i £ k T(i)
(
0) * T(1) * ¼ * T(k)
次に、一般に省略記号として導入した1変項関数記号 j に対して、その k 回合成関数 j(k)
(A5-65a) |
(A5-65b) |
で定義します。
また、排中律を満たす命題 (i)
£ k(i)
0 を表す max{ i
£ k | P(i) }
(A5-66a) max{ i |
(A5-66b) max{ i |
で定義し、これを用いて
(A5-67a) min{ i |
と定義します。(A5-66)
を用いると、商 / k |
n
(A5-68) n |
(A5-69) k | nk |
と表わすことができます。
さて、(A5-42)
によれば、自然数からなる任意の有限列を、2個の自然数の組を用いてHeyting
算術で扱うことができるのでした。そこで、更に強く、正整数からなる長さ1以上の有限列を1個の正整数と1対1に対応づける関数を構成してみましょう。
まず、関数 s と t を
(A5-70) |
(A5-71) |
で定義します。帰納法により 2i ³ i(A5-70)
の右辺第1項は確かに 2i
(A5-72) n[i] |
(A5-73) | n | |
(A5-74) n # k |
と定義します。このとき s(n)
³ 1(A5-71)
により ³ 1tn(n)
< (A5-73)
で定義される | n |
t(i)(n)
= 0
(A5-75) n |
が成り立つことを証明しましょう。
実際、 :º max{ i
£ n | 2i | n }sk'(n)
= = 2kl2 で割れない、すなわち奇数ですから = 2i + 1
ゆえに t(n)
= n / 2s(n) = 2k(2i + 1) / 2k' = (2i + 1) / 2 = i
一方、(A5-72)
により [
1] = s(n) = k't(n) # n[
1] = i # k' = 2k'i + 2k = 2k (2i + 1) = 2kl = n
また、(A5-72)
により [
1] = s(m)t(k)(n)[
1] = s(t(k)(n)) = n[k' ](A5-73)
による t(k)(n)
³ 1 Û k < | n |(A5-75)
の n に t(k)(n)
(A5-76) k |
が得られ、従って t(|n|)(n)
= 0t(
0)(n) = n
(A5-77) n |
が成り立つことがわかります。また、 ³ 1 #
k = 2pd
k(
2n + 1)
(A5-78a) kk |
(A5-78b) k |
が成り立ちます。そこで、任意に与えられた項 (i)
(A5-79) n |
と置くと、帰納法により
(A5-80a) i |
(A5-80b) |
(A5-80c) |
が成り立ち、これは、正整数からなる任意の長さ ³ 1(
1)(
2)¼, (k)
そこで更に、正整数 n を長さ | n |
1 £ i £ j £ | n |
[ j : i]
* n{ k }
(A5-81) n[ j : i] |
(A5-82) m |
(A5-83) { k } |
で定義します。このとき明らかに
(A5-84a) n |
(A5-84b) n |
(A5-84c) m, n |
(A5-84d) m, n |
(A5-84e) m, n |
(A5-84f) m, n |
が成り立ちます。更に、正整数 k に対して、(A5-78)
により s({ k })
= s(0 # k) = kt({ k })
= t(0 # k) = 0(A5-73),(A5-72)
により
(A5-85a) k |
(A5-85b) k |
ゆえに
(A5-86a) kk |
(A5-86b) n |
が成り立つことがわかります。
さて、このような正整数の有限列を一つの正整数で表現する方法を用いると、関数の帰納的定義において、(k)
0 £ i < k(i)
(
0) :º S| n |
= k'
(A5-87) F(i) |
の対応によって F の 0 から k までの値を表わしているとき (k' )
:º T(k', n)
(A5-88a) G( |
(A5-88b) G(x' )' |
によって項 (x)
(A5-89) F(k) |
と置けば、これが求めるものです。実際、まず (A5-88a)
と (A5-85b)
により
(A5-90a) F(S' |
となります。また、帰納法により | G(k) |
= k'(A5-88b)
と (A5-78a)
により
(A5-90b) F(k' ) |
となるので、これと (A5-88b)
から (k' )
'= G(k) # F(k' )(A5-88a)
と (A5-83)
と (A5-90a)
により
(A5-91) G(k)' |
となり、従って
(A5-92) F(i) |
が成り立っているので (A5-87)
の要件を満たしていることがわかり、これと (A5-90)
により、(A5-89)
で定義される項 F は確かに求めるものになっていることがわかります。
さて、(A5-87)
の関係式は、0 £ i £ k(i)
(A5-93) n' |
の関係により | n |
= k'0 以上 l 以下の場合、この範囲で定義された関数 G に対応する正整数:
(A5-94) m' |
との間の合成関数を考えることができますが、その合成関数に対応する正整数を ° n
(A5-95) m' |
もちろんこの右辺を m と n を用いて陽に表現することもできます。すなわち右辺の各要素を、(A5-87)
と、F を G に、n を m にそれぞれ置き換えた式を使って得られる
(A5-96) G(F(i)) |
によって置き換えればよいわけです。
更に、F の取り得る範囲の l が k 以下の場合は、(A5-65)
の定義による関数 F の r 回合成関数 (r)
(r)
(A5-97a) n(k' |
(A5-97b) n(r' ) |
で定義することができます。