3.3 本体部


3.3.1 文

次に本体部の説明をします.本体部は,基本的には文からなり,文の並んだものです.文は次のような構造をしています.


L1: A=B by ...;

L2: B=C by ...;

L3: A=C by L1,L2;

ラベル 式 引用部

ラベルは必要な文(後で引用する文)だけつけます.また, by ... の部分を引用部といい,その式を導くのに必要な文のラベルを書きます. 引用部,by ... では,その article 中のラベルと他の article からの引用のラベルを混ぜることができます.例えば,

 ......... by L1,L2,TARSKI:5;

というふうに,その article中のラベルはそのまま,他の article からの引用の場合は,article名 : 数字です.また定義を引用する場合,article名 :def 数字です.

さらに,引用部の代わりに,


L3:  A=C

proof

...

...

hence thesis;

end;

というふうに, proof 〜 end ではさんだいくつかの文で証明をつけることもできます.この場合,これ全体で1つの大きな文とみなせます.このとき,proof 〜 end の end の直前には thus もしくは hence という文を必要とします.これは,いま証明を付けている最初の式がこの文の式によっていえています,ということです.thus と hence の違いですが,hence は then + thus になっています.

then はここではじめて出てきましたが,直前の式を引用するときに使い,例で説明すると,

L1:A=B by ...;

L2:B=C by ...;

となっているとします.このときに,

L3:A=C by L1,L2;

と書く代わりに,L2 の式は直前の式ですから, L3 の文の引用部から L2 を取り除いて, thenを使って,

then L3:A=C by L1;

と書くことができます.

then を使う理由には,ラベルの数をなるべく減らそうということがあります.ふつう証明では直前の式を引用することが非常に多くあります.直前の式を引用するときにも,ラベルをつけて,by ラベルとすると,たくさんのラベルを必要とします.しかしながらここで then を使うことにより,直前の式を引用するときにはラベルを使う必要がなくなり,ラベルの数を減らすことができるわけです.ですから,直前の式を引用するときはラベルを使って書く書きかたも間違いではありませんが, then と書いた方が良いわけです.

また,article をMizarライブラリに登録するときに使う articleの改良のためのチェッカー(Chapter 8.1.1 参照)でチェックするときに,証明は正しくても上記のラベルを使って書く方式は、皆エラーになってしまいます.そのエラーがある限り,Mizarライブラリには登録させてもらえませんから,結局のところ書いてはいけないということです.then が使えるときにはラベルを使わないで then を使います. このため,proof 〜 end の end の直前の文で,その直前の式を引用するときは hence を使います.


3.3.2 定理

一般に本体部は定理と定義を中心にして構成されています.

article で,定理を書くときには,

    theorem 定理の式

proof

...

...

end;

と,書きます.

こう書くのと先ほどの,

proof

...

...

end;

と,書くのではどう違うかというと,theorem と書くことによって,その式がabstract fileに定理として抜きだされるということです.abstract file とは,article から theorem (定理の式)や definition (定義の式)などを抜きだしたファイルです.(.ABS ファイル) article を,Mizar ライブラリに登録するときには,article を abstract file にして登録します.なぜなら,証明などをすべて含んだ article (.MIZ ファイル)では,ファイルの大きさが膨大になってしまって,そこから引用するものを見つけるのは大変だからです.ですから,引用してもらいたい式を書くときには theoremをつけておきます.

article で定義を書くときには definition を使います.なにか新しい語を定義するとか,新しい関数を定義するときは,この definition を使って定義します.定義については後で詳しく説明します.

それから,theorem や definition は proof 〜 end の中に書くことはできません.ネスティングの一番上の段階だけで使うことができます.つまり,

  theorem ...

proof

theorem ...

proof

...

...

end;

end;

と書くことはできません.

このように,Mizar article は,大きく分けて環境部と本体部からなり,本体部は通常いくつかの定義と定理から成り立っています.

また,Mizar articleでは :: 以降はコメントになります.