The past years have seen widening efforts at increasing Prolog's declarativeness and expressiveness. Tabling has proved to be a viable technique to efficiently overcome SLD's susceptibility to infinite loops and redundant subcomputations. Our research demonstrates that implicit or-parallelism is a natural fit for logic programs with tabling. To substantiate this belief, we have designed and implemented an or-parallel tabling engine -- OPTYap -- and we used a shared-memory parallel machine to evaluate its performance. To the best of our knowledge, OPTYap is the first implementation of a parallel tabling engine for logic programming systems. OPTYap builds on Yap's efficient sequential Prolog engine. Its execution model is based on the SLG-WAM for tabling, and on the environment copying for or-parallelism.
Preliminary results indicate that the mechanisms proposed to parallelize search in the context of SLD resolution can indeed be effectively and naturally generalized to parallelize tabled computations, and that the resulting systems can achieve good performance on shared-memory parallel machines. More importantly, it emphasizes our belief that through applying or-parallelism and tabling to logic programs the range of applications for Logic Programming can be increased.
Tabling, Rational Terms, and Coinduction Finally Together!
逻辑程序设计理论与实践(Theory and Practice of Logic Programming,TPLP)列表是逻辑编程中常用的技术,用于避免逻辑程序的循环行为并实现更多的声明性程序定义。此外,制表通常可以提高计算性能。有理项是指具有一个或多个无穷子项但具有有限表示的项。在Prolog中,当统一两个术语时,可以通过省略发生检查来生成有理术语。有理项的应用包括确定子句文法、约束处理系统和共归纳。在本文中,我们报告我们的扩展YAP的Prolog制表机制,以支持合理的条款。我们描述了表空间中有理项的内部表示,并证明了它的正确性。然后,我们使用这个扩展来实现一个基于表格的方法coinduction。我们比较我们的方法与当前的共归纳变换,并描述了实现。此外,我们提出了一个算法,确保一个规范的表示为合理的条款。
Infinite probability computation by cyclic explanation graphs
在逻辑程序设计中,表法被用来消除冗余计算和停止无限循环。本文研究了制表的另一种可能性,即计算概率逻辑程序的概率的无穷和。使用PRISM,一个基于逻辑的概率建模语言与制表机制,我们推广了概率上下文无关文法(PCFG)的前缀概率计算概率逻辑程序。给定一个最高目标,我们搜索所有的证明与制表,并获得一个解释图,压缩它们,可能是循环的。然后将解释图转化为一组线性概率方程,并通过矩阵运算求解。这个解给出了最高目标的概率,本质上,这是一个概率的无限和。我们的前缀概率计算的一般方法,通过制表,不仅允许处理非PCFG,如概率左角文法(PLCG),但有应用程序,如计划识别和概率模型检验,并使其有可能计算概率模型描述循环关系。逻辑程序设计理论与实践(Theory and Practice of Logic Programming,TPLP)
YAP(Yet Another Prolog)是一个Prolog系统,最初开发于80年代中期,此后一直在不断发展。本文介绍了YAP系统的总体结构和设计,重点介绍了对逻辑编程社区的三个重要贡献。首先,它描述了在YAP中使用的主要技术,以实现一个高效的Prolog引擎。其次,大多数逻辑编程系统有一个相当有限的索引算法。YAP通过提供动态索引机制或即时索引器(JITI)为这一领域做出了贡献。第三,YAP系统的一个重要贡献是在一个逻辑编程系统中集成了或并行和制表。
Towards an Efficient Prolog System by Code Introspection
逻辑程序设计理论与实践(Theory and Practice of Logic Programming,TPLP)一些Prolog解释器是基于Warren抽象机(WAM),一个优雅的模型来编译Prolog程序。为了提高性能,提出了优化子句选择、专门化统一、全局分析、本地代码生成和制表等策略。本文提出了一种不同的策略来实现一个高效的Prolog系统,在飞行中创建专门的仿真器。该策略在YAP Prolog系统上进行了实现和评估,实验评估显示了有趣的结果。
Università di Udine(乌迪内大学);GNCS-INdAM(意大利国家高等数学研究院-国家科学计算小组);University of Texas at Dallas(德克萨斯大学达拉斯分校);IMDEA Software Institute(IMDEA 软件研究所);Universidad Politécnica de Madrid(马德里理工大学);New Mexico State University(新墨西哥州立大学);CRACS/INESC TEC(CRACS/INESC TEC 研究所);University of Porto(波尔图大学)
Timed Soft Concurrent Constraint Programs: An Interleaved and a Parallel Approach
Università di Perugia(佩鲁贾大学);Università di Bologna(博洛尼亚大学);Centrum Wiskunde & Informatica (CWI)(荷兰数学与计算机科学研究所(CWI))
我们提出了并发约束编程的一个时间和软扩展。时间扩展是基于有界时间的假设:计算需要一个有限的时间段,并通过一个离散的全局时钟来测量。动作前缀被认为是区分一个时间点和下一个时间点的句法标记。在软约束而不是明确约束的支持下,告诉和询问代理现在配备了一个偏好(或一致性)阈值,用于确定它们的成功或暂停。在本文中,我们提供了一种语言来描述代理的行为,连同其操作和指称语义,我们还证明了组合性和正确性。在提出了一个语义使用最大并行的行动,我们还描述了一个版本的交错在一个单一的处理器上(最大并行的时间流逝)。需要对偏好值和时间事件进行决策的协调代理可以从这种语言中受益。逻辑程序设计理论与实践(Theory and Practice of Logic Programming,TPLP)