3.2.2 notation部.constructors部
新しい理論を作る際, 古い(ライブラリ中の)概念を使いたいときがあります.
例えばFunction とか Function-like という概念を使いたいとします.このとき,
これらの用語はFUNC.VOC という vocabulary ファイルに登録されていますので,
vocabulary 部に FUNC を加えます.また, これらの用語は FUNCT_1 の中で(
MIZ 又は ABS ファイル )定義されていますので, notation 部に FUNCT-1 を加えます.そして,
多くの場合 constructors 部にも FUNCT_1 を加えます.
例
environ
vocabulary FUNC;
notation FUNCT_1 ;
constructors FUNCT_1 ;
begin
reserve X for Function;
theorem X is Function-like;
notation 部と constructors 部の間の違いですが,昔の MIZAR のバージョンではsignature
部というのが1つだけあって, 両者は統合されていました.そこから概念間の階層構造等の関係と個々の概念の定義が,
コンピュータのメモリに展開されました.しかし前者は重複する部分が多かった為,
メモリの節約のために分離されたのです.前者はconstructors 部に入れることになりました.そのため,
より包含的な構造をもつファイルがあれば, より小さい構造のファイルは constructors
部から省略でき, メモリの節約ができるようになったのです.例えば,上の例のかわりに,
environ
vocabulary FUNC;
notation FUNCT_1;
constructors TOPREAL1 ;
begin
reserve X for Function;
theorem X is Function-like;
としてもエラーは出ません,従って TOPREAL1 が constructors 部にあらかじめ入っている場合には,そこに
FUNCT_1は入れなくてよいのです.
最初は notation 部と constructors 部両方にファイル名を順に入れてゆき,完成後,よりベーシックなファイルを
constructors 部から削ってみると環境部をより単純にすることができ, またメモリも節約できます.
notation 部には, vocabulary ファイル中に書いたシンボルを使用したい場合,
そのシンボルが定義されている article のファイル名を ここに書いておきます.article
の定義部( definition の部分 )では,そのシンボルの意味付けがなされています(どういうアーギュメントをいくつ持つのか,そのシンボル自身がどういうモードになるのか等).
例えば, article BOOLE と PRE_TOPC にはどちらにも∩ ( インターセクション
)が定義されています(後者は再定義).しかし, そのシンボルの使われ方が異なっているのです.
< article BOOLE >
definition
let X,Y;
func X /\ Y -> set means
x c= it iff x in X & x in Y;
end;
< article PRE_TOPC >
definition
let TP, P, Q;
redefine
func P /\ Q -> Subset of TP;
end;
BOOLE での/\ (∩のこと)は,それ自身 set を意味し, アーギュメントとして set を両側に持ちます.
それに対して PRE_TOPC でのそれは,自分自身を TP ( トポロジカルスペース
)のSubset とし, アーギュメントとして TP の Subset を両側に持ちます.
/\を使った article をこれから書こうとする場合, それを set として使用したければnotation
部に BOOLE と書き, TP の Subset としたければ PRE_TOPC と書かなければいけません.