;; 0を空リスト定義 (define zero '()) ;; 0の判定関数 (define (zero?x) (null?x)) ;; 後者写像succ (define (succ x) (cons x x)) ;; 後者写像の逆写像desucc ;; desucc(succ(x)) = x (define (desucc x) (carx)) ;; 足し算plus (define (plus a b) (let loop ((result a) (b b)) (cond ((zero?b) result) (else (loop (succ result) (desucc b)))))) ;; 掛け算mult (define (mult a b) (let loop ((result zero) (b b)) (cond ((zero?b) result) (else (loop (plus a result) (desucc b)))))) ;; 自然数→整数 (define (N-to-Z a) (cons a zero)) ;; 整数の同値 (define (Z= a b) (equal? (plus (cara) (cdrb)) (plus (cdra) (carb)))) ;; 整数の掛け算 (define (Z-mult a b) (cons (plus (mult (cara) (carb)) (mult (cdra) (cdrb))) (plus (mult (cara) (cdrb)) (mult (cdra) (carb)))))N-to-Zでは-1を作ることができない。 N-to-Zは自然数を整数に変換するものなので、そもそも自然数でない負数は対応していない。 だから、-1は手で作らないといけない。 具体的には、
(Z= (N-to-Z (succ zero) (Z-mult (cons zero (succ zero)) (cons zero (succ zero))))が#tを返せば良く、実際にそうなっている。
整数に拡張した場合、このような証明になるのでしょう。
「整数の公理」
http://aozoragakuen.sakura.ne.jp/kaisekikiso/node10.html
こんな感じの回答を希望してます。(というかこれが回答そのものかな)
;; 0を空リスト定義 (define zero '()) ;; 0の判定関数 (define (zero?x) (null?x)) ;; 後者写像succ (define (succ x) (cons x x)) ;; 後者写像の逆写像desucc ;; desucc(succ(x)) = x (define (desucc x) (carx)) ;; 足し算plus (define (plus a b) (let loop ((result a) (b b)) (cond ((zero?b) result) (else (loop (succ result) (desucc b)))))) ;; 掛け算mult (define (mult a b) (let loop ((result zero) (b b)) (cond ((zero?b) result) (else (loop (plus a result) (desucc b)))))) ;; 自然数→整数 (define (N-to-Z a) (cons a zero)) ;; 整数の同値 (define (Z= a b) (equal? (plus (cara) (cdrb)) (plus (cdra) (carb)))) ;; 整数の掛け算 (define (Z-mult a b) (cons (plus (mult (cara) (carb)) (mult (cdra) (cdrb))) (plus (mult (cara) (cdrb)) (mult (cdra) (carb)))))N-to-Zでは-1を作ることができない。 N-to-Zは自然数を整数に変換するものなので、そもそも自然数でない負数は対応していない。 だから、-1は手で作らないといけない。 具体的には、
(Z= (N-to-Z (succ zero) (Z-mult (cons zero (succ zero)) (cons zero (succ zero))))が#tを返せば良く、実際にそうなっている。
(-1)×(-1)=a とすると、
{x -(x+1)}{x -(x+1)}=a
x^2-2x(x+1)+(-1)×(-1)×(x+1)^2=a
x^2 - 2x^2- 2x +a(x^2+2x+1)=a
x(x+2)(a-1)=0
これが任意のxで成り立つならばa=1
故に(-1)×(-1)=1
失礼。これはネタ回答だと思ってました。
これだと整数の定義や、それが加算や乗算に対して群となることは前提としてるので、質問者さんの要望には足りてないんじゃないでしょうか。
2014/09/17 20:09:44そうですね。もう少し詳しい証明をお願いいたします。
2014/09/18 08:14:56