【问题标题】:what are the semantics of datalog and prolog?datalog 和 prolog 的语义是什么?
【发布时间】:2015-02-03 17:59:53
【问题描述】:

datalog 是在集合还是多集合上运行?这同样适用于 prolog 吗?我无法找到任何相关文档。

【问题讨论】:

  • Prolog 具有用于处理多集的谓词,如果这是您所要求的(由谷歌搜索“prolog multiset”确定)。
  • 感谢@ScottHunter。这是否意味着 prolog 默认在集合上运行?
  • Prolog 中的主要数据结构是 list,它通常像集合一样使用,但都允许重复并尊重顺序。
  • @ScottHunter:我认为 OP 询问了谓词的语义,比如p(1). p(2). p(1). 这里目标p(X) 产生了一系列答案替换,比如X = 1 ; X = 2 ; X = 3.
  • @ScottHunter list 不是 Prolog 中的主要数据结构。只是一种经常被误用和滥用的复合术语,尤其是新手程序员。

标签: prolog datalog


【解决方案1】:

Datalog 的语义是在有限集上定义的。

然而,Prolog 为您提供了答案替换序列,并且在 Prolog 的情况下具有约束答案。答案替换可能代表简单的解决方案,例如X = 1,但它们也可能代表无限多的解决方案,例如X = [_A,_B,_C]。答案替换的序列可以看作是一个多重集,但它甚至更通用一些,因为精确的序列很重要。如X = 1 ; X = 2 ; X = 1

带有约束的一般答案进一步扩展了这个概念。答案X in 2..sup, X mod 2 #= 0 包含无限多的解决方案,它也可能包含有限多的X in 1..3,甚至没有X in 2..sup, X mod 2 #= 0, X mod 2 #= 1

【讨论】:

  • Wiki 提到有限集上的 Datalog 保证会终止,但没有说明该有限集是否是默认集?
  • @JRR:许多系统扩展了核心,比如说本身允许描述无限集的算术。
猜你喜欢
  • 2011-04-24
  • 1970-01-01
  • 1970-01-01
  • 2011-09-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-09-15
  • 1970-01-01
相关资源
最近更新 更多