标签: prolog

Python中的关系/逻辑编程?

我是一名长期的python开发人员,最近已被介绍给Prolog.我喜欢为某些类型的任务使用关系规则的概念,并希望将其添加到我的保留曲目中.

在Python中有没有适合逻辑编程的好库?我在谷歌上做了一些搜索,但只发现了以下内容:

关于relational_python的jtauber博客系列

很想和其他人比较......谢谢!

-AJ

python prolog logic-programming

35
推荐指数
4
解决办法
2万
查看次数

将谓词应用于列表元素的Prolog映射过程

如何编写map(List, PredName, Result)将谓词应用于PredName(Arg, Res)元素的Prolog过程,并将List结果返回到列表中Result

例如:

test(N,R) :- R is N*N.

?- map([3,5,-2], test, L).
L = [9,25,4] ;
no
Run Code Online (Sandbox Code Playgroud)

prolog meta-predicate map-function

35
推荐指数
1
解决办法
2万
查看次数

Prolog的逻辑"不"是什么?

我面临的问题有点微不足道.我想在Prolog中使用逻辑,但似乎not/1不是我想要的东西:

course(ai).
course(pl).
course(os).

have(X,Y) :- course(X),course(Y),not(X = Y).
Run Code Online (Sandbox Code Playgroud)

我查询:

have(X,Y), write(X-Y), nl , fail.
Run Code Online (Sandbox Code Playgroud)

我没有得到我想要的结果:(

prolog prolog-dif

35
推荐指数
4
解决办法
8万
查看次数

人工智能的Lisp和Prolog?

现在,因为我3年前在AI上课,我非常熟练地提出这个问题......开个玩笑只是开玩笑;)

但严重的是,这些语言是什么使它们如此受人工智能研究的欢迎.即使人工智能研究"老"......它可能是过去5到10年中最长的方式......似乎是因为这些语言在某种程度上"设计"了人工智能的概念,或者仅仅是我们现在没什么好用的?

我问这个是因为我总觉得它非常有趣,我只是有点好奇.如果我完全错了,他们使用不同的语言,我很想知道他们使用的是什么.我的意思是我可以理解prolog,尤其是Sentient/Propositional Logic和Fuzzy逻辑.但我不明白"为什么"我们会使用Lisp ...甚至AI研究人员用来做机器学习等的其他内容.

关于主题的任何文章/书籍也是有帮助的:)

lisp artificial-intelligence prolog

34
推荐指数
5
解决办法
4万
查看次数

不同/ 2 - 是否存在纯粹的,确定的定义?

different(Xs, Ys) :-
   member(X, Xs),
   non_member(X, Ys).
different(Xs, Ys) :-
   member(Y, Ys),
   non_member(Y, Xs).
Run Code Online (Sandbox Code Playgroud)

虽然这个定义使用member/2non_member/2几乎是1从声明的观点完美的,它产生于特定查询的冗余解决方案,并选择留点周围.

什么是改进的定义(以纯粹的方式可能使用if_/3(=)/3),使得完全相同的解决方案集被描述different/2但至少对于地面查询是确定的(因此不会留下任何无用的选择点)并且省略(如有可能)任何多余的答案?


1 实际上,different([a|nonlist],[]), different([],[b|nonlist])成功了.它同样可能失败.所以两者都失败的解决方案很好(甚至可能更精细).

prolog prolog-dif logical-purity

33
推荐指数
7
解决办法
791
查看次数

开始使用prolog的好IDE

我需要开始为我的工作学习Prolog.

我之前没有使用Prolog,我的公司需要构建一个使用Prolog的程序.

因此该程序将在商业上使用.

所以有些问题:

1)Prolog是否使用编译器来编译程序.像gcc一样用于c?

2)Prolog有商业标准吗?我只听说过SWI Prolog.

3)我已经在Linux上使用GNU Emacs多年了.我在考虑使用Prolog.el包吗?对此有何评论?

非常感谢任何答案,

prolog

32
推荐指数
1
解决办法
3万
查看次数

Prolog在技术上如何运作?引擎盖下有什么?

我想了解更多有关Prolog内部的知识,并了解其工作原理.

我知道如何使用它.但不是内部如何运作.Prolog中使用的算法和概念的名称是什么?

可能它构建了某种树结构或有向对象图,然后在查询时,它使用复杂的算法遍历该图.可能是深度优先搜索.可能有一些源代码,但首先从高层次的角度来看它会很棒.

我真的很喜欢人工智能,理解Prolog似乎是一个很好的开始,imho.我的想法是尝试重建类似的东西并完全跳过解析器部分.我需要知道我必须做的研究工作的方向.

artificial-intelligence prolog

32
推荐指数
3
解决办法
5236
查看次数

如何在ISO Prolog中定义(和命名)相应的安全术语比较谓词?

标准术语顺序(ISO/IEC 13211-1 7.2术语顺序)是在所有术语(包括变量)上定义的.虽然有很好的用途 - 想想实现setof/3,但这使得许多其他清洁和逻辑用途的内置插件在8.4 Term比较中声明性的噩梦与imps(命令式构造的简短形式)四处都有.8.4术语比较功能:

8.4术语比较

8.4.1(@ = <)/ 2,(==)/ 2,(\ ==)/ 2,(@ <)/ 2,(@>)/ 2,(@> =)/ 2.
8.4.2比较/ 3.
8.4.3 sort/2.
8.4.4 keysort/2.

举个例子,考虑一下:

?- X @< a.
true.
Run Code Online (Sandbox Code Playgroud)

这成功了,因为

7.2期限订单

命令term_precedes(3.181)定义
术语X术语是否在术语之前Y.

如果XY是相同的术语,则X term_precedes Y
Y term_precedes X都是假的.

如果XY有不同的类型:Xterm_precedes Y当且仅当该
类型X先于类型Y按以下顺序:
variablefloating point先于integer
先 …

sorting prolog iso-prolog prolog-dif

32
推荐指数
4
解决办法
934
查看次数

Ubuntu中的Prolog编程

我有兴趣与prolog一起玩和fuxing,我已经安装了swi-prolog并添加了存储库,以防万一有人对我使用的哪个命令感兴趣:

% sudo apt-add-repository ppa:swi-prolog/stable
% sudo apt-get update
% sudo apt-get install swi-prolog
Run Code Online (Sandbox Code Playgroud)

我如何开始在我的linux机器上编写prolog代码?对于我的常规编程,我使用VIM编写/编辑/调试和终端编译.我可以用vim写prolog吗?我如何编译或使用prolog解释器(我认为这就是所谓的)?

linux ubuntu prolog swi-prolog

31
推荐指数
2
解决办法
3万
查看次数

为什么这个prolog查询既真实又错误?

我的SWI-Prolog知识库包含以下两个事实:

f(a,b).
f(a,c).
Run Code Online (Sandbox Code Playgroud)

现在,如果我提出查询

?- f(a,c).
true.
Run Code Online (Sandbox Code Playgroud)

?- f(a,b).
true ;
false.
Run Code Online (Sandbox Code Playgroud)

为什么f(a,b)既真又假?当KB中有三个事实时,也会发生这种情况.如果我追加f(a,d).到KB,然后f(a,d)为真(仅),但f(a,b)和f(a,c)都是真和假.发生了什么,我能做些什么让Prolog回答(仅)回答这些问题?

prolog swi-prolog prolog-toplevel

30
推荐指数
2
解决办法
1万
查看次数