Verification of Programs via Intermediate Interpretation
我们探讨了一种方法来验证程序通过程序转换适用于解释器的程序设计语言。一种被称为Turchin超级编译的专门化技术被用来专门化程序模型的一些解释器。我们发现,几个安全属性的功能程序建模一类的缓存一致性协议可以证明由超级编译器和比较结果与我们以前的工作直接验证通过超级编译不使用中间解释。我们的方法部分受到了E. De Angelis等人(2014-2015)在约束逻辑程序专门化的背景下研究了通过程序转换和中间解释进行的验证。
2017-08-24 cs.PL cs.SE
Program Specialization as a Tool for Solving Word Equations
本文研究了词方程可满足性问题的证人的自动生成问题,通过专门化一个解释器来测试给定词方程系统的变量替换的组合是否产生它的解。我们专门聘请这样的翻译。方程系统,而替代是未知的。我们表明,这样的解释器的几个变种,专门使用基本的展开/折叠专业化方法时,能够构建整个解决方案集的某些类的字方程的左侧和右侧共享变量。我们证明了构造的解释器的专门化过程给出了所考虑的方程的可满足性的一个简单的语法标准,并表明所建议的方法可以解决Z3 str 3和CVC 4,广泛使用的SMT求解器无法解决的一些方程。
2021-09-07 cs.LO cs.PL
Interprocedural Type Specialization of JavaScript Programs Without Type Analysis
动态类型程序设计语言(如Python和JavaScript)将类型检查推迟到运行时间。VM实现可以通过消除冗余的动态类型检查来提高性能。然而,类型推断分析通常是昂贵的,并且涉及编译时间和结果精度之间的权衡。这导致了越来越复杂的多层VM架构的创建。懒惰基本块版本控制是一种简单的JIT编译技术,它有效地从关键代码路径中删除了冗余的类型检查。这种新颖的方法在传播上下文相关的类型信息的同时,动态地生成基本块的类型专用版本。这种方法不需要使用昂贵的程序分析,不受传统类型分析精度的限制。本文扩展了惰性基本块版本控制,以跨函数调用边界在过程间传播类型信息。我们在一个JavaScript JIT编译器中的实现表明,在26个基准测试中,过程间基本块版本控制平均消除了比静态类型分析所能实现的类型标记测试更多的类型标记测试,而无需诉诸代码转换。平均而言,94.3%的类型标签测试被消除,产生高达56%的加速比。我们还表明,我们的实现是能够优于Truffle/JS在几个基准测试,无论是在执行时间和编译时间。
2015-11-10 cs.PL
An Empirical Study of Partial Deduction for miniKanren
我们研究合取部分演绎,一种先进的专门化技术,旨在提高逻辑程序的性能,在关系程序设计语言miniKanren的上下文中。我们确定了一些问题,所造成的miniKanren的特点,并描述了一种新的方法,专业化的基础上部分演绎和超级编译。评价结果表明成功的专业化关系口译。虽然该项目还处于早期阶段,但我们认为这是为miniKanren提供高效优化框架的第一步。
2021-09-07 cs.PL
Verifying Programs via Intermediate Interpretation
我们探讨了一种方法来验证程序通过程序转换适用于解释器的程序设计语言。一种被称为Turchin超级编译的专门化技术被用来专门化程序模型的一些解释器。我们发现,几个安全属性的功能程序建模一类的缓存一致性协议可以证明由超级编译器和比较结果与我们以前的工作直接验证通过超级编译不使用中间解释。我们的方法部分受到De E早期工作的启发。Angelis等人(2014-2015)在约束逻辑程序的专门化背景下研究了通过程序转换和中间解释的验证。
2017-05-18 cs.PL
On the Design of a Tool for Supporting the Construction of Logic Programs
在学术界和工业界都需要系统地构造逻辑程序的环境。这样的环境应该支持定义良好的构造方法,并且应该能够扩展并与其他编程工具(如调试器和编译器)交互。我们提出了一个变种的Deville方法的逻辑程序开发,和设计的工具,支持的方法。我们的目标是促进逻辑编程的学习,并为程序开发提供更复杂的工具。
2001-11-27 cs.PL cs.SE
An Experiment Combining Specialization with Abstract Interpretation
以前的研究表明,控制流细化可以通过一个程序专门化结合基于属性的抽象来实现,以提高终止和复杂性分析工具。我们现在表明,这个专门构建的专门化程序可以以更模块化的方式进行重构,并且可以使用现成的部分评估工具来实现先前的结果,并将其应用于抽象解释器。抽象解释器的关键特征是抽象域,它是基于属性的抽象域与具体域的乘积。这种独立于语言的框架提供了一种实用的方法来实现各种强大的专门化,并有助于使用解释器和专门化来实现程序转换的研究。
2020-08-07 cs.LO cs.PL cs.SC
Modularity, Code Specialization, and Zero-Cost Abstractions for Program Verification
本文提出一组基于语言的技术,在 F* 的 Low* 工具链中实现模块化高层验证与零开销低层代码生成,成功将 HACL* 扩展至十万行以上,并通用捕获流式 API 语义,修复了 Python 参考实现中的多个 CVE 漏洞。
2023-07-06 cs.PL
From Logic to Functional Logic Programs
逻辑编程是一种灵活的编程范式,因为它使用了谓词而没有固定的数据流。为了用函数式编程的紧凑符号扩展逻辑语言,有各种各样的建议将可评估函数映射到谓词中,以便留在逻辑编程框架中。由于融合函数逻辑语言提供灵活,以及有效的评估策略,我们提出了一个相反的方法在本文中。通过将逻辑程序映射为函数式逻辑程序,并利用基于函数依赖关系推断的转换方法,提出了一种全自动转换方法,该方法既保持了逻辑程序设计的灵活性,又能将无限搜索空间缩减为有限搜索空间,从而提高了计算效率.
2022-05-13 cs.PL
SIMPL: A DSL for Automatic Specialization of Inference Algorithms
概率程序设计语言(PPL)中的推理算法可以被认为是解释器,因为推理算法遍历给定证据的模型来回答查询。与解释器一样,一旦模型、证据和查询已知,我们就可以通过编译它们来提高推理算法的效率。我们提出SIMPL,推理算法的领域特定的语言,它使用这个想法,以自动专门化的注释推理算法。由于特殊化的方法,与传统的编译器不同,SIMPL可以很容易地添加新的推理算法,并且仍然可以使用特定于域的信息进行优化。我们评估SIMPL,并表明,部分评估提供了2- 6倍的加速,缓存提供了额外的1- 1.5倍的加速,并生成C代码产生额外的13- 20倍的加速,为30- 150倍的整体加速几个推理算法和模型。
2016-04-16 cs.PL
Deriving sorting algorithms via abductive logic program transformation
用展开/折叠法进行逻辑程序变换,提倡通过对简单程序应用某些规则,写出正确的逻辑程序。本文主要研究如何通过逻辑程序转换和溯因推理克服子目标引入困难,从一个简单的排序算法合成有效的排序算法。
2018-10-04 cs.PL
Programming with High-Level Abstractions, Proceedings of the 3rd Workshop on Logic and Practice of Programming
本文集汇集第三届LPOP研讨会成果,围绕集合与逻辑规则等高级抽象,推动其进入通用编程实践。
2024-09-28 cs.PL
Optimal Software Pipelining and Warp Specialization for Tensor Core GPUs
Stanford University(斯坦福大学);NVIDIA(英伟达)
Twill系统通过联合优化问题自动为迭代程序生成最优软件流水和线程束专门化调度。
2025-12-19 cs.AR cs.LG cs.PL
Compiling Control as Offline Partial Deduction
我们提出了一种新的方法,称为编译控制,其目的是编译出特殊的机制,非标准的原子选择逻辑程序的技术。以前已经证实,编译控制可以作为第一个Futamura投影的实例来实现,其中解释器专门用于输入程序。然而,这种解释器的确切性质和专门化所需的技术从未被具体说明。在这项工作中,我们提出了一个Prolog元解释器,它适用于所需的非标准的选择规则,这是适合专门化使用离线部分演绎。在编译控制的初始分析阶段之后,我们收集注释以使用Logen系统进行离线部分演绎来专门化解释器。我们还表明,专业化的结果是等效的程序使用传统的方法来编译控制。通过这种方式,我们简化了合成步骤。
2018-11-30 cs.LO cs.PL
A Proof Theoretic Approach to Failure in Functional Logic Programming
如何从程序中提取负信息是逻辑程序设计中的一个重要问题。在这里,我们解决问题的功能逻辑程序,从证明理论的角度来看。我们工作的出发点是CRWL(Constructor based ReWriting Logic),它是一个成熟的函数逻辑编程理论框架,其基本概念是非严格非确定函数。我们提出了一个证明演算,CRWLF,这是能够推导出否定信息的CRWL程序。特别是,CRWLF能够证明CRWL内的复位有限失败。
2004-05-27 cs.PL
Natural Hoare Logic: Towards formal verification of programs from logical forms of natural language specifications
形式化验证为软件的正确性提供了强有力的保证,这在安全或安全关键系统中尤为重要。霍尔逻辑是一种广泛使用的形式主义,用于以前置条件/后置条件断言的形式针对规范对软件进行严格验证。语义解析技术的进步和更高的计算能力使我们能够从自然语言文本中提取语义内容作为形式逻辑形式,具有越来越高的准确性和覆盖率。本文提出了一个基于霍尔逻辑的命令式程序形式化验证的形式化框架,该框架使用由自然语言断言的组合语义解析生成的逻辑形式。我们称这种推理方法为自然霍尔逻辑。这使得能够直接针对领域专家以自然语言指定的安全需求对软件进行形式化验证。我们认为这两个声明性断言的程序不变量和状态变化以及命令性断言,指定命令改变程序状态。我们将讨论如何推理方法可以扩展使用领域知识和实用的方法,防止语义分析器错误。
2021-03-04 cs.PL
Logic Programming with Satisfiability
本文提出了一个Prolog接口的MiniSat可满足性求解器。具有可满足性的逻辑程序- ming结合了两种范式的优势:一方面将搜索问题编码为可满足性的逻辑编程,另一方面有效地求解SAT。这两者之间的协同作用暴露了一个编程范式,我们在这里提出的逻辑编程珍珠。为了说明逻辑编程与SAT解决我们给出了一个例子Prolog程序解决部分MAXSAT的实例。
2007-02-13 cs.AI cs.PL
Speedup of Logic Programs by Binarization and Partial Deduction
二进制逻辑程序可以通过二进制化变换从普通逻辑程序获得。在大多数情况下,以这种方式获得的二进制程序的效率低于原始程序。(Demoen,1992)展示了一个有趣的逻辑程序的例子,当它被转换成二进制程序,然后通过部分演绎进行专门化时,它的计算行为得到了改善。定义了B-分层逻辑程序类。它表明,对于每一个B-分层逻辑程序,二进制化和随后的部分演绎产生一个二进制程序,不包含变量的连续二进制化介绍。这样的程序通常比原来的程序有更好的计算性能。二值化和部分演绎都可以很容易地自动化。与其他相关的方法程序转换的比较。
2003-12-15 cs.AI cs.PL
The (Lazy) Functional Side of Logic Programming
将逻辑程序转换成功能程序的可能性一直是研究的课题。许多方法的共同点是,原始逻辑程序,为了被翻译,需要被良好地模态化,这导致了这样的共识,即这些程序可以被认为是逻辑程序的“功能部分”。因此,“复杂”逻辑变量、动态选择规则的可能性以及非良模程序的一般属性是逻辑程序的独有特征,这一点已被广泛接受。这并不完全正确,因为其中一些特性在惰性函数式语言中自然存在。我们通过定义一个适用于更广泛的逻辑程序的简单翻译,重新讨论了什么功能是逻辑编程范式所独有的老问题,并证明了目前的界限是不合理的限制。
2000-03-20 cs.LO cs.PL
Combining Logic Programs and Monadic Second Order Logics by Program Transformation
本文提出了一种基于展开/折叠变换规则的程序合成方法,该方法可用于从一个后继者的弱一元二阶理论(WS 1 S)的公式导出可终止的确定性逻辑程序。这种综合方法也可作为WS_(1 S)封闭公式的判定过程的证明方法。我们应用我们的综合方法翻译CLP(WS 1 S)程序到逻辑程序,我们也使用它作为一种证明方法来验证无限状态系统的安全性。
2003-11-27 cs.LO cs.PL
Automated Termination Analysis for Logic Programs with Cut
可终止性是逻辑程序的一个重要性质,也是研究得很好的性质。然而,几乎所有的自动终止分析方法都集中在确定的逻辑程序上,而实际的Prolog程序通常使用cut运算符。本文介绍了一种新的预处理方法,它能自动地将Prolog程序转换成无割的逻辑程序,其中无割程序的终止意味着原程序的终止。因此,在该预处理之后,可以应用用于证明确定逻辑程序的终止的任何技术。我们在我们的终止证明程序AProVE中实现了这种预处理,并成功地进行了广泛的实验。
2010-07-28 cs.LO cs.PL
Building Extensible Program Logics through Effect Handlers
New York University(纽约大学);CISPA Helmholtz Center for Information Security(CISPA赫尔姆霍兹信息安全中心)
本文提出基于效应处理程序构建可扩展程序逻辑的方法,从表达性程序逻辑出发,实现模拟多种行为的处理程序并证明其属性以扩展逻辑,还开发关系逻辑,该方法能产生更强推理规则且可扩展。
2026-07-15 cs.LO cs.PL
Nominal Logic Programming
名义逻辑是一阶逻辑的扩展,它为抽象语法的形式化和推理提供了一个简单的基础,模一致的重命名的绑定名称(即α-等价)。本文研究基于名义逻辑的逻辑程序设计。我们描述了一些典型的名义逻辑程序,并发展了这类程序的模型论、证明论和操作语义。除了确保实现的正确行为的兴趣,这些结果提供了一个严格的基础技术分析和推理的名义逻辑程序,我们通过例子说明。
2007-08-20 cs.LO cs.PL
A Logic for Correlating Temporal Properties across Program Transformations
程序转换广泛应用于软件的综合、优化和维护。程序转换的正确性依赖于输入程序的一些重要性质的保持。通过把程序看作Kripke结构,程序的许多有趣的性质可以用时序逻辑来表达。在时序逻辑中,公式在单个程序上解释。然而,为了证明变换的正确性,我们会遇到包含一些子公式的公式,这些子公式在输入程序上解释,而在变换后的程序上解释。出现这种情况的一个例子是验证编译器应用的优化程序转换。在本文中,我们提出了一个逻辑称为时间转换逻辑(TTL)的原因,这样的公式。我们考虑不同类型的原始转换,并提出TTL推理规则。我们的程序转换和时序逻辑运算符的定义是新颖的,在他们使用的布尔矩阵代数。这导致了简洁和建设性的规范。此外,我们使用布尔矩阵代数在一个统一的方式来证明可靠的TTL推理规则。
2012-09-24 cs.LO cs.PL
An Improved Proof-Theoretic Compilation of Logic Programs
在以前的工作中,我们表明,逻辑编程编译可以给出一个通用的抽象逻辑程序设计语言的证明理论的理由,并证明了这种技术的情况下,遗传Harrop公式及其线性变体。编译后的子句本身就是逻辑公式,除了在与它们的头相匹配的原子目标上存在二阶抽象。在本文中,我们重新审视我们以前的结果,以更详细和更充分的逻辑理由,消除这种虚假的抽象。然后,我们改进所得到的技术,以有效地支持模式良好的程序。
2012-10-05 cs.LO cs.PL
Transformation Rules for Locally Stratified Constraint Logic Programs
本文提出了一组带否定的约束逻辑程序的转换规则。我们假设每一个程序都是局部分层的,因此,它有一个唯一的完美模型。我们给出了充分的条件,确保建议的一套转换规则保持完美的模型的程序。我们的规则扩展在某些方面的规则逻辑程序和约束逻辑程序已经考虑在文献中,特别是,他们包括一个规则展开一个条款相对于一个负文字。
2004-02-20 cs.LO cs.PL
Outcome Logic: A Unified Approach to the Metatheory of Program Logics with Branching Effects
本文扩展Outcome Logic,以选择的代数表示统一刻画非确定性、概率性等分支效应,并给出支持通用循环、可跨规范复用证明片段的较完整证明系统及其元理论。
2025-06-10 cs.LO cs.PL
Transforming Coroutining Logic Programs into Equivalent CHR Programs
我们扩展了一种称为编译控制的技术。该技术将协同程序设计逻辑程序转换为逻辑程序,当在标准的从左到右选择规则下执行时(并且不使用任何延迟特征),该逻辑程序具有与协同程序设计相同的计算行为。在最近的工作中,我们修改了编译控制,并将其重新表述为抽象合取部分演绎的实例。这项工作主要集中在编译控制中执行的程序分析。在当前的文件中,我们专注于合成的转换程序。代替合成一个新的逻辑程序,我们合成一个模拟协同程序的Prolog程序。对递归的综合产生只包含简化规则的程序,这些规则特别适合于某些静态分析技术。这些程序也更简洁和可读,并且可以移植到嵌入在其他语言中的Prolog实现。
2017-08-24 cs.LO cs.PL
Tuning Fuzzy Logic Programs with Symbolic Execution
模糊逻辑程序设计是一个不断发展的声明性范例,旨在将模糊逻辑集成到逻辑程序设计中。当指定一个模糊逻辑程序时,最困难的任务之一是确定每个规则的正确权重,以及最合适的模糊连接词和运算符。在本文中,我们介绍了一个符号扩展的模糊逻辑程序,其中一些参数可以是未知的,使用户可以很容易地看到他们可能的价值观的影响。此外,给定多个测试用例,可以自动计算这些参数的最合适的值。
2016-08-16 cs.LO cs.PL
On completeness of logic programs
程序正确性(在命令式和函数式编程中)在逻辑编程中分为正确性和完整性。完整性意味着一个程序产生了它的规范所要求的所有答案。很少有人致力于对完备性的推理。本文给出了定规划完备性的几个充分条件。我们还研究了在SLD树的某些修剪情况下(例如,由于使用切割)保持完整性。我们将逻辑编程视为一种声明性的范例,尽可能地从任何操作语义中抽象出来。我们认为,所提出的方法是足够简单的应用,可能在一个非正式的水平,在实际的Prolog编程。我们指出近似规格的重要性。
2014-11-11 cs.LO cs.PL
Supercompiling String Programs Using Word Equations as Constraints
我们描述了一个通用的参数化方案的程序和约束分析,使我们能够指定两个程序的专业化方法称为Turchin的超级编译和Hmelevskii的算法求解二次方程。该方案是指定的两种分析和工程中的联合算法,其中这两种分析一起使用。该算法使用词方程和正则模式上的不等式作为字符串约束语言。
2018-06-29 cs.LO cs.PL
Logic + control: On program construction and verification
本文提出了一个例子,形式化推理的语义Prolog程序的实际意义(SAT求解器的豪和国王)。该程序被视为一个带有附加控制的定子句逻辑程序。逻辑程序是通过逐步精化的方法构造的,并与其正确性和完整性证明携手并进。证明是声明性的--它们不引用任何操作语义。逻辑程序构造的每一步都遵循一种系统的方法来构造可证明正确和完整的程序。我们还证明了在最终的Prolog程序中保持了逻辑程序的正确性和完整性。此外,我们证明终止,发生检查自由和非挣扎。我们的例子展示了如何将处理“逻辑”和处理“控制”分开。大多数证明都可以在“逻辑”级别上完成,从任何操作语义中抽象出来。这个例子使用了近似的规格说明;它们在简化逻辑程序的推理中是至关重要的。它还表明,语义保持程序转换的范例可能是不够的。我们建议考虑转换保持正确性和完整性方面的近似规范。
2017-05-12 cs.LO cs.PL
Verification Logics for Quantum Programs
我们调查景观的霍尔逻辑的量子程序。我们回顾三篇论文:Chadha,Mateus和Sernadas的“Reasoning about imperative quantum programs”; Yoshihiko Kakutani的“A logic for形式化验证of quantum programs”; Mingsheng Ying的“Floyd-霍尔逻辑for quantum programs”。我们比较了逻辑的数学基础,它们的底层语言,以及它们的断言的表达能力。我们还使用这些语言对Deutsch-Jozsa算法进行了验证,并讨论了它们在实际中的相对可用性。
2019-04-08 cs.ET cs.LO cs.PL
Automated Termination Proofs for Logic Programs by Term Rewriting
RWTH Aachen(亚琛工业大学);TU Eindhoven(埃因霍温理工大学);University of Innsbruck(因斯布鲁克大学)
逻辑程序的可终止性分析有两种方法:“转换”法和“直接”法。直接方法直接在逻辑程序的基础上证明终止。转换方法将一个逻辑程序转换成一个项重写系统(TRS),然后分析所得到的TRS的终止。因此,转换方法使以前为TRS开发的所有方法也可用于逻辑程序。然而,大多数现有的转换的适用性是相当有限的,因为它们只能用于逻辑程序的某些子类。(Most它们中的一个仅限于模式良好的程序。)在本文中,我们改进这些转换,使它们成为适用于任何明确的逻辑程序。为了用TRS模拟逻辑程序的行为,我们稍微修改了重写的概念,允许无限项。我们表明,我们的转换结果TRS这确实是适合自动终止分析。与大多数其他逻辑程序的终止方法相比,我们的技术也适用于逻辑程序设计,而不需要发生检查,这是在实践中通常使用的。我们在终止证明程序AProVE中实现了我们的方法,并在大量示例中成功地对其进行了评估。
2008-09-01 cs.AI cs.LO cs.PL
Products of Weighted Logic Programs
Carnegie Mellon University(卡内基梅隆大学)
加权逻辑编程是自底向上逻辑编程的一种推广,是描述动态规划算法的一个非常合适的框架。在这种情况下,证明对应于算法的输出空间,例如通过图或语法推导的路径,并被赋予实值分数(通常被解释为概率),该分数取决于证明中使用的基本公理的实际权重。期望的输出是所有可能的证明的函数,例如得分之和或最佳得分。我们描述了乘积变换,它可以合并两个加权逻辑程序成一个新的。所得到的程序优化了来自原始程序的证明分数的乘积,构成了在机器学习中称为"专家的乘积"的评分函数。通过增加直观的约束边条件,我们证明了几个重要的动态规划算法可以通过将PRODUCT应用于加权逻辑程序而得到,这些加权逻辑程序对应于较简单的加权逻辑程序。此外,我们展示了如何计算的Kullback-Leibler分歧,信息理论的措施,可以解释使用产品。
2010-06-15 cs.AI cs.PL
The Limits of Horn Logic Programs
给定Horn逻辑程序序列$\{Π_n\}$,$\{Π_n\}$的极限$Π$是这样的子句集合,使得$Π$中的每个子句属于几乎每个$Π_n$,并且无限多个$Π_n$中的每个子句也属于$Π$.极限程序$Π$仍然是Horn,但可能是无限的。本文考虑给定Horn逻辑程序序列$\{Π_n\}$的极限的最小Herbrand模型是否等于每个逻辑程序$Π_n$的最小Herbrand模型的极限。本文证明了这一性质一般不成立,但如果Horn逻辑程序满足一个可语法检验且可由一类Horn逻辑程序满足的假设,则这一性质成立。因此,在此假设下,我们可以通过每个有限程序$Π_n$的最小Herbrand模型序列来逼近极限$Π$的最小Herbrand模型.我们还证明了,如果一个有限Horn逻辑程序满足这个假设,那么这个程序的最小Herbrand模型是递归的。最后,利用动力系统的稳定性概念,证明了这一假设是保证Horn逻辑程序不动点稳定的充分条件。
2002-02-07 cs.LO cs.PL
Pre-proceedings of the 26th International Workshop on Functional and Logic Programming (WFLP 2018)
本卷是第26届函数和逻辑编程国际研讨会(WFLP 2018)的预录。它是由程序委员会选出的在研讨会上发表的论文组成的。经过研讨会的讨论,项目委员会将选择一些论文邀请第二轮评审和选择的正式程序。
2018-10-01 cs.LO cs.PL
Informal proceedings of the 32nd International Symposium on Logic-Based Program Synthesis and Transformation (LOPSTR 2022)
本卷是第32届基于逻辑的程序合成和转换国际研讨会的非正式会议录(LOPSTR 2022),于2022年9月21日至23日举行,作为混合(混合)会议,(在格鲁吉亚第比利斯的Ivane Javakhishvili Tbilisi State University -TSU)和虚拟,并与第24届声明式编程原理与实践国际研讨会(PPDP 2022)共同举办,作为2022年计算逻辑秋季峰会(CLAS 2022)的一部分。
2022-07-29 cs.LO cs.PL
Extensional Higher-Order Logic Programming
University of Athens(雅典大学);University of Victoria(维多利亚大学)
我们提出了一个纯粹的扩展语义高阶逻辑编程。在这个语义中,程序谓词表示有序元组的集合,两个谓词相等当且仅当它们作为集合相等。此外,每个程序都有唯一的最小Herbrand模型,它是程序所有Herbrand模型的最大下界,也是直接结果算子的最小不动点。我们还提出了一个SLD分辨率证明程序,这是证明的声音和完整的最小模型语义。换句话说,我们提供了一个纯粹的扩展的理论框架,高阶逻辑编程的经典(一阶)逻辑编程的熟悉的理论。
2011-06-17 cs.AI cs.LO cs.PL
An asymptotic analysis of probabilistic logic programming, with implications for expressing projective families of distributions
LMU München(慕尼黑大学)
概率逻辑编程是统计关系型人工智能的重要组成部分,其中将逻辑和概率方法结合在一起,在不确定性环境中推理和学习关系域。然而,跨可变域大小的统计关系表示的行为是复杂的,并且将推理和学习扩展到大型域仍然是一个重大挑战。近年来,域大小依赖、提升推理和从抽样子群体中学习之间出现了联系。统计关系表示的渐近行为已经受到审查,和投影被调查的最强形式的域大小的依赖,其中查询边际是完全独立的域大小。在这篇文章中,我们证明了每一个概率逻辑程序下的分布语义是渐近等价于一个非循环的概率逻辑程序只包括确定条款的概率事实。我们的结论是,每一个概率逻辑程序诱导一个投影族的分布,实际上是处处等价于一个程序从这个片段,我们调查的后果,为投影族的分布概率逻辑程序表示。为了方便应用的经典结果从有限模型理论,我们引入了抽象的分布语义,定义为一个任意的逻辑理论概率事实。这弥合了与概率逻辑编程基础的分布语义之间的差距。在这种表示中,确定性逻辑程序对应于无量词理论,使得渐近量词消去结果可用于概率逻辑编程的设置。本文件正在考虑被TPLP接受。
2021-08-18 cs.AI cs.LO cs.PL