Prologでまったり Par ..
[2ch|▼Menu]
116:110
09/05/20 14:54:25
>>114さま
すいません、直接ルールを生成するというのはどのようなことなのでしょうか。
今のところは文字列処理でルール文を生成しています。
ほとんど独学なのでPrologの事は知っているようでよくわからなかったりします・・

117:デフォルトの名無しさん
09/05/20 15:36:16
data(筋肉は使い過ぎると傷害を起こす) だとします。
この文を解析して 筋肉,使い過ぎ,傷害を起こす という要素を得て、
?- ... create_rule(_文,'筋肉(使い過ぎ,障害を起こす)'), ...
生成できたのだとすると,
?- ... create_rule(_文,筋肉(使い過ぎ,障害を起こす)), ...
を直接生成できるのではないか。


118:110
09/05/20 17:51:16
>>117さま
string(atom)で返しているのは、assert以外に、ルール文をファイル保存等、
テキスト処理を行いたいため、そのようになっています。

parse_atom/2には直接関係無いため、記述を省略しておりました。
わかりにくくて申し訳ありません。

ruleの直接生成については、ご指摘の通りだと思います。
ただ、create_ruleでは複雑な処理を行っているのので、
今回は無理をせずにatom_to_termで行きたいと思います。

ご指摘ありがとうございました。

119:デフォルトの名無しさん
09/05/20 18:02:30
>>118
そうでしょうね。項とともにテキストの生成を意識することは
よい設計だと思います。あなたはご存知だと思いますが、
ruleの生成で私が書いた述語らしからぬ筋肉という関数の部分に
変数がくる、つまりその文によってここを変化させたい場合は、
functor/3,arg/3 または (=..)/2 を使います。メタ述語ですね。

120:デフォルトの名無しさん
09/05/20 18:43:14
>>106
反利速的な経営ってどういう意味?

121:デフォルトの名無しさん
09/05/20 19:45:17
>>120
利速的とは、売上、利益の伸び率などが今どういう傾向に
微分的に変化しつつあるかについて、もっとも注視すること。
反利速的ですから、計量的微分的な量りから遠ざかる、
そういうことに囚われない経営態度。


122:デフォルトの名無しさん
09/05/21 00:59:44
初心者のプログラミング言語ガイドスレで見て来ました。
ーー文化と実践ーーっていう本が薦められていて探してみようと思います。
処理系はSWI-Prologで良いですか?
というか、処理系によって言語仕様(でいいのかな)とかが違ったりするのでしょうか?

123:デフォルトの名無しさん
09/05/21 01:08:27
URLリンク(www.geocities.jp)
ここやってるんですけど、
?- like(taro, coffee).
YES
ってなるはずが自分の場合は
?- like(taro, coffee).
true.
と表示されるんですけど何ででしょうか?
SWI-Prolog (Multi-threaded, 32 bits, Version 5.6.64)使用しています。
初心者質問申し訳ないです。

124:デフォルトの名無しさん
09/05/21 04:02:55
>>122
すみません。--文化とその実践-- でした。あちらのスレでも訂正をしておきました。
処理系はSWI-Prologで十分でしょう。Prologは残念ながら、処理系によっての差が
かなりあります。しかし、1995年にISO規格が制定されて、少なくとも各処理系が
この述語群は共通にサポートする方向ですから、できるだけこの規格に沿った述語を
選択して利用する方がよいでしょう。

125:デフォルトの名無しさん
09/05/21 04:11:05
>>123
ここの前スレで紹介があったのですが、
SWI-Prologは比較的最近のバージョンからYES ではなく true. と
表示されるようになりました。trueの後のピリオドにも注目です。
これで、実行ログが完全に項としてreadできるようになりました。
一時的な思いつきなのか永久にこの仕様になったのか分からない
のですが、多くのPrologプログラマは好意的に受け止めています。

126:デフォルトの名無しさん
09/05/21 11:54:03
この言語将来性なさそう・・・大丈夫か?

127:デフォルトの名無しさん
09/05/21 12:06:15
>>126
どういう理由で?

128:デフォルトの名無しさん
09/05/21 12:14:26
>>126ほとんどのプログラム言語が死に絶えた時に最期まで生き残っているのが論理型言語なのさ。Prologであるとは言わないけど。

129:デフォルトの名無しさん
09/05/21 12:28:22
>>128
平行論理型。それが機械語。

130:デフォルトの名無しさん
09/05/21 12:32:58
機械語なんていわれるとピンとこないなぁ。


131:デフォルトの名無しさん
09/05/21 14:21:54
James L. Hein;Prolog Experiments in Discrete Mathematics,Logic, and Computability

が公開されてるのをみつけた。


132:デフォルトの名無しさん
09/05/21 16:11:33
>>129
何を言いたいのかよくわからないけどせめて「並行」と書いてくれ。

133:デフォルトの名無しさん
09/05/21 16:21:10
第五世代ではKL1が機械語という位置づけだったんだっけ?

134:デフォルトの名無しさん
09/05/21 17:29:47
このスレってさ、まったりとか描いてる割には内容が高度すぎて読む気に慣れねーわ。
つーか、読んでも意味ワカンネーし。
やる気無くなるし。

135:デフォルトの名無しさん
09/05/21 17:37:06
狙いとしてはどうかしらないけど、プロトタイプシステムとやらではちゃんとコンパイルしてるみたいよ
URLリンク(www.icot.or.jp)
PrologのWAMにあたるKL1-Bといったものもあるらしい

136:デフォルトの名無しさん
09/05/21 17:40:21
>>134
すまん、漏れが親しみやすいトリビア集めをさぼっているばかりに…

137:デフォルトの名無しさん
09/05/21 17:48:51
「WAMにあたる」じゃないな
WAMコード、WAMの機械語にあたる、か

138:デフォルトの名無しさん
09/05/21 18:11:16
平行論理世界へようこそ

139:デフォルトの名無しさん
09/05/21 18:12:05
つーことは>>129の「それが機械語」は言い過ぎかな
WAMの命令セットが論理型言語と言えるならKL1-Bも並行論理型言語で
それが(仮想機械の)機械語と言えるかもしれんが

140:デフォルトの名無しさん
09/05/21 19:47:50
将来ロボットが出現するだろうから、それらをプログラムする言語はPrologになるってことか。
それなら納得した。

141:デフォルトの名無しさん
09/05/21 20:52:38
>>140
20世紀は石油。
21世紀はロボットの世紀だからね。

142:デフォルトの名無しさん
09/05/21 20:55:43
当面、情報家電のUIはPrologインタプリタでなくちゃいけないのだが・・・

143:デフォルトの名無しさん
09/05/21 21:01:04
>>142
JAVAでもしょうがないとは思うがPrologの項をparse_atomできる
関数をライブラリに持っていて欲しい。


144:デフォルトの名無しさん
09/05/21 21:52:21
>>134
だから第五世代計画は失敗した、という面もある。

145:デフォルトの名無しさん
09/05/21 22:12:17
この言語でプログラミングやるんだったらPython始めた方が良いよ

146:デフォルトの名無しさん
09/05/21 22:17:40
じゃあ君はPythonやればいい。

147:デフォルトの名無しさん
09/05/21 23:34:31
僕は、 KL-1 が素晴らしいと思ったので、今、勉強中です。



148:デフォルトの名無しさん
09/05/22 00:55:07
PythonとPrologって、主にどうちがうんですか?

149:デフォルトの名無しさん
09/05/22 01:36:28
>>148
Pで始まるところ以外全部

150:デフォルトの名無しさん
09/05/22 02:39:04
Pythonってjavaの代わりって感じ?

151:Prolog工作員
09/05/22 06:57:46
>>148
スレリンク(tech板:3番)

Pythonの解答と見較べれば、まったく違うことがわかる。


152:デフォルトの名無しさん
09/05/23 00:02:52
>>124
その本、あちらのスレでは在庫無しと書いてらっしゃいましたが、
まだ流通あるようですよ。ヤフオクの7アンドYでポチりました。

153:デフォルトの名無しさん
09/05/23 11:39:14
>>152
ありがとう。まだ大丈夫でしたか。
私は用心に去年二冊目を買いました。人に貸せるように。
Prologの本は昨年の赤間さんの本以外はいつ絶版になっても
しかたがないというのが多くて・・・

154:デフォルトの名無しさん
09/05/24 09:40:24
>>95
突然、ミケランジェロがでてきたような感じなんだよね。

155:デフォルトの名無しさん
09/05/24 21:14:18
最初に読んだPrologの本が中島秀之先生の本だった影響で
今でもProlog/KRに愛着があります。GCLで動かしています。
S式が扱えるPrologが好きです。

156:デフォルトの名無しさん
09/05/24 22:28:37
>>147
正式には"KL1"なんじゃないかな。
URLリンク(www.icot.or.jp)
URLリンク(www.icot.or.jp)

157:デフォルトの名無しさん
09/05/24 23:02:41
>>153
今日届きました。最初の連言標準形・・・あたりから既に付いていけてない・・・T_T

158:デフォルトの名無しさん
09/05/25 11:41:23
prologで微分する述語を作ったんだが x^(-1) を微分すると -1*x^ -2*1 と括弧が外れてしまう
せめて -1*x^(-2)*1 くらいは括弧が欲しい
どうやら x^ -1 と単一化されるのが原因らしい 微分述語を定義するときに括弧をつけても外されてしまう
これって回避する方法って無いの?

159:デフォルトの名無しさん
09/05/25 15:50:50
>>158
> どうやら x^ -1 と単一化されるのが原因らしい

このへんがちょっとよくわからない

160:デフォルトの名無しさん
09/05/25 18:26:57
>>159
例えば test((A),((A))). という述語を定義しても listing. すると test(A,A). になります
括弧を記号と考えて処理する方法は無いの?

161:デフォルトの名無しさん
09/05/25 20:13:31
>>160
なるほど。それは実は面白いかも。

もし仮に「冗長な括弧は、主関数子を'()'/1とする複合項を構成する」みたいなルールを決めるなら…
1 + (2 + 3) = +(1, +(2, 3))
1 + 2 + 3 = +(+(1, 2), 3)
1 + ((2 + 3)) = +(1, ()(+(2, 3)))
(1 + 2) + 3 = +(()(+(1, 2)), 3)
こんな楽しいPrologが…!たぶん使うのが難しいと思うけどw

162:デフォルトの名無しさん
09/05/25 20:17:18
>>160
えーとつまり、括弧をデータとして扱うことの問題点は感じてもらえるのでは

163:デフォルトの名無しさん
09/05/25 22:06:50
再起処理で一番上流だけを求めるってできる?

164:デフォルトの名無しさん
09/05/26 07:41:44
>>163
一番上流というと?

165:デフォルトの名無しさん
09/05/26 07:59:25
>>164
up(a,b).up(b,c),up(c,d).up(d,e).のとき
top(X,e).と聞くとX=aだけを返すようなプログラムができる?

166:デフォルトの名無しさん
09/05/26 08:28:35
後戻りを再起処理と言っていたのかw
エスパーの勉強になった

167:166
09/05/26 08:31:58
おっとすまん、勘違いだったようだ

168:166
09/05/26 08:37:29
>>165
aの特徴は、\+ up(_,a)というところだよね
そのへんが切り口なのでは

169:デフォルトの名無しさん
09/05/26 08:48:17
>>165
top(Top,End) :- up(A,End),top(Top,A).
top(Top,Top) :- up(Top,_).

170:169
09/05/26 08:51:19
なるほど、これだとだめなのか。

171:169
09/05/26 08:53:18
top(Top,End) :- up(A,End),top(Top,A),!.
top(Top,Top) :- up(Top,_).
かな。

172:169
09/05/26 09:14:07
top(Top,Top) :- up(Top,_),not(up(_,Top)).
top(Top,End) :- up(A,End),top(Top,A).
確かにこの方がよい。

173:デフォルトの名無しさん
09/05/26 12:09:09
これは2段階の手続きにしたほうが自然なのでは
top(Top,X) :- upper(Top,X), \+ up(_,Top).
upper(X,X).
upper(X,X0) :- up(X1,X0), upper(X,X1).
ところで、探索の向きがちょっと…w

174:デフォルトの名無しさん
09/05/26 12:18:46
>>173だとあれか、top(z,z)とかもあれしちゃうか

175:デフォルトの名無しさん
09/05/26 12:36:56
そのケースが閃くかどうかだ。Prologの弱点も垣間見える。
「いい問題」だね。


176:デフォルトの名無しさん
09/05/26 12:41:46
でも実際には孤立した点を含む集合を考えているかも知れないけどね

177:デフォルトの名無しさん
09/05/26 13:28:55
順序集合の概念を知ってるかどうかで

178:デフォルトの名無しさん
09/05/27 08:57:39
top(X,X0) :- \+ up(_,X0), !, X=X0.
top(X,X0) :- up(X1,X0), top(X,X1).
こんな形を考えたよ。意味的には>>173系。

最初
top(X,X) :- \+ up(_,X), !.
というふうに考えてしまったのが反省点。

179:デフォルトの名無しさん
09/05/27 10:28:08
>>178
やっぱりまずいんではないか。
up(a,b).
up(b,c).
up(c,d).
top(X,X0) :- \+ up(_,X0), !, X=X0.
top(X,X0) :- up(X1,X0), top(X,X1).
?- top(X,z).
X = z;
no


180:デフォルトの名無しさん
09/05/27 10:47:37
>>179
まずくない

181:デフォルトの名無しさん
09/05/27 10:48:25
というよりも、up(X,_)を満たすものだけを対象にすべきかどうかはっきりしない

182:デフォルトの名無しさん
09/05/27 10:50:57
もっと言えば、up/2で言及されない元がないとはいえない

183:デフォルトの名無しさん
09/05/27 11:07:00
うーん、つくづく、いい問題、いい仕様(>>165)、だな。

184:デフォルトの名無しさん
09/05/27 11:14:40
よく読んでみると、一番上流と言う言葉の解説として、
>>165 が呈示されているので、やはり少し無理があるか。

185:デフォルトの名無しさん
09/05/27 14:10:47
なんかSWIのマニュアルが動的になって、静的な索引が見当たらなくなった。
くそーそんなにキーワードを入力させたいのか

186:185
09/05/27 20:38:25
バージョン5.6までの古いのがまだ別サイトに残っていた。情弱でごめん
URLリンク(gollem.science.uva.nl)

しかしリリース日がよくわからなくなってる感じがする
URLリンク(www.swi-prolog.org)
> This page isn't maintained very well. If you want know whether this project is active (very much), checkout the GIT history.

187:デフォルトの名無しさん
09/05/28 23:32:50
<超>Prologトリビア探検隊

中村克彦訳『Prologプログラミング』(いわゆるClocksin & Mellish)の
索引の「く〜け」の所ではなく「か」の所に、「空リスト」を発見…!
さあ、お手持ちの本の情報もぜひw

188:デフォルトの名無しさん
09/05/28 23:52:27
なにそれこわい

189:デフォルトの名無しさん
09/05/29 03:37:09
>>187 劣勢でないかと予想した「唐派」も健闘しています。
「述語論理と論理プログラミング」 有川節夫・原口誠共著 オーム社
「MICRO-PROGRAM」 サラム著 山田和美訳 啓学出版
「体験学習 ビジネスマンのための Prologプログラミング入門」 高橋三雄著 オーム社
「Prolog入門」 太細孝・鈴木克志・伊藤ひとみ・佐藤祐幸共著 啓学出版
「はじめてのProlog」 舟本奨著 ナツメ社
「RUN/Prologとその応用」 杉原敏夫著 工学図書株式会社
「RUN/PROLOG入門」 小島政行著 アムコインターナショナル
「PROLOGデーベース・システム」 リー著 安倍憲広訳 近代科学社
「RUN/Arity Prologプログラミング入門」 大原茂之著 オーム社
「RUN/Prologを用いた Prologプログラミング入門」 鑰山徹著 工学図書株式会社
「Prolog詳説」 バラス著 斎藤重光・舟本奨訳
「楽しいプログラミングII 記号の世界」 中島秀之・上田和紀共著 岩波書店
「Prologプログラミング」 Clocksin・Mellish共著 中村克彦訳 マイクロソフトウェア

190:デフォルトの名無しさん
09/05/29 04:26:10
バラスの本は啓学出版ですね。
「食う派」は15本見つけました。
「知識・代数・データベース」 グレイ著 田中穂積・徳永健伸訳 産業図書
「人工知能の基礎理論」 赤間世紀著 電気書院
「法律家のためのコンピュータ利用法」 加賀山茂著 有斐閣
「Prologマシン」 金田悠紀夫著 森北出版
「Prolog ユーティリティライブラリ」 フィリピッチ著 中野誠・伊藤哲郎訳
「Prologのソフトウェア作法」 黒川利明著 岩波書店
「Prologプログラミング入門」 安倍憲広著 共立出版
「論理による問題の解法」 コワルスキ著 浦昭二監修 山田眞一・菊池光昭・桑野龍夫訳
「Prologで学ぶ AIプログラミング」 赤間世紀著 工学社
「PROLOG入門」 後藤滋樹著 サイエンス社
「Prologランニングブック上」 横井与次郎著 ラジオ出版社
「わかる:-Prolog」塚本龍男著 共立出版
「例題演習 Prolog入門」 細野充著 オーム社
「情報学概論 Prologプログラミング」 吉田要著 八千代出版
「TURBO PROLOG入門」Townsend著 倉谷直臣・酒見高広訳 オーム社
赤間氏は確信を持って「食う」のようです。

191:デフォルトの名無しさん
09/05/29 04:42:40
「論理プログラミングの基礎」 J.W.ロイド著 佐藤雅彦・森下真一訳 産業図書株式会社
では「空節」が「か」に分類されています。これはさすがに。

192:デフォルトの名無しさん
09/05/29 08:00:04
このような場合もっとも重んじられるProlog本と思われる
「Prolog入門」 古川康一著 オーム社
の索引には"空リスト"はなかった。

193:デフォルトの名無しさん
09/05/29 10:18:46
えっ

194:デフォルトの名無しさん
09/05/29 21:38:57
>>189-192
また一歩、人類の知識が深化したね

195:デフォルトの名無しさん
09/05/29 22:09:56
ソラ派の俺はどうしたら

196:デフォルトの名無しさん
09/05/29 23:17:18
この手の話で盛り上がるのは、廃れつつある言語の典型ですなあ

197:デフォルトの名無しさん
09/05/30 09:40:17
>>189
PROLOGデーベース・システム」はもちろん誤りで正しくは「PROLOGデータベースシステム」です。
>>190 出版社に漏れがありました。
「Prolog ユーティリティライブラリ」は海文堂、
「論理による問題の解法」は培風館です。
「Prolog ユーティリティライブラリ」の索引は独特で、これは確信を以っての「食う派」ですね。

198:デフォルトの名無しさん
09/05/30 12:08:44
さすがに「あ」とか「す」はなさそうだね

199:197
09/05/30 12:17:05
確信を以って -> 確信を持って ですね。

200:デフォルトの名無しさん
09/05/31 12:25:55
>>163
その質問は「下流」ならできるけど、という話に見えるのがひっかけかな

201:デフォルトの名無しさん
09/06/01 02:26:30
帰ってきたPrologトリビア探検隊FX

『Prologの冒険』(Dennis Merritt著)の「まえがき」の「訳注」より。
> [1] Programming in Prolog(W.F. Clocksin and C.S. Mellish/Springer-Verlag, 1981)
> =邦訳:『Prologプログラミング』(中村克彦訳/マイクロソフトウェア,1983)。
> 本書は1987年に第3版が出版されているが,その邦訳はまだ存在しない。

1987年 「プログラミング」原書第3版
1988年 「プログラミング」改訂第3版 ←持ってます
1990年 「冒険」原書初版
1992年 「冒険」初版 ←持ってます

202:デフォルトの名無しさん
09/06/04 22:07:06
>>133周辺で、第五世代で機械語がどうたらという話があったけど、
逐次型の方のシステムで使われたKL0というのは、インタプリタ(の実行部分)が
マイクロプログラム(マイクロコード)化されていたというんで「機械語」だったらしいね。
URLリンク(www.icot.or.jp)
URLリンク(www.icot.or.jp)


小ネタ:
site:icot.or.jp "No Next Page"

203:デフォルトの名無しさん
09/06/05 08:13:10
他に質問にするところがないので、ここでさせてください。

今、Visual Prologでこの
URLリンク(wiki.visual-prolog.com)
サイトの
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:デフォルトの名無しさん
09/06/05 15:13:12
似たような状況
URLリンク(discuss.visual-prolog.com)
> So, after unpacking family1.zip, you should use Build/Run in Window

よくわからないけど、classのdeclarationとimplementationが別のファイルにあって、
それらがプロジェクトの中で関連づけられたものだと認識されていないということでは。
たぶん、プロジェクトの設定がどこかにあるはずなのに、それがコンパイラに伝わっていないとか。

> implementaion

○implementation
手で打ちましたねへっへっへ

205:デフォルトの名無しさん
09/06/05 15:18:38
「別のファイルにあって」は
「別々のファイルにあって」ですねスミマセン


206:デフォルトの名無しさん
09/06/05 18:42:18
>>202
逐次型推論マシンPSIは論理型プログラムPrologを高速に実行するのに最適化して設計
された,ワーク・ステーションである。次のような特徴を持っている。

・タグの採用
・最大16Mワード(80Mバイト)の実メモリ
・8Kワード(40Kバイト)のキャッシュ・メモリ
・高水準ビット・マップ・ディスプレイとマウスを装備
・高水準機械命令(KL0)とファームウェアによりKL0インタプリタ
・メモリ管理,一部のプロセス管理のファームウェア化
・ガーベッジ・コレクション機能のファームウェア化

PSIの基本処理装置の実行制御は,マイクロプログラム制御で行われる。このファーム
ウェアシステムは,マイクロ・インタプリとも呼ばれるPSIの機械語KL0を直接解釈実行
する。またファームウェアは,割込み制御,プロセス管理,メモリ管理,入出力制御等の
システム制御の機能を持ち,オペレーティング・システムによる資源管理の効率化が計られ
ている。

-- KL0 システム制御説明書 1-1 -- より

207:デフォルトの名無しさん
09/06/06 02:37:48
>>203
おまけ
URLリンク(wiki.visual-prolog.com)
扱われるファイルの拡張子の概略
URLリンク(www.visual-prolog.com)
「.prj6」という拡張子のファイルをIDEにロードしてビルドしてくれという指示のある例

そもそもコマンドラインから簡単にビルドできるのか、と疑ってみたところ…
URLリンク(discuss.visual-prolog.com)
> In will suggest that you simply use vip6Builder.exe:

> Yes. vip6builder is included in Visual Prolog Commercial Edition only.

まあそんなところかとw(バージョン7ではどうか知らないけど)

208:デフォルトの名無しさん
09/06/06 03:36:04
>>203
ふと何か勘違いをしている気がしてきた。
これまでのプログラム例のビルドには当然IDEを使って来たけども、
今回はコンパイラオプションを変えなきゃいけないようなのでコマンドラインでやってみた、
ということでしょうか。そうすると、
URLリンク(wiki.visual-prolog.com)
IDEの「Build Options」か何かをいじることになるのかも。それができないといっとんのじゃ、
という場合は、スミマセンw

209:デフォルトの名無しさん
09/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
09/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:デフォルトの名無しさん
09/06/07 06:23:06
いや、単にエスパー能力試しなのでお気になさらず
「インストールしたくないオーラ」を感じていただければw

212:デフォルトの名無しさん
09/06/07 07:21:34
>>210
どうして深く追及したくないかというと…
URLリンク(discuss.visual-prolog.com)
> It seems that Visual Prolog changed since I wrote that chapter.

入門書の例が動かなくなった、という報告が他にもあるみたいなので

213:デフォルトの名無しさん
09/06/08 14:43:48
前スレで少しだけ話題になっていたと思うけど、
URLリンク(en.wikipedia.org)
Wikipedia項目リンク
この落差は一体なんなのだろう。
どちらかが間違っているという部分もあるし。


214:デフォルトの名無しさん
09/06/09 00:59:01
>>どちらかが間違っているという部分もあるし。
ってどこ?

215:デフォルトの名無しさん
09/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
09/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:デフォルトの名無しさん
09/06/09 08:15:52
>>215
エッカート博士のストアード・プログラム方式の最初のアイデアに関する
裁判などを見ても、最初のアイデアを出したのが誰か、そして、本人がそれを
主張するか、などなかなか微妙。マルセイユグループとコワルスキとの間に
何かあるか、あるいは何もないのか、知らないが・・・
カルメラウア側の情報に終始するProlog生成の物語に、ある種の客観性を
与えるため、
According to Robert Kowalski,
以下があるのだと思う。カルメラウアが示唆を受けたと表明しているこの分野の
最高権威がお墨付きを与えているとして文献が示されている。
en.wikipedeaのここの部分の書き手とHistoryの書き手は異なるのかもしれない。



218:217
09/06/09 08:27:54
ついでに云ってしまうと、en.wikipedia は非常によく書けていると思う。
誰か翻訳して、jp.wikipediaを全面下記潰していただけないだろうか。


219:203
09/06/09 08:45:29
>>211-212
Visual Prologの元祖スレで質問して
カットを一つ入れたら治りました。
一応報告まで。

220:デフォルトの名無しさん
09/06/09 09:32:38
元祖スレというのが何を指しているかわかりませんが
よかったですね

221:デフォルトの名無しさん
09/06/09 09:35:48
>>218
手間と予想される悶着を考えると、とりあえずリンクを張って
あとは「独自研究」とか「雑多な内容」とかで

222:デフォルトの名無しさん
09/06/09 09:46:02
よく書けていると評価できる位なら独自に全部書けるだろwww
とか一瞬思ってしまった

223:デフォルトの名無しさん
09/06/09 09:48:12
>>222
まともな文章書いたことないだろw

224:デフォルトの名無しさん
09/06/09 14:23:43
>>222
プログラミングテクニックについてならいくらでも書けるけどね。
現在のWikipediaの構造を維持したら整合しない。だからといって、
Prologの歴史や述語論理との関係についてまで解説するのは、荷が
重い。


225:デフォルトの名無しさん
09/06/09 15:38:44
この項目はあまりよく書けていない可能性があります。
ノートでの議論と記事の発展への協力をお願いします(Template:よく書けていない)。

226:デフォルトの名無しさん
09/06/09 22:23:54
このスレで、記事をまとめて、
それを Wikipedia にアップさせれば良いのでは?

227:デフォルトの名無しさん
09/06/10 00:21:25
著作権が曖昧になると嫌がられるよ

228:デフォルトの名無しさん
09/06/10 07:48:04
翻訳はやりたいけど、今のjaのPrologの記事を書き潰すと一悶着ありそうだな…

229:デフォルトの名無しさん
09/06/10 08:13:58
匿名で書けるんだから面倒なことになったらトンズラすれば?

230:デフォルトの名無しさん
09/06/10 08:37:37
全部書き潰す必要はないし、ルールに従ってやればいいのだけれど、
Googleの検索でWikipediaが先頭にくるようになってからは、
大半のPrologのことを知りたい人がこのサイトを読んで引き返して
しまっていることは確かだ。しかも、そういう人のためのサイトに
全くなっていない。誰のために書いてあるのか分からないサイトと
言ってよいだろう。やはり、相当手を入れないといけない。


231:デフォルトの名無しさん
09/06/10 09:01:54
>Prologは、導出において節を以下に述べる頭部が一つの命題からのみなる
>ホーン節に限定したものととらえる事が出来る。 

この文、変だよね。

232:デフォルトの名無しさん
09/06/10 09:06:20
"からのみなる" の検索結果 約 915 件中 1 - 10 件目 (0.21 秒)

233:デフォルトの名無しさん
09/06/10 09:38:12
"nominal horn clause"の検索結果 8 件中 1 - 8 件目 (0.28 秒)

234:デフォルトの名無しさん
09/06/10 09:42:59
>>231
確かに難解な文だな。

Prologでは導出される対象を頭部が一つの項に限定されたホーン節と
呼ばれる命題に限定している。

と言いたいのですか?

235:デフォルトの名無しさん
09/06/10 09:56:02
ちょっとかじった人なら読み飛ばして何事もなしだが……
詰め込みすぎたか、あとで書く予定が面倒になったか。

236:デフォルトの名無しさん
09/06/10 10:17:36
>>234
私も素人なのだが。
( P ∧ Q ) も一つの項でしょ。
そうすると (p1 ∧ p2) :- q1 ∧ q2 ∧ ....
も許される事になっちゃうんじゃないの。


237:デフォルトの名無しさん
09/06/10 10:43:16
Prolog的混乱が生じてるねへっへっへ
「原子論理式」という言葉があるよ

238:デフォルトの名無しさん
09/06/10 11:22:05
ものの本によると、アタマのないやつも「ホーン節」のうちみたいよ。
質問とか、計算中の目標(ゴール)として現れるやつ。

アタマのあるやつ(Q∧R⇒P、P∨¬Q∨¬R、{P,¬Q,R}、P:-Q,R.)は
「頭部つきのホーン節」とか「プログラム節」とかいうらしい。

239:デフォルトの名無しさん
09/06/10 11:22:56
やべ
× {P,¬Q,R}
○ {P,¬Q,¬R}

240:デフォルトの名無しさん
09/06/10 13:01:54
古川康一著の「Prolog入門」より。
# ホーン論理とは,一階述語論理の命題をA1 ∨ A2 ∨ ... ∨ An ← B1 ∧ B2 ∧ ... ∧ Bm の
# 形(節形式)であらわしたときに,左辺の句がたかだか一つしか現れないような命題のみ扱う論理
# である(ここで,A1,A2, ... ,An,B1,B2, ...,Bm は正の句である). すなわち,左辺に句が
# 一つ現れるのか定義節であり,そこが空になるのがゴール節である(ゴール節を":-"から始めても
# よいのは,そのためである).

241:デフォルトの名無しさん
09/06/10 13:05:44
>>240
句・・・か・・


242:デフォルトの名無しさん
09/06/10 13:19:13
原子論理式、基本論理式、リテラル、句

は微妙に違いがあるのかな。リテラルは否定形を含むとか。

243:デフォルトの名無しさん
09/06/10 21:23:51
リテラルはそうでしょう

244:デフォルトの名無しさん
09/06/10 21:24:50
「正の句」と言っているから
句=リテラル
なのか

245:デフォルトの名無しさん
09/06/10 22:59:16
そうか「頭部つき」=「確定節」(DCGのDC)ということか

246:デフォルトの名無しさん
09/06/10 23:17:58
definite(明確な、限定的な など)
definitive(確実な、限定的な、明確な、限定詞 など)
definitional(definitionの形容詞形)
definition(限定、明確化、定義、解像力 など)
ややこしい

247:デフォルトの名無しさん
09/06/11 00:40:12
第129回技術委員会議事録
URLリンク(www.itscj.ipsj.or.jp)
> 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:デフォルトの名無しさん
09/06/11 01:02:05
小ネタ:
FGHC(Flat GHC)をGDC(Guarded Definite Clauses)と呼ぶことがあるらしい

249:デフォルトの名無しさん
09/06/11 01:33:11
Logic for applications
著者: Anil Nerode, Richard A. Shore
> (Ordered clauses are sometimes referred to as definite clauses, hence
んー?これはなんか集合論の用語みたいな…

250:デフォルトの名無しさん
09/06/11 09:03:10
Prologなら使用人口も少ないだろうし、
論文ネタがゴマンとあって書きやすいんじゃないかと思って手を出そうとしてるところ

実際、どう?

251:デフォルトの名無しさん
09/06/11 09:15:34
>>250
あくまでも、プログラム言語であるという視点で、
・ Prologのプログラムパターン
・ Prologのプログラミングスタイル
・ 得手とする領域とその典型的なプログラム
の記述を重視して。
お願いします!!

252:デフォルトの名無しさん
09/06/11 09:20:45
>>250
ごめん、間違えた。勉強しようという話ですね。
論文ネタなら、ICOTの検証だけで事実上無限にあります。

253:デフォルトの名無しさん
09/06/11 09:34:53
>>251-252
>論文ネタなら、ICOTの検証だけで事実上無限にあります。

ウホッ、予感的中!感謝感激雨霰!
マジで

     人 生 賭 け て 研 究 す る 所 存 で あ り ま す


でも、その前に紙の上での記号論理学や形式言語をもっと勉強しなければ、と今勉強中です

254:デフォルトの名無しさん
09/06/11 11:40:45
DCGトリビア発見
URLリンク(www.cs.kuleuven.ac.be)
> The reasons we concocted the term "definite clause grammar" had to do with the fact that
(以下略)

255:デフォルトの名無しさん
09/06/12 04:00:35
URLリンク(www.hamid2.soft.iwate-pu.ac.jp)
> Prolog のプログラムは、確定節(Definite clause)と呼ばれる節形式で、すべて記述する。
:
> Prolog のなかで利用される確定節は、H とBiの数によって、ル−ル節、ファクト節、ゴ−ル節に分けられる。
> またル−ル節とファクト節をまとめて、定義節と呼ぶ。

ここでは確定節=ホーン節みたいに扱ってるね。
ただし一般論じゃなくてPrologに絞った話だからアレだけど。

256:デフォルトの名無しさん
09/06/12 07:37:38
>>215-217
何気にスルーしちゃったけど、「Colmerauer」はフランス語の発音の原則だと
「コルメロエ」みたいになると思うけど、そのへんどうなんだろう。

257:デフォルトの名無しさん
09/06/12 07:44:05
クルルァ

258:デフォルトの名無しさん
09/06/12 07:51:02
○○が近いが△△あるいは□□とも書かれてきた

259:デフォルトの名無しさん
09/06/12 07:53:17
ちなみにおなじみC&M邦訳では「コルメロエ」だった

260:デフォルトの名無しさん
09/06/12 09:59:40
>>258
カタカナ表記の揺れの問題じゃなくて、
フランス語読みと英語読みの違いでしょ。

261:デフォルトの名無しさん
09/06/12 10:29:21
仏語:コルムローエル
英語:コルマローアー
では?


262:デフォルトの名無しさん
09/06/12 11:12:07
URLリンク(blog.livedoor.jp)
URLリンク(blog.livedoor.jp)
> 1)「ə」の発音となる場合
>   @「e」の後ろに子音字が1つしか続かない場合(但し、単語末は除く)
>     ex) demain [dəmɛ̃]
なるほど
語末rはきっと漏れには聞こえないのではないだろうか

263:デフォルトの名無しさん
09/06/12 11:27:20
URLリンク(blog.goo.ne.jp)
> 君のパリのアクセントが気に入らない! といいはるんですね。w

264:デフォルトの名無しさん
09/06/12 12:23:27
>>263
やっぱりコルメラウアじゃないか!

265:デフォルトの名無しさん
09/06/12 13:24:54
また新たな「確定節」解釈を発見。
『人工知能の基礎』(馬場口登・山田誠二共著)によると、

事実(fact)=単位節(unit clause)
ルール(rule)=確定節(definite clause)
質問(query)=ゴール節(goal clause)

らしい(p.75)。かなりパターンが揃ってきたねw

266:デフォルトの名無しさん
09/06/12 13:44:38
URLリンク(hagi.is.s.u-tokyo.ac.jp)
> 単位節(unit clause)
> 一つのリテラルから成る節
> 正単位節(unit clause)
> 一つの正リテラルから成る節
> 負単位節(unit clause)
> 一つの負リテラルから成る節
どうして全部unit clauseなんだろう

267:デフォルトの名無しさん
09/06/12 14:26:18
あそうか、コピペ駆動開発みたいな感じか

268:デフォルトの名無しさん
09/06/14 00:56:10
The Birth of Prolog
by Alain Colmerauer
URLリンク(citeseerx.ist.psu.edu)

269:デフォルトの名無しさん
09/06/14 05:26:20
>>268
「clause」だけ検索してみたら
・ここではdefinite clauseという言葉を使っていない
・たまに「program(の)clause」のような言い方をする程度
・そもそも、最初はホーン節という概念に着目していなかったらしい
という感触だった

270:デフォルトの名無しさん
09/06/14 08:29:53
URLリンク(alpha.c.oka-pu.ac.jp)
> 1973年エディンバラ大学のP. Hayesは,
(中略)
> 翌年さらにKowalskiは,Prologに代表される論理プログラミング一般の基礎づけをおこなった。

"Predicate logic as programming language"
URLリンク(www.doc.ic.ac.uk)
これの「6. HORN CLAUSES」のところでは、4種類のホーン節それぞれについて、
H ← B1, ..., Bn. を「procedure declaration」、
H ←. を「assertion of fact」、
← B1, ..., Bn. を「goal statement」、
←. を「halt statement」
と手続き的に解釈できるぜ、という言い方をしているね。
(下線付きなので読みやすい)

271:デフォルトの名無しさん
09/06/14 09:38:32
URLリンク(www.doc.ic.ac.uk)
site:www.doc.ic.ac.uk inurl:rak +definite

URLリンク(www.doc.ic.ac.uk)
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:デフォルトの名無しさん
09/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:デフォルトの名無しさん
09/06/14 12:18:37
URLリンク(www.w3.org)
> "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.

うーんこのへんになにかありそうな…

URLリンク(foldoc.org)
> A definite clause is a Horn clause that has exactly one positive literal.
URLリンク(mathworld.wolfram.com)
> A definite clause is a Horn clause that has exactly one positive literal.

この2つのページ、かなり酷似した部分があるけど大丈夫なのかな

274:デフォルトの名無しさん
09/06/14 12:46:23
URLリンク(ale.cs.toronto.edu)
> A definite sentence has exactly one positive literal in each clause and

なるほど、導出計算方面でいうsentenceをprogramと読み替えるとdefinite program、
definite programに含まれるclauseだということでdefinite clauseなのかな

275:デフォルトの名無しさん
09/06/14 12:48:21
というかdefinite (program) clauseか

276:デフォルトの名無しさん
09/06/14 13:20:39
ともかくSLD導出のDだというのは真面目に調べればすぐ分かったはずだった気がする。
エスパー能力の限界か。。

URLリンク(en.wikipedia.org)
> The name "SLD resolution" was given by Maarten van Emden for the unnamed
> inference rule introduced by Robert Kowalski in [Kowalski 1973, 1974].

Kowalskiは名前をつけたりしないのかな

URLリンク(en.wikipedia.org)
URLリンク(en.wikipedia.org)
> A definite sentence is a Horn clause with exactly one positive literal.

これはまた違う定義というか、、

277:デフォルトの名無しさん
09/06/14 15:05:53
ついにCarl Hewitt(の恨み節みたいなの)が面白く読める程度まで予備知識がついた気がする
URLリンク(knol.google.com)

278:デフォルトの名無しさん
09/06/14 22:06:24
『Horn節は、ある条件の下で(あるいは無条件に)成り立つ事柄について、
B1”または”B2というような不確定な言い方を許さない。そこでHorn節は
確定節(definite clause)とも呼ばれる』
論理と意味 p105

直観主義論理の形式系LJの式は全部Horn節、というのもどこかで
関係するんじゃないですかね。

279:デフォルトの名無しさん
09/06/14 22:19:54
失礼。書き忘れました。B1,B2というのは
A1,A2,...An → B1,B2,...Bn
という右辺にあるそれぞれの式のことを指します。

280:デフォルトの名無しさん
09/06/15 05:15:56
LJを調べてみました。扱っている式の形はホーン節に似てはいますが、
それぞれの論理式は原子論理式である必要はないんですよね

281:デフォルトの名無しさん
09/06/15 05:18:56
>280の「式」は「→」や「,」を含む全体、「論理式」はそこで対象化されている部分です、念のため

282:デフォルトの名無しさん
09/06/15 10:41:13
>>それぞれの論理式は原子論理式である必要はないんですよね
確かにその通りです。

では、そもそもなぜHorn節(より一般に節)は、原子論理式及び原子論理式
の否定の選言で構成されないとならないのか?という疑問が湧いてきますね。

多分何かしらの変換において、要素が原子論理式でなければならないという
縛りが出てきそうです。そのラインから少し調べてみます。

283:デフォルトの名無しさん
09/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:デフォルトの名無しさん
09/06/16 23:03:56
>>283
プログラミング言語の新潮流という本では、
正のリテラルが(”高々”はつかず)一つである節を確定節(definite clause)と呼ぶ。とある。

思うに証明戦略上区分けしていると思われる。
正の節、すなわち確定節の場合、
   証明戦略:SPU(selective positive unit resolution)
負の節、すなわち不確定節の場合、
   証明戦略:SNL(selective negative linear resolution)。

SLD = SPU + SNL?
SLD戦略を理解するに当たって、確定節、不確定節を区分したほうが
わかりやすいから区分しているように見える。



285:デフォルトの名無しさん
09/06/16 23:08:11
LJの式がHorn節になるというのはあまり関係ないようだ。
加えて、要素が複合論理式か、原子論理式かはあまり関係なかった。
SPUなりSNLの証明戦略を用いたとすると、結局原子論理式しか出てこない。

わかりにくい言い方だが、つまり、何かしら自動証明することを考えると、
複合論理式であるかどうか、ということは特に問題ならなくなる。

286:デフォルトの名無しさん
09/06/16 23:09:53
付け加えて、SPU,SNLについては『論理と意味』に解説がある。

287:デフォルトの名無しさん
09/06/16 23:14:46
改めて読み返すと>>285の内容がおかしい。とりあえず、保留。

288:デフォルトの名無しさん
09/06/19 00:06:52
質問です
prologで
?- divide([a,b,c,d,e],L1, L2).
L1 = [a,c,e]
L2 = [b,d]
とするにはどうしたらよいのでしょうか?


289:デフォルトの名無しさん
09/06/19 00:20:52
divide([],[],[]).
divide([X|Xs],[X|Ys],Zs) :- divide(Xs,Zs,Ys).

290:デフォルトの名無しさん
09/06/19 00:39:39
>>289さん
ありがとうございます
ちなみにこれの停止条件は空リストは空リスト二つに分けろってことですか?
何で最小単位が空リストになってしまうのでしょうか? a,b見たいな感じにはならないのですか?

後再帰条件はヘッドのXをXsとYsに分けてZsが残っているか判定する、でいいのでしょうか?

prologよくわからないので日本語がおかしいかもしれないですが回答お願いします

291:デフォルトの名無しさん
09/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:デフォルトの名無しさん
09/06/19 20:46:00
うぅむ・・・。
Xというリストを分けてXsとし、残ったリストXをまた分けてYzとし、
最終的に分割できるものがなくなったら残った物をZsとして
停止条件に行き着くみたいな感じでしょうか・・・?



293:デフォルトの名無しさん
09/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).
ほら、簡単でしょう(ボブ)


次ページ
最新レス表示
スレッドの検索
類似スレ一覧
話題のニュース
おまかせリスト
▼オプションを表示
暇つぶし2ch

4808日前に更新/227 KB
担当:undef