The Prolog debugger and declarative programming
逻辑编程是一种声明式编程范式。程序设计语言Prolog使逻辑编程成为可能,至少在很大程度上是这样。然而,Prolog调试器只在操作语义方面工作。因此它与声明式编程不兼容。本报告讨论了这个问题,并试图从声明的角度找到如何使用调试器。结果并不令人鼓舞。此外,Byrd的盒子模型,调试器使用,解释在SLD分辨率。
2020-03-05 cs.LO cs.PL cs.SE
Declaratively solving tricky Google Code Jam problems with Prolog-based ECLiPSe CLP system
在本文中,我们展示了几个例子,解决具有挑战性的算法问题,从谷歌代码果酱编程比赛与基于Prolog的ECLiPSe系统使用声明性技术,如约束逻辑编程和线性(整数)编程。这些问题的目的是要解决发明聪明的算法,并有效地实现它们在传统的命令式程序设计语言,但我们目前相对简单的声明式程序ECLiPSe是足够快的比赛规则所规定的时间内找到答案。我们认为ECLiPSe的声明式编程比命令式编程更适合解决Google Code Jam中提供的某些常见编程问题。我们通过比较两种解决方案所需的心理步骤来证明这一点。
2014-12-14 cs.PL
The $\aleph$-Calculus: A declarative model of reversible programming
介绍了一种新的可逆计算模型--$\aleph$ -演算。它是声明性的,可逆的图灵完备的,并且具有局部项重写语义。与先前证明的可逆项重写系统不同,它不需要积累历史数据。$\aleph$演算中的术语与程序定义相结合,封装了所有程序状态。还写了一个翻译。
2022-06-13 cs.PL
A declarative extension of parsing expression grammars for recognizing most programming languages
解析表达式语法是描述语法的流行基础。不幸的是,程序设计语言的一些语法仍然难以用纯PEG识别。一些臭名昭著的例子出现了:C/C ++中typedef定义的名称,Python中基于缩进的代码布局,以及许多脚本语言中的HERE文档。为了识别这样的PEG-硬语法,我们已经解决了PEG的声明性扩展。“声明性”扩展意味着没有传统上用于实现扩展解析行为的编程语义动作。Nez是我们扩展的PEG语言,包括符号表和条件解析。本文证明了使用Nez扩展可以实现许多实用的程序设计语言,如C,C\#,Ruby和Python,其中涉及PEG-硬语法。
2015-11-26 cs.PL
Language Support for Declarative Future Commitments
顺序编程和工作流编程是描述计算处理的两种有用但完全不同的方法。在这两者中,顺序编程是我们教给所有程序员的,并得到程序设计语言的支持,无论是过程式的、面向对象的还是函数式的。我们将工作流作为问题分解的次要样式,用于特殊情况,如分布式或网络处理。这两种风格提供了互补的优势,但事实上,它们采用了完全不同的延续所有权模型,这妨碍了我们以一种允许在单一程序设计语言中教授和使用它们的方式将它们集成的能力。本文介绍了一种程序设计语言构造,声明性的未来承诺,允许更好地集成两者。
2011-08-23 cs.PL
Declarative Programming for Microcontrollers -- Datalog on Arduino
在本文中,我们描述了一种基于Arduino平台的微控制器编程方法,使用Datatron作为系统行为的清晰简洁的描述语言。廉价且易于编程的微控制器的应用领域,如机器人、家庭自动化和物联网设备,具有主流吸引力,通常被用作自然科学和技术教学的动力。用于微控制器的程序设计语言的选择受到严重限制,特别是关于基于规则的声明性语言。我们使用的方法,是基于Dedalus语言增强的操作,允许副作用,并考虑到微控制器的有限资源。我们的编译器和运行时环境允许在基于Arduino的系统上运行Datasheet程序。
2019-08-30 cs.PL
An ER-based Framework for Declarative Web Programming
我们描述了一个框架,以支持旨在操纵存储在关系数据库中的数据的基于Web的系统的实现。由于关系数据库的概念模型通常被指定为实体关系(ER)模型,因此我们建议使用ER模型来在声明性程序设计语言Curry中生成完整的实现。此实现包含创建和操作数据模型实体的操作,支持身份验证、授权、会话处理以及对用户进程的各个操作的组合。此外,该实现确保了数据库w.r.t. ER模型中指定的数据依赖关系,即,由用户发起的更新不会导致数据库的不一致状态。为了生成一个高层次的声明性实现,可以很容易地适应个别客户的要求,该框架利用以前的作品声明性数据库编程和Web用户界面建设咖喱。
2012-09-17 cs.PL
PDL: A Declarative Prompt Programming Language
IBM Research(IBM研究院);UC Davis(加利福尼亚大学戴维斯分校)
针对现有提示框架难学或削弱开发者提示控制权的问题,本文提出基于 YAML 的声明式语言 PDL,以简化多平台 LLM、工具调用及 RAG、智能体等应用的提示编程。
2024-10-24 cs.AI cs.PL
Forty hours of declarative programming: Teaching Prolog at the Junior College Utrecht
本文记录了我们的经验,使用声明性语言,让中学生初尝计算机科学。该课程旨在教学生一些关于Prolog编程的知识,但也让他们接触到重要的计算机科学概念,如统一或搜索策略。使用Haskell的Snap框架结合我们自己的NanoProlog库,我们开发了一个Web应用程序来教授这门课程。
2013-01-22 cs.CY cs.PL
An Integrated Development Environment for Declarative Multi-Paradigm Programming
在本文中,我们提出了CIDER(咖喱集成开发环境),一个分析和编程环境的声明性多范式语言咖喱。CIDER是一个图形环境,通过提供程序分析和可视化的集成工具来支持Curry程序的开发。CIDER完全在Curry中实现,使用GUI编程(基于Tcl/Tk)和元编程库。我们的环境的一个重要方面是开发环境对其他声明性源语言(例如,Prolog或Haskell)和扩展性w.r.t.新的分析方法。为了支持后一个特性,底层实现语言Curry的惰性求值策略变得非常有用。
2001-11-19 cs.PL cs.SE
Declarativeness: the work done by something else
声明性意味着我们在更高的抽象层次上进行计算机编程。这个模糊的定义将声明性与忽略细节的行为等同起来,但它是抽象的一个特例。未指定的部分是一些计算工作。自动化计算和卸载心理处理本质上是同一个概念,这是计算和数学思维的基础。这表明声明性不仅仅是一种特定的风格,而是编程的核心思想。在这里,我们证明了这一论点,并检查其后果教学的系统研究编码的例子,从入门编程课程。选择的语言是Clojure,因为它被证明是新手可以访问的。
2017-11-25 cs.PL
Declarative Programming with Intensional Sets in Java Using JSetL
内涵集合是由属性给出的集合,而不是通过枚举它们的元素。在以前的工作中,我们提出了一个一阶逻辑语言的决策过程,它提供了限制内涵集(RIS),即,内涵集合的一个子类,保证表示有限但无界的集合。在本文中,我们将展示如何利用RIS作为一个方便的编程工具,也在传统的设置,即命令式的O-O语言Java。我们这样做,考虑一个Java库,称为JSetL,集成的概念,逻辑变量,(集)统一和约束,是典型的约束逻辑程序设计语言到Java语言。我们展示了JSetL如何自然地扩展以适应RIS和RIS约束,以及如何利用这种扩展,一方面,支持更具声明性的编程风格,另一方面,有效地提高库提供的约束语言的表达能力。
2020-07-30 cs.PL
On Feasibility of Declarative Diagnosis
本文探讨Prolog程序调试中声明式诊断方法被忽视的问题,分析其弱点并提出克服方案,论证了声明式诊断在实际编程中的可行性与应用价值。
2023-08-30 cs.LO cs.PL cs.SE
Compiling ER Specifications into Declarative Programs
本文提出了一个环境,以支持高级数据库编程的声明式程序设计语言。为了确保安全的数据库更新,所有与数据库相关的访问和更新操作都是从实体关系(ER)模型中的高级描述中生成的。我们提出了一个表示ER图的声明性语言咖喱,使他们可以通过各种工具构建,然后翻译成这种表示。此外,我们已经实现了一个编译器,从这个表示到一个咖喱程序,提供访问和更新操作的基础上,一个高层次的API数据库编程。
2007-11-02 cs.PL cs.SE
Veracity: Declarative Multicore Programming with Commutativity
人们一直在努力提供编程抽象,以减轻利用多核硬件的负担。许多编程抽象(例如,并发对象、事务存储器等)简化问题,但仍然涉及复杂的工程。我们认为,一些困难的多核编程可以改善通过声明式编程风格,程序员直接表示独立的顺序程序的片段。在我们提出的范例中,程序员以熟悉的顺序方式编写程序,并增加了明确表达代码片段顺序交换条件的能力。将这样的交换性条件放入源代码中为编译器提供了一个新的切入点,以利用交换性和并行性之间的已知联系。我们给出了一个语义程序员的顺序的角度来看,在正确的条件下,发现编译器转换的并行执行是等价的顺序语义。可串行化/可线性化不适合这种情况,因此我们引入了作用域可串行化,并展示了如何使用锁合成技术来实现它。接下来,我们描述了一种技术,通过一个新的减少从我们的交换块的逻辑规范,符号交换推理可以执行自动验证和合成的交换条件。我们用一种名为Veracity的新语言实现了我们的工作,该语言在多核OCaml中实现。我们证明了交换性条件可以在各种新的基准程序中自动生成,确认了并发加速可以随着计算的增加而被看到的期望,并将我们的工作应用于小型内存文件系统和众筹区块链智能合约的适应。
2022-04-29 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
Effectful Programming in Declarative Languages with an Emphasis on Non-Determinism: Applications and Formal Reasoning
本文研究了有效的声明式编程,强调非确定性作为一种效果。一方面,我们对使用非确定性作为底层实现思想来开发应用程序感兴趣。我们讨论两个应用程序使用功能逻辑程序设计语言咖喱。这些实现的关键思想是利用Curry所采用的非确定性和非严格性的相互作用。第一个应用程序调查排序算法参数化的比较功能。通过对这些排序函数应用一个非确定性谓词,我们得到一个置换枚举函数。我们将Curry中的实现与Haskell中的实现进行比较,后者使用一元接口来建模非确定性。我们在这项工作中讨论的另一个应用程序是概率编程库。我们不是将分布建模为事件和概率对的列表,而是使用Curry内置的非确定性来建模分布。在这两种情况下,我们观察到非确定性和非严格性的组合比使用列表来建模非确定性的实现更有优势。另一方面,我们提出了一个想法,有效的声明式程序设计语言的形式推理。为了从简单的效果开始,我们首先专注于对功能子集进行建模。也就是说,利息的效果是总体性的和非总体性的。然后,我们观察到,这两种效果的一般方案模型可以概括为捕捉广泛的影响。显然,下一步是将这一思想应用于模型非确定性。更准确地说,我们实现了Curry的非确定性模型:具有调用时间选择的非严格非确定性。因此,我们最后讨论了为什么目前的表示模型调用的名称,而不是库里的调用的需要语义,并给出了一个展望的想法来解决这个问题。
2020-06-02 cs.PL
Imperative vs. Declarative Programming Paradigms for Open-Universe Scene Generation
Brown University(布朗大学)
本文提出一种命令式编程范式,让LLM生成逐步程序以迭代放置对象,生成复杂三维场景布局,并通过无需LLM的错误修正机制提高鲁棒性,实验表明人类偏好度远超声明式系统。
2025-10-17 cs.GR cs.PL
BuDDI: A Declarative Bloom Language for CALM Programming
协调协议帮助分布式系统的程序员分析事务对系统状态的影响,但它们并不便宜。协调协议可能涉及多轮通信,这可能会损害系统的响应能力。在分布式计算中存在用于管理协调-性能权衡的许多努力。最近的一个工作线的特点是类的工作量,协调是不必要的一致性:即,逻辑单调的程序。在本文中,我们提出了一个典型的计算生物学工作负载的逻辑单调性的案例研究。我们利用布卢姆语言编写高效的分布式程序,并比较其性能等效程序写在UPC++,一种流行的语言编写分布式程序。此外,我们利用Bloom的分析工具来确定协调点,并利用我们自己使用Bloom的经验为没有强大的分布式计算背景的用户推荐一些更高级别的抽象。
2021-09-20 cs.DC cs.PL
Diva: A Declarative and Reactive Language for In-Situ Visualization
在大规模科学模拟中,使用自适应工作流管理进行现场可视化和分析已经成为一个日益增长的趋势。然而,协调自适应工作流与传统的过程程序设计语言可能是困难的,因为系统流是由不可预测的科学现象,这往往出现在一个未知的顺序,并可以逃避事件处理。这使得自适应工作流的实现繁琐且容易出错。最近,反应式和声明式编程范式已经被认为是其他领域中类似问题的合适解决方案。然而,有一个缺乏的研究,以适应这些方法在原位可视化和分析。在本文中,我们提出了一种语言设计和运行时系统开发自适应系统,通过声明式和反应式编程范式。我们说明了如何使用我们的方法实现自适应工作流编程系统,并证明它与燃烧模拟的用例。
2020-09-06 cs.HC cs.PL
Composing Programs in a Rewriting Logic for Declarative Programming
基于构造器的条件重写逻辑是一个集成一阶泛函和逻辑程序设计的通用框架,它为非确定性泛函-逻辑程序提供了一种代数语义。在这种形式主义的背景下,我们引入了一个简单的概念,程序模块作为一个开放的程序,可以扩展与几种机制结合起来。这些机制是基于一组减少的操作。然而,这些操作的高表达性使我们能够以简单的方式为程序模块化建模典型的构造,如隐藏,导出/导入,泛型/实例化和继承。我们还通过引入一个直接结果运算符来处理该建议的语义方面,并在逻辑编程的路线上研究基于该运算符的程序模块的几种替代语义:运算符本身,它的最小不动点(模块的最小模型),其前缀定点的集合(模块的术语模型)和一些其他变体,以便找到一个组合的和完全抽象的语义wrt的操作集和一个自然的可观察性概念。
2002-03-04 cs.LO cs.PL
Application Embedding: A Language Approach to Declarative Web Programming
从Web的早期开始,Web应用程序开发人员就渴望以声明方式开发他们的大部分应用程序。然而,应用程序的一个方面,即它的业务逻辑,总是保持必要性。在这项工作中,我们提出了应用程序嵌入,一种新的方法,应用程序开发,允许应用程序的各个方面,包括其业务逻辑,以声明方式编程。我们在两个步骤中开发这种方法。首先,我们在Web应用程序和特定领域语言(DSL)之间绘制一个映射。其次,我们注意到,在实现DSL的两种方法中,即内部或外部,大多数传统的Web应用程序对应于外部DSL,而对应于DSL嵌入(实现内部DSL)的技术大多未被探索。通过将DSL嵌入技术投射到Web应用中,我们得到了一种新的技术--应用嵌入。应用程序嵌入提供了代码资产的分离,鼓励重用命令式代码,同时保持所有特定于应用程序的资产,包括那些指定其业务逻辑的声明性资产。作为验证,我们使用所提出的资产分离实现了一个简单但不平凡的Web应用程序。此实现包括一个名为FishTank的应用程序不可知的命令式主机应用程序,旨在适用于各种Web应用程序,以及旨在加载到该主机上的特定应用程序的不同方面的声明性定义。与传统方法相比,我们的代码资产分离方法有助于更好地分离工作。通过这种分离,主机应用程序开发人员可以主要关注web应用程序的功能外方面,即提高性能、可伸缩性和可用性,而嵌入式应用程序的开发人员可以关注其应用程序的功能方面,而无需担心功能外的问题。…
2017-01-27 cs.PL
Pre-proceedings of the DECLARE 2019 Conference
本卷是2019年9月9日至13日在科特布斯-森夫滕贝格科技大学(德国)举行的DESLEE 2019会议的预录。声明式编程是建模和解决复杂问题的高级范例。这种方法在过去几十年中引起了越来越多的关注,例如,在数据和知识工程、数据库、人工智能、自然语言处理、建模和处理组合问题以及用于建立网络系统的领域中。会议DESIDE 2019旨在跨学科交流来自不同社区的研究人员和学生的想法和经验,这些社区对基础,实现技术,新颖的应用以及高级声明式编程和相关领域的组合感兴趣。活动的技术方案包括特邀演讲、评审论文介绍和系统演示。DEFEE 2019包括子活动INAP,WFLP和WLP:INAP -第22届声明式编程和知识管理应用国际会议WFLP -第27届函数和(约束)逻辑编程国际研讨会WLP -第33届(约束)逻辑编程研讨会
2019-11-21 cs.PL
A declarative Language for Rapid Business Development
ZoomBA的动机是领域特定语言(DSL),如Verblog,VHDL,Spice。用于软件测试的DSL并不是一个新的想法,许多商业工具(如Silk Suite)都使用它们,而Selenese,用于Selenium IDE的DSL [6]是开源的。ZoomBA是一个功能性的,可嵌入的,图灵完备的语言。它的理念是以声明的方式公开现有的Java echo系统,以实现系统集成和软件验证的目的。通过设计,ZoomBA脚本的大小与Python甚至Scala相比都是微不足道的,用于解决业务自动化问题。Bayestree使用ZoomBA进行系统集成/适配器/数据操作。
2018-05-11 cs.PL cs.SE
Declarative Diagnosis of Floundering
许多逻辑程序设计语言都有延迟原语,允许协同编程。这引入了一类错误症状--当计算想要成功或有限失败时,计算可能会陷入困境。对于并发逻辑程序,这通常称为死锁。类似地,约束逻辑程序可能无法调用某些约束求解器,因为变量没有被充分地实例化或约束。迄今为止,诊断此类故障的注意力相对较少。由于延迟原语影响程序的过程性而不是声明性视图,因此可以预期调试必须考虑交错执行的通常复杂的细节。然而,最近的工作语义提出了另一种方法。在本文中,我们将展示如何声明式调试范式可以用来诊断意外的挣扎,绝缘的复杂性执行的用户。关键词:逻辑程序设计,协同程序设计,延迟,调试,挣扎,死锁,约束
2007-11-01 cs.PL cs.SE
Towards a Unified Framework for Declarative Structured Communications
我们提出了一个统一的框架结构化通信的声明性分析。通过依赖于(定时)并发约束程序设计语言,我们表明,除了通常的操作技术,从过程演算,结构化通信的分析可以优雅地利用基于逻辑的推理技术。我们介绍了本田,Vasconcelos和久保提出的结构化通信的语言的声明性解释。我们的方法的显着特点是:在会话模型中包括部分信息(约束)的可能性;使用显式时间推理会话持续时间和到期时间;与逻辑的紧密对应关系,正式涉及会话执行和线性时间时序逻辑公式。
2010-02-04 cs.LO cs.PL
Learning Context-Free Grammars for Grammar-Constrained Decoding via Declarative Agentic Programming with Guarantees
Amazon Web Services(亚马逊云科技);Purdue University(普渡大学)
本研究提出名为Autogrammar的声明式智能体,可从文档和执行数据自动学习上下文无关文法,用于语法约束解码,在三种DSLs上的实验显示其生成的文法性能优于现有基线,能显著提升端到端LM的真实任务表现。
2026-08-07 cs.AI cs.CL cs.PL
Dragoman: Efficiently Evaluating Declarative Mapping Languages over Frameworks for Knowledge Graph Creation
近年来,在使RDF知识图谱的创建过程可追溯和透明方面做出了宝贵的努力和贡献;扩展和应用声明性映射语言就是一个例子。一个具有挑战性的步骤是旨在克服互操作性问题的程序的可追溯性,即。数据级集成。在大多数管道中,数据集成是由专门的程序执行的,这妨碍了可跟踪性和可重用性。然而,基于函数的声明性映射语言(如FunUL和RML + FnO)提供的正式框架增强了表达能力。数据级集成可以定义为函数,并集成为执行模式级集成的映射的一部分。但是,将函数与映射结合使用会引入一个新的复杂性来源,这会显著影响所需的资源数量和执行时间。我们解决的问题,有效地执行映射的功能和形式化的转换,他们到无功能的映射。这些转换是优化过程的基础,该过程旨在对基于函数的映射规则进行热切评估。这些技术在一个名为Dragoman的框架中实现。我们证明了转换的正确性,同时确保无功能的数据集成过程是等效的原始的。Dragoman的有效性进行了实证评估,在230个测试平台组成的各种类型的功能集成不同复杂度的映射规则。结果表明,评估无函数映射规则可以减少由大型数据源和多种类型的映射规则组成的复杂知识图谱创建管道的执行时间。节省高达75%,这表明在映射规则中急切地执行函数可以使这些管道在现实世界的设置中适用和可扩展。
2022-10-26 cs.DB cs.OH cs.PL
Declarative Semantics of the Hybrid Constraint Language HydLa
混杂系统是一类状态连续演化和状态及控制方程离散演化的动力系统。我们一直致力于HydLa,基于约束的建模语言的混合动力系统的设计和实施,以期正确处理的不确定性和集成的仿真和验证。HydLa的约束层次便于描述具有足够强度的约束,但由于各种语言结构的相互作用,其语义基础并不明显。本文给出了HydLa的声明语义,并通过实例讨论了它的性质和结果。
2019-10-27 cs.PL
Extending Answer Set Programming with Rational Numbers
University of Calabria(卡拉布里亚大学)
针对 ASP 无法原生处理非整数算术且浮点算术损害可复现性与声明语义的问题,本文提出将非整数近似为有理数,为扩展的 ASP-Core-2 定义语义并实现。
2023-12-07 cs.AI cs.LO cs.PL
Flexible coinductive logic programming
谓词的递归定义通常被解释为归纳的或共归纳的。最近,一种更强大的方法被提出,称为灵活共归纳,以表达各种中间解释,在某些情况下,获得正确的含义是必要的。我们提供了一个详细的正式帐户的扩展逻辑编程支持灵活的共归纳。从语法上讲,程序被附加子句丰富,附加子句具有特殊的含义,用于调整谓词的解释。通常,声明语义可以表示为一个固定点,然而,它不一定是最小的,也不一定是最大的,而是由附加子句确定的。相应地,操作语义是标准SLD分辨率和coSLD分辨率的组合。我们证明了操作语义是健全的和完整的声明性语义限制到有限的余模型。本文件正在考虑被TPLP接受。
2020-08-05 cs.LO cs.PL
Applying Prolog to Develop Distributed Systems
分布式系统的开发是一项艰巨的任务。声明式编程技术在有效支持程序员应对这一挑战方面具有很大的潜力。虽然基于数据的语言已经被积极地探索用于编程分布式系统,但Prolog在这个应用领域迄今为止受到的关注相对较少。在本文中,我们提出了一个基于Prolog的编程系统,称为DAHL,分布式系统的声明式开发。DAHL用事件驱动的控制机制和内置的网络过程扩展了Prolog。我们的实验评估使用分布式哈希表数据结构,协议实现拜占庭容错,和分布式软件模型检查器-所有DAHL实现-表明该方法的可行性。
2010-07-22 cs.DC cs.PL
Improving Testability and Reuse by Transitioning to Functional Programming
声明式风格(如函数式编程(FP))正在迅速地在其命令式兄弟(包括过程式和面向对象编程)中占据一席之地。这种转变是微妙的,因为它发生在多范式程序设计语言(如JavaScript)的上下文中。FP更适合测试驱动开发(TDD)等现代流程,以及大规模并行、基于云计算等架构。本文描述了从命令式到FP的转变的技术细节,以及对软件质量管理的影响,特别是重用和可测试性。
2016-06-21 cs.PL cs.SE
Proceedings 29th and 30th Workshops on (Constraint) Logic Programming and 24th International Workshop on Functional and (Constraint) Logic Programming
(约束)逻辑编程研讨会(WLP)是德国逻辑编程学会(Gesellschaft für Logische Programmierung e.V.,GLP),并汇集了对逻辑编程、约束编程、答案集编程以及数据库和人工智能等相关领域感兴趣的研究人员(不仅来自德国)。函数和(约束)逻辑编程国际研讨会(WFLP)旨在汇集对函数编程,逻辑编程及其集成感兴趣的研究人员,学生和从业者。讲习班有一个共同地点的传统,以促进对高级声明性程序设计语言和相关领域的基础、应用和组合感兴趣的社区之间的跨部门思想和经验交流。
2016-12-31 cs.LO cs.PL
Information-gain computation
University of California, Davis(加州大学戴维斯分校)
尽管有大量的激励措施,软件的正确性仍然是一个难以捉摸的目标。声明式编程技术,其中算法是从所需行为的规范中派生出来的,提供了解决这个问题的希望,因为在编程中,在规范而不是算法方面存在复杂性的组合降低,并且可以直接在规范中表达和执行任意所需属性。然而,性能上的限制阻止了使用声明性规范的编程成为通用编程的主流技术。为了解决性能瓶颈,从规范中派生的算法,我提出了信息增益计算,一个框架,自适应评估策略是用来有效地执行搜索,派生算法,提供有关查询的信息最直接。在这个框架内,压缩搜索空间的机会,这表明,信息理论的界限,这样一个系统的性能可能会阐明和系统设计,以实现它们。在一个简单的测试程序的自适应评估的初步实证研究,评估策略适应成功地评估一个查询有效。
2017-08-14 cs.AI cs.IT cs.PL
ProDebug: An Automated Debugging System for Prolog
Carnegie Mellon University(卡内基梅隆大学)
提出结合大语言模型、频谱和变异技术的Prolog自动调试系统ProDebug,用于识别学生作业中的错误并生成修复方案。
2026-05-26 cs.PL cs.SE
Relational Expressions for Data Transformation and Computation
针对数据转换与计算编程模型分离的问题,研究提出将完全关系引入关系数据库,结合约束编程成果,以统一的关系模型实现二者的统一范式、代码复用与高效执行。
2023-09-20 cs.DB cs.PL
Constraint Handling Rules with Multiset Comprehension Patterns
SQL是一种声明性、并发性和提交性的基于选择规则的约束程序设计语言。我们扩展了多集理解模式,为程序员提供了编写多集重写规则,可以匹配存储中的变量数量的约束的能力。这使得为协调大量数据或需要聚合操作的算法编写更具可读性、简洁性和声明性的代码成为可能。我们将此扩展称为$\mathit{CHR}^\mathit{cp}$。我们给出了$\mathit{CHR}^\mathit{cp}$的高级抽象语义,然后是低级操作语义。然后,我们将展示这个操作语义相对于抽象语义的合理性。
2014-06-09 cs.PL
On the Cooperation of the Constraint Domains H, R and FD in CFLP
本文提出了一种约束域协作的计算模型,并针对一个具有实际意义的特殊情况给出了一种实现方法。该计算模型支持声明式编程与懒惰和可能更高阶的功能,谓词,并配备了各自的求解器的不同约束域的合作,依赖于所谓的约束功能逻辑编程(CFLP)计划。该实现已开发的CFLP系统TOY的顶部,支持合作的三个域H,R和FD,提供平等和不平等的限制,在符号项,算术约束的实数,和有限域的限制,分别在整数。该计算模型已被证明是合理和完整的w.r.t.的声明性语义所提供的$CFLP$计划,而实现的系统已经过测试,一组基准,并表现出相当有效的行为相比,最密切相关的方法,我们知道。逻辑程序设计理论与实践(Theory and Practice of Logic Programming,TPLP)
2009-04-14 cs.PL cs.SC
The Alma Project, or How First-Order Logic Can Help Us in Imperative Programming
Alma项目的目标是设计一种强类型约束程序设计语言,它结合了逻辑和命令式编程的优点。该项目的第一阶段是设计和实现Alma-0,这是一种小型程序设计语言,为命令式编程框架内的声明式编程提供支持。它是通过扩展Modula-2的一个子集,由逻辑编程范式启发的少量功能获得的。在本文中,我们将讨论的基本原理设计的Alma-0,由此产生的混合编程框架的好处,以及目前的工作中添加约束处理能力的语言。特别是,我们讨论的逻辑和习惯变量的作用,约束存储和程序之间的相互作用,以及需要列表。
1999-07-19 cs.LO cs.PL
$\{log\}$: Set Formulas as Programs
$\{log\}$是一种程序设计语言,介于约束逻辑编程、集合编程和声明式编程之间。但是$\{log\}$也是有限集合和有限二元关系理论的可满足性求解器。有了$\{log\}$,程序员可以使用集合论和二元关系的所有功能编写抽象程序。这些程序不是很有效,但它们非常接近规范。其正确性更加明显。此外,$\{log\}$程序也是设定的公式。因此,程序员可以再次使用$\{log\}$来自动证明他们的程序验证非平凡属性。在本文中,我们通过几个例子来展示这种开发方法。
2021-04-16 cs.LO cs.PL cs.SE