重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

電子書籍の厳選無料作品が豊富!

過去の質問「1+1=2の証明って?」
http://oshiete1.goo.ne.jp/kotaeru.php3?q=217225
を精読しました。
私は数学基礎論を少しだけ読んだことがありますが、自然数論は未勉強です。

過去の質問では、小さい自然数の定義した上で、プラスの定義を、

●f(n,m,m)=n
●m≠kのとき、f(n,m,k) = f(s(n),m,s(k))
そして
●+(n,m)=f(n,m,0)

とされていました。
それについで、カケルの定義はどうすればいいのですか?
そして、2×3=6の証明って、どうすればいいのですか?

A 回答 (6件)

No.5へのコメントについてです。



> 累乗も同様に4変数関数で出来そうですね。

第1段: s()を繰り返したのが足し算+、
第2段: +を繰り返したのが掛け算×、
第3段: ×を繰り返したのが冪乗↑、
第4段: ↑を繰り返したのが↑↑(例えば3↑↑4=3↑(3↑(3↑3)))、
第5段: ↑↑を繰り返したのが↑↑↑、

 ですから、回答No.5で+(,)とs()と場合分けを使って掛け算の関数gを作ったのと同じように、前の段の演算を利用すれば機械的に幾らでも積み上げることができます。

 一方、掛け算はs()と場合分けだけを使って構成する事もできます。カウンターをもうひとつ増やして5変数関数にすれば簡単ですね。

 ところで、s()と場合分けだけを使って作ったひとつの関数hで、任意のnについて第n段の演算を表す、ということも可能でしょう。(ただし、カウンター変数を無限個使う訳には行かないので、hは再帰的に構成せざるを得ないと思いますが。)
    • good
    • 0

 掛け算もカウンターを使って定義できます。



g(t,n,m,m)=t
m≠kのとき、g(t,n,m,k)=g(+(t,n),n,m,s(k))
×(n,m)=g(0,n,m,0)

 これはプログラミングにおいて、プログラムの1箇所だけで生じる再帰呼び出しをループに変換する「テイル・マージ」という技法と同じことです。
    • good
    • 0
この回答へのお礼

ご回答、光栄です。
4変数関数とは予想外でした。それと、テイル・マージとはまったく初耳でした。これだと、再帰的定
義(帰納的定義)を回避できそうですね。

累乗も同様に4変数関数で出来そうですね。

●g(t,n,m,m)=t
●m≠kのとき、g(t,n,m,k)=g(×(t,n),n,m,s(k))
●^(n,m)=g(1,n,m,0)

お礼日時:2006/09/21 22:50

既に回答がある方法で乗算を構成するのであれば、 m - 1 という「減算」ではなくて、「m の前の数」を使えば、自然に定義できると思います。



ペアノの公理によって、1(流儀によっては0)以外のあらゆる自然数は、「その前の数=ある数の次の数がその数になるような数」の存在が保証されているので。
    • good
    • 0

No.1です。



再訂正。

減法を -(a,b) と記述し乗法の定義を訂正します。


×(n,m) は次のように再帰的に定義できます。
● ×(n,1)=n
● ×(n,m)=+(n,×(n,-(m,1)))

n=2,m=3 の例では
×(2,3)
=+(2,×(2,-(3,1)))
=+(2,×(2,2))
=+(2,+(2,×(2,-(2,1))))
=+(2,+(2,×(2,1)))
=+(2,+(2,2))
=+(2,4)
=6

この回答への補足

なんどもありがとうございます。自分なりに整理してみました。

まず、自然数の定義で、s(n)は「nの次の数」を表します。

n+mつまり+(n,m)の定義を、3変数関数を使って、
●f(n,m,m)=n
●m≠kのとき、f(n,m,k) = f(s(n),m,s(k))
そして
●+(n,m)=f(n,m,0)
とします。

すると、n-mつまり-(n,m)の定義を
●-(n,m) = f(0,n,m)
とすることができます。

n×mつまり×(n,m)の定義ですが、3変数関数を使うと、上記をまねて、
●g(n,0,1)=0
●g(n,m,m)=n
●m≠kのとき、g(n,m,k) = g(+(g(n,m,k),n),m,s(k))
そして
●×(n,m)=g(n,m,1)
とできそうです。(賛否があれば連絡いただきたいです。)その意味は、第三変数がカウンターの役割をして、1からmまでm回カウントされる間に、第一変数のnにはnを繰り返し足していく。n×0のときは特別扱いする。

ただ、カケルの定義は、どうしても再帰的(帰納的)になってしまいそうです。

でも、プラスの定義は、3変数関数的(カウンター的)でも、再帰的(帰納的)でもできそうです。

補足日時:2006/09/20 14:10
    • good
    • 0

No.1です。



訂正します。

No.1の回答の乗法の定義で、
> ● ×(n,m)=+(n,×(n,m-1))
m-1 という減法を使ってました。

したがって1行目の
『n,mが自然数で加法の定義を用いてよいのなら』
を次のように訂正します。
『n,mが自然数で加法と減法の定義を用いてよいのなら』
    • good
    • 0

n×m の定義は、n,mが自然数で加法の定義を用いてよいのなら簡単です。


参考質問でのstomachman氏の回答にある記述法を援用します。
n×m を ×(n,m) と記述します。

×(n,m) は次のように再帰的に定義できます。
● ×(n,1)=n
● ×(n,m)=+(n,×(n,m-1))

n=2,m=3 の例では
×(2,3)
=+(2,×(2,2))
=+(2,+(2,×(2,1)))
=+(2,+(2,2))
=+(2,4)
=6
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!