Formel
admin
1 例から
この Book は
Formel(式の書き方)の説明です。ヘッダに formel 行が無いので default.formel を読み込んでいます。
まず、この頁で使う記号を紹介します(紹介のしかたは次の節)。
word(ss,p) …
\(\in\)word(sc,p) …
\(\in\)word(pp,p) …
\(,\) \(\mathbin{\rm o\!r}\) \(\Rightarrow\) \(\Leftrightarrow\)word(vp,p)R …
\(\forall\)次の4つは、どれも正しい式です。表示では _ や | が見えなくなるので、ソースの綴りを並べます。「…」は読み方の目安です(式の意味は、後で定義や公理を置いて初めて決まります)。
①
\(x \in X\) ソース
x ∈ X … 集合 x が集合 X に属する
②
\(x \in X\) ソース
x ∈_ X_ … 集合 x がクラス X_ に属する(∈ とは別の記号 ∈_)
③
\(\forall x ( x \in A \Rightarrow x \in B )\) ソース
∀ x (x ∈ A ⇒ x ∈ B) … A の元はすべて B の元
④
\(P , Q\) ソース
P^ and Q^ … 命題 P^ と命題 Q^ の両方
次は式になりません。
⑤ ソース
x_ ∈_ X_ … ∈_ の左には s-Form しか置けないが、x_ は c-Form
用語:
Formel で使われる記号を
word、wordの列のうち文法をみたすものを
Formと言います(①〜④はForm、⑤はFormでない)。
Formには3種類あります。
s-Form … 集合を表す項(x、X、?f (x) など)
c-Form … クラスを表すもの(X_ など)
p-Form … 命題を表すもの(①〜④ など)
「s-Form は集合」と言ってしまいがちですが、
形式(書けるか・gram・翻訳できるか)を見るときは s-Form・c-Form・p-Form、意味(何を表すか・真偽)を見るときは集合(もの)・クラス・命題と言い分けます。gram に c を含まない word を
集合の語、含む word を
クラスの語と言います(∈ も集合の語)。定数の綴りの先頭の
| を
bar と言います。主張は Thm 全体、goal はその ◀ の左(1.book)です。
Formは高階{s,c}ソート言語の式です。s と c の2種類の項を持ち、P^ のように命題を動く変数もある、という意味です(ふつうは一階の部分だけを使います。証明器に渡すときの翻訳は 3.book)。
1.1 自分の Book では
ヘッダに
import /common/word_logic と書くと、⊤ ⊥ ¬ and or ⇒ ⇔ ∀ ∃ ∀_ ∃_ = =_ and_ ⟹ ⟺ {/} と、下の abbr(col・∀ など)が紹介済みになります。∈ と ∈_ は
word ∈・
word ∈_ と自分で紹介します(\cls も同じ。.formel は word を紹介しません)。集合とクラスの基本の語(∈_ ∈ \cls cls ! \fn など・=. ⊂. ⊂_. =_. などの定義)までまとめて紹介するなら
import /common/word_basis(6.book)。
1.2 読まれ方を CLI で確かめる
式がどう読まれたかは、証明器に投げずに確かめられます。新しい書き方や、括弧を省いた式で迷ったときに使います。
cd /var/www/test2.atp-research.com && php wp-content/themes/lightning/mathelia/slash_cli.php 0_tutorial_AI/2 '`∀ x (x ∈ A ⇒ x ∈ B)`'
結果は
[∀ x [⇒ [∈ x A] [∈ x B]]] です。これは
前置記法で、[ ] の先頭の word が外側、残りがその引数です(③ は「∀ x の中に ⇒ があり、⇒ の左右が ∈」と読まれた)。式はいくつでも並べて渡せます。本の名前(ここでは 0_tutorial_AI/2)は、その本が紹介した word を使って読むためのものです。
以下の節でも、読み方の例にはこの結果を添えます。
2 word
2.1 紹介とgram
ほとんどの word は
DB に登録されていて、Book で
紹介してから使います(例外は次の節の変数・定数など .formel に登録された word)。ソースで
word ∈ と書いた行が紹介です(上の節の4行)。表示ではその word の gram が付きます。
gram は「何を受け取って何を作るか」です。(〇,△) は「〇 を受け取って △ を作る」と読みます。
∈ … (ss,p):s-Form 2つから p-Form を作る(① の x と X)
∈_ … (sc,p):s-Form と c-Form から p-Form を作る(② の x と X_)
and or ⇒ ⇔ … (pp,p):p-Form 2つから p-Form を作る
∀ … (vp,p):変数と p-Form から p-Form を作る(③ の x と x ∈ A ⇒ x ∈ B)
gram の 〇 の文字数を arity と言います(∈ は 2)。gram が同じ word は1行でまとめて紹介できます。
word は tex(表示の形)も持ちます。∈ と ∈_ のように tex が同じ別の word があるので、表示の記号をクリックして確かめてください。自分で word を作るときは gram と tex を用意します。
3 変数と定数
変数と定数は DB ではなく .formel に登録されている word です(紹介は要りません)。綴りで種類が決まります。
[lDP] … 英字1文字+数字0個以上+ ' 0個以上(
[A-Za-z][0-9]*'*)。例 x、X1、A'
| 種類 | gram | 変数の綴り | 定数の綴り | 例(ソース) |
|---|
| s-Form | (,s) | [lDP](v-Form) | |[lDP] | x |a |
| c-Form | (,c) | [lDP]_(v_-Form) | |[lDP]_ | X_ |A_ |
| p-Form | (,p) | [lDP]^(v^-Form) | |[lDP]^ | P^ |P^ |
定数は変数の先頭に | を付けたものです。
\(\mathrm{x} \in X\) も
\(x \in \mathrm{X}\) もp-Formです。定数は量化できません:ソース
∀ |x P^ はFormでないです。
引数をとる変数・定数(?f など)もあります。これは読み方の後の「高階の記号」の節で扱います。
4 読み方
4.1 区切りと括弧
word は半角スペースで区切ります。ただし ( ) の前後だけはスペースを省けます。例
x ∈ (X)4.2 結合の強さ
括弧が無いときは、word の結合の強さで読みます。強い順に
¬ > ∀ ∃ > ⇒ ⇔ > and or > ⟹ ⟺ > and_
(and_ ⟹ ⟺ は結合の強さだけが違う and ⇒ ⇔ で、最後の節で紹介します)
(= や ∈、2項の述語変数を使った
\(x \mathbin{p} y\) はこれらより強く、互いに同じ強さ)。例:
\(x = y \Rightarrow y = x\) は
\(( x = y ) \Rightarrow ( y = x )\) 注意:⇒ は and より強く結びつきます(ふつうの数学の書き方と逆)。
ソース P^ and Q^ ⇒ R^ は P^ and (Q^ ⇒ R^) と読まれます(CLI の結果 [and P^ [⇒ Q^ R^]])。
「P かつ Q ならば R」は、and より弱い ⟹ を使って P^ and Q^ ⟹ R^(CLI の結果 [⇒ [and P^ Q^] R^])と書くか、括弧を付けて (P^ and Q^) ⇒ R^ と書きます。
結合の強さは各 word の preced(最後の節)で決まっていて、「ならば・同値」には and より強い ⇒ ⇔ と、弱い ⟹ ⟺ の2組があります。取り違えてもエラーにならず、別の式として読まれるだけなので、迷ったら括弧を付けるか CLI で確かめます。
同じ強さの word が並ぶと左から読みます:
\(P , Q , R\) は
\(( P , Q ) , R\) (CLI の結果
[and [and P^ Q^] R^])。and と or も同じ強さなので、ソース
P^ and Q^ or R^ は
(P^ and Q^) or R^(
[or [and P^ Q^] R^])です。and を or より強くする慣習はありません。混ぜるときは括弧を付けます。
ただし表記法が R の word は右から読みます。∀ は R(紹介の行の gram の右に付いています):
\(\forall x \forall y P\) は
\(\forall x ( \forall y P )\) (
[∀ x [∀ y P^]])
∀ ∃ は ⇒ ⇔ and or より強く結びつきます。ソース
∀ x x ∈ A ⇒ x ∈ B は
(∀ x x ∈ A) ⇒ x ∈ B(
[⇒ [∀ x [∈ x A]] [∈ x B]])と読まれ、後ろの x は自由変数になります。エラーにはならないので、∀ ∃ の範囲は③のように必ず括弧で囲みます。
5 高階の記号
ここまでの一階の書き方に、変数の種類を1段増やします。
5.1 命題の変数
v^-Form(P^ など)は高階言語の記号です(一階論理の教科書ではメタ記号の扱い)。v^-Form や下の ?f を含む Thm も prf で p;(prover+)に投げられます。投げる前に定数へ置き換えて一階のThmにします(3.book「高階変数の定数化」)。
5.2 引数をとる変数・定数
引数をとる変数もあります(高階言語の記号)。? は s-Form を、?_ は c-Form を引数にとることを表し、? の個数が引数の個数です。
?[lDP] … gram (s,s)。例 ソース
?f (x) は s-Form(f(x))。
?f (x) ∈ X の CLI の結果は
[∈ [?f x] X] 作る Form は末尾の印で決まります:印なしは s-Form、
_ は c-Form、
^ は p-Form。例
?_F_ (X_)(gram (c,c))は c-Form、
?_p^ (X_)(gram (c,p))は p-Form。c-Form を受け取って s-Form を作る
?_f の綴りはありません。引数が s と c の両方なら ? を先に並べます(
??_p^ (x , X_))。
| を付ければ定数です。例 |??_[lDP]^ は gram (sc,p):s-Form と c-Form を受け取り p-Form を作る定数。ソース
|??_p^ (x , X_) は p-Form(
[|??_p^ x X_])
5.3 F 表記
表記法が F の word w は w(x1 , … , xn) の形で使います。例 ソース
?f (x)・
|??_p^ (x , X_)。表記法(R や F)は gram と同じく word のデータで、紹介の行で gram の右に表示されます(Book の中で変えることはできません)。