“的正确定义;原子“;在Prolog和逻辑编程中

“的正确定义;原子“;在Prolog和逻辑编程中,prolog,Prolog,我把这个问题贴在了网上,得到了一些有用的评论,但也许这里的人对这个话题也有一些想法 我对如何在我们正在写的论文中使用“原子”这个词感到有些困惑 (1) 在序言中,原子被称为“文本常量。用作复合术语的名称,表示常量或文本。”。看见相应地,这些是原子:john,祖父母,等等 (2) 在有关逻辑编程的文本中,例如和,“原子”被称为具有p(t1,t2,…,tn)形式的术语,其中ts是术语,p是谓词符号。这与经典一阶逻辑中“原子”的用法相对应 我假设(1)在谈论Prolog时是“atom”的正确定义,而(

我把这个问题贴在了网上,得到了一些有用的评论,但也许这里的人对这个话题也有一些想法

我对如何在我们正在写的论文中使用“原子”这个词感到有些困惑

(1) 在序言中,原子被称为“文本常量。用作复合术语的名称,表示常量或文本。”。看见相应地,这些是原子:
john
祖父母
,等等

(2) 在有关逻辑编程的文本中,例如和,“原子”被称为具有
p(t1,t2,…,tn)
形式的术语,其中
t
s是术语,
p
是谓词符号。这与经典一阶逻辑中“原子”的用法相对应

我假设(1)在谈论Prolog时是“atom”的正确定义,而(2)在谈论逻辑编程时是“atom”的正确定义,对吗?我认为我感到困惑的一个原因是我认为Prolog是逻辑编程的一个实例

干杯/JC

编辑2020-08-18**********************************************

在使用LP术语时,解释统一有点困难;我试过了

与典型Prolog术语的统一:

  • 原子、数字、变量和化合物都是术语
  • Atom=以小写字母开头的字符串
  • 数字=一个数字
  • 变量=以大写字母开头的字符串
  • 复合=p(t1,t2,…,tn),其中p是谓词符号,ts是术语
统一:

  • 如果两个原子相同,它们就统一了
  • 如果两个数字相同,则它们是统一的
  • 变量与任何类型的项相结合
  • 如果两个复合词(1)名称相同,(2)参数数量相同,(3)所有参数都统一,(4)变量可以一致实例化,则两个复合词统一
与典型LP术语的统一:

  • 常量、变量和函数都是术语
  • 常量=以小写字母或数字开头的字符串
  • 变量=以大写字母开头的字符串
  • 函数=f(t1,t3,…,tn),其中f为函数符号,ts为术语
  • 原子公式=p(t1,t2,…,tn),其中p是谓词符号,ts是术语
统一:

  • 如果两个常数相同,则它们是统一的
  • 变量与任何类型的项相结合
  • 如果(1)两个原子公式或两个函数的名称相同,(2)参数数量相同,(3)它们的所有参数统一,(4)它们的变量可以一致地实例化,则两个原子公式或两个函数将统一

为了避免名称冲突,您可以谈论素数公式
或正文本,但这3个都是相同的:


我认为你是对的:Prolog使用“atom”表示形式逻辑所称的“常量”。您引用的文本将其用作“原子公式”的简写。在你的论文中,完全避免使用“原子”一词,而使用“常量”或“原子公式”可能是有意义的,除非你是专门写Prolog的。至于Prolog是“逻辑编程”的一个例子,这个术语非常模糊,没有是/否的答案。是的,同一个词,但根据上下文的不同含义不同。我很确定Prolog的“atom”来自LISP的“atom”,它类似于“一个代表自身的短字符串”,类似于其他编程语言的“关键字”,但程序员可以灵活地使用它(特别是在指定的位置之外,例如)。Prolog的“functor”也有同样的歧义,它代表着与“谓词”相同的概念:一个符号常量(即原子)和一个算术——但是“函子”在40年代就开始使用了,在这里有一个非常不同的含义。谢谢你的建议!谢谢你的建议!