KAOS (83) 文を形式化する基礎としての論理:述語論理 (4.4.1-7)

今回は,一階述語論理である.プログラミングは別として,要求段階で二階以上の高階述語論理を扱うことはないと思う(現状実務的ではないという消極的理由もある).従って,以降では単に述語論理とする.

 命題論理では,原子式と記号(∧,→など)のみの操作となる.表現できることに限りがある.P→Qというときに,P:アクセルペダルを踏下する,Q:加速するでもよいし,P:雨が降る,Q:隕石が落ちるでも構造上は同じである(真偽は違うかもしれない).

述語論理では,主として2つの方法で,命題論理における原子式の中身を明示しようとする.

最初は,述語を利用することである.述語論理式という名前に現れている.ここでの述語は,自然言語における述語を思い出せばよい.

自然言語で述語になり得るのは,日本語の場合は,動詞・名詞(+コピュラ 1)・形容詞(イ型およびナ型 2)である.

純粋な名詞のみの場合というのは,有名なうなぎ文にある.「(食堂で注文するときの)ぼくはうなぎ」というときの文字通りではないうなぎである.要求文書に,ぼくはうなぎ,がでてくることはないが,体言止めで終わることは多い 3.ただ,名詞は普通は,コピュラ(繋詞,「です」「である」など)とともに用いられる.

主として,述語には二つの役割がある.ある特性を示す場合,ふるまいを示す場合である.

私の車は白色です.

このときは,車の特性について述べている.

車が加速する.

これは,車のふるまいについて述べている.

これらは,それぞれ次のように書くことができる.

IS_WHITE(mycar),ACCELERATE(the_car)

IS_WHITE,ACCELERATEが述語で,括弧の中は主語になっている.特性について述べる場合は,動詞「である」だけではなく属性まで含んだ述語とする.

どちらも,関数のような形をしていることに気がつく.但し,括弧の中はパラメータではなく,「項」と呼ばれる.

「車がエンジン回転数を上げる」だと,INCREASE(the_car, engine_rotation)とでき,項が2つの場合である.自然言語でいえば,最初の項が主語で,2項目が目的語になる.

(nil)

Notes:

  1. コピュラというのは,日本語でいえば「である」に相当する.全ての言語がコピュラを持つわけではない.例えば,「私はプログラマです」という日本語は,ロシア語ではЯ программист,アラビア語ではأنا مبرمج となり直接名詞を接続する.
  2. ナ型の場合,学校時代は形容動詞と習った.本論では単にナ型形容詞とする
  3. うなぎ文は,日本語における主語の役割を議論するときに必ずでてくる文.例えば,三上章の「象は鼻が長い」(くろしお出版)を参照.ちなみにこのタイトルは,象鼻文.