wordとForm

ほとんどのwordはライブラリで「紹介」されます。例えば
 word(ss,p) … \(\in\)
この (ss,p) はgramと呼ばれます。gramに現れる型には v,s,c,p があります。\(\dagger\)

Formにはs-Form, c-Form, p-Formがあり、特別なs-Formにv-Formがあります。
\(x\) , \(X\) はv-Formで、 \(x \in X\) はp-Formです。

wordの結合力の差は自然に利用されます。例  \(x = y \Rightarrow y = x\)\(( x = y ) \Rightarrow ( y = x )\)
結合力の等しいものは通常は左から読まれます。例  \(\mathrm{P} , \mathrm{Q} , \mathrm{R}\)\(( \mathrm{P} , \mathrm{Q} ) , \mathrm{R}\)

wordは紹介時に表記法 R か F が付くことがあります。例えば
 word(vp,p)R … \(\forall\)  \(\exists\)
このRは右から読むことを表し  \(\forall x \forall y \mathrm{P}\)\(\forall x ( \forall y \mathrm{P} )\)
表記法がFのword \({\tt w}\) は \({\tt w}\)(\({\tt x}_1\), …, \({\tt x_n}\)) の形で使用されます。

特殊なword

Russelクラス \(\{ x \mid x \notin x \}\) がc-Formになることも見ていきましょう。
{ } で挟まれたwordは「wordからwordを作る関数」のように働きます。
 word(\({\tt x}\)\({\tt y}\),p→\({\tt x}\)\({\tt y}\),p) … \({\tt /}\)
これで \(\notin\) はword(ss,p)になります。
次のwordは(単独では)tex表記を持ちません。
 word(vp,c) … cls
なお {/} や {cls で { の後に半角スペースを入れてはいけません。

メタ自然数も利用されます。1以上の自然数 \({\tt n}\) に対して
 word(s\(^{\tt n}\),s) … set\({\tt n}\)
ただし s\(^{\tt n}\) は s を\({\tt n}\)個並べたものです。
Formのtxtでは\({\tt n}\)は略せます。s-Form \(\{ x , \{ y \} \}\) ではset2とset1が使用されています。

\, \; \! { } _ ^ はtex cmdになるだけのwordです。
\(\text{id}\) というword(s,s)があります。「\(X\)上の恒等写像」は \(\text{id} X\) ではなく \(\text{id} _ X\) とされることが多いです。
\(x_{1} x_{2} \cdots x_{99}\) なんてのも使用されます。

abbr

省略記法の処理するための abbr という規則があります。例えば
 abbr … \(\{ x \mathop{{\sf A}} \mid P \}\)\(\{ x \mid x \mathop{{\sf A}} , ( P ) \}\)
例  \(\{ x \in X \mid x \neq 0 \}\)\(\{ x \mid x \in X , x \neq 0 \}\)
なお \(( P )\) の \(( )\) は塊を維持するために必要です。

次のものは正確には無限後のabbrを生成します。2以上の自然数 \({\tt n}\) に対し
 abbr … \( X_{1} , \cdots , X_{\tt n} \mathop{{\sf A}}\)\(X_{1} \mathop{{\sf A}} , \cdots , X_{\tt n} \mathop{{\sf A}}\)

{ } は通常はFormとしての塊を作りますが、稀にその塊を崩すこともあります。
abbrを使用するときは ( ) を補いますが、補わないものは abbr* とされます。
pileというwordはtex表記が無く、次のabbr*はtex表記からは何が何だか。
 abbr* … \( X\)\(X , X\)
例  \(x \in X \in \mathcal{X}\)\(x \in X , X \in \mathcal{X}\)

cvt

Mathelの一階言語への翻訳ではcvtと呼ばれるタイプの変換規則が使われます。例えば
 cvt … \(A \stackrel{{\tt /}}{\mathop{{\sf p}}} B\)\(\neg ( A \mathop{{\sf p}} B )\)
例  \(x \notin x\)\(\neg ( x \in x )\)
次が重要です。
 cvt … \(T \in \{ x \mid P \}\)\(P\)\(x\)\(T\) を代入したもの
例  \(x \in \{ X \mid X \notin X \}\)\(x \notin x\)
以上の2つを合わせると
  \(x \in \{ X \mid X \notin X \}\)\(\neg ( x \in x )\)

\(x \in \{ y \mid z \in \{ x \mid x \in y \} \}\) は内側から計算する方が楽です。
外側からだと、\(\int f(x)dx=\int f(y) dy\) みたいな処理が必要になりますね?

翻訳が必要なword \({\tt w}\) に対し \({\tt w}\). というPropは自然にcvtを作ります。例えば =_. は次を作ります。
 cvt … \(X = Y\)\(\forall x \, ( x \in X \Leftrightarrow x \in Y )\)

defaltの翻訳では \({\tt w}\). が使用されます。
\({\tt w}\). の代わりに別定義 \({\tt w}\).. を使って翻訳する、というときには {\({\tt w}\)..} をPropの後につけます。

Russelのパラドクス

クラスが集合になるのか?という問いは自然に生まれます。\(\dot\exists\) というword(c,p)の定義は
 Exi. … \(\dot\exists C \Longleftrightarrow \exists X \, ( X = C )\)

\({\tt X}\) ◀ O となる \({\tt X}\) は tautology と言われることがありますが、Russelのパラドクスもです!?
  \(\neg \dot\exists \{ x \mid x \notin x \}\) \(\blacktriangleleft\) O
翻訳には4段階必要です。そのような計算も機械の得意分野です。
 ≃ \(\neg \exists X ( \forall x ( x \in X \Leftrightarrow x \notin x ) )\)

私たちは会員を募集しています。
会員は◀をクリックするProver9からのoracleを見れます。
ルールの詳細などの私たちの発明の核心的な部分は非公開です。ぜひ会員になって共に議論しましょう!
代表:須田智彦[t@mshk1201.com]まで。