On the incorporation of interval-valued fuzzy sets into the Bousi-Prolog system: declarative semantics, implementation and applications
University of the Bío-Bío(比奥比奥大学);University of Dundee(邓迪大学);Universidade de Santiago de Compostela(圣地亚哥德孔波斯特拉大学)
在本文中,我们分析的好处,将区间值模糊集的Bousi-Prolog系统。语法,声明性语义和实现此扩展,并提出和形式化。我们表明,通过使用潜在的应用程序,模糊逻辑编程框架与他们增强,可以正确地与词汇资源和本体一起工作,以提高他们的知识表示和推理的能力。
2017-11-08 cs.AI cs.CL cs.PL
Secure Prolog-Based Mobile Code
LogicWeb移动代码由嵌入在Web页面中的类似于Prolog的规则组成,从而为这些页面添加逻辑编程行为。由于LogicWeb程序是从外部主机下载并在本地执行的,因此需要保护客户机免受错误或恶意代码的影响。安全模型对于使LogicWeb移动代码安全执行至关重要。本文提出了这样一个模型,它支持不同的信任级别的程序使用不同的资源访问策略。该模型的实现源于LogicWeb语言的扩展操作语义,它提供了安全的精确含义。
2004-06-07 cs.PL
Improving Prolog Programs: Refactoring for Prolog
重构是一种来自OO社区的重组代码的成熟技术:它旨在提高软件的可读性,可维护性和可扩展性。虽然重构并不特别与OO范式相联系,但它的思想直到现在还没有应用到逻辑编程中。本文将重构思想应用于Prolog程序。一个目录列出了根据范围分类的重构。一些重构是从OO范式改编而来的,而另一些则是专门为Prolog设计的。Prolog中的意图语义和操作语义之间的差异也通过一些重构来解决。此外,ViPReSS,一个半自动重构浏览器,进行了讨论和应用\vipress的经验,一个大型的Prolog遗留系统的报告。我们的主要结论是,重构不仅是一个可行的技术在Prolog,但也是一个相当可取的。
2004-06-16 cs.PL cs.SE
SWISH: SWI-Prolog for Sharing
VU University Amsterdam(阿姆斯特丹自由大学);University of Gothenburg(哥德堡大学);University of Ferrara(费拉拉大学)
最近,我们看到了一种基于Web技术的新型程序员界面。例如,JSFiddle、IPython Notebook和R-studio。Web技术使基于云的解决方案,嵌入在教程网页,结果的主动渲染,网络规模的合作开发等,本文介绍了SWISH,一个Web前端的Prolog。一个公共网站使用SWISH公开了SWI-Prolog,SWISH用于运行小型Prolog程序进行演示、实验和教育。我们将SWISH连接到ClioPatria语义Web工具包,它允许协作开发与数据集相关的程序和查询,以及在运行的服务器上执行维护任务,我们将SWISH嵌入到Learn Prolog Now!在线Prolog书籍。
2015-11-03 cs.AI cs.PL
A Constraint-based Mathematical Modeling Library in Prolog with Answer Constraint Semantics
本文提出将Prolog及其约束求解库作为统一的基于关系的建模和编程语言,并实现了一个受MiniZinc启发的Prolog数学建模库,在无明显计算开销的情况下支持数组、量词和迭代器,同时获得答案约束、可编程搜索与求解器以及统一调试环境。
2024-02-27 cs.LO cs.MS cs.PL
Source-to-source optimizing transformations of Prolog programs based on abstract interpretation
在不改变其操作语义的情况下,通过转换源代码使Prolog程序更有效,这不是一个显而易见的任务。它要求用户清楚地了解Prolog编译器是如何工作的,特别是不纯的特性(如cut)的影响。编写Prolog代码的方式-例如,从句的顺序、从句中字面意思的顺序、删减或否定的使用--都会影响其效率。此外,不同的优化技术在一起应用时可能是冗余的或冲突的,这取决于调用过程的方式-例如,插入切口并启用索引。我们提出了一个优化器,基于抽象的解释,自动执行安全的代码转换的Prolog程序的上下文中的一些类的输入调用。如果过程用关于模式、类型、共享、解决方案的数量等的附加信息来注释,则该方法更有效。因此,该方法与Mercury类似。它适用于任何Prolog程序。
2007-10-31 cs.LO cs.PL cs.SE
SLT-Resolution for the Well-Founded Semantics
全局SLS-归结和SLG-归结是自顶向下评价一般逻辑程序良基语义的两种典型机制。全局SLS解析对于查询评估是线性的,但是遭受无限循环和冗余计算。相比之下,SLG-归结通过制表来解决无限循环和冗余计算,但它不是线性的。非线性方法的主要缺点是,它不能使用简单,有效的基于堆栈的内存结构来实现,也不能很容易地扩展到处理一些严格的顺序运算符,如Prolog中的cuts。在本文中,我们提出了一个线性制表方法,称为SLT-分辨率,自顶向下的评价良好的基础语义。SLT-分辨率是SLDNF-分辨率与制表的实质性扩展。它的主要特点包括:(1)在保持线性的同时,解决了无限循环和冗余计算问题。(2)它是终止的,声音和完整的w.r.t.有界项大小属性与非挣扎查询的程序的良基语义。它的时间复杂度与无函数逻辑程序的SLG-归结和多项式相当。(3)由于它的线性查询评估,SLT-分辨率的桥梁之间的差距,良好的基础语义和标准的Prolog实现技术。它可以通过扩展到任何现有的Prolog抽象机器(如WAM或ATOAM)来实现。
2001-03-02 cs.AI cs.PL
Une sémantique observationnelle du modèle des boîtes pour la résolution de programmes logiques (version étendue)
该报告指定了一个观察语义,并给出了伯德盒模型的原始演示。该方法占Prolog跟踪程序的语义独立于一个特定的实现。痕迹一般被认为是相当模糊和难以使用的。拟议的正式介绍的痕迹构成了一个简单的教学方法Prolog或实现Prolog跟踪。它构成了跟踪程序的声明性规范的形式。我们的方法突出了盒子模型的成功,但也有其缺点和局限性。事实上,所提出的语义只是说明与跟踪器和观察过程有关的一般问题的一个例子。观察过程从被观察的过程中只知道它们的痕迹。然后,问题是能够通过对跟踪的单独分析来重建所观察到的过程的主要部分,并且如果可能的话,没有任何信息损失。
2007-06-25 cs.PL cs.SE
Logic programming beyond Prolog
逻辑程序是一种可执行的规范。例如,合并排序在纯Prolog中是一个逻辑公式,但在长链表上显示出值得信赖的性能。但这种可执行的规范是一种妥协:逻辑被算法考虑扭曲,但只能通过抽象机器间接执行。本文介绍了关系编程,一种通过关注点分离解决逻辑编程困难的方法。它需要三个文本:(1)公理,一个指定问题并且不受算法考虑影响的逻辑公式,(2)定理,一个表达算法思想并遵循公理的逻辑公式,以及(3)代码,将定理转录为过程语言。代码的正确性依赖于定理与公理的逻辑关系,并依赖于定理到过程语言的准确转录。排序是关系编程具有更高抽象度优势的一个例子:要排序的数据可以是C++(我们在示例中使用的过程语言)中满足线性顺序公理的任何数据类型,而纯Prolog版本仅限于链接单元格形式的数据结构。我们展示了关系程序的另一个优点:它们具有模型理论和不动点语义,它们彼此等价,并且类似于纯Prolog程序。
2015-09-26 cs.LO cs.PL
An Environment for the Exploration of Non Monotonic Logic Programs
稳定模型语义和良好基础语义已经被证明是非常有用的几个应用程序的非单调推理。然而,稳定模型呈现高计算复杂性,而良好基础语义易于计算并且提供稳定模型的近似。对于逻辑程序的两种语义都存在有效的引擎。这项工作提出了两个这样的系统,即XSB和SMODELS的计算集成。由此产生的系统被称为XNMR,并提供了一个交互式的系统,用于探索这两种语义。模块化等方面可以利用,以方便调试大型知识库与通常的Prolog调试技术和交互式环境。此外,使用完整的Prolog系统作为Stable Models引擎的前端,增强了此类系统通常接受的语言。
2001-11-19 cs.LO cs.PL
VeriFly: On-the-fly Assertion Checking via Incrementality
断言检查是程序员的一个非常宝贵的工具,它可以在动态语言(如Prolog)中发现许多类错误或验证它们的存在。对于Prolog程序员来说,这意味着能够拥有相关的属性,如模式,类型,确定性,非故障,共享,约束,成本等,检查并标记错误,而无需实际运行程序。这样的全局静态分析工具在软件开发周期中越早使用就越有用,并且快速的响应时间对于交互式使用是必不可少的。每次进行更改时,都要对软件项目进行全面而精确的语义分析,这可能会非常昂贵。在我们的静态分析和验证框架中,通过模块化和增量(上下文和路径敏感)分析的组合来解决这一挑战,该分析响应于不同粒度级别的程序编辑。我们描述了如何在一个集成开发环境(IDE)中的框架的组合,利用这种增量,以实现高水平的反应时,反映分析和验证结果的着色和工具提示直接在程序文本-该工具的VeriFly模式。我们所描述的具体实现是基于Emacs的,并且部分地重用了现成的“动态”语法检查工具(flycheck)。我们相信,类似的扩展也可以在其他成熟的开发环境中以较低的工作量进行复制。我们使用该工具的初步经验显示出非常有希望的结果,具有低延迟时间,在开发过程中为程序员提供早期,连续和精确的断言检查和其他语义反馈。该工具支持Prolog本地,以及其他语言的语义转换成霍恩子句。本文件正在考虑被TPLP接受。
2021-08-17 cs.PL
TWAM: A Certifying Abstract Machine for Logic Programs
类型保持(或类型化)编译使用类型化派生来证明编译的正确性。我们为Prolog的简单类型方言设计并实现了一个类型保留编译器,我们称之为T-Prolog。我们的方法的关键是一个新的认证抽象机,我们称之为类型沃伦抽象机(TWAM)。TWAM有一个足够强的依赖类型系统来指定逻辑框架LF中的逻辑程序的语义。我们提出了一个合理性元定理,它构成了部分正确性保证:良好类型的程序实现的逻辑程序指定的类型。这个元定理证明了我们的设计和实现的证明编译器从T-Prolog到TWAM。
2018-01-01 cs.LO cs.PL
An Object-Oriented and Fast Lexicon for Semantic Generation
Leiden University Centre for Linguistics (LUCL)(莱顿大学语言学中心(LUCL))
本文介绍了一个大型计算词典的技术设计、存储和在Prolog环境下的访问。传统上,数据结构的有效访问和存储是由关系数据库管理系统实现的。在Delilah,一个基于词典的NLP系统中,语义生成器对词典的有效访问至关重要。我们表明,我们非常详细的HPSG风格的词汇规范不适合在关系模型,他们不能有效地检索。我们认为,他们更自然地适合在面向对象的模型。虽然存储的对象是冗余的,我们声称,有效的访问仍然是可能的,通过应用索引,和压缩技术,从关系模型的面向对象的模型。我们证明,它是可能的,以实现面向对象的存储和快速访问的ISO Prolog。
2009-05-20 cs.CL cs.DB cs.DS
On Feasibility of Declarative Diagnosis
本文探讨Prolog程序调试中声明式诊断方法被忽视的问题,分析其弱点并提出克服方案,论证了声明式诊断在实际编程中的可行性与应用价值。
2023-08-30 cs.LO cs.PL cs.SE
Logic + control: On program construction and verification
本文提出了一个例子,形式化推理的语义Prolog程序的实际意义(SAT求解器的豪和国王)。该程序被视为一个带有附加控制的定子句逻辑程序。逻辑程序是通过逐步精化的方法构造的,并与其正确性和完整性证明携手并进。证明是声明性的--它们不引用任何操作语义。逻辑程序构造的每一步都遵循一种系统的方法来构造可证明正确和完整的程序。我们还证明了在最终的Prolog程序中保持了逻辑程序的正确性和完整性。此外,我们证明终止,发生检查自由和非挣扎。我们的例子展示了如何将处理“逻辑”和处理“控制”分开。大多数证明都可以在“逻辑”级别上完成,从任何操作语义中抽象出来。这个例子使用了近似的规格说明;它们在简化逻辑程序的推理中是至关重要的。它还表明,语义保持程序转换的范例可能是不够的。我们建议考虑转换保持正确性和完整性方面的近似规范。
2017-05-12 cs.LO cs.PL
From High to Low: Simulating Nondeterminism and State with State
本文研究代数效应与处理器机制,通过三步翻译将Prolog式局部状态这种高阶非确定性状态效应映射为类似沃伦抽象机的低阶复合状态效应,并基于效应处理器融合律用程序演算证明各步骤正确性,实现高阶抽象与低阶优化的兼顾。
2023-12-04 cs.PL
Deriving Abstract Semantics for Forward Analysis of Normal Logic Programs
虽然否定作为失败是通过内建谓词来处理的,但在文献中还没有正式地讨论{ \em normal}逻辑程序的前向抽象解释问题!在Prolog中实现的方式。本文提出了一个解决这个问题的方法,推导出两个通用的不动点抽象语义$F^b and $ F^ \diamond { \em正常}逻辑程序的前向抽象解释。$F^b$用于推断程序图中边的数据描述,其中边表示执行控制从其源程序点转移到其目的程序点的可能性。$F^\diamond$源自$F^b$,用于推断文本程序点的数据描述。
1998-11-06 cs.LO cs.PL
Justifications for Logic Programs under Answer Set Semantics
New Mexico State University(新墨西哥州立大学)
本文介绍了应答集编程(ASP)中的离线调整的概念。理由提供了一个基于图形的解释原子w.r.t.的真值。给定的答案集。本文还扩展了这一概念,以提供合理的原子在计算的答案集(在线理由),并提出了一个集成的在线理由内的计算模型Smodels。离线和在线的理由提供了有用的工具,以加强对ASP的理解,他们提供了一个基本的数据结构,以支持方法和工具,调试答案集程序。已在ASP-PROGRAM中开发了一个初步实施方案。(To逻辑程序设计理论与实践(Theory and Practice of Logic Programming,TPLP)
2008-12-03 cs.AI cs.PL
Semantics and Termination of Simply-Moded Logic Programs with Dynamic Scheduling
在逻辑编程中,动态调度是指在运行时确定每个解析(计算)步骤中原子的选择的情况,而不是像Prolog中从左到右的选择规则。这在例如并行编程中具有应用。在现有的语言中,以延迟声明的形式提供了一种控制动态调度的机制。在抽象技术细节的同时,引入了消耗输入的推导来描述动态调度。在本文中,我们首先正式延迟声明和输入消费派生之间的关系,在许多情况下,一对一的对应关系。然后,我们定义了一个模型理论的语义输入消费派生的简单模式的程序。最后,对于这类程序,我们提供了一个终止的充分必要条件。
2001-01-23 cs.LO cs.PL
On correctness of an n queens program
Thom Frühlynth提出了一个简短,优雅和有效的Prolog程序的n皇后问题。然而,该程序可能被视为相当棘手,人们可能不相信它的正确性。本文以声明的方式解释了程序,并证明了程序的正确性和完整性。规范和证明是声明性的,即它们从任何操作语义中抽象出来。该规范是近似的,不需要精确地描述程序的语义。尽管该程序的工作在非地面条款,这项工作采用了标准的语义,基于逻辑后果和Herbrand解释。本文的另一个目的是提出一个关于逻辑程序语义的精确声明推理的例子。
2020-07-17 cs.LO cs.PL cs.SE
Transformations of Logic Programs with Goals as Arguments
我们考虑逻辑编程的一个简单扩展,其中变量可以在目标上变化,目标可以是谓词的参数。在这种语言中,我们可以编写以目标为数据的逻辑程序。我们给出了实际的证据表明,利用这种能力时,转换程序,我们可以提高程序的效率。我们提出了一套程序转换规则,扩展了熟悉的展开和折叠规则,并允许我们操纵的目标出现的谓词参数的条款。为了证明这些转换规则的正确性,我们形式化地定义了我们的扩展逻辑程序设计语言的操作语义。这个语义是LD-分辨率的一个简单变体。当适当的条件得到满足时,这种语义与LD-分辨率一致,因此,用我们的扩展语言编写的程序可以由普通的Prolog系统运行。我们的转换规则,以保持操作语义和终止。
2004-02-20 cs.LO cs.PL
Hybrid Rules with Well-Founded Semantics
Institute of Computer Science, Polish Academy of Sciences(波兰科学院计算机科学研究所);Linköping University(林雪平大学)
一个通用的框架,提出了集成的规则和外部一阶理论。它以一般逻辑程序的良基语义为基础,并受到约束逻辑程序设计(CLP)和逻辑程序的构造性否定思想的启发。混合规则是在主体中扩展了约束的普通子句;约束是外部理论语言中的某些公式。混合程序是一组混合规则和一个外部理论的组合.通过指定外部理论的类和约束的类来获得框架的所有权。一个例子是集成(非析取)数据库与本体形式化为描述逻辑。本文定义了混合程序的声明语义和目标驱动的形式化操作语义。后者可以看作是SLS-归结的推广。它提供了一个基础的混合实现结合Prolog与约束求解器。证明了操作语义的合理性。给出了声明语义可判定性和操作语义完备性的充分条件。
2009-06-20 cs.AI cs.LO cs.PL
On correctness and completeness of an n queens program
Thom Frühlynth提出了一个简短,优雅和有效的Prolog程序的n皇后问题。然而,该程序可能会被视为相当棘手,人们可能不会相信它的正确性。本文以声明的方式解释了程序,并证明了程序的正确性和完整性。规范和证明是声明性的,即它们从任何操作语义中抽象出来。该规范是近似的,不需要精确地描述程序的语义。尽管该程序的工作在非地面条款,这项工作采用了标准的语义,基于逻辑后果和Herbrand解释。本文的另一个目的是提出一个关于逻辑程序语义的精确声明推理的例子。逻辑程序设计理论与实践(TPLP)
2021-08-18 cs.LO cs.PL cs.SE