ラベル FOL の投稿を表示しています。 すべての投稿を表示
ラベル FOL の投稿を表示しています。 すべての投稿を表示

2009年11月11日水曜日

【LPL】9章 限量入門 (5)


  • 9.6 複合名詞句の翻訳

    • この節は、自然言語の文をFOLに翻訳する練習。
    • 特に限量表現が絡むもの。
    • 会話の含みと限量についての説明あり。
    • まず、「空疎に真な一般文」について。
    • 例えば、
      ∀y(Tet(y) → Small(y)).
      これは四面体が存在していて、それらが全てSmallならば真である。しかし真になるのはそれだけではない。四面体がまったく存在しない談話領域でも真である。四面体がまったく存在しないという単純な事実によって真となる、ということを空疎に真という。
    • 続いて、「本質的に空疎」について。
    • 例えば、
      ∀y(Tet(y) → Cube(y))
      も談話領域によっては真となる。ただし、これが真となりえるのは、空疎な真のときだけだ。こういう場合を「本質的に空疎」と言う。



さあ、練習問題。7問、トータル70文くらいの翻訳。のんびりいこう。

こつこつ。

2009年11月10日火曜日

【LPL】9章 限量入門 (4)

9.5節の問題を5問やる。あせらないよう自分にいいきかせる。
次回は、9.6節 複合名詞句の翻訳。

こつこつ。

2009年11月9日月曜日

【LPL】9章 限量入門 (3)

FOLの勉強を再開できるぐらいに復活してきた。あせらず刻んでいこう。


  • 9.5 4つのアリストテレス文型

    • 4つのアリストテレス文型はFOLで表現できる。

      • All P's are Q's.
        ∀x(P(x) → Q(x))
      • Some P's are Q's.
        ∃x(P(x) ∧ Q(x))
      • No P's are Q's.
        ∀x(P(x) → ¬Q(x))
      • Some P's are not Q's.
        ∃x(P(x) ∧ ¬Q(x))




10月体調を崩したのは、どうも夏場に論理に根を詰めすぎたのも原因な気がする。で、一カ月休んだのですが、一カ月休むと、論理について以前にやったものをほとんど忘れている自分がいたり。論理の勉強は、他の勉強とくらべて特にむずかしい気がする。。。

ちょっとスタンスを変えて、まずは「ことば」としてのFOLを使いこなすことに重点を置いてみることにする。「言語」としてのFOLの詳細を理解する、というのは、根を詰めないとできないし、根を詰めてやってもすぐに忘れる。。。「ことば」としての使いこなしの方が忘れにくい気がするし、それがあれば言語としての詳細の探求のスタートポイントをいつも持っていることになる気がする。気がするだけかも。

こつこつ。

2009年9月27日日曜日

【LPL】9章 限量入門 (2)


  • 9.4 限量子の意味論 (Semantics for the quantifiers)

    • 自由変項を含む論理式 (wffs)の真理値:
      自由変項を含む論理式は、真理値をもたない。真でも偽でもない。
    • 充足 (satisfaction):
    • 充足の取扱いは論理学の方言によって微妙に異なる。
    • この本では次のように取扱う。

      • S(x)が、自由変項xのみを含む論理式であるとする。
      • あるobjectについてS(x)を充足するかどうか調べたいとする。
      • そのobjectはb という名前が指しているとする。
      • S(x)におけるxの自由な出現をすべてbに書換えたものをS(b)と呼ぶ。
      • S(b)が真ならば、そのobjectはS(x)を充足する(satisfies)という。

    • それを指す名前が存在しないobjectsについてはどうするか。
    • 一時的に名前を作ってそれを指させることによって対応する。
    • ∃の意味論:
      ∃xS(x)
      S(x)を充足する対象が少なくともひとつ存在する。
    • ∀の意味論:
      ∀xS(x)
      すべての対象がS(x)を充足する。
    • 談話領域 (domain of discourse):

      • 限量子を含んだ文の真偽は、絶対的なものではなく、相対的なものである。
      • なぜか。それらが充足する、ということを判定するための、なんらかの対象を含む(空でない)集合が存在することを暗黙の前提としている。それに対して相対的、ということ。
      • この集合を、談話領域 (domain of discourse) や限量領域 (domain of quantification) と呼ぶ。
      • 空な談話領域も含めてFOLを構成することもできる。しかし、それは労多くして幸少い。(Quineは空な領域も対象としていた)



こつこつ。

【LPL】9章 限量入門

さあ、限量 (quantification) だ。
あせらず、ゆっくりいこう。頭の方は用語の導入が多いので、メモをとりながら。


  • 前説

    • 名前 (names):
      Max, Claire など。
      FOLの個体定項 (constant symbols) に対応している。
      普通名詞 (common nouns) とも言う。
    • 限定詞 (determiners):
      every, some, most, the, three, no など。
      普通名詞と結び付けて、名詞句 (noun phrases) をなす。
    • 限量表現 (quantified expressions):
      限定詞を使った名詞句のこと。
    • 限量文 (quantified sentences):
      限量表現を含む文のこと。
    • 真理関数的結合子 (truth-functional connectives)と限量 (quantifications) の違い
      限量文の真理値は、それを構成している文の真理値からは決定できない。
      例えば、
      Every rich actor is a good actor.
      の真理値は、rich actorsという集り(collection)とgood actorsという集り(collection)の間の関係によって決まる。
    • 隠れた限量 (hidden quantification):
      例えば、論理的に含意する (logically implies) は非真理関数的結合子である。PとQの真理値だけでは、論理的に含意するかどうかは決まらないから。
      これは限量だ。Pを真にするあらゆる状況において、Qも真になる、ということなので、状況・対象・限量を暗黙に含んでいる。
    • FOLの限量子 (quantifiers of FOL):
      FOLに含まれる: some, every
      FOLに含まれないが、表現できる: three, no, whenever
      FOLで表現できない: most, many

  • 9.1 変項と原子論理式 (Variables and atomic wffs)

    • 変項 (variables):
      副次的な記号 (auxiliary symbols)。
      項 (term)の新種。
      定項 (constants) を置けるところには変項を置ける。しかし、意味に違いがある。定項は具体的な対象を指す。変項は、限量子と述語との関連を明確にするための「場所取り (place holder)」の機能を担う。
    • 原子論理式 (atomic well-formed formulas, or atomic wff)
      変項の導入によって、Home(claire)などとしていたものから敷衍して、Home(x)などというものができることになる。これを原子論理式 (atomic wff) と呼ぶ。
      原子論理式は文 (sentences) ではない。
      限量子と一緒に使うと文になることができる。
      ただし、論理式に現れる変項を束縛する限量子とともに使われた場合に限る。

  • 9.2 限量子記号 : ∀ と ∃

    • 全称限量子 (∀) (Universal quantifier):
      ∀xHome(x)
      「すべての対象xについて (for every object x)」
    • 存在限量子 (∃) (Existential quantifier):
      ∃xHome(x)
      「ある対象xについて (for some object x)」

  • 9.3 論理式と文 (Wffs and sentences)

    • 論理式 (wffs):
      Doctor(x) & Smart(x)
      などは、atomic wffsを真理関数的結合子で結合したものである。atomic wffsは文じゃない。これは新種だ。
      これらを論理式と呼ぶ。
    • 論理式の定義:
      論理式は再帰的に定義される。
      P,Q,P1,...,Pnを論理式とする。νを変項とする。このとき次のものは論理式である。

      • ~P
      • P1 & ... & Pn
      • P1 | ... | Pn
      • P -> Q
      • P <-> Q
      • ∀νP (Pの中のνは束縛される)
      • ∃νP (Pの中のνは束縛される)

    • 限量子の作用域 (scope of quantifier)
      変項は、自由変項 (free variable)、束縛変項(bound variable)の2つのどちらかである。
      束縛をするのは限量子である。
      論理式において、限量子が束縛している範囲を作用域と呼ぶ。



こつこつ。

【LPL】8章 条件文の論理

8章完了。

  • 8章だけで練習問題が53問。タフだった。。。
  • 内容的には2つのことだった。

    • 条件文の証明について、非形式的なものと形式的なものを導入。
      これで真理関数的結合子の演繹体系が構築完了となった。
    • 真理関数的結合子の演繹体系の健全性と完全性の紹介。

  • 用語の整理でありがたかったこと。「健全な論証」と「演繹体系の健全性」との両方に「健全」という言葉がでてくるが、ほとんど関係がないということ。「真理関数的に完全な結合子セット」と「演繹体系の完全性」との両方に「完全」という言葉がでてくるが、これもしかり。
  • 完全性と健全性の覚え方というか、表現に仕方も勉強になった。次のように覚えておくとよい。(Ftを真理関数的結合子の演繹体系とする)

    • Ftの完全性:トートロジー的帰結ならば、Ftで証明可能。
    • Ftの健全性:トートロジー的帰結でないならば、Ftで証明不可能。

  • 健全性の表現については、この対偶の場合が多いが、こちらの方が実用的である。

第一部 命題論理が完了。

ついに、第二部 限量子、だ。
この本では挫折せずにやりきれるのだろうか。。。

こつこつ。

2009年9月23日水曜日

【LPL】7章 条件文 (2)

7章完了。
練習問題32問。結構時間がかかった。

  • 条件文にて、帰結と同値が論理的真理に降りてきた。これを足掛りに、次章で「代入」が自然演繹にも現われるのかな?
  • 接続詞(結合子)が真理関数的かどうかを判断する手法として、敷衍によって矛盾が発生するかどうかというチェックが紹介された。これは、自然言語とFOLとを相互翻訳するのにとても役立つ。
  • 練習問題後半は、ソフトウエア提出ではなく、担当教師提出のものが多かった。こういうの、担当教師や友人と議論できる機会がないのが残念。そうとう伸びが違うんだろうなぁ。


次は、Quantification前、最後の一章。
こつこつ。

2009年9月22日火曜日

【LPL】7章 条件文

条件文(conditional)と双条件文(biconditional)についてはQuineでしっかりやった。
ここではLPLにおける条件文の取扱いの要点を確認する。

まず条件文。

  • 英語の直接法のifに対応したものであり、実質的条件文と呼ぶ。仮定法はFOLでは取り扱わない。
  • P if Q は、FOLに翻訳すると、Q → P である。このとき、"QはPの十分条件である"と言う。
  • P only if Q は、FOLに翻訳すると、P → Q である。このとき、"QはPの必要条件である"と言う。
  • unless について。次のものは同じ状況を表現している。

    • Unless P, Q.
    • Q unless P.
    • Q if not P.

  • 最後の文をFOLに翻訳すると、~P → Q となる。

  • 実質的条件文によって、論理的帰結の概念を論理的真理の概念に組込むことができる。
  • すなわち、文Qが前提P1,...,Pnの論理的帰結である云々ということは、(P1|...|Pn)→Qが論理的真理であると表現できてしまう。


続いて双条件。

  • 双条件も、実質的双条件。P ↔ Q。
  • 英語、とくに数学者によるバリエーション。

    • P if and only if Q.
    • P iff Q.
    • P just in case Q.


  • 「論理的に同値 ⇔」を論理的真理の概念に組込むのに使える。


さあ、練習問題だ。

こつこつ。

【LPL】6章 形式的証明とブール論理

6章完了。

  • 自然演繹(natural deduction) を初めて学べた。うれしい。今まで読んだ論理の本だと結構後半で導入されていたので、辿りつくまえに挫折していた。
  • 自然演繹に、いわゆる代入が存在しないのが興味深い。(同一性不可識別は存在する)
  • 部分証明がそれらのかわりの役割を担っている感じ。
  • 自然演繹はわかりやすいが、「同値な表現の代入」ができないので、証明に結構手間がかかる。このあたり、Quineが気にしていたところか。
  • ただし、Fitchには taut con、fo con、ana conがあるので、学習目的でなければそれらの手間ははぶける。

quantification まであと二章。

こつこつ。

2009年9月20日日曜日

【LPL】5章 ブール論理の証明方法

5章完了。

私が今までに読んだ本とは違っていて、興味深い点がいくつか。

  • 例えばQuineでは、論じているドメインの知識は捨ててしまって、それでも残るのが論理という言語や思考の性質、という感じであり、他にもそういう本がけっこうあり、それは確かに論理の本質なのだが、日常の議論においては、ドメインの制約も論証の一部として利用しているということから、どうもすわりが悪かったのが本当のところ。この本は、その点を明確にし、ドメインと論理の兼ね合いも分析的帰結(Analytic Consequences)として、TW-帰結(TWにおけるドメイン知識活用)、TT-帰結、FO-帰結、論理的帰結などと分類しつつ適切に導入している。これはありがたい。
  • 非形式的証明という名のもとに、自然言語での証明についてもページを割いているのだが、これが前項と相俟って内容豊かになっている。すなわち、論理の推論規則だけだと、骨組みだけの荒涼とした証明となるが、ドメイン知識による推論もカバーしているので、日頃、コンピュータ科学や数学で使われている証明に近い内容になる。しかも、どの推論が(ある意味)pure論理で、どの推論がドメイン知識かという関係も明確にしてそれをやってくれる。

これだけでもこの本を読んだ価値はあった。

こつこつ。

【LPL】4章 ブール結合子の論理 (2)

4章完了。

とにかく問題数が多いのでたくさん訓練できる本。それがありがたい。
そして Grade Grinder が採点してくれるので、今のところ問題数に嫌気は感じない。たぶんGGが無ければ、この問題数にはめげていたと思う。

Grade Grinderの採点結果はこんな感じでメールで来る。

Grade report for aka (aka.xxxxx@xxxxx.xxxx)
Submission ID: xx.xxx.xx.xx.xx.xxxxxxxxxxx
Submission received at: Sun Sep 20 07:52:04 GMT 2009
Submission graded at: Sun Sep 20 07:52:09 GMT 2009
Submission graded by: gradegrinder2.uchicago.edu

#### No instructor name was given. The report was sent only to the student.

The following files were submitted:
Sentences 4.40.sen

EXERCISE 4.40

Sentences 4.40 (Student file: "Sentences 4.40.sen")
Your sentences are all correct. Yes!

---------------------------------
The Grade Grinder is powered by a generous grant from SUN Microsystems.

Funding for the Openproof(TM) project comes from Stanford University's
Center for the Study of Language and Information and Indiana University's
Visual Inference Laboratory.

この本なら FOL を習得できるかなぁ。

こつこつ。

2009年9月19日土曜日

【LPL】4章 ブール結合子の論理

新規導入の用語が多いので、私家版整理。

  • 論理的真理(logical truth)

    • 文のこと。
    • どのような前提達であっても、その論理的帰結になれるような文。
    • 例:a = a.
    • 例:P | ~P.

  • 真理関数的(truth-functional)

    • 構成要素となっている文の真理値からのみその真理値が決まるもの。
    • ~、&、|という結合子は真理関数的。
    • 真理関数的ではない例:"it is necessarily the case that"という結合子を考える。これは"it is necessarily the case that S"としたとき、Sの真理値のみから全体の真理値がきまるわけではない。こ

  • TW-可能(TW-possible)

    • 「物理的」ということよりも「論理的」ということの方がより根源的というか、なんというかである。例えば、「物理的」に言えば、アインシュタインの相対性理論の範囲では、光速を超えて移動することは不可能である。しかし「論理的」に言えば、光速を超えて移動するということは可能である。
    • スタートレックで、超光速で宇宙船が移動しているのは、物理的にはありえないが、論理的にはありえる、ということでもある。
    • このように、一般的な会話において、「何かが可能」ということは、論理的なこととと物理的なことが混在しているものである。
    • Tarski's World も、それ固有の物理世界を成している。
    • Tarski's World 上に構成可能な世界のいずれかにおいて真となりうる文のことを、TW-可能と呼ぶ。

  • 論理的に可能(logically possible)、論理的可能性(logical possibility)

    • 論理的に可能(な文)というのは、曖昧な定義だが、それを真とするような、状況というか状態というか談話の世界というものが存在する、ということだ。
    • これは曖昧でもやもやするのだが、上のTW-可能なものは、論理的に可能であることは間違いない。逆は、間違いないとは言えないけど。

  • 真理値表の方法(truth table method)

    • 構成する文の真理値から、全体の真理値を算出する方法。

  • TT-必然(TT-necessary)、トートロジー(tautology)

    • 真理値表にて、構成する文の真理値に関わらず全体は常に真となる文をTT-必然と呼ぶ。ただし歴史的理由によりこれはトートロジーとも呼ばれている。本書ではトートロジーと呼ぶことにする。
    • トートロジーは論理的真理である。
    • 注:FOLの文 a = a は論理的真理だがトートロジーではない。

  • TT-可能(TT-possible)

    • 真理値表で少くともひとつの行で真となるなら、TT-可能であるという。

  • TW-必然(TW-necessary)

    • 文Sがあるとする。Tarski's World では、いろいろな世界を構成可能だが、そのような世界の中で、Sが真理値を持ち得るすべてのものについてSが真となるならば、SはTW-必然であるという。
    • Sが真理値を持ち得るすべての世界というのは、Sを構成している文に含まれるすべての名前について、対象が存在しているような世界である。

  • 必然性の関係

    • TT-必然(トートロジー) ⊂ 論理的に必然 ⊂ TW-必然
    • 「論理的に必然」の定義は曖昧にも関わらず、この関係は厳密に成り立つ。

  • 可能性の関係

    • TW-可能 ⊂ 論理的に可能 ⊂ TT-可能
    • 「論理的に可能」の定義は曖昧にも関わらず、この関係は厳密に成り立つ。


こつこつ。

【LPL】3章 ブール結合子

ちょこちょこ進めていた3章が完了。

この本の強みは、やはり付属ソフトウエアだ。
テキストの説明は、意図的に厳密さを求めていない部分が散見される。
こんな簡単な説明じゃ初学者は混乱するのでは、というところもあるが、付属ソフトウエアで問題を解き、可視化を体感すると、そこから意味が読取れるようになっている。

Tarski's world にバグがあるのがおしい。

Ascii文字と論理記号との対応の例を得たのもうれしかった。

記号 : Ascii
= : =
≠ : #
¬ : ~
∧ : &
∨ : |
→ : $
↔ : %
∀ : @
∃ : /
⊆ : _
∈ : \
⊥ : ^

Emacsのキーバインディングを決めるときなどは、自己流じゃなくて、これに準拠しようと思う。

こつこつ。

2009年9月15日火曜日

【LPL】2章 原子文の論理

とりあえず、2章 原子文の論理まで完了。

ここまではとてもよい感じ。

この段階での等号(同一性)に基づく代入が、同一者不可識別性という定義にすぎない、という知識はありがたい。

ただ、どの論理の本も命題論理の間は簡単なんだよね。。。

問題は quantification。

そこに入ったところで判断することにする。

とにかくFOLを自分の武器と思えるくらいに習熟したい。

やはり、それがないと、何をやっても砂上の楼閣な気がする。

こつこつ。

2009年7月22日水曜日

【検証論】4 ホーア論理詳説

まず、4章は充填率が高いというか、手加減がないというか、前章で作った用語が入り乱れて記述されているので、刻んで読んでいくことすら難しい。なので自分なりにいろいろ展開して見える化しないと、私はとても理解できなかった。展開したものをここに書く。読書メモじゃなくて、そういうものなので、誤りを含んでいる可能性も高いと思う。


* 4 ホーア論理詳説
自分なりのポイントを自分なりに書く。

まず、ホーア論理を理解するために形式的理論を振り返っ
てみる。

** 形式的理論の骨組
形式的理論の骨組をできるだけシンプルに書く。
形式的理論を組み立てていく標準的な順番に沿って書く。
一階述語論理とする。

- 語彙を決める。
- 変数
- 定数
- 関数記号
- 記号
- アリティ
- 述語記号
- 記号
- アリティ
- 論理記号
整理の関係でここに書いたが論理記号は汎用的に
決まっているのでそれをそのまま採用するだけ。

- 構文を決める。
- 無手勝流 (自分で決める)
- 項の構文
- 論理式の構文
- 一階述語論理 (汎用的に決まっている)
- 項の構文
- 論理式の構文

- 語彙の解釈を決める。
- 真理値集合:{True,False}が存在するとする。こ
れはお約束。
- 領域:領域を決める。
- 定数:領域の要素と定数を紐付ける。
- 関数記号:領域上の関数と関数記号を紐付ける。
- 述語記号:領域上の述語と述語記号を紐付ける。
- 述語記号"="は必ず領域における等価関数に紐付
けること。

- 形式的理論の公理を決める。
ここがAIMAと違う。AIMAはこれらを伴意と真理値表
から導き出す。プログラム検証論は公理として与え
る。
- 公理(I群) (論理的公理)
- これは、一階述語論理としては確定している。お
約束。
- 公理(II群) (非論理的公理)
- これは、今構築している内容に合わせて定義す
る。これは構文で許される範囲で、理論を構築
するものが自由に選ぶものである。自由に選ぶ
というのは、この時点では特定の解釈との整合
性は求められていないから。それは理論を作っ
た後の検査課題である。
- 推論規則
- これは一階述語論理としては確定している。お約
束。

- 形式的証明の方法を決める。
- プログラム検証論ではヒルベルトの方法を採用し
ている。
- 他に自然演繹などがある。

** 形式的理論のトピック
前項で形式的理論の骨組が整理できた。ここでは、この
上でどのようなトピックがあるのか、列記する。

- 環境と項の解釈
- 項の解釈には環境を使う。
- 論理式Aは解釈Iと環境pに対して正しい、ということ
を、

I,p |= A

と書く。

- 論理式Aは解釈Iと任意の環境に対して正しい(伴意?)
ということを、

I |= A

と書く。

- トートロジー。任意の解釈Iに対して I |= A が成立
するとき、Aをトートロジーと呼ぶ。

- 形式的に証明可能
- 形式的理論Tにおいて、形式的証明によって論理式
を証明できたとき、

T |- その論理式

と書く。

- 形式的理論Tが解釈Iにおいて完全性と持つというこ
とは、

任意の論理式Fに対して、I |= F ならば、T |- F と
なる

ということである。すなわち意味論としての正しさ
があるものは、統語論としての正しさも証明できる
ことが保証されているということ。

- 形式的理論Tが解釈Iに対して健全であるとは、

任意の論理式Fに対して、T |- F ならば、I |= F と
なる

ということである。すなわち統語論をベースに証明
されたものは、意味論としても正しい、ことが保証
されているということ。

- 形式的理論として一階述語論理を採用した場合

- 次の2つのことが重要。
- 一階述語論理の論理的公理はすべてトートロジー
である。
- 一階述語論理の推論規則は、前提が真ならば結論
も真である。
- これらゆえ、次が言える。
- 一階述語論理に基づく形式的理論Tが解釈Iに対し
て健全である必要十分条件は、Tの非論理的公理
のすべてにてついて(今そのひとつをFとする)に
対して、I |= Fが成り立つことである。
- 一階述語論理自身の健全性と完全性
- 一階述語論理をつかって作った形式的理論の健全
性/完全性と、一階述語論理自身の健全性/完全性
とは別の概念である。
- 一階述語論理の健全性とは、一階述語論理の公理
およびそれから推論される論理式(定理)はすべて
トートロジである、ということ。
- 一階述語論理の完全性とは、 一階述語論理の定理
の証明は、一階述語論理以外の情報を必要としな
い、ということ。
- ゲーデルの不完全性定理
形式的理論が次のふたつを満すならば、それが健全
かつ完全となるような解釈は存在しない。
- 自然数の理論を含む。
- 論理式が非論理的公理であるかどうかを決定可能
(turing decidable)である。

** 形式的理論としてホーア論理を組み立てる

前項の一階述語論理の組み立てを頭のすみにおきつつ、
ホーア論理を形式的に組み立てる。
前置きを少々。部分正当性ホーア論理をPHL、完全正当
性ホーア論理をTHLと書く。ここではPHLをやる。結論か
ら先に言うと、PHLを決めるということは、PV,AV,Sを決
めるということにほぼ等しい。よって、特定化されたホー
ア論理のことをPHL(PV,AV,S)と書く。

- ホーア論理の語彙を決める。
- プログラムの語彙(PV)を決める。
- ただし、プログラムの語彙の論理記号は限量子
を含まない。
- これは、ユニークなものではない。すなわち、
いろいろなPVを考えることができて、それぞれ
がそのプログラミング言語の(を使った)ホーア
論理となる。
- 実践的に言うと、プログラムの語彙は、2つの部
分で構成される。ひとつは数やそれに関する関数
記号/述語記号を定めるもの。もうひとつは、そ
れらを組み込みつつプログラムを表現するための
プログラミング言語を定めるもの。例えば、整数
に関する問題しか解かなないのであれば、前者は
整数の語彙を採用する。例えば、浮動小数点数に
関する問題を解くならば、浮動小数点の語彙を採
用する。どちらでもプログラミング言語は同じも
の、というのもありえる。また、前者が同じだが、
プログラミング言語がPascal 風であったりLisp
風であったりいう形で、トータルでは別のもので
あることもある。
- 表明の語彙(AV)を決める。
- AVはPVの拡張でなければならない。
- AVの変数記号はPVと同じでなければならない。

- ホーア論理の構文を決める。
- プログラムの構文を決める。
- 項の構文を決める。これが式となる。
- 論理式の構文を決める。これがブール式となる。
- 表明の構文を決める。
- 表明付きプログラムの構文を決める。

- 表明の非論理的公理を決める。
- これは、あたりまえだが、AVを語彙とする論理式の
集合Fml(AV)の部分集合である。それをSと呼ぶ。
- 非論理的公理は表明付きプログラムの前後部分に
ある表明を指定するために使われる。
- 非論理的公理は、公理といいつつ、解釈まで降り
ていって決める。

- 推論規則を決める。

- 形式的証明の方法は決まっている。
- 次のものに固定されているようだ。

---
ホーア論理の形式的証明

PHL(PV,AV,S)が特定されているとする。そのPHLにおけ
る形式的証明とは、行番号、表明付きプログラムAP、コ
メントCからなる行を並べたもので、次の条件を満たす
ものをいう。

1. i行目のコメントCiが公理の番号であるとき、その行
の表明付きプログラムAPiはその公理である。
2. i行目のコメントCiが推論規則の番号と数の列
R,j1,...,jmであるときは、j1,...,jm < i であり、

APj1,...,APjm
---------------
APi

が、その推論規則Rとなる。
---

- ここまでで統語論の構築が完了。これに続き意味論の
構築が存在する。(それは次章のようだ)


** とあるホーア論理をこの手順に従って組み立ててみる

GCDプログラムの検証につかえるホーア論理を構築する。
ここでは統語論を扱う。(意味論的なことも、ちょろっ
と出てくる)


- ホーア論理の語彙を決める。
- プログラムの語彙(PV)を決める。

---
整数の語彙(VZ)

変数:a,b,c,aa,ac,a0,b01,ac123,... .
定数:0,1.
関数記号:+,*,-.mod.
述語記号:=,<=.
---
- ただし、プログラムの語彙の論理記号は限量子
を含まない。
- アリティはすべて2。
- 表明の語彙(AV)を決める。
- AVはPVの拡張でなければならない。

---
AVはPVに次の語彙を加えたものとする。

関数記号:gcd,abs.
述語記号:<.

gcd,<はアリティ2。absはアリティ1。
---

- ホーア論理の構文を決める。
- プログラムの構文を決める。
- 項の構文を決める。これが式となる。
- 論理式の構文を決める。これがブール式となる。

---
Term(PV)、Fml(PV)は一階述語論理の項の統語論を採用する。
---

---
プログラミング言語 Min(PV)

変数 ::= 語彙PVの変数.
式 ::= Term(PV)の項.
ブール式 ::= Fml(PV)の原子論理式 | ブール式 ^ ブール式 |
ブール式 v ブール式 | ブール式 => ブール式 |
¬ブール式.
文 ::= skip | 変数 := 式 | begin 文 { ";" 文 } end |
if ブール式 then 文 else 文 fi |
while ブール式 do 文 od.
プログラム ::= 文.
---

- 余談:ここで、beginとかifとかはあくまでプログ
ラミング言語の構文要素であり、式ではない! 非
Lisp系の言語にてどういう事情や文脈にて式ではな
い構文要素が出てくるのだろうかとモヤモヤしてい
たが、ここでの出現は、その必然性をこの文脈にお
いて感じさせるものだ。この気づきはありがたい。

---
PHL(PV,AV,S)の公理と推論規則

公理

Aas(代入文の公理)
{A[t/x]} x := t {A}

Ask(スキップ文の公理)
{A} skip {A}

推論規則

Rif(条件文の規則)
{C^A}P{B} {¬C^A}Q{B}
-----------------------------
{A} if C then P else Q fi {B}

Rwh(while文の規則)
{C^A}P{A}
-----------------------------
{A} while C do P od {¬C ^ A}

Rcp(複合文の規則)
{A}P1{S1}...{Sn-1}Pn{B}
-----------------------------
{A} begin P1;...; Pn end {B}

Rcs(帰結規則)
{B}P{C}
---------
{A}P{D}
ただし、S |- A => B かつ S |- C => D であるとする。
---

- 表明の構文を決める。
- 表明付きプログラムの構文を決める。

---
表明と表明付きプログラムの定義

表明 ::= Fml(AV)の論理式.
表明付きプログラム ::= "{" 表明 "}" プログラム "{" 表明 "}".

ただし、Term(AV),Fml(AV)については一階述語論理の項
の統語論を採用する。
---

- 表明の非論理的公理を決める。
- これは、あたりまえだが、AVを語彙とする論理式の
集合Fml(AV)の部分集合である。それをSと呼ぶ。
- 非論理的公理は表明付きプログラムの前後部分に
ある表明を指定するために使われる。
- 非論理的公理は、公理といいつつ、解釈まで降り
ていって決める。
---
まず、PVの語彙の解釈を決める。

領域: D=N.Nは自然数の集合を表す。
定数: I[0]=0, I[1]=1.
関数記号: I[+]="+", I[*]="*",
I[mod](a,b) =
0 b = 0のとき
aをbで割ったときの余り それ以外のとき.
述語記号: I[=]="=", I[<=],


次に、これをベースにAVで追加したものの解釈を決める。
これでAVの解釈が構築完了となる。

関数記号:
I[gcd](a,b) =
0 a=b=0であるとき
aとbの最大公約数 それ以外のとき.
I[abs](a) = aの絶対値
I[<](a,b) =
True a < bであるとき
False それ以外のとき


最後に非論理的公理を決める。これは、この解釈にて正
しい論理式全てである。集合表記すると次のとおり。

{F| I |= F}

これをSと呼ぶ。
---

** ホーア論理を組み立てた後の話

- ここまで組み立てるとP90にあるGCDプログラムの形
式的証明をすんなり読むことができる。


これ以降は後日。

こつこつ。

2009年7月19日日曜日

【検証論】3 形式的理論

3章が終わった。
大変勉強になった。この章は今までの形ではブログには載せられない。理由をいくつか。

  • 取ったメモは、本文のほぼ丸写し。自分の言葉では無い。これは載せられない。
  • 途中から紙と鉛筆になった。論理記号を端末でうまく入力できない。


そこで、トピックをいくつか。

  • 前のエントリで書いたように、形式理論または一階述語論理にたいする大変よい解説である。
  • ただし最後の方は著者の息切れ感があり、多少表現が雑なところや、誤字・脱字があるので要注意。
  • 項の代入性のところがモヤモヤしている。というのはそもそも代入の定義のところが曖昧に記述されているからだ。


プログラム検証論は私にとってそれなりにごついので時間がかかりそうだ。
そこで、刻んでいくことにする。その代わり並行して別の本にも取り組もうと思う。

こつこつ。

2009年7月10日金曜日

AIMAをかじる

せっかく得たPrologの理解(イロハのイだが)もたぶんすぐに消えてしまう。今はまだ、日々ごりごりプログラムを書く状態じゃないから。

そうするとこれが消えないうちに、PrologとFOLとLispとをもうすこし繋いでおきたい。どうしたもんかなぁ、FOLを数理論理学の本できっちりやるのは、それはそれで時間がかかるしなぁ、と思案してたんだけど、これAIMA(Artificial Inteligence a Modern Approach)をやればいいじゃん!ということに気付いた。AIMAにはFOLについて簡潔にまとめた部分があるのです。PAIPやってて、Prologやったところだから、Norvigつながりもあって結構よい組み合わせではないか。

AIMAのFOLは8章と9章なんで、頭から読んでいるとPrologを忘れちゃう。そこで、思い切って7章からやろうと思う。7章から論理エージェントが初まる。

本を途中から読むということに慣れていないので、うまくいかないかもしれない。うまくいくかもしれない。チャレンジしてみよう。

こつこつ。