【論理】Prolog【初心者】

レス数が900を超えています。1000を超えると表示できなくなるよ。
1デフォルトの名無しさん
垢版 |
2010/11/06(土) 13:00:56
Prolog初心者のスレ

これは良い言語だ…
841839
垢版 |
2016/09/28(水) 10:01:23.90ID:6gs0Qv+W
>>840
ありがとうございます。該当の文献の英語版を読んでいるのですが多分因数分解は以下のコードだと思います。古い本で→や\等の記号が用いられており勝手に以下と解釈しました。
→  … :-
\   … 差分リスト
↑  … ^
subterm(Term,Term).
subterm(Sub,Term):-compound(Term),functor(Term,F,N),subterm(N,Sub,Term).
subterm(N,Sub,Term):-N>1,N1 is N-1,subterm(N1,Sub,Term).
subterm(N,Sub,Term):-arg(N,Term,Arg),subterm(Sub,Arg).
factorize(A*B,X,[Factors-Rest]):-!,factorize(A,X,[Factors-Factors1]),factorize(B,X,[Factors1,Rest]).
factorize(C,X,[[C|Factors],Factors]):-subterm(X,C),!.
factorize(C,X,[Factors,Factors]).
実行結果は以下となり、うまく因数分解できないのですが、どうすればよいかわかりますか?
1 ?- subterm(X,a*b*(c-d/e)^f).
X = a*b* (c-d/e)^f ;
X = a*b ;
X = a ;
X = b ;
X = (c-d/e)^f ;
X = c-d/e ;
X = c ;
X = d/e ;
X = d ;
X = e ;
X = f ;
false.
4 ?- factorize(x^2+4*x+4,A,x+2).
false.
5 ?- factorize(x^2+4*x+4,A,B).
A = x^2+4*x+4,
B = [[x^2+4*x+4|_G1609], _G1609].
842839
垢版 |
2016/09/28(水) 10:16:30.93ID:6gs0Qv+W
すみません差分リストのとこ[Factors-Rest]と[Factors,Rest]が混在してまちがってましたが
[Factors,Rest]の形式に統一しても同じエラーでした。
多分すでに式がA*Bの形式になっている前提で書かれているコードのような…
x^2+4^x+4 → (x+2)^2 の形式には変換できなそうですね。
843デフォルトの名無しさん
垢版 |
2016/11/17(木) 10:52:19.73ID:u2Ucvcf0
>>70
SWI-Prologだと、read_line_to_codes/2というような述語があります。第一引数に
ストリームがきます。
?- read_line_to_codes(user_input,X).
: qaz
X = [113, 97, 122].
となります。
get_line(Stream,Line) :-
read_line_to_codes(Stream,L),
atom_codes(Line,L).
という簡単な定義でピリオドなし入力を定義できます。
2016/12/03(土) 10:33:29.10ID:z6/kqn1c
実は多くのプログラマが最初は read を使ってデータ入力するプログラムを
書くのですが、実際に利用する人たちに拒否されます。それで、この
get_line のような行入力が必要になるのですが、get_char を使って再帰的に
述語を書くのことはハードルとなります。それでこの read_line_to_code の
ような述語があるのであれば、広く知らしてあげる必要があります。
2016/12/03(土) 13:28:23.04ID:YH7aKbNh
>>70は有用なレスだが
しかしメジャーな言語なら
こんな基本的な述語(メソッド)は
書かなくても標準ライブラリにあるよな
2016/12/03(土) 14:44:47.05ID:rctUeRlC
>>845
ライブラリというと、readln/1 というのがあるにはある。
?- readln(X).
:| abc
X = [abc].
で一見うまくいく。ところが
?- readln(X).
:| abc def
X = [abc,dec].
と余計なことをしてしまう。全体をアトムとして欲しいわけです。
それで使われない。
2016/12/04(日) 05:31:31.27ID:q5ZWXjRo
>>846 無茶な。

?- readln(X).
|: abc:def(ghi).
X = [abc, :, def, '(', ghi, ')', '.'].

?- のように使われるためのもの。
2016/12/04(日) 20:17:09.28ID:q5ZWXjRo
SWI-Prologに関する限り、入力よりも出力の方が変というか使いにくい。
format述語のことだけれど。
2016/12/05(月) 20:24:12.86ID:MLt2Eg7b
SWI-Prologの問題を超えて、この処理系のマニュアルが改善
されれば、Prologはもっと普及すると思う。
あまりにも、個々の実例が少なすぎる。多くのプログラマは
実例を見比べてその違いから、問題を理解するという方法を
身に付けているが、その方法に沿った資料に全くなっていない。
SWI-Prologが現在のPrologを代表するものに成長しているの
だから、この部分に人を割いて欲しい。
2016/12/11(日) 00:28:21.45ID:JXdY8Uy9
そこまでPrologに肩入れする理由は何?
2016/12/16(金) 12:14:52.67ID:tlYBnfBK
>>846
atom_concatつかうのはどうですか?

9 ?- readln(X),X=[First|[Rest]],atom_concat(First,Rest,Out).
|: abc def
X = [abc, def],
First = abc,
Rest = def,
Out = abcdef.
2016/12/16(金) 16:28:14.37ID:JsK6rGFf
>>851
ありがとうございます。
基本的にそれでうまく行くことも多いのだけれど、
入力したままの文字列にならないという点で具合が悪い。空白が必ずひとつならば、
atomic_list_concat(X,' ',Out),
良いのだが、そうとは限らない。
2016/12/16(金) 17:19:33.35ID:wFVtPzZ+
>>849
分かりやすいドキュメントは重要だよな

>>850
論理プログラミングに持ち込める問題なら
非常に簡潔に書ける
2016/12/19(月) 17:20:34.24ID:HSp2u2Qk
>>850
他の言語には難しい表現が可能になるから。
2016/12/22(木) 23:10:05.00ID:LlPiHmas
Lispの演習でユニフィケーションを実装すると、Prologがクセになる

マジおすすめ
856デフォルトの名無しさん
垢版 |
2017/01/22(日) 05:48:37.87ID:2Nn7VwOW
昨日ツイッターで出てきた。

即是(色,空).

という定義。これひとつで、
 
 空 色
 即 即
 是 是
 色 空
 
を満たしているのではないかと。
2017/01/22(日) 06:07:17.17ID:2Nn7VwOW
Tiobe Index for January 2017 Very Long Term History

Programming Language 2017 2012 2007 2002 1997 1992 1987
Java 1 1 1 2 17 - -
C 2 2 2 1 1 1 1
C++ 3 3 3 3 2 2 4
C# 4 4 6 10 - - -
Python 5 7 7 16 27 - -
PHP 6 5 4 6 - - -
JavaScript 7 9 8 7 20 - -
Visual Basic .NET 8 24 - - - - -
Perl 9 8 5 4 3 - -
Assembly language 10 - - - - - -
Lisp 28 12 12 9 7 11 2
Ada 30 15 16 15 10 3 13
Prolog 33 43 27 27 14 9 3

Prologもメジャーだった。
2017/01/23(月) 18:21:28.72ID:ldBFD7Ci
>>847

?- readln(X).
|: 愛情
X = [愛,情].

% というように、マルチバイト文字が分解されてしまう。これは直すべきだろう。
859デフォルトの名無しさん
垢版 |
2017/02/02(木) 09:31:31.52ID:iNuMzBgW
>>845
Prologがメジャーな時代からこの点は変わりなかった。
つまり、Prologからすると、扱うのは項であり、項になり得ないものを
入力対象とすることを潔しとしなかった。
>>858 これはもう、
行入力(_行) :- readline_to_codes(current_input,X),atom_codes(_行,Codes).
を定義してしまった方がよい。
860859
垢版 |
2017/02/02(木) 09:33:43.86ID:iNuMzBgW
ごめんなさい。
行入力(_行) :- readline_to_codes(current_input,Codes),atom_codes(_行,Codes).

です。
2017/02/02(木) 09:40:23.12ID:zsLWsToR
>>859 >>860
すみません。これ、
行入力(_行) :- read_line_to_codes(current_input,Codes),atom_codes(_行,Codes).
だと思います。readline_ではなくて、read_line_です。それから、一般化して
行入力(_入力ストリーム,_行) :- read_line_to_codes(_入力ストリーム,Codes),atom_codes(_行,Codes).
としておいた方が、ライブラリ化するのなら良いと思います。
2017/02/02(木) 09:44:53.78ID:iNuMzBgW
>>861
ありがとうございます。うっかりしました。
それからライブラリの話はストリーム明記となしの両方を作る必要がありますね。
2017/02/02(木) 09:48:41.37ID:iNuMzBgW
ところで、
『Prologでまったり』スレ
復活したいですね。
2017/02/02(木) 17:03:13.44ID:vNnAnK3G
Alephなどの帰納論理ライブラリ使ってる方はいるんだろうか。話聞いてみたい。
865デフォルトの名無しさん
垢版 |
2017/02/06(月) 11:47:26.15ID:zsAHJXs9
>>864
私はProgolを使いこなせなかった。それ以来はこの方面は手を出していない。
AlephはPrologで書かれているライブラリなのかな。
866デフォルトの名無しさん
垢版 |
2017/02/06(月) 18:10:43.59ID:rCI9uCRE
>>859
read_line_to_string/2 というのもありますね。
普通どちらを使うものだろうか。
2017/02/07(火) 18:24:31.96ID:s4l5/kyE
最近Stringが使われているコードあまり見なくなりましたね。
関数名、述語名もアトムですから。アトムとして処理したいです。
sub_atom/5やatom_concat/3が強力であることもあって、文字コードが
出る幕はなくなったということでしょう。
read_line・・・ については何故かどちらも文字コードが来るのですが。
868867
垢版 |
2017/02/07(火) 18:26:48.89ID:s4l5/kyE
read_line_to_chars/2でよいと思うのですが何故_to_codesしかないのでしょうか。
2017/02/08(水) 08:17:30.17ID:ic0Hb1Oc
なぜ、Prologの世界で、これを標準ライブラリ化しなかったのか。
そのことの理解が必要なんだろうけれど。以下はどうしても必要だろう。

行入力(_入力ストリーム,_行) :-
read_line_to_code(_入力ストリーム,Codes),
atom_codes(_行,Codes).
2017/02/13(月) 13:15:20.36ID:Bz9CPtSy
>>865
はい、Alephはprologで書かれています。
http://www.cs.ox.ac.uk/activities/machinelearning/Aleph/aleph

自分は「Prolog Programming for Artificial Intelligence 4th Edition」の
Inductive Logic Programing(帰納論理プログラミング)の記事を読んで興味を持ったのですが、
この本で紹介されているコードを大分レベルアップしたのがAlephやProgolのように感じました。

自分もまだ勉強中ですが、例えば以下の問題など興味深いです。

has_daughter述語の学習
 parent(X,Y):XはYの親、 female(X):Xは女性、という既存の述語があったとして、
 has_daughter(X)というボディ部不明の述語があり、
 これを満たす例、満たさない例をたくさん与えると、
 has_daughterのボディ部の内容の仮定を生成する

列車のeastbound-westbound問題(有名な問題のようです)
 これこれの構成で積荷がこれこれの列車は東行き、これこれだと西行きという事例を沢山学習させ、
 任意の構成の列車を入力するとそれが西行きか東行きかを生成した仮定を用いて判定する
2017/02/15(水) 19:36:40.66ID:Hii7olK0
>>865
ちょっと遅くなりました。帰納論理プログラミングについては、魅力的ですし、
将来、重要な地歩を占めるものと、予感しています。Progolについては、
大量に現れる節の可能性を上手く排除できず、中断状態になったままです。
この機会にAlephやってみます。どうも有難うございました。
872871
垢版 |
2017/02/15(水) 21:51:16.42ID:Hii7olK0
まちがえました。自分を指してしまった。
>>870 でした。
2017/02/16(木) 11:41:51.71ID:sX4bqSJb
何で急にprolog流行り出したの?
874870
垢版 |
2017/02/16(木) 12:18:29.03ID:wak87cl1
>>873
自分はProlog大好きなのですが全然流行っていないような…情報集めもメッチャ苦労しますし…

Prologの基本文法以外の、論文とかでしかあまり目にしない「応用Prolog」みたいな領域があって「日本ではあまり目立たなかったけど実は少しづつ進化していた」というのはあると思います。

日本語で目にするPrologの基本文法レベルの情報と外国で見つかる応用Prologの情報には大分差があるというのはあると思います。

文法にも大分手が入っている印象です
2017/02/16(木) 21:41:14.28ID:Ip3bwl24
>>873
どっかの大学で処理系作る演習課題を出したのでは
2017/02/16(木) 23:14:34.57ID:suS7noGe
>>873 >>874 >>875
これが爆発的に当たっているからですね。
http://qiita.com/vain0/items/6d3b75f667d3ec7f1d2a
877デフォルトの名無しさん
垢版 |
2017/02/17(金) 00:34:53.19ID:nT+0Ed8G
Prologって、第5世代コンピュータをつくるとかいって、ICOTという組織を
作って大々的に研究していたのじゃなかったかな。
ICOTの成果というものは、発表さいているのかしら。
2017/02/17(金) 03:22:48.78ID:td9uOFbw
発表されてたはずで、
https://ja.wikipedia.org/wiki/%E7%AC%AC%E4%BA%94%E4%B8%96%E4%BB%A3%E3%82%B3%E3%83%B3%E3%83%94%E3%83%A5%E3%83%BC%E3%82%BF
の外部リンク
AITEC・ICOTアーカイブス
第五世代コンピュータ プロジェクト アーカイブ
の先にあったのだと思うけど今では 403 Forbidden と 404 Not Found

これは残ってた
第五世代コンピュータ・プロジェクト
最終評価報告書
http://www.jipdec.or.jp/archives/publications/J0005062
2017/02/17(金) 05:29:01.81ID:zgDgwzIu
>>877-878
プロジェクトの遺産であるKLICはメンテナンスされている。

並行論理プログラミング (KLIC version 3.01)
http://www.ueda.info.waseda.ac.jp/software-j.html
けいえるわん
http://www.ueda.info.waseda.ac.jp/~takagi/kl1/
並列論理型言語処理系 KLIC のページ
http://web.archive.org/web/20100815015107/http://www.klic.org/software/klic/index.ja.html
第五世代コンピュータ プロジェクト アーカイブ
http://web.archive.org/web/20150121033015/http://www.jipdec.or.jp/archives/icot/ARCHIVE/HomePage-J.html
880デフォルトの名無しさん
垢版 |
2017/02/17(金) 07:43:14.35ID:nT+0Ed8G
>>878
>>879

情報ありがとうございます。
2017/02/17(金) 15:48:47.57ID:ovwqcfrF
残念…

https://ja.wikipedia.org/wiki/Prolog
>Prolog にオブジェクト指向プログラミングを取り入れた ESP
(略)
>ESPは多重継承を特徴とする当時としては先鋭のオブジェクト指向言語であった
(略)
>ISO の標準化作業は1987年頃から作業委員会(WG17)が作られ、
>日本委員も情報処理学会から15名ほどがこれに加わった。
(略)
>モジュール仕様については日本委員から、ICOTによって作成された
>ESP(Extended Self-contained Prolog)を以てその標準とする案が出されていたが、
>これは否決された。
2017/03/08(水) 01:37:14.82ID:FH5JSwpU
http://qiita.com/ShunIchikawa/items/6449f492dc38a7201162
pepperの頭脳がprologで書かれていたなんて
883デフォルトの名無しさん
垢版 |
2017/03/20(月) 14:40:29.09ID:D+qAvvKH
さる(ねる).

http://nojiriko.asia/prolog/prolog/saru_ru_ru_ru.html
2017/03/21(火) 02:02:37.80ID:1B8bXLyp
今のままでは、小学校のプログラミング教育にScratchが導入されてしまう。
Prologを推すことができるように、
小学生の目線で書いたPrologプログラムを増やそう。
885デフォルトの名無しさん
垢版 |
2017/03/21(火) 02:08:37.78ID:1B8bXLyp
基本的な方針としては、
道具立てなく、現在の授業科目の中ですぐに利用できるプログラム言語で
あることを武器として、広めていく。
もちろん、環境整備は必要だし、Prologの言語仕様の一部変更も必要には
なるだろう。
2017/03/25(土) 04:56:52.06ID:GDunSt8n
>>873
人工知能ブームで波及効果があるんじゃね?
でも読み書きしにくいから
Pythonみたいにメジャーにはならないと思うけど
887デフォルトの名無しさん
垢版 |
2017/03/26(日) 18:38:57.42ID:AnJi4Uz+
>>886
現在の深層学習は人間が結果に責任を持ちにくいというような欠陥があって、
それを補う部分の記述では必要。その部分では最有力ということではないか。
888887
垢版 |
2017/03/26(日) 18:41:31.41ID:AnJi4Uz+
訂正。
・・・・・・・
それを補う部分の記述が必要。その部分では最有力ということではないか。
889デフォルトの名無しさん
垢版 |
2017/03/27(月) 09:23:14.55ID:0S3+JQEx
>>886
読み書きしにくいの意味が、データの入出力のことなら別だけれど
プログラムの読みやすさ、書きやすさの意味だとすると、
Prologはもっとも読みやすいプログラム言語のひとつではないか
書く方は、難しいという見方もできるだろうが
890デフォルトの名無しさん
垢版 |
2017/03/31(金) 12:48:26.56ID:9hE01YVS
>>887
その部分では関数型言語も手続型言語もオブジェクト指向が強調されたものでも記述できるが、その記述の簡潔さでは、Prologは一頭地抜けている
891デフォルトの名無しさん
垢版 |
2017/03/31(金) 16:20:13.33ID:Xm1Y4uex
>>890
そろそろ
「ニューラルネットワーク的AIを制御するためのPrologプログラミング」
というような本がほしい。密かにやっているような段階ではない。
892891
垢版 |
2017/03/31(金) 16:21:47.69ID:Xm1Y4uex
「ニューラルネットワーク的AIを統制するためのPrologプログラミング」かな。
2017/04/09(日) 08:47:47.54ID:w11Bnd9f
Emacsでプログラム書いてますか?設定の参考になるサイトとかないでしょうか
894デフォルトの名無しさん
垢版 |
2017/06/15(木) 07:05:22.75ID:OS4b1hKm
Prologでデータベース foo/1 の引数値を集約するときに

?- findall(N,foo(N),L),sum_list(N,Sum).

というように書きます。これを

?- findall(Sum_1,(
findnsols(1000,N,foo(N),L1),
sum_list(L1,Sum_1)),L2),
sum_list(L2,Sum).

というように書くとスタックの消費を抑えることがてきます。
895デフォルトの名無しさん
垢版 |
2017/06/20(火) 18:05:00.63ID:K8Mc93da
>>892
AI的な課題のものでもよいし、そうでなくてもよいから
PythonとPrologの連携コード集がほしい
2017/06/23(金) 08:01:15.35ID:oZciV1Hy
そうそうProlog読み書きしにくいから
基本はPythonメインで
論理プログラムがハマるところに
Prolog使いたいよね

でも連携というかそもそも
Prolog自体の情報が少ない
897デフォルトの名無しさん
垢版 |
2017/06/25(日) 17:00:13.26ID:NUFQhX60
人工知能ということになるとPrologは述語論理を担うなどと大仰な
ことになるが、もっと単純に、
自分はこういうことを望む。
これこれのことはするな。
というように比較的単純なしかしどうしても欠かせない情報を
確実に表現するためのもの。Pythonよりさらに簡素な記述系を
最大限に使い込もう。
898デフォルトの名無しさん
垢版 |
2017/06/27(火) 11:15:02.78ID:TURdRN9F
実行系をさらにその上位で制御するという役割にPrologのようなプログラム言語は当てられてよいはずだが<
案外とそういうコードがない。GeneXusなどもそういう切り口を残すべきだったのだろうけれど、現在のところそうなっていない。
2017/06/27(火) 22:09:52.04ID:yIuIIYT1
Prologは宣言型なので
Pythonなどの命令型言語よりさらに高水準だから
システム最上位の制御にふさわしい……

って理屈は分かるけど
実際にはそういう使われ方で普及してないよね?

関数型言語よりもっと簡潔だけどもっと難しいんじゃ
やっぱ日常的に使いにくいんだと思う
900デフォルトの名無しさん
垢版 |
2017/07/02(日) 09:20:29.55ID:+SxSuJIi
>>899
どこも使い難い点はないような
901デフォルトの名無しさん
垢版 |
2017/07/03(月) 05:36:37.05ID:JEoPVY0x
>>900
それ、使い込んだ上での話ですか
902デフォルトの名無しさん
垢版 |
2017/07/03(月) 07:01:23.77ID:6QSWtKdI
>>896
ディープラーニンングは一過性ではなく持続しそうだから今後益々
数値計算依存部分はPytho、シンボル依存部分はPrologの切り分けが
進む。メインはPrologではあるが、スクリプト的なものが多くなる。
903デフォルトの名無しさん
垢版 |
2017/08/02(水) 12:14:45.53ID:AyM7Pnm7
>>900
PrologとPythonなどとの連携部分はまだ課題が多い。
単に呼べるというのでは不十分で、「簡単にどのライブラリ間でもいじること無く呼べる」必要がある。
例えば、C++がいま一つ敬遠される理由はこの連携が弱い(ABIが乱立)からだし。
まあこの手の問題は、糊(glue)機能が比較的優れてるLispでも抱えてる問題ではあるが。
2017/11/07(火) 17:33:56.45ID:cG+teg8q
904
2017/11/07(火) 17:34:27.71ID:cG+teg8q
905
2017/11/07(火) 17:34:59.61ID:cG+teg8q
906
2017/11/07(火) 17:35:31.12ID:cG+teg8q
907
2017/11/07(火) 17:36:01.37ID:cG+teg8q
908
2017/11/07(火) 17:36:30.51ID:cG+teg8q
909
2017/11/07(火) 17:37:00.33ID:cG+teg8q
910
2017/11/07(火) 17:37:34.15ID:cG+teg8q
911
2017/11/07(火) 17:37:57.03ID:cG+teg8q
912
2017/11/07(火) 17:38:26.67ID:cG+teg8q
913
2017/11/07(火) 21:52:44.42ID:Yiwwf3oY
埋め立て荒らし死ね
2017/11/08(水) 23:59:56.10ID:RoSi+77P
>>914
重複だから

Prologでまったり Part5
https://mevius.5ch.net/test/read.cgi/tech/1490334702/
916デフォルトの名無しさん
垢版 |
2018/05/23(水) 21:19:05.66ID:Au5e7VGg
僕の知り合いの知り合いができたパソコン一台でお金持ちになれるやり方
役に立つかもしれません
グーグルで検索するといいかも『ネットで稼ぐ方法 モニアレフヌノ』

26K6I
917デフォルトの名無しさん
垢版 |
2018/07/05(木) 00:38:42.64ID:RfoszcD2
N2H
918デフォルトの名無しさん
垢版 |
2018/07/11(水) 05:18:17.41ID:WcC1XiNM
prolog初心者でわからないことあったから来てみたけどもしかして誰もいない?
919デフォルトの名無しさん
垢版 |
2018/07/11(水) 12:16:27.45ID:E99jt7Z3
眠ってなんかいません
2018/07/11(水) 13:51:36.30ID:wV7UrnIg
>918
そのわからないことを質問してみたらいいのじゃないかな
921デフォルトの名無しさん
垢版 |
2018/07/12(木) 20:27:33.93ID:G0bLrcU2
>920
構文木を例のように見やすくするプログラムを書きたいんだけどそれがわからなく、
ggっても全然出てこなくて困ってる


文(
  主語(
     名詞句(
         名詞句(
             名詞(鳥))
     主格助詞(は)))
  述語(
     目的語(
         名詞句(
             形容詞(白い)
             名詞句(
                 名詞(花))))
         対象格助詞(を)
  動詞(好む)))
922デフォルトの名無しさん
垢版 |
2018/07/12(木) 20:29:25.40ID:G0bLrcU2
>921
)の数ミスった
923デフォルトの名無しさん
垢版 |
2018/07/12(木) 20:37:01.43ID:G0bLrcU2
>920
連投ごめんなさい 構文木ってのがこれ 構文木じゃなくて構文木を表す項っていうのかな
文(主語(名詞句(名詞(鳥),主格助詞(は))),述語(目的語(名詞句(形容詞(白い)名詞(花)),対象格助詞(を))),動詞(好む))).
924デフォルトの名無しさん
垢版 |
2018/07/14(土) 10:54:39.64ID:v4Gtt50J
そんなのggれないやつは向いてない
925デフォルトの名無しさん
垢版 |
2018/08/27(月) 13:27:28.56ID:2QrJXX5D
Welcome to SWI-Prolog (Multi-threaded, 32 bits, Version 6.6.6)
?- [user].
|: 死ぬ(人間).
|: member(ソクラテス, 人間).
|: % user://1 compiled 0.00 sec, 3 clauses
true.

?- 死ぬ(ソクラテス).
false.

なんでtrueにならないんでしょ?
2018/08/31(金) 15:46:52.79ID:xstmO6GY
Prolog、難しすぎる(~o~)
927デフォルトの名無しさん
垢版 |
2019/06/19(水) 04:54:52.34ID:tVNS+22r
【出資】松本卓朗 人工知能詐欺【注意】
https://rio2016.5ch.net/test/read.cgi/rikei/1560859403/
928デフォルトの名無しさん
垢版 |
2019/10/22(火) 18:08:22.23ID:ng/45f9q
最近Prologを学び始めたのですが、ゴール(目標)について質問があります。教えてください

例えばwikipedia<https://ja.wikipedia.org/wiki/Prolog>;などで、

> 目標 = ( 副目標1,副目標2, ... 副目標n ) と置けば、
> 頭部 :- 目標.

というような説明になっているのですが、
『Prologへの入門』だと、

> システムへの質問は1つまたは複数の目標(goal)から成る.
>   parent( X, ann), parent( X, pat)
> のような目標の列は
>   XがAnnの親であり、かつXがPatの親である
> という目標の連言(conjunction)を意味する.

となってますし、The Art of Prologでも

> An important extension to the queries discussed so far is conjunctive
> queries. Conjunctive queries are a conjunction of goals posed as a query,
> for example, f ather(terach,X) ,father(X,Y)? or in general, Q1, ..., Qn.

となっていて、一番上の引用における「副目標」のことをgola(目標)と呼んでいる
ように思われるのですが、私の理解が間違ってるのでしょうか
それとも、Prolog界で定義というか捉え方が変わったのでしょうか
929デフォルトの名無しさん
垢版 |
2019/10/22(火) 18:11:40.32ID:ng/45f9q
>>928
>となっていて、一番上の引用における「副目標」のことをgola(目標)と呼んでいる
あ、すいません、「goal(目標)と呼んでいる」の打ち間違いです
2019/10/22(火) 21:34:35.60ID:QfoZv31s
>>928
goalのうち上位のgoalを構成してるgoalたちを
subgoalと呼んで分かりやすくしてるかどうかの違いでは?
931928
垢版 |
2019/10/22(火) 22:03:20.92ID:ng/45f9q
うーん 沢山のゴールの中の「上位」なものを「副」と名付けるとは思えませんが
「目標」が「goal」の訳だとすると、「目標」の上位なものを「副目標」と呼び、副目標の並びを
また「目標」と呼ぶということになってしまいます
2019/10/22(火) 22:32:54.50ID:QfoZv31s
>>931
書き方が悪かったかな

上位のgoalを構成する部分要素になってるgoalをsubgoalと呼んでるってこと

subgoalもgoal。goalという概念のうち特化したものをsubgoalと呼んでる。
subを強調したいかどうかで書き手が使い分けてるだけ
933928
垢版 |
2019/10/23(水) 21:19:52.08ID:9WlWgYr4
確かに「goalを並べてもgoal」という定義はありだと思いますが、目標という言葉が
「副目標」がたくさん出現した後で「頭部 :- 目標.」で初めて出てくるのはどうなんだろうと
いう思いを禁じえません。。
ともあれ、ちょっとすっきりしました
ありがとうございました
2020/03/05(木) 20:08:15.95ID:h922Dn8C
ひとつ前は去年のレスか……
このスレもゴールしそうだな?
935デフォルトの名無しさん
垢版 |
2020/06/04(木) 14:22:16.50ID:fpPgT8jn
Prologを使えばオートマトンが簡単に実装出来るな
文法自由文法に相当することも出来るみたいだが詳しいことを教えてくれ

あと、Prologの文法を色々拡張しようと思ってswi-prolog本体のソースコードを読んでるから情報交換頼む
936デフォルトの名無しさん
垢版 |
2020/06/04(木) 14:39:49.15ID:fpPgT8jn
swi-prolog本体のソース読んでるんだが
__cyg_profile_func_enter使ってswi-prologの関数トレースしようと思ったら出来ないなーと思ったらvisibility("hidden")のattributeが設定されてたw
取りあえず一括置換したわw
Prologって文法がシンプルだからインタープリターのソースも15万ステップぐらいしかないし、実用的な言語実装の勉強になる
さらに汎用言語と組み合わせて使えば構造化データのマッチングなんかで強力な武器になるしいい言語だな!
皆んなでインタープリターのソース読んでProlog広めようぜ!
937デフォルトの名無しさん
垢版 |
2020/06/04(木) 14:49:43.71ID:KwTRcPMk
プロログがあるならエピログもあってしかるべき。
938デフォルトの名無しさん
垢版 |
2020/06/04(木) 14:58:29.29ID:fpPgT8jn
>>937
プロログの語源はプロローグじゃなくて
プログラミング・オブ・ロジックのフランス語だった気がする
939デフォルトの名無しさん
垢版 |
2020/06/04(木) 15:12:11.04ID:KwTRcPMk
ボンジュールの仲間みたいなもんですか、
そいつは気が付きませんでした、レス有難う。

ところでこっちの質問もお願いします。
https://mevius.5ch.net/test/read.cgi/tech/1560333895/533
940デフォルトの名無しさん
垢版 |
2020/06/04(木) 15:21:08.64ID:fpPgT8jn
JSとか知らんがな
レス数が900を超えています。1000を超えると表示できなくなるよ。
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

ニューススポーツなんでも実況