• ベストアンサー

lilfesについて

lilfesというprolog likeな言語についての質問です。 lilfesのサイトに 一階述語の代わりに型付き素性構造 と呼ばれるデータ構造を記述することができます. とあるのですが、一階述語ってなんですか? Wikipediaや他のサイトを見てもいまいちピンときません・・・。 型付き素性構造についてはその後に解説があるので良いのですが・・・。申し訳ないですが教えてください。

質問者が選んだベストアンサー

  • ベストアンサー
  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.1

「1階述語」というのは, 「値に対して真偽値を返す関数」です. そして, (大雑把にいうと) 「述語に対する操作」も許すのが「高階述語論理」となります. 例えば, 任意の述語 P(x) が与えられたときに「P(x) と真偽値が反転した結果を返す述語」 (つまり, 「任意の x に対して Q(x) = not(P(x)) であるような述語 Q(x)」) を答える操作は (1階) 述語に対する操作であり, 従ってそのような操作を含む論理は「高階 (今の場合には 1階述語に対する操作のみなので 2階の) 述語論理」となります. 「高階述語論理」とか「2階述語論理」とかも調べてみて, その上で「1階述語論理」と比較するとよいかも... あんまり深入りするのもどうかとは思いますが.

yamada11
質問者

お礼

ありがとうございます。 >「1階述語」というのは, 「値に対して真偽値を返す関数」です つまり、値に対してyesかnoを返すやつと考えてよいでしょうか? それだけのものを「1階述語」ということであると思ってよいのですね。ありがとうございました。

その他の回答 (1)

  • salsberry
  • ベストアンサー率69% (495/711)
回答No.2

Prologは確かに一階述語論理に基づくプログラミング言語ですが、述語論理を詳しく知らなくてもプログラミングは可能です (もちろん、知っていて悪いことはありません)。 一方で、純粋な述語論理とはかけ離れたカット (!) のような要素はPrologからLiLFeSに取り込まれていて詳しい説明はなかったりするので、LiLFeSのプログラムを読み書きするにはPrologの知識は半ば前提となっているようです。 最近ではあまり選択肢もありませんが、Prologの本を1冊勉強してみてはいかがでしょうか。述語論理について、Prologの理解に必要な範囲の解説は書かれているのではないかと思います。 以下、前の質問 (番号:5124070) が締め切られてしまったのでこちらに書きます。 assoc_newはLiLFeSの組み込み述語 http://www-tsujii.is.s.u-tokyo.ac.jp/lilfes/manual/builtin-index.ja.html ではないようです。 にもかかわらずsem_variable.lilの中で定義することなくいきなりこの述語を使っているということは、おそらくsem_variable.lilの前提として読み込まなければいけないファイルがあって、そこでassoc_newが定義されているのではないかという推測ができます。

yamada11
質問者

お礼

ありがとうございます。 あれから私なりに調べまして、lillibのファイルの中身をよく見たのですが、確かにassoc_newの記述はありませんでした。ただ、assocやassoc_iなどがあり、これに何か関連しているのでしょうか? http://www-tsujii.is.s.u-tokyo.ac.jp/lilfes/manual/lillib-lists.ja.html もしくはフリーソフトの中で独自に定義されているのでしょうか・・・。

関連するQ&A