Cons-free Programming with Immutable Functions
我们研究了高阶类型的纯函数式程序设计语言中的非确定性的力量。具体地说,我们打算仅仅从更高类型的纯函数程序的角度来描述层次结构NP $\subseteq$ NEXP $\subseteq$ NEXP $^{(2)}$ $\subseteq \cdots \subseteq$ NEXP $^{(k)}$ $\subseteq \cdots$。虽然这项工作是不完整的,我们提出了一个初步的方法,使用cons-free程序与不可变的功能。
2017-11-09 cs.CC cs.LO cs.PL
Hailstorm : A Statically-Typed, Purely Functional Language for IoT Applications
Chalmers University(查尔姆斯理工大学)
随着物联网(IoT)的日益普及,越来越多的复杂逻辑正在资源受限的IoT设备上编程,几乎完全使用C程序设计语言。虽然C提供了对内存的低级控制,但它缺乏许多高级编程抽象,如高阶函数,多态性,强静态类型,内存安全和自动存储管理。我们提出Hailstorm,一个静态类型的,纯函数式的程序设计语言,试图解决上述问题。它是一种高级程序设计语言,具有严格的类型规则。它支持高阶函数、尾递归和自动存储管理等功能,以声明方式对物联网设备进行编程。在这些设备上运行的应用程序往往受到I/O的严重影响。Hailstorm使用资源类型跟踪类型系统中的I/O等副作用。这种选择使我们能够探索纯函数式独立语言的设计,在这个领域,更常见的是在命令式外壳中嵌入函数式核心。该语言借用了箭头化FRP的组合子,但具有离散时间语义。全套组合子的设计正在进行中,由示例驱动。到目前为止,我们已经通过编写文献中的标准示例(地震检测、铁路道口系统和各种其他时钟系统),以及通过生成Erlang在GRiSP嵌入式系统板上运行示例,对Hailstorm进行了评估。
2021-05-27 cs.CL cs.PL
Denotationally Correct, Purely Functional, Efficient Reverse-mode Automatic Differentiation
本文提出一种经 unary form 中间表示编译的纯函数式反向模式微分,证明其语义正确、可高效生成梯度并支持模块化扩展。
2023-04-26 cs.PL
Transformation Rules for Locally Stratified Constraint Logic Programs
本文提出了一组带否定的约束逻辑程序的转换规则。我们假设每一个程序都是局部分层的,因此,它有一个唯一的完美模型。我们给出了充分的条件,确保建议的一套转换规则保持完美的模型的程序。我们的规则扩展在某些方面的规则逻辑程序和约束逻辑程序已经考虑在文献中,特别是,他们包括一个规则展开一个条款相对于一个负文字。
2004-02-20 cs.LO cs.PL
Default Rules for Curry
在功能逻辑程序中,规则是独立于文本顺序而适用的,即,任何规则都可以潜在地用于评估表达式。这类似于逻辑语言,而与函数语言相反,例如,Haskell对规则执行严格的顺序解释。然而,在某些情况下,通过紧凑的默认规则来表达替代方案是方便的。虽然函数式程序中经常使用缺省规则,但函数式逻辑程序的非确定性本质不允许以有意义的方式将此概念从函数式语言直接转移到函数式逻辑语言。在本文中,我们提出了一个新的概念,Curry的默认规则,支持类似于函数式编程的编程风格,同时保留了函数式逻辑编程的核心属性,即,完整性、非确定性和面向逻辑的函数使用。我们讨论的基本概念,并提出了一个实现,利用先进的功能的功能逻辑语言。
2016-05-04 cs.PL
Towards rule-based visual programming of generic visual systems
本文阐述了如何使用图程序设计语言DiaPlan来编程可视化系统。DiaPlan是一种基于规则的可视化语言,它建立在图变换的计算模型上。该语言支持面向对象的编程,因为它的图形是分层结构的。类型允许递归地指定这些图的形状,以增加程序的安全性。由于其通用性,DiaPlan允许实现以任意图表符号表示和操作数据的系统。该语言的环境利用图编辑器生成器DiaGen来提供通用性,并实现其用户界面和类型检查器。
2000-10-10 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
Fast Rule-Based Graph Programs
在基于规则的语言中有效地实现图算法是具有挑战性的,因为图模式匹配是昂贵的。在本文中,我们提出了一些在GP 2,一个实验性的程序设计语言的基础上的图形转换规则,旨在促进程序分析和验证的图算法的线性时间实现。我们专注于两类基于规则的图形程序:图形简化程序,检查一些图形属性,和程序使用深度优先搜索来测试一些属性或执行操作,如生产2-着色或拓扑排序。第一种类型的程序在线性时间内运行,对输入图没有任何约束,而第二种类型的程序需要有界度的输入图在线性时间内运行。实现线性时间复杂度的关键是GP 2中所谓的根规则,在许多情况下,这些根规则可以在恒定时间内匹配。对于我们的每一个程序,我们证明了正确性和复杂性,也给他们的运行时间的经验证据。
2021-01-05 cs.DS cs.PL
Linear-Logic Based Analysis of Constraint Handling Rules with Disjunction
约束处理规则(英语:Constraint Handling Rules,缩写为CLR)是一种声明性的提交选择程序设计语言,与线性逻辑有很强的关系。它的泛化带析取的递归(CHRv)是一种多范式声明性程序设计语言,允许嵌入horn程序。我们分析的资产和限制的经典声明语义的ESTA,然后我们激励和开发一个线性逻辑声明语义ESTA和CHRv。我们将展示如何应用线性逻辑语义来决定程序属性,并证明操作等价的CHRv程序跨越边界的语言范式。
2010-09-15 cs.PL
Verifying Programs with Logic and Extended Proof Rules: Deep Embedding v.s. Shallow Embedding
本文系统研究程序逻辑深嵌入与浅嵌入对扩展证明规则的影响,提出将浅嵌入逻辑提升为深嵌入逻辑的方法,并在VST和Iris上验证其有效性。
2023-10-26 cs.PL
Automatic Coding Rule Conformance Checking Using Logic Programs
提高程序可靠性的一些方法涉及程序设计语言的有纪律的使用,以便最小化由容易出错的特征引入的危险。这是通过编写代码来实现的,该代码被约束到先验容许程序的子集,并且,此外,可以仅使用语言的子集。这些子集由所谓的编码规则的集合确定。
2007-11-02 cs.PL cs.SE
Verifying Properties of Index Arrays in a Purely-Functional Data-Parallel Language
本文提出一种自动验证纯数据并行程序中非线性索引数组性质的方法,通过将数组表示为索引函数并转化为代数不等式交由Fourier-Motzkin求解器处理,在Futhark语言中实现并验证了其实用性与优化效果。
2025-06-29 cs.DC cs.PL
Automated Termination Analysis of Polynomial Probabilistic Programs
概率程序的终止行为取决于随机分配的结果。几乎确定终止(AST)是关于程序是否在所有可能的输入上以概率1终止的问题。正几乎必然终止(Positive Almost Sure Termination,PAST)是指在有限的期望步数内终止。本文提出了一种完全自动化的方法来终止分析的概率时程序,其后卫和表达式是多项式表达式。由于证明(正)AST一般是不可判定的,现有的证明规则通常提供了充分的条件。这些条件大多涉及上鞅的约束。我们认为,从文献中的四个证明规则,并扩展这些与现有的证明规则的概括(P)AST。我们自动化的证明规则,有效地计算渐近界多项式的程序变量。这些界限被用来决定一个证明规则的充分条件-包括上鞅的约束条件。因此,我们的软件工具琥珀可以检查AST,PAST,以及他们的否定的一个大类的多项式概率程序,同时进行终止推理完全与多项式证人。实验结果表明,我们的广义证明规则的优点,并证明琥珀可以处理概率程序,是其他国家的最先进的工具。
2021-01-28 cs.PL
Classes of Terminating Logic Programs
逻辑程序的终止关键取决于选择规则,即确定在每个解析步骤中选择哪个原子的规则。在本文中,我们根据程序(和查询)终止的选择规则对它们进行分类。这是一个综述和统一的看法,在不同的方法在文献中。对于每个类,我们提出了一个足够的,对于大多数类,甚至是必要的,标准来确定一个程序是在该类。我们学习六个类:如果程序对于所有选择规则都终止,则程序强终止;如果程序输入对于仅选择在其输入位置被充分实例化的原子的选择规则终止,则程序输入终止,使得这些变元不会被统一进一步实例化;如果程序局部延迟对于仅选择相对于R.T.适当的水平映射;一个程序左终止,如果它终止于通常的从左到右的选择规则;一个程序存在-终止,如果存在一个选择规则,它终止;最后,一个程序有界非确定性,如果它只有1000个反驳。我们提出了一个语义保持从有界不确定性程序到强终止程序的转换。此外,通过统一不同的形式主义和适当的假设,我们能够建立一个正式的层次结构之间的不同类。
2002-07-22 cs.LO cs.PL
ProbTA: A sound and complete proof rule for probabilistic verification
提出了一个可靠、完整的概率程序违规概率定量分析证明规则ProbTA。我们的方法扩展了技术的跟踪抽象与概率的控制流的随机性风格,在以前的工作相结合的跟踪抽象和probabilisitic验证,采用数据的随机性风格。在我们的方法中,一个程序规格证明或证伪的程序分解成不同的模块的痕迹。精确的定量分析,使提出的桥梁程序验证和概率论的新模型。基于证明规则,我们提出了一个新的自动化算法,通过CEGAR涉及多个技术问题前所未有的非概率跟踪抽象和基于数据随机性的方法。
2022-03-08 cs.PL
Programming with rules and everything else, seamlessly
逻辑规则是表达复杂推理和分析问题的强大工具。同时,它们不方便或不可能用于许多其他方面的应用。在语言中集成规则与集合和函数,以及对对象的更新,一直是一个重要的研究课题。缺少的是一种无缝集成所有结构的语言。本文提出了一种语言,阿尔达,支持所有的规则,集,功能,更新和对象作为无缝集成的内置,包括并发和分布式进程。关键思想是支持谓词作为可以在任何范围内使用和更新的集值变量,并支持查询和推理,同时显式和自动调用推理函数。我们开发了一个完整的形式化的语义阿尔达。我们设计了一个编译框架,确保规则的声明性语义,同时也能够利用可用的优化。我们描述了一个原型实现,建立在一个强大的Python扩展,并采用了高效的逻辑规则引擎。我们开发了一系列的基准测试和目前的实验结果,以证明阿尔达的编程能力和良好的性能。
2022-05-30 cs.PL
HYSYNTH: Context-Free LLM Approximation for Guiding Program Synthesis
UC San Diego(加利福尼亚大学圣迭戈分校)
针对纯神经方法在陌生DSL下程序合成准确率低、纯符号方法扩展性差的问题,提出HYSYNTH混合方法,用LLM补全学习任务特定上下文无关代理模型指导合成,在三个领域性能优于现有方法。
2024-11-01 cs.AI cs.PL
Practical compilation of fexprs using partial evaluation: Fexprs can performantly replace macros in purely-functional Lisp
宏是Lisp语言的一个常见部分,也是它们最受称赞的特性之一。许多研究都致力于使宏更安全,更强大,从而在多个领域取得了进展,包括维护卫生和类型化程序阶段。然而,宏确实有各种缺点,包括二等的。特别是对于急切的函数式编程来说,它们无法传递给高阶函数或自由组合。由John Shutt重新制定的Fexample提供了一个一流的、更强大的宏替代方案,可以很好地与纯函数式编程相结合。不幸的是,fexample的朴素执行比宏慢得多,这是由于在运行时重新执行未优化的操作合并器代码,在基于宏的语言中,这些代码将在编译时被扩展然后优化。为了表明fexample可以实际替代宏,我们制定了一个小的纯功能fexpr基于Lisp,Kraken,与在线部分评估和编译框架,支持一流的,部分静态数据环境,可以完全优化远离fexample,使用和编写的风格的宏。我们展示了我们的部分评估和编译框架产生的代码比简单的解释快70,000倍以上,因为消除了重复的工作和静态信息的暴露,从而实现了额外的优化。此外,我们的Kraken编译器的性能优于现有的支持fexpr的解释型语言,包括在一个基准测试中将NewLisp的fexpr性能提高了233倍。
2023-03-22 cs.PL
Modular Verification for Almost-Sure Termination of Probabilistic Programs
在这项工作中,我们考虑几乎肯定终止问题的概率程序,询问是否一个给定的概率程序终止概率为1。可伸缩的程序分析方法通常依赖于模块化作为其理论基础。在非概率程序中,Floyd-霍尔逻辑的经典变式规则(V-规则)为模块化分析提供了基础。将该规则扩展到概率程序的几乎确定终止是相当棘手的,并且在[Fioriti and Hermanns 2015]中提出了一个概率变体。虽然所提出的概率变量谨慎地解决了可积性的关键问题,我们表明,所提出的模块化规则仍然是不健全的几乎肯定终止的概率程序。除了建立以前的规则的不健全,我们的贡献如下:首先,我们提出了一个健全的模块规则几乎确定终止的概率程序。我们的方法是基于一个新的概念下降上鞅。其次,对于算法方法,我们考虑下降上鞅是线性的,并表明它们可以在多项式时间合成。最后,我们提出了各种基准测试和几个自然的例子,模拟各种类型的嵌套而循环的概率程序的实验结果,并证明我们的方法是能够有效地证明其几乎肯定的终止属性。
2019-08-12 cs.LO cs.PL
A Devil's Advocate against Termination of Direct Recursion
魔鬼的拥护者是一个反对一个主张的人,不是作为一个坚定的对手,而是为了确定这个主张的有效性。我们感兴趣的是一个反对终止程序的魔鬼代言人。他通过产生一个可以导致原始程序不终止的恶意程序来做到这一点。通过检查和运行恶意程序,可以深入了解不终止的潜在原因,并产生终止的反例。我们介绍我们的方法使用并发程序设计语言约束处理规则(约束)。与其他声明性语言一样,非终止性通过无限递归发生。给定一个自递归规则,我们自动地从它生成一个或多个魔鬼规则。魔鬼规则的构造很简单,不需要猜测。魔鬼的规则很简单。例如,对于具有单递归的规则,它们是非递归的。我们表明,魔鬼的规则是最大的邪恶在以下意义上:对于任何程序,包含自递归规则和任何无限计算,通过该规则在该程序中,有一个相应的无限计算与递归规则和魔鬼的规则。在这种情况下,恶意规则充当非终止性的有限见证。另一方面,如果魔鬼规则不表现出无限的计算,递归规则是无条件终止的。我们还确定的情况下,静态分析的魔鬼的规则决定终止或不终止的递归规则。
2017-01-10 cs.LO cs.PL cs.SE
Typing rule-based transformations over topological collections
模式匹配编程是在函数式语言中开发的基于规则的编程风格的一个示例。这种编程风格在ML的方言中被广泛使用,但仅限于代数数据类型。这种限制限制了应用领域。然而,如Giavitto和Michel在RULE'02中所示,基于事例的函数定义可以扩展到称为拓扑集合的更一般的数据结构。在本文中,我们表明,这种扩展保留了类型的纪律的函数语言的好处。更确切地说,我们表明,拓扑集合和基于规则的定义与它们相关联的功能适合在一个多型扩展的迷你ML的类型推断仍然是可能的。
2009-12-24 cs.PL
lpopt: A Rule Optimization Tool for Answer Set Programming
TU Wien(维也纳工业大学)
最先进的答案集编程(ASP)求解器依赖于一个名为grounder的程序,将包含变量的非基础程序转换为无变量的命题程序。这种接地的大小很大程度上取决于非接地规则的大小,因此,减少这样的规则的大小是一个有前途的方法来提高求解性能。为此,在本文中,我们宣布lpopt,一个工具,它可以将大型逻辑编程规则分解为更小的规则,更容易处理当前的求解器。该工具是专门为处理ASP语言(ASP-Core)的标准语法而定制的,使用户更容易编写高效和直观的ASP程序,否则通常需要专家ASP工程师进行大量的手工调整。它基于Morak和Woltran(2012)提出的一个想法,我们对其进行了显著扩展,以处理完整的ASP语法,包括聚合,弱约束和算术表达式等复杂结构。我们提出的算法,如何对待这些结构的理论基础,以及实验评估显示我们的方法的可行性。
2016-08-23 cs.AI cs.LO cs.PL
Visualization of Constraint Handling Rules: Semantics and Applications
本文提出了一种对约束处理规则的动画扩展($CHR^{vis}$)。可视化总是帮助程序员理解数据和调试程序。一张图片胜过千言万语。它可以帮助识别问题所在或显示某些东西是如何工作的。它甚至可以说明一个关系,否则是不清楚的。$CHR^{vis}$旨在将动画和可视化功能嵌入到可编程逻辑器件程序中。因此,它使用户能够在执行程序时使这些执行动画化。本文旨在为$CHR^{vis}$提供操作语义。文中还讨论了$CHR^{vis}$程序的正确性。文中还介绍了新扩张的一些应用。
2017-06-04 cs.PL cs.SE
Bayes Rule for Conditioning Probabilistic Programs
本文针对概率程序中概率为零的观测值条件化问题,提出一种基于几何测度论的健全贝叶斯规则,可兼容现有主流推断算法,支持含多种结构的实际概率模型。
2026-10-09 cs.LO cs.PL
Reasoning about Parallel Quantum Programs
通过定义并行量子程序的操作语义和指称语义,我们开始了对并行量子程序的研究。本文的技术贡献包括:(1)为并行量子程序的正确性推理找到了一系列有用的证明规则;(2)证明了一个不相交并行量子程序部分正确性证明规则的(相对)完备性;以及(3)证明证明规则的强可靠性定理,表明部分正确性在操作中的每一步转换都得到了很好的维护。通用并行量子程序的语义(具有共享变量)。这是通过部分克服经典并行编程中从未存在的以下概念挑战来实现的:(i)由量子测量引起的非确定性的交织和并行性的引入;(ii)组件量子程序之间的纠缠;以及(iii)在组件量子程序的状态希尔伯特空间与共享变量的重叠中组合量子谓词。本文中开发的技术的应用说明了一个形式化验证的Bravyi-Gosset-König的并行量子算法解决线性代数问题,这给了第一次的计算量子优势的无条件证明。
2019-10-01 cs.LO cs.PL quant-ph
Diagrammatic confluence for Constraint Handling Rules
汇流是约束处理规则(英语:Constraint Handling Rules)的一个基本属性,因为在其他重写形式主义中,它保证了计算不依赖于规则应用顺序,也因为它暗示了程序声明视图的逻辑一致性。在本文中,我们关注的是证明的合流的非终止的可编程逻辑器件的程序。为此,我们从vanOostrom的递减图方法导出了一个新的临界对判据,它推广了所有已有的判据。随后,我们改进的结果上的模块化的融合,它允许模块化的组合可能非终止合流程序,而不会损失的汇合。
2012-10-09 cs.PL
Traits for Correct-by-Construction Programming
我们证明,性状是一种自然的方式来支持正确的建设(CbC)在现有的程序设计语言在传统的事后验证(PhV)的存在。通过构造正确性,程序是随着内在保证满足的规范而递增地构造的。在没有专门工具支持的情况下使用CbC是复杂的,因为它需要一组固定粒度的细化规则,这些规则是程序设计语言之上的附加规则。在这项工作中,我们提出了TraitCbC,一个增量的程序建设过程,实现正确的基础上,通过使用性状的PhV建设。TraitCbC允许通过特征组合而不是细化规则来构建程序。它提供了一个编程指南,类似于CbC应该导致结构良好的程序,并允许灵活地重用已验证的程序构建块。我们正式介绍TraitCbC和证明我们的验证策略的合理性。此外,我们实现TraitCbC作为概念验证。
2022-04-12 cs.PL
Towards verifying unsafe Rust programs against Rust's pointer-aliasing restrictions
Department of Computer Science, Leuven, Belgium(鲁汶大学计算机系)
本文提出一种模块化验证方法,用于检查使用不安全块的Rust程序是否符合指针别名规则,提升程序安全性。
2026-03-30 cs.PL
Rule-Based Graph Programs Matching the Time Complexity of Imperative Algorithms
University of Liverpool(利物浦大学);University of York(约克大学)
通过增强GP 2编译器的图数据结构,实现了规则基图程序在连通性检测、无环性检测和单源最短路径问题上的时间复杂度与命令式实现相匹配。
2026-05-19 cs.PF cs.PL
Syntax and Semantics of Babel-17
我们提出了Babel-17,第一个程序设计语言的纯功能结构化编程(PFSP)。早期的工作说明PFSP的框架中的玩具研究语言。Babel-17通过展示PFSP如何与模式匹配、面向对象编程以及并发、惰性求值、记忆和镜头支持等特性相结合,将这一早期工作提升到了一个新的水平。
2011-08-15 cs.PL
Augmenting Rewrite Rule Sets via Knuth-Bendix Completion
Saarland University(萨尔兰州立大学)
本文评估了 Knuth-Bendix 完备化方法,用于自动生成和扩充等式饱和中的重写规则,实验表明其能加快优化并发现先前遗漏的优化机会。
2026-10-02 cs.PL
Symbolical Index Reduction and Completion Rules for Importing Tensor Index Notation into Programming Languages
在数学中,人们发明了许多符号来简洁地表示数学公式。张量指数表示法就是其中之一,在数学物理公式的描述中起着至关重要的作用。本文介绍了一种程序设计语言,它可以通过引入一组与两种类型的参数兼容的张量索引规则来处理符号张量索引,即,标量和张量参数。当张量参数获取张量作为参数时,函数将张量参数视为一个整体。相反,当标量参数获得张量作为参数时,该函数被应用于张量的每个分量。在具有标量和张量参数的语言上,我们可以设计一组索引约简规则,允许用户对任意用户定义的函数使用张量索引表示法,而不需要额外的描述。此外,我们还可以设计索引完成规则,允许用户简洁地定义微分形式的运算符,如楔积,外导数和霍奇星运算符。在我们的建议中,所有这些张量运算符都是用户定义的函数,可以作为高阶函数的参数传递。
2021-02-10 cs.PL
Transformations of Logic Programs with Goals as Arguments
我们考虑逻辑编程的一个简单扩展,其中变量可以在目标上变化,目标可以是谓词的参数。在这种语言中,我们可以编写以目标为数据的逻辑程序。我们给出了实际的证据表明,利用这种能力时,转换程序,我们可以提高程序的效率。我们提出了一套程序转换规则,扩展了熟悉的展开和折叠规则,并允许我们操纵的目标出现的谓词参数的条款。为了证明这些转换规则的正确性,我们形式化地定义了我们的扩展逻辑程序设计语言的操作语义。这个语义是LD-分辨率的一个简单变体。当适当的条件得到满足时,这种语义与LD-分辨率一致,因此,用我们的扩展语言编写的程序可以由普通的Prolog系统运行。我们的转换规则,以保持操作语义和终止。
2004-02-20 cs.LO cs.PL
Self-Supervised Learning to Prove Equivalence Between Straight-Line Programs via Rewrite Rules
Colorado State University(科罗拉多州立大学);KTH Royal Institute of Technology(瑞典皇家理工学院)
本文提出基于transformer的S4Eq系统,通过自监督样本选择增量训练生成重写规则序列,自动证明直线程序对的语义等价性,在10,000对程序上达到97%证明成功率。
2023-07-09 cs.LG cs.PL
On Lexicographic Proof Rules for Probabilistic Termination
我们认为几乎肯定(A. S.)概率程序的终止问题,它是经典命令式程序的随机扩展。字典序排序函数为非概率程序的终止提供了一种合理而实用的方法,并通过字典序排序上鞅(LexRSMs)将其扩展到概率程序.然而,在以前的工作中引入的LexRSM有一个限制,这阻碍了它们的自动化:它们的所有组件必须在所有可达状态中是非负的。这可能导致LexRSM不存在,即使是简单的终止程序。我们的贡献是双重的:首先,我们引入了一个广义的LexRSM允许某些组件是负的。非概率终止证明的这个标准特征迄今为止在概率环境中还不知道是合理的,因为合理性证明需要仔细分析潜在的随机过程。其次,我们提出了多项式时间算法,使用我们的广义LexRSM证明a.s.终止在广泛的线性算术程序类。
2021-08-04 cs.PL
A High-Level Rule-based Language for Software Defined Network Programming based on OpenFlow
本文提出了一种基于XML表示法的新的高级语言XML定义的网络策略(XDNP),用于描述软件定义网络环境中的网络控制规则。我们依赖于现有的OpenFlow控制器,特别是Floodlight,但这个项目的新颖之处在于将复杂的语言和框架特定的API与策略描述分离开来。这种分离使得有可能将当前的工作扩展为北向更高级别的抽象,其可以支持基于不同程序设计语言的各种控制器。通过这种方法,我们相信网络管理员可以更容易和更快地开发和部署网络控制策略。
2017-12-14 cs.NI cs.PL
Implementing Constraint Handling Rules as a Domain-Specific Language Embedded in Java
基于逻辑和约束的程序设计语言和技术,例如约束处理规则(Constraint Handling Rules,缩写为CLR),可以支持许多常见的编程任务,这些任务可以以搜索可行或最优解的形式来表达。在大规模、分布式和动态云应用程序的配置管理中,使用XML开发新的约束求解器特别有趣,其中动态配置和组件选择是编程环境的一个组成部分。用Java的一个子集的特定于领域的语言编写CHR风格的约束求解器-而不是使用单独的语言层-解决了许多集成,开发周期中断,测试和调试问题,这些问题阻碍或难以在主流编程环境中采用基于CHR的方法。此外,原型实现公开了一个定义良好的API,该API支持事务性存储行为、安全终止和通过事件通知进行调试。
2013-08-19 cs.PL
Analyzing Graph Transformation Systems through Constraint Handling Rules
图转换系统和约束处理规则是基于规则的非确定性状态转换系统。GTS以其强大的融合和程序等价性分析而闻名,为此,我们在这项工作中提供了将其应用于GTS的基础。我们给出了一个健全的和完整的嵌入GTS的可移植性,研究了一个嵌入的GTS的融合,并提供了一个程序等价性分析GTS通过嵌入。结果证实了适用的CHR为基础的程序分析嵌入在CHR的其他形式主义。
2010-06-15 cs.LO cs.PL
Caesar: A Deductive Verifier for Probabilistic Programs
RWTH Aachen University(亚琛工业大学);Cornell University(康奈尔大学);Saarland University(萨尔兰大学);University College London(伦敦大学学院);DTU Compute(丹麦技术大学计算系);University of Oldenburg(奥尔登堡大学)
Caesar通过HeyVL语言实现概率程序的验证,支持自定义证明规则和模型检查后端,具备五年研发成果与改进功能。
2026-05-15 cs.PL
Understanding Rulelog Computations in Silk
Rulelog是一种基于良基语义的逻辑程序设计的知识表示和推理语言。它是Flora-2语言的扩展,因此支持继承和其他面向对象的功能,以及Hilog的高阶语法。然而,Rulelog规则也可以包含量词并且可以是对位的。此外,这些规则的可撤销性机制,包括规则取消,规则优先级,和其他方面的存在进行评估。规则日志程序有时由松散协调的知识工程师(KE)团队开发,他们不一定是程序员。这不仅需要声明式调试支持,还需要对分析的支持,以帮助KE理解计算的整体结构,包括其终止属性。调试和分析工具的设计变得更具挑战性,因为Rulelog程序经历了一系列转换为正常程序,因此在规则的指定方式和执行方式之间存在认知距离。在本文中,我们描述的调试和分析环境中实现的丝绸系统的集成开发环境的Rulelog。我们的方法包括一个接口的理由图,治疗为什么不和可撤销性以及出处的规则支持的答案。它还包括用于基于跟踪的计算分析的工具,以允许理解错误的非终止性和一般性能问题。对于非终止行为的语义正确的情况,Silk提供了一种不同的方法,通过利用一种称为约束的有限理性形式,以一种形式上合理的方式解决问题。
2013-08-19 cs.PL cs.SE
Using Constraint Handling Rules to Provide Static Type Analysis for the Q Functional Language
我们描述了一个应用程序的Prolog:一个类型检查工具的Q函数式语言。Q是一种简洁的向量处理语言,是APL的后代,它越来越受欢迎,特别是在金融应用中。Q是一种动态类型语言,很像Prolog。使用静态类型扩展Q提高了程序的可读性和程序员的生产力,因为类型错误是在编译时被工具发现的,而不是通过调试程序执行。类型检查器使用由Prolog约束处理规则处理的约束。在分析过程中,我们为每个程序表达式确定可能的类型值,并检测不一致性。由于Q的大多数内置函数名都是重载的,即它们的含义取决于参数类型,因此必须实现一个相当复杂的约束系统。
2011-12-16 cs.PL
A simple abstraction of arrays and maps by program translation
我们提出了一种处理数组的程序的静态分析方法,数组程序的语义和纯标量操作的语义之间有伽罗瓦连接。实现它的最简单的方法是通过自动地将数组程序语法转换为标量程序,然后使用任何静态分析技术(抽象解释、加速、谓词抽象等)分析标量程序。.).由此获得的标量不变量被翻译回原始程序作为普遍量化的数组不变量。我们说明了我们的方法上的各种例子,导致“荷兰旗”算法。
2015-06-12 cs.LO cs.PL
Aiming Low Is Harder -- Induction for Lower Bounds in Probabilistic Program Verification
我们提出了一个新的归纳规则,用于验证概率循环执行后的随机变量的期望值的下界以及它们的预期运行时间。我们的规则是简单的,因为循环体语义只需要经常应用,以验证候选确实是下界。特别是,它不需要像许多以前的规则那样找到序列的极限。
2021-08-11 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
The Semantics of Graph Programs
GP(图形程序)是一种基于规则的、非确定性的程序设计语言,用于在高抽象级别上解决图形问题,使程序员从处理低级别的数据结构中解放出来。GP的核心由四个结构组成:一组条件图转换规则的单步应用,顺序组合,分支和迭代。我们提出了一个形式化的语义GP的结构操作语义的风格。我们的语义的一个特殊功能是使用失败的程序来定义GP的强大的分支和迭代命令。
2010-03-24 cs.LO cs.PL
SPARK: Static Program Analysis Reasoning and Retrieving Knowledge
School of Information Technologies, University of Sydney(悉尼大学信息技术学院);Department of Computer Science, Yonsei University(延世大学计算机科学系);Qatar Computing Research Institute(卡塔尔计算研究所)
程序分析是一种不用执行程序就能对程序进行推理的技术,它在编译器、集成开发环境和安全性方面有各种应用。在这项工作中,我们提出了一个机器学习管道,诱导程序的安全分析器的例子。安全分析器根据我们的机器学习管道推导出的符号规则来确定程序是安全还是不安全。机器流水线分为两个阶段,包括一个递归神经网络(RNN)和一个将RNN转换为符号规则的提取器。为了评估学习的符号规则的质量,我们提出了一个基于采样的两个无限正则语言之间的相似性度量。我们使用真实世界的数据进行案例研究。在这项工作中,我们讨论了现有技术的局限性和未来可能的改进。结果表明,在有足够的训练数据和合理分布的程序路径的情况下,对数百万行代码的OpenJDK库进行符号安全规则推导是可行的。
2017-11-03 cs.AI cs.CR cs.PL
Flexible Correct-by-Construction Programming
比较经典CbC、CbC-Block和TraitCbC三种正确性构造方法,提出编程指南并证明TraitCbC可靠性,评估其构造、工具支持与可用性以适配不同任务。
2023-06-06 cs.LO cs.PL cs.SE
Why Can't You Behave? Non-termination Analysis of Direct Recursive Rules with Constraints
本文关注的是基于规则的程序出错。规则应用程序的不良行为是计算不终止或失败。我们提出了一个静态的程序分析的非终止性问题的递归约束处理规则(约束处理规则)的语言。是一种涉及约束推理的高级并发声明语言。它与许多其他基于规则的方法密切相关,因此其结果具有更广泛的意义。在这样的语言中,非终止性是由于递归规则的无限应用。失败是由于在计算过程中矛盾约束的积累。我们给出了线性直接递归简化规则的潜在非终止性和失效(以及确定终止性)的具有所谓的不良行为条件的定理。递归规则中约束之间的逻辑关系在这种程序分析中起着至关重要的作用。我们认为,我们的方法可以扩展到其他类型的递归和更一般的一类规则。因此,本文可以作为一个基本的参考和进一步研究的起点。
2017-01-10 cs.LO cs.PL cs.SE
Positive Almost-Sure Termination -- Complexity and Proof Rules
本文研究正几乎必然终止(PAST)的递归论复杂度,证明其为Π^1_1完全,给出将概率终止归约为非概率终止的有效方法,并提出基于超限序数(最高至ω_1^CK)的可靠完备证明规则,表明现有排序上鞅技术不足以推理PAST。
2023-10-26 cs.CC cs.PL
How Rules Represent Causal Knowledge: Causal Modeling with Probabilistic Logic Programming
研究如何将珀尔的因果方法引入概率逻辑编程,通过与不依赖时间概念的哲学基础对齐,提出形式因果语义等,使其语义与分层ProbLog程序的P-log语义一致,解决因果知识在不同形式主义中的应用问题。
2026-07-24 cs.AI cs.LO cs.PL
Program Language Translation Using a Grammar-Driven Tree-to-Tree Model
Harvey Mudd College(哈维穆德学院)
在程序设计语言之间进行翻译的任务与翻译自然语言的挑战不同之处在于,程序设计语言是用一组严格得多的结构和语法规则来设计的。以前的工作已经使用了树到树的编码器/解码器模型,以在翻译期间利用程序的固有树结构。然而,神经解码器默认不利用目标语言的已知语法规则。在本文中,我们描述了一个树解码器,利用知识的语言的语法规则,专门生成语法正确的程序。我们发现,这种基于语法的树到树模型优于最先进的树到树模型在两种程序设计语言之间的翻译先前使用的合成任务。
2018-07-04 cs.LG cs.PL stat.ML
Loo.py: From Fortran to performance via transformation and substitution rules
大量面向数字的代码是用遗留语言编写的。原则上,这些代码中的大部分可以很好地利用面向吞吐量的数据并行计算机体系结构。Loo.py是一个针对GPU和通用数据并行架构的基于转换的编程系统,它提供了一种用户控制的数组程序转换机制。这种转换功能不仅适用于专门为Loo.py编写的程序,还适用于从其他语言(如Fortran)导入的程序。通过允许用户对输入程序应用大量且不断增长的转换,它简化了在实现高性能、可移植性和可编程性之间的权衡。这些转换是在Python中表达和使用的,并且可以从各种设置中应用,包括其他语言中类似杂注的方式。
2015-05-16 cs.CE cs.MS cs.PL
Optimal Union-Find in Constraint Handling Rules
约束处理规则(英语:Constraint Handling Rules)是一种基于规则的提交选择语言,最初用于编写约束求解器。在本文中,我们表明,它也可以编写经典的联合查找算法和变种在CHR。程序既不妥协的声明性和效率。我们研究了我们的程序的时间复杂度:它们与最著名的命令式实现的几乎线性复杂度相匹配。实验结果说明了这一事实。
2005-01-25 cs.CC cs.DS cs.PF