1 名前:デフォルトの名無しさん mailto:sage [2009/02/25(水) 20:23:54 ] 過去スレ Prologでまったり Part3 pc11.2ch.net/test/read.cgi/tech/1193354806/ PrologでまったりPart 2 pc11.2ch.net/test/read.cgi/tech/1102664221/ Prolog でまったり pc5.2ch.net/test/read.cgi/tech/976462999/ リンク集 www.summa.jp/lang/logic/prolog.htm bach.istc.kobe-u.ac.jp/prolog/ チュートリアル www.amzi.com/AdventureInProlog/ computing.unn.ac.uk/staff/cgpb4/prologbook/ www.intranet.csupomona.edu/~jrfisher/www/prolog_tutorial/pt_framer.html bach.istc.kobe-u.ac.jp/prolog/intro/ www.geocities.jp/m_hiroi/prolog/ www.asahi-net.or.jp/~JF1T-YSD/prologV2/
202 名前:デフォルトの名無しさん mailto:sage [2009/06/04(木) 22:07:06 ] >>133 周辺で、第五世代で機械語がどうたらという話があったけど、 逐次型の方のシステムで使われたKL0というのは、インタプリタ(の実行部分)が マイクロプログラム(マイクロコード)化されていたというんで「機械語」だったらしいね。 www.icot.or.jp/ARCHIVE/Museum/TRTM/tr0079.htm www.icot.or.jp/AITEC/Publications/TRTM/1/tr0079/002.html 小ネタ: site:icot.or.jp "No Next Page"
203 名前:デフォルトの名無しさん [2009/06/05(金) 08:13:10 ] 他に質問にするところがないので、ここでさせてください。 今、Visual Prologでこの ttp://wiki.visual-prolog.com/index.php?title=A_Beginners_Guide_to_Visual_Prolog サイトの A Beginners Guide to Visual Prolog (PDF format, English 275 pages). というチュートリアルを読みながら勉強しています。 163ページから166ページまでの階乗の例がエラーのせいでビルドできません。 e631: The predicate 'factorial::fac/2 (i,o), which is declared as 'procedure', is actually 'multi' …というエラーで、helpには compiler optionの/warning:procedure- or /warning:631-のオプションを外せ と書いてあるんですけど、わざわざVisual Prologのbinまでこれらのファイルを移動して コマンドラインからVIP7Compiler /warning:procedure- factorial.proとやったんですけど、 error c223: A class declaration is not found for the implementaion 'factorial' と怒られました。 (自分以外でVisual Prologなんて使っている人いるのか不安ですが) 先輩方、どおぅにかしてビルドする方法はないですか?
204 名前:デフォルトの名無しさん mailto:sage [2009/06/05(金) 15:13:12 ] 似たような状況 discuss.visual-prolog.com/viewtopic.php?t=7806 > So, after unpacking family1.zip, you should use Build/Run in Window よくわからないけど、classのdeclarationとimplementationが別のファイルにあって、 それらがプロジェクトの中で関連づけられたものだと認識されていないということでは。 たぶん、プロジェクトの設定がどこかにあるはずなのに、それがコンパイラに伝わっていないとか。 > implementaion ○implementation 手で打ちましたねへっへっへ
205 名前:デフォルトの名無しさん mailto:sage [2009/06/05(金) 15:18:38 ] 「別のファイルにあって」は 「別々のファイルにあって」ですねスミマセン
206 名前:デフォルトの名無しさん mailto:sage [2009/06/05(金) 18:42:18 ] >>202 逐次型推論マシンPSIは論理型プログラムPrologを高速に実行するのに最適化して設計 された,ワーク・ステーションである。次のような特徴を持っている。 ・タグの採用 ・最大16Mワード(80Mバイト)の実メモリ ・8Kワード(40Kバイト)のキャッシュ・メモリ ・高水準ビット・マップ・ディスプレイとマウスを装備 ・高水準機械命令(KL0)とファームウェアによりKL0インタプリタ ・メモリ管理,一部のプロセス管理のファームウェア化 ・ガーベッジ・コレクション機能のファームウェア化 PSIの基本処理装置の実行制御は,マイクロプログラム制御で行われる。このファーム ウェアシステムは,マイクロ・インタプリとも呼ばれるPSIの機械語KL0を直接解釈実行 する。またファームウェアは,割込み制御,プロセス管理,メモリ管理,入出力制御等の システム制御の機能を持ち,オペレーティング・システムによる資源管理の効率化が計られ ている。 -- KL0 システム制御説明書 1-1 -- より
207 名前:デフォルトの名無しさん mailto:sage [2009/06/06(土) 02:37:48 ] >>203 おまけ wiki.visual-prolog.com/index.php?title=Environment_Overview#Browsing 扱われるファイルの拡張子の概略 www.visual-prolog.com/vip/example/userExample/calendar/calendar.htm 「.prj6」という拡張子のファイルをIDEにロードしてビルドしてくれという指示のある例 そもそもコマンドラインから簡単にビルドできるのか、と疑ってみたところ… discuss.visual-prolog.com/viewtopic.php?t=6445 > In will suggest that you simply use vip6Builder.exe: : > Yes. vip6builder is included in Visual Prolog Commercial Edition only. まあそんなところかとw(バージョン7ではどうか知らないけど)
208 名前:デフォルトの名無しさん mailto:sage [2009/06/06(土) 03:36:04 ] >>203 ふと何か勘違いをしている気がしてきた。 これまでのプログラム例のビルドには当然IDEを使って来たけども、 今回はコンパイラオプションを変えなきゃいけないようなのでコマンドラインでやってみた、 ということでしょうか。そうすると、 wiki.visual-prolog.com/index.php?title=Environment_Overview#Creation IDEの「Build Options」か何かをいじることになるのかも。それができないといっとんのじゃ、 という場合は、スミマセンw
209 名前:デフォルトの名無しさん mailto:sage [2009/06/06(土) 04:56:18 ] <PSI探方 KL0機械命令編> データ操作 命令コード 28 set_vector_element(H_V,Position,Element) ヒープ・ベクタH_VのPosition番目(0オリジンで指示)にElementを上書きする。上書きされ た結果は,バックトラックにより,undoされない。 [入力条件] H_V : ヒープ・ベクタ Position : 整数 (0≦Position≦ (H_Vの長さ-1) ) Element : 未定義とスタック・ベクタを除く任意のデータ型 [成功条件] 常に成功する。 [例外事項] illegal input: (a) H_Vがヒープ・ベクタでない。 (b) Positionが整数でない。 (c) Elementが未定義またはスタック・ベクタである。 out of bounds: (a) 0≦Position< (H_Vの長さ−1) を満たさない。 (b) H_Vが空ベクタである。
210 名前:203 [2009/06/07(日) 05:48:53 ] >>204-205 ∧ >>207-208 レス、ありがとうございます。 Build Optionsはもういじりましたが何も起こりませんでした (エラーは起こったかも…今は違うパソからなんで確認できませんが)。 そこまで「検索→推測」でレスしてくださるならいっそ、実際に A Beginners Guide to Visual Prolog (PDF format, English 275 pages). の163〜166ページのfactorialの例を試してくださいませんか? VIP6でも同じ症状が出るのではないでしょうか?
211 名前:デフォルトの名無しさん mailto:sage [2009/06/07(日) 06:23:06 ] いや、単にエスパー能力試しなのでお気になさらず 「インストールしたくないオーラ」を感じていただければw
212 名前:デフォルトの名無しさん mailto:sage [2009/06/07(日) 07:21:34 ] >>210 どうして深く追及したくないかというと… discuss.visual-prolog.com/viewtopic.php?t=7838 > It seems that Visual Prolog changed since I wrote that chapter. 入門書の例が動かなくなった、という報告が他にもあるみたいなので
213 名前:デフォルトの名無しさん mailto:sage [2009/06/08(月) 14:43:48 ] 前スレで少しだけ話題になっていたと思うけど、 en.wikipedia.org/wiki/Prolog ja.wikipedia.org/wiki/Prolog この落差は一体なんなのだろう。 どちらかが間違っているという部分もあるし。
214 名前:デフォルトの名無しさん mailto:sage [2009/06/09(火) 00:59:01 ] >>どちらかが間違っているという部分もあるし。 ってどこ?
215 名前:デフォルトの名無しさん mailto:sage [2009/06/09(火) 02:47:08 ] >>214 The language was first conceived by a group around Alain Colmerauer in Marseille , France, in the early 1970s. According to Robert Kowalski, the first Prolog sys tem was developed in 1972 by Alain Colmerauer and Phillipe Roussel.[1] 1972年ごろにフランスのカルメラウアーとコワルスキーによって考案された。
216 名前:215 mailto:sage [2009/06/09(火) 04:34:16 ] ごめん。対応するのは、Historyの中にある以下の方かな。 It was created around 1972 by Alain Colmerauer with Philippe Roussel, based on Robert Kowalski's procedural interpretation of Horn clauses. It was motivated in part by the desire to reconcile the use of logic as a declarative knowledge representation language with the procedural representation of knowledge that was popular in North America in the late 1960s and early 1970s. これだと、jp.wikipedia の解釈も可能。
217 名前:デフォルトの名無しさん mailto:sage [2009/06/09(火) 08:15:52 ] >>215 エッカート博士のストアード・プログラム方式の最初のアイデアに関する 裁判などを見ても、最初のアイデアを出したのが誰か、そして、本人がそれを 主張するか、などなかなか微妙。マルセイユグループとコワルスキとの間に 何かあるか、あるいは何もないのか、知らないが・・・ カルメラウア側の情報に終始するProlog生成の物語に、ある種の客観性を 与えるため、 According to Robert Kowalski, 以下があるのだと思う。カルメラウアが示唆を受けたと表明しているこの分野の 最高権威がお墨付きを与えているとして文献が示されている。 en.wikipedeaのここの部分の書き手とHistoryの書き手は異なるのかもしれない。
218 名前:217 mailto:sage [2009/06/09(火) 08:27:54 ] ついでに云ってしまうと、en.wikipedia は非常によく書けていると思う。 誰か翻訳して、jp.wikipediaを全面下記潰していただけないだろうか。
219 名前:203 mailto:sage [2009/06/09(火) 08:45:29 ] >>211-212 Visual Prologの元祖スレで質問して カットを一つ入れたら治りました。 一応報告まで。
220 名前:デフォルトの名無しさん mailto:sage [2009/06/09(火) 09:32:38 ] 元祖スレというのが何を指しているかわかりませんが よかったですね
221 名前:デフォルトの名無しさん mailto:sage [2009/06/09(火) 09:35:48 ] >>218 手間と予想される悶着を考えると、とりあえずリンクを張って あとは「独自研究」とか「雑多な内容」とかで
222 名前:デフォルトの名無しさん mailto:sage [2009/06/09(火) 09:46:02 ] よく書けていると評価できる位なら独自に全部書けるだろwww とか一瞬思ってしまった
223 名前:デフォルトの名無しさん mailto:sage [2009/06/09(火) 09:48:12 ] >>222 まともな文章書いたことないだろw
224 名前:デフォルトの名無しさん mailto:sage [2009/06/09(火) 14:23:43 ] >>222 プログラミングテクニックについてならいくらでも書けるけどね。 現在のWikipediaの構造を維持したら整合しない。だからといって、 Prologの歴史や述語論理との関係についてまで解説するのは、荷が 重い。
225 名前:デフォルトの名無しさん mailto:sage [2009/06/09(火) 15:38:44 ] この項目はあまりよく書けていない可能性があります。 ノートでの議論と記事の発展への協力をお願いします(Template:よく書けていない)。
226 名前:デフォルトの名無しさん [2009/06/09(火) 22:23:54 ] このスレで、記事をまとめて、 それを Wikipedia にアップさせれば良いのでは?
227 名前:デフォルトの名無しさん mailto:sage [2009/06/10(水) 00:21:25 ] 著作権が曖昧になると嫌がられるよ
228 名前:デフォルトの名無しさん mailto:sage [2009/06/10(水) 07:48:04 ] 翻訳はやりたいけど、今のjaのPrologの記事を書き潰すと一悶着ありそうだな…
229 名前:デフォルトの名無しさん mailto:sage [2009/06/10(水) 08:13:58 ] 匿名で書けるんだから面倒なことになったらトンズラすれば?
230 名前:デフォルトの名無しさん mailto:sage [2009/06/10(水) 08:37:37 ] 全部書き潰す必要はないし、ルールに従ってやればいいのだけれど、 Googleの検索でWikipediaが先頭にくるようになってからは、 大半のPrologのことを知りたい人がこのサイトを読んで引き返して しまっていることは確かだ。しかも、そういう人のためのサイトに 全くなっていない。誰のために書いてあるのか分からないサイトと 言ってよいだろう。やはり、相当手を入れないといけない。
231 名前:デフォルトの名無しさん mailto:sage [2009/06/10(水) 09:01:54 ] >Prologは、導出において節を以下に述べる頭部が一つの命題からのみなる >ホーン節に限定したものととらえる事が出来る。 この文、変だよね。
232 名前:デフォルトの名無しさん mailto:sage [2009/06/10(水) 09:06:20 ] "からのみなる" の検索結果 約 915 件中 1 - 10 件目 (0.21 秒)
233 名前:デフォルトの名無しさん mailto:sage [2009/06/10(水) 09:38:12 ] "nominal horn clause"の検索結果 8 件中 1 - 8 件目 (0.28 秒)
234 名前:デフォルトの名無しさん mailto:sage [2009/06/10(水) 09:42:59 ] >>231 確かに難解な文だな。 Prologでは導出される対象を頭部が一つの項に限定されたホーン節と 呼ばれる命題に限定している。 と言いたいのですか?
235 名前:デフォルトの名無しさん mailto:sage [2009/06/10(水) 09:56:02 ] ちょっとかじった人なら読み飛ばして何事もなしだが…… 詰め込みすぎたか、あとで書く予定が面倒になったか。
236 名前:デフォルトの名無しさん mailto:sage [2009/06/10(水) 10:17:36 ] >>234 私も素人なのだが。 ( P ∧ Q ) も一つの項でしょ。 そうすると (p1 ∧ p2) :- q1 ∧ q2 ∧ .... も許される事になっちゃうんじゃないの。
237 名前:デフォルトの名無しさん mailto:sage [2009/06/10(水) 10:43:16 ] Prolog的混乱が生じてるねへっへっへ 「原子論理式」という言葉があるよ
238 名前:デフォルトの名無しさん mailto:sage [2009/06/10(水) 11:22:05 ] ものの本によると、アタマのないやつも「ホーン節」のうちみたいよ。 質問とか、計算中の目標(ゴール)として現れるやつ。 アタマのあるやつ(Q∧R⇒P、P∨¬Q∨¬R、{P,¬Q,R}、P:-Q,R.)は 「頭部つきのホーン節」とか「プログラム節」とかいうらしい。
239 名前:デフォルトの名無しさん mailto:sage [2009/06/10(水) 11:22:56 ] やべ × {P,¬Q,R} ○ {P,¬Q,¬R}
240 名前:デフォルトの名無しさん mailto:sage [2009/06/10(水) 13:01:54 ] 古川康一著の「Prolog入門」より。 # ホーン論理とは,一階述語論理の命題をA1 ∨ A2 ∨ ... ∨ An ← B1 ∧ B2 ∧ ... ∧ Bm の # 形(節形式)であらわしたときに,左辺の句がたかだか一つしか現れないような命題のみ扱う論理 # である(ここで,A1,A2, ... ,An,B1,B2, ...,Bm は正の句である). すなわち,左辺に句が # 一つ現れるのか定義節であり,そこが空になるのがゴール節である(ゴール節を":-"から始めても # よいのは,そのためである).
241 名前:デフォルトの名無しさん mailto:sage [2009/06/10(水) 13:05:44 ] >>240 句・・・か・・
242 名前:デフォルトの名無しさん mailto:sage [2009/06/10(水) 13:19:13 ] 原子論理式、基本論理式、リテラル、句 は微妙に違いがあるのかな。リテラルは否定形を含むとか。
243 名前:デフォルトの名無しさん mailto:sage [2009/06/10(水) 21:23:51 ] リテラルはそうでしょう
244 名前:デフォルトの名無しさん mailto:sage [2009/06/10(水) 21:24:50 ] 「正の句」と言っているから 句=リテラル なのか
245 名前:デフォルトの名無しさん mailto:sage [2009/06/10(水) 22:59:16 ] そうか「頭部つき」=「確定節」(DCGのDC)ということか
246 名前:デフォルトの名無しさん mailto:sage [2009/06/10(水) 23:17:58 ] definite(明確な、限定的な など) definitive(確実な、限定的な、明確な、限定詞 など) definitional(definitionの形容詞形) definition(限定、明確化、定義、解像力 など) ややこしい
247 名前:デフォルトの名無しさん mailto:sage [2009/06/11(木) 00:40:12 ] 第129回技術委員会議事録 www.itscj.ipsj.or.jp/protect/gijutsu/0606rpt.html > 1) SC22/WG17 SC22N4049 (投票期限: 2006-07-26) > (資料31) > Programming Language Prolog -- Definite clause grammar rules > 「プログラム言語Prologのための確定節文法規則」 > Q.1〜Q.3にYES,Q.4〜Q.6にNOとする回答案は,原案どおり承認された.(後藤SC22専門委員会幹事) この場では「確定節」なんだね
248 名前:デフォルトの名無しさん mailto:sage [2009/06/11(木) 01:02:05 ] 小ネタ: FGHC(Flat GHC)をGDC(Guarded Definite Clauses)と呼ぶことがあるらしい
249 名前:デフォルトの名無しさん mailto:sage [2009/06/11(木) 01:33:11 ] Logic for applications 著者: Anil Nerode, Richard A. Shore > (Ordered clauses are sometimes referred to as definite clauses, hence んー?これはなんか集合論の用語みたいな…
250 名前:デフォルトの名無しさん mailto:sage [2009/06/11(木) 09:03:10 ] Prologなら使用人口も少ないだろうし、 論文ネタがゴマンとあって書きやすいんじゃないかと思って手を出そうとしてるところ 実際、どう?
251 名前:デフォルトの名無しさん mailto:sage [2009/06/11(木) 09:15:34 ] >>250 あくまでも、プログラム言語であるという視点で、 ・ Prologのプログラムパターン ・ Prologのプログラミングスタイル ・ 得手とする領域とその典型的なプログラム の記述を重視して。 お願いします!!
252 名前:デフォルトの名無しさん mailto:sage [2009/06/11(木) 09:20:45 ] >>250 ごめん、間違えた。勉強しようという話ですね。 論文ネタなら、ICOTの検証だけで事実上無限にあります。
253 名前:デフォルトの名無しさん mailto:sage [2009/06/11(木) 09:34:53 ] >>251-252 >論文ネタなら、ICOTの検証だけで事実上無限にあります。 ウホッ、予感的中!感謝感激雨霰! マジで 人 生 賭 け て 研 究 す る 所 存 で あ り ま す でも、その前に紙の上での記号論理学や形式言語をもっと勉強しなければ、と今勉強中です
254 名前:デフォルトの名無しさん mailto:sage [2009/06/11(木) 11:40:45 ] DCGトリビア発見 www.cs.kuleuven.ac.be/~dtai/projects/ALP/newsletter/may01/nav/nettalk.html > The reasons we concocted the term "definite clause grammar" had to do with the fact that (以下略)
255 名前:デフォルトの名無しさん mailto:sage [2009/06/12(金) 04:00:35 ] ttp://www.hamid2.soft.iwate-pu.ac.jp/hamid1/professor/kure/Lecture/Prolog.pdf > Prolog のプログラムは、確定節(Definite clause)と呼ばれる節形式で、すべて記述する。 : > Prolog のなかで利用される確定節は、H とBiの数によって、ル−ル節、ファクト節、ゴ−ル節に分けられる。 > またル−ル節とファクト節をまとめて、定義節と呼ぶ。 ここでは確定節=ホーン節みたいに扱ってるね。 ただし一般論じゃなくてPrologに絞った話だからアレだけど。
256 名前:デフォルトの名無しさん mailto:sage [2009/06/12(金) 07:37:38 ] >>215-217 何気にスルーしちゃったけど、「Colmerauer」はフランス語の発音の原則だと 「コルメロエ」みたいになると思うけど、そのへんどうなんだろう。
257 名前:デフォルトの名無しさん mailto:sage [2009/06/12(金) 07:44:05 ] クルルァ
258 名前:デフォルトの名無しさん mailto:sage [2009/06/12(金) 07:51:02 ] ○○が近いが△△あるいは□□とも書かれてきた
259 名前:デフォルトの名無しさん mailto:sage [2009/06/12(金) 07:53:17 ] ちなみにおなじみC&M邦訳では「コルメロエ」だった
260 名前:デフォルトの名無しさん mailto:sage [2009/06/12(金) 09:59:40 ] >>258 カタカナ表記の揺れの問題じゃなくて、 フランス語読みと英語読みの違いでしょ。
261 名前:デフォルトの名無しさん mailto:sage [2009/06/12(金) 10:29:21 ] 仏語:コルムローエル 英語:コルマローアー では?
262 名前:デフォルトの名無しさん mailto:sage [2009/06/12(金) 11:12:07 ] ttp://blog.livedoor.jp/drlingua_fr/archives/51177902.html ttp://blog.livedoor.jp/drlingua_fr/archives/51190690.html > 1)「ə」の発音となる場合 > @「e」の後ろに子音字が1つしか続かない場合(但し、単語末は除く) > ex) demain [dəmɛ̃] なるほど 語末rはきっと漏れには聞こえないのではないだろうか
263 名前:デフォルトの名無しさん mailto:sage [2009/06/12(金) 11:27:20 ] blog.goo.ne.jp/lumieremondiale/e/e5b1b21b53807b0763ea239ffad4fc45 > 君のパリのアクセントが気に入らない! といいはるんですね。w
264 名前:デフォルトの名無しさん mailto:sage [2009/06/12(金) 12:23:27 ] >>263 やっぱりコルメラウアじゃないか!
265 名前:デフォルトの名無しさん mailto:sage [2009/06/12(金) 13:24:54 ] また新たな「確定節」解釈を発見。 『人工知能の基礎』(馬場口登・山田誠二共著)によると、 事実(fact)=単位節(unit clause) ルール(rule)=確定節(definite clause) 質問(query)=ゴール節(goal clause) らしい(p.75)。かなりパターンが揃ってきたねw
266 名前:デフォルトの名無しさん mailto:sage [2009/06/12(金) 13:44:38 ] hagi.is.s.u-tokyo.ac.jp/pub/staff/hagiya/kougiroku/ronri/4.txt > 単位節(unit clause) > 一つのリテラルから成る節 > 正単位節(unit clause) > 一つの正リテラルから成る節 > 負単位節(unit clause) > 一つの負リテラルから成る節 どうして全部unit clauseなんだろう
267 名前:デフォルトの名無しさん mailto:sage [2009/06/12(金) 14:26:18 ] あそうか、コピペ駆動開発みたいな感じか
268 名前:デフォルトの名無しさん mailto:sage [2009/06/14(日) 00:56:10 ] The Birth of Prolog by Alain Colmerauer citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.85.7438
269 名前:デフォルトの名無しさん mailto:sage [2009/06/14(日) 05:26:20 ] >>268 「clause」だけ検索してみたら ・ここではdefinite clauseという言葉を使っていない ・たまに「program(の)clause」のような言い方をする程度 ・そもそも、最初はホーン節という概念に着目していなかったらしい という感触だった
270 名前:デフォルトの名無しさん mailto:sage [2009/06/14(日) 08:29:53 ] alpha.c.oka-pu.ac.jp/~yokota/paper/godel_jrnl0 > 1973年エディンバラ大学のP. Hayesは, (中略) > 翌年さらにKowalskiは,Prologに代表される論理プログラミング一般の基礎づけをおこなった。 "Predicate logic as programming language" ttp://www.doc.ic.ac.uk/~rak/papers/IFIP%2074.pdf これの「6. HORN CLAUSES」のところでは、4種類のホーン節それぞれについて、 H ← B1, ..., Bn. を「procedure declaration」、 H ←. を「assertion of fact」、 ← B1, ..., Bn. を「goal statement」、 ←. を「halt statement」 と手続き的に解釈できるぜ、という言い方をしているね。 (下線付きなので読みやすい)
271 名前:デフォルトの名無しさん mailto:sage [2009/06/14(日) 09:38:32 ] www.doc.ic.ac.uk/~rak/ site:www.doc.ic.ac.uk inurl:rak +definite ttp://www.doc.ic.ac.uk/~rak/papers/British%20Nationality%20Act.pdf THE BRITISH NATIONALITY ACT AS A LOGIC PROGRAM May 1986 > (The terminology “Horn clauses” is used here to cover both > definite Horn clauses and Horn clause queries.) 「definite Horn clause」がやっと出てきた。 けど、これ以外には見当たらない。Kowalskiの用語にはなさそう?
272 名前:デフォルトの名無しさん mailto:sage [2009/06/14(日) 10:42:22 ] Programming in Prolog 著者: William F. Clocksin, Christopher S. Mellish 27 ページ > Structures are called "compound terms" in Standard Prolog, but > in this book we use the word "structure" because it is shorter and > more easily distinguished ... 2003年版より。てっきりISOの用語に統一されたんだろうなと思っていたので意外だった。漢だ。
273 名前:デフォルトの名無しさん mailto:sage [2009/06/14(日) 12:18:37 ] www.w3.org/2005/rules/wg/wiki/Horn_Logic > "definite program" [1] : > SLD-resolution (Linear resolution with Selection function for Definite clauses [1]) : > [1] J.W. Lloyd, Foundations of Logic Programming, Springer-Verlag, 1987. うーんこのへんになにかありそうな… foldoc.org/Horn+clause > A definite clause is a Horn clause that has exactly one positive literal. mathworld.wolfram.com/HornClause.html > A definite clause is a Horn clause that has exactly one positive literal. この2つのページ、かなり酷似した部分があるけど大丈夫なのかな
274 名前:デフォルトの名無しさん mailto:sage [2009/06/14(日) 12:46:23 ] ale.cs.toronto.edu/docs/ref/ale_trale_ref/ale_trale_ref-node44.html > A definite sentence has exactly one positive literal in each clause and なるほど、導出計算方面でいうsentenceをprogramと読み替えるとdefinite program、 definite programに含まれるclauseだということでdefinite clauseなのかな
275 名前:デフォルトの名無しさん mailto:sage [2009/06/14(日) 12:48:21 ] というかdefinite (program) clauseか
276 名前:デフォルトの名無しさん mailto:sage [2009/06/14(日) 13:20:39 ] ともかくSLD導出のDだというのは真面目に調べればすぐ分かったはずだった気がする。 エスパー能力の限界か。。 en.wikipedia.org/wiki/SLD_resolution > The name "SLD resolution" was given by Maarten van Emden for the unnamed > inference rule introduced by Robert Kowalski in [Kowalski 1973, 1974]. Kowalskiは名前をつけたりしないのかな en.wikipedia.org/w/index.php?title=SLD_resolution&oldid=135876212 en.wikipedia.org/w/index.php?title=SLD_resolution&diff=156253104&oldid=152306415 > A definite sentence is a Horn clause with exactly one positive literal. これはまた違う定義というか、、
277 名前:デフォルトの名無しさん mailto:sage [2009/06/14(日) 15:05:53 ] ついにCarl Hewitt(の恨み節みたいなの)が面白く読める程度まで予備知識がついた気がする knol.google.com/k/carl-hewitt-see-httpcarlhewittinfo/middle-history-of-logic-programming/pcxtp4rx7g1t/3?domain=knol.google.com&locale=ja#
278 名前:デフォルトの名無しさん mailto:sage [2009/06/14(日) 22:06:24 ] 『Horn節は、ある条件の下で(あるいは無条件に)成り立つ事柄について、 B1”または”B2というような不確定な言い方を許さない。そこでHorn節は 確定節(definite clause)とも呼ばれる』 論理と意味 p105 直観主義論理の形式系LJの式は全部Horn節、というのもどこかで 関係するんじゃないですかね。
279 名前:デフォルトの名無しさん mailto:sage [2009/06/14(日) 22:19:54 ] 失礼。書き忘れました。B1,B2というのは A1,A2,...An → B1,B2,...Bn という右辺にあるそれぞれの式のことを指します。
280 名前:デフォルトの名無しさん mailto:sage [2009/06/15(月) 05:15:56 ] LJを調べてみました。扱っている式の形はホーン節に似てはいますが、 それぞれの論理式は原子論理式である必要はないんですよね
281 名前:デフォルトの名無しさん mailto:sage [2009/06/15(月) 05:18:56 ] >280の「式」は「→」や「,」を含む全体、「論理式」はそこで対象化されている部分です、念のため
282 名前:デフォルトの名無しさん mailto:sage [2009/06/15(月) 10:41:13 ] >>それぞれの論理式は原子論理式である必要はないんですよね 確かにその通りです。 では、そもそもなぜHorn節(より一般に節)は、原子論理式及び原子論理式 の否定の選言で構成されないとならないのか?という疑問が湧いてきますね。 多分何かしらの変換において、要素が原子論理式でなければならないという 縛りが出てきそうです。そのラインから少し調べてみます。
283 名前:デフォルトの名無しさん mailto:sage [2009/06/16(火) 08:18:09 ] Qualitative spatial reasoning with topological information Jochen Renz著 - 2002 17 ページ > A Horn clause without a positive literal is called > indefinite Horn clause, otherwise it is a definite Horn clause. mjd?
284 名前:デフォルトの名無しさん mailto:sage [2009/06/16(火) 23:03:56 ] >>283 プログラミング言語の新潮流という本では、 正のリテラルが(”高々”はつかず)一つである節を確定節(definite clause)と呼ぶ。とある。 思うに証明戦略上区分けしていると思われる。 正の節、すなわち確定節の場合、 証明戦略:SPU(selective positive unit resolution) 負の節、すなわち不確定節の場合、 証明戦略:SNL(selective negative linear resolution)。 SLD = SPU + SNL? SLD戦略を理解するに当たって、確定節、不確定節を区分したほうが わかりやすいから区分しているように見える。
285 名前:デフォルトの名無しさん mailto:sage [2009/06/16(火) 23:08:11 ] LJの式がHorn節になるというのはあまり関係ないようだ。 加えて、要素が複合論理式か、原子論理式かはあまり関係なかった。 SPUなりSNLの証明戦略を用いたとすると、結局原子論理式しか出てこない。 わかりにくい言い方だが、つまり、何かしら自動証明することを考えると、 複合論理式であるかどうか、ということは特に問題ならなくなる。
286 名前:デフォルトの名無しさん mailto:sage [2009/06/16(火) 23:09:53 ] 付け加えて、SPU,SNLについては『論理と意味』に解説がある。
287 名前:デフォルトの名無しさん mailto:sage [2009/06/16(火) 23:14:46 ] 改めて読み返すと>>285 の内容がおかしい。とりあえず、保留。
288 名前:デフォルトの名無しさん mailto:sage [2009/06/19(金) 00:06:52 ] 質問です prologで ?- divide([a,b,c,d,e],L1, L2). L1 = [a,c,e] L2 = [b,d] とするにはどうしたらよいのでしょうか?
289 名前:デフォルトの名無しさん mailto:sage [2009/06/19(金) 00:20:52 ] divide([],[],[]). divide([X|Xs],[X|Ys],Zs) :- divide(Xs,Zs,Ys).
290 名前:デフォルトの名無しさん mailto:sage [2009/06/19(金) 00:39:39 ] >>289 さん ありがとうございます ちなみにこれの停止条件は空リストは空リスト二つに分けろってことですか? 何で最小単位が空リストになってしまうのでしょうか? a,b見たいな感じにはならないのですか? 後再帰条件はヘッドのXをXsとYsに分けてZsが残っているか判定する、でいいのでしょうか? prologよくわからないので日本語がおかしいかもしれないですが回答お願いします
291 名前:デフォルトの名無しさん mailto:sage [2009/06/19(金) 11:02:21 ] divide([],[],[]) divide([a],[a],[]) divide([a,b],[a],[b]) divide([a,b,c],[a,c],[b]) divide([],[],[]) divide([1],[1],[]) divide([2,1],[2],[1]) divide([3,2,1],[3,1],[2])
292 名前:デフォルトの名無しさん mailto:sage [2009/06/19(金) 20:46:00 ] うぅむ・・・。 Xというリストを分けてXsとし、残ったリストXをまた分けてYzとし、 最終的に分割できるものがなくなったら残った物をZsとして 停止条件に行き着くみたいな感じでしょうか・・・?
293 名前:デフォルトの名無しさん mailto:sage [2009/06/19(金) 21:34:39 ] divide([A,B|Xs],[A|Ys],[B|Zs]) :- divide(Xs,Ys,Zs). divide([A|[B|Xs]],[A|Ys],[B|Zs]) :- divide(Xs,Ys,Zs). divide([A|Xs0],[A|Ys],Zs0) :- [Xs0,Zs0] = [[B|Xs],[B|Zs]], divide(Xs,Ys,Zs). divide([A|Xs0],[A|Ys0],Zs0) :- [Xs0,Ys0,Zs0] = [[B|Xs],Ys,[B|Zs]], divide(Xs,Ys,Zs). divide([A|Xs0],[A|Ys0],Zs0) :- [Xs0,Zs0,Ys0] = [[B|Xs],[B|Zs],Ys], divide(Xs,Ys,Zs). divide([A|Xs0],[A|Ys0],Zs0) :- divide(Xs0,Zs0,Ys0) = divide([B|Xs],[B|Zs],Ys), divide(Xs,Ys,Zs). divide([A|Xs0],[A|Zs0],Ys0) :- divide(Xs0,Ys0,Zs0) = divide([B|Xs],[B|Zs],Ys), divide(Xs,Ys,Zs). divide([A|Xs0],[A|Zs0],Ys0) :- divide(Xs0,Ys0,Zs0). divide([B|Xs],[B|Zs],Ys) :- divide(Xs,Ys,Zs). ほら、簡単でしょう(ボブ)
294 名前:デフォルトの名無しさん mailto:sage [2009/06/19(金) 21:44:32 ] ひとつ削ると奇数偶数が反対になる、というふうに考えればいいかも
295 名前:デフォルトの名無しさん mailto:sage [2009/06/19(金) 22:16:47 ] >>293 さんもといボブさん divide([A,B|Xs],[A|Ys],[B|Zs]) は リストをAとBに分けてそれをまたそれぞれYsとZsに分けるんですよね? divide([A|[B|Xs]],[A|Ys],[B|Zs])はAを抜き出して次に[Bという先頭を抜き出し余ったものをXsとしてるんですよね? >>294 さん [a,b,c,d,e].だったらaをとったらL1に行き 次のbはL2に行きっていうのを繰り返すんですよね? これがaを奇数とすると奇数を取ったら次は偶数ってことですか? 疑問詞ばかりで申し訳ないです 頭がおかしくなって死にそうです・・・。
296 名前:デフォルトの名無しさん mailto:sage [2009/06/19(金) 22:25:56 ] >>295 > リストをAとBに分けて ちょっとまった [A,B|Xs] [A|[B|Xs]] この2つが同じものだと思っていないということ?それとも直感的な解釈の違いのことを言ってるのかな
297 名前:デフォルトの名無しさん mailto:sage [2009/06/19(金) 22:30:04 ] このスレは一体何が起きているんだ・・・。 なぜか体が震えてくる。俺だけ?
298 名前:デフォルトの名無しさん mailto:sage [2009/06/19(金) 22:35:57 ] >>295 [10,9,8,7,...] から [10,8,...], [9,7,...] を取るとき、 [10,8,...]がほしい立場からすれば、次の9は飛ばして8を取りたい。 [9,7,...]がほしい立場からすれば、今回の10は見送って次の9を取りたい。 ちょうどニーズが交代しているという感じで捉えているけど、もうひとつ明確じゃないねこりゃ。
299 名前:デフォルトの名無しさん mailto:sage [2009/06/19(金) 23:00:46 ] >>296 さん あ、勘違いしてました・・・。 >>297 さん 僕も自分の理解力がなさ過ぎて手が震えてきました >>298 さん おぉ!なんとなくわかってきました! [X|Ys]ここはどうしてこうなるのでしょうか?Xを排除したものをYsとしてるんですよね? ([X|Xs],[X|Ys],Zs)ここの部分を今みたいな日本語に直すとどんな感じなのでしょうか? 頓珍漢な事ばかり書いて皆さんを惑わせてしまって申し訳ないです。もう少し付き合って下さい><
300 名前:デフォルトの名無しさん mailto:sage [2009/06/20(土) 12:15:56 ] > [X|Ys]ここはどうしてこうなるのでしょうか?Xを排除したものをYsとしてるんですよね? XとYsから[X|Ys]を作っている、と読むのが自然じゃないかな divide([A,B|Xs],[A|Ys],[B|Zs]) :- divide(Xs,Ys,Zs). divide([A,B|CDEF…],[A|CE…],[B|DF…]) :- divide(CDEF…,CE…,DF…). divide([X|Xs],[X|Ys],Zs) :- divide(Xs,Zs,Ys). divide([A|BCDE…],[A|CE…],BD…) :- divide(BCDE…,BD…,CE…). こう書き直せばわかる気がする
301 名前:デフォルトの名無しさん mailto:sage [2009/06/20(土) 12:50:30 ] >>299 [X|Ys] Prologでは(注1)これは二通りの意味に解釈します。 1)・・Xはリストの最初の要素である。ただしリストとは [X|Ys] のことです。 2)・・リストYsに最初の要素としてXを付加する。できたリストは [X|Ys] です。 [X|Ys] の表現は99% 1) か 2) の意味で使われていますから、 どちらの意味であるか読み抜きましょう。 注1)・・Ysがリストでない例えば X=3,Ys=5, で [3|5] というものもあり得るのですが、 Prologではほとんど使うことがないのでこの際無視しましょう。
302 名前:デフォルトの名無しさん mailto:sage [2009/06/20(土) 13:57:34 ] kti.mff.cuni.cz/~bartak/prolog/recursion.html ここだとまず、元のリストが奇数番目から始まるか偶数番目から始まるかを ずっと保存しながら扱っているね。 > even_odd(L,E,O):-odd(L,E,O). 最初は1番、つまり奇数番と考えてodd/3を呼ぶ、と。 > odd([],[],[]). > odd([H|T],E,[H|O]):-even(T,E,O). > > even([],[],[]). > even([H|T],[H|E],O):-odd(T,E,O).