Symbolical Index Reduction and Completion Rules for Importing Tensor Index Notation into Programming Languages
在数学中,人们发明了许多符号来简洁地表示数学公式。张量指数表示法就是其中之一,在数学物理公式的描述中起着至关重要的作用。本文介绍了一种程序设计语言,它可以通过引入一组与两种类型的参数兼容的张量索引规则来处理符号张量索引,即,标量和张量参数。当张量参数获取张量作为参数时,函数将张量参数视为一个整体。相反,当标量参数获得张量作为参数时,该函数被应用于张量的每个分量。在具有标量和张量参数的语言上,我们可以设计一组索引约简规则,允许用户对任意用户定义的函数使用张量索引表示法,而不需要额外的描述。此外,我们还可以设计索引完成规则,允许用户简洁地定义微分形式的运算符,如楔积,外导数和霍奇星运算符。在我们的建议中,所有这些张量运算符都是用户定义的函数,可以作为高阶函数的参数传递。
2021-02-10 cs.PL
Default Rules for Curry
在功能逻辑程序中,规则是独立于文本顺序而适用的,即,任何规则都可以潜在地用于评估表达式。这类似于逻辑语言,而与函数语言相反,例如,Haskell对规则执行严格的顺序解释。然而,在某些情况下,通过紧凑的默认规则来表达替代方案是方便的。虽然函数式程序中经常使用缺省规则,但函数式逻辑程序的非确定性本质不允许以有意义的方式将此概念从函数式语言直接转移到函数式逻辑语言。在本文中,我们提出了一个新的概念,Curry的默认规则,支持类似于函数式编程的编程风格,同时保留了函数式逻辑编程的核心属性,即,完整性、非确定性和面向逻辑的函数使用。我们讨论的基本概念,并提出了一个实现,利用先进的功能的功能逻辑语言。
2016-05-04 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
Traits for Correct-by-Construction Programming
我们证明,性状是一种自然的方式来支持正确的建设(CbC)在现有的程序设计语言在传统的事后验证(PhV)的存在。通过构造正确性,程序是随着内在保证满足的规范而递增地构造的。在没有专门工具支持的情况下使用CbC是复杂的,因为它需要一组固定粒度的细化规则,这些规则是程序设计语言之上的附加规则。在这项工作中,我们提出了TraitCbC,一个增量的程序建设过程,实现正确的基础上,通过使用性状的PhV建设。TraitCbC允许通过特征组合而不是细化规则来构建程序。它提供了一个编程指南,类似于CbC应该导致结构良好的程序,并允许灵活地重用已验证的程序构建块。我们正式介绍TraitCbC和证明我们的验证策略的合理性。此外,我们实现TraitCbC作为概念验证。
2022-04-12 cs.PL
Fearless Concurrency? Understanding Concurrent Programming Safety in Real-World Rust Software
Rust是近年来在构建各种底层软件时流行的程序设计语言。它旨在通过一套编译器检查规则在实现多线程软件时提供安全并发。不幸的是,人们对检查规则如何影响Rust应用程序中并发编程的安全性的理解有限。本文从并发使用和并发缺陷两个方面对Rust的并发安全性进行了初步研究。我们的研究可以更好地理解Rust的并发性,并可以指导未来的研究人员和从业者编写更好,更可靠的Rust软件,并为Rust开发调试和错误检测工具。
2019-02-05 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
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
Strategic programming on graph rewriting systems
我们描述了一种策略语言来控制图重写规则的应用,并展示了如何使用这种语言来编写高级声明式程序在几个应用领域。这种语言是基于图的编程工具的一部分,内置于端口图转换和可视化环境PORGY中。
2010-12-27 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
What Kind of Programming Language Best Suits Integrative AGI?
SingularityNET Foundation(SingularityNET基金会);OpenCog Foundation(OpenCog基金会)
什么样的程序设计语言最适合于服务于AGI的集成、多范式、多软件系统方法的需求?这个问题是通过探索如何创建一个更可扩展和可用的“Atomese”程序设计语言版本(“Atomese 2.0”)的更具体的问题来提出的,该语言是OpenCog AGI设计的关键组件。初步建议Atomese 2.0的核心应该是一个非常灵活的重写元数据库规则的框架(其中规则本身在同一元数据库中表示,并且在规则解释过程中创建和使用的一些中间数据可以在同一元数据库中表示)。这个框架应该支持并发重写的元数据,根据标记有各种各样的不确定性量化的规则,并与各种类型系统相关联的各种类型标记。应该使用渐进的类型化方法来实现与各种类型系统相关联的规则和其他元数据库节点/链接的混合,以及与任何类型系统都不关联的无类型元数据库节点/链接。这必须以允许合理的效率和可伸缩性的方式来完成,包括在并发和分布式处理上下文中,在其中大部分处理时间被占用以评估对大型元数据集的特定子图的静态模式匹配查询(包括丰富多样的查询,诸如针对表示变量的节点的匹配以及针对整个子图的匹配等)的情况下。
2020-04-11 cs.AI cs.PL
Doc2Spec: Synthesizing Formal Programming Specifications from Natural Language via Grammar Induction
The Pennsylvania State University(宾夕法尼亚州立大学);University of the Chinese Academy of Sciences(中国科学院大学);Institute of Computing Technology, Chinese Academy of Sciences(中国科学院计算技术研究所)
Doc2Spec通过语法归纳自动从自然语言生成形式化编程规范,提升了规范生成的可靠性和质量。
2026-10-08 cs.AI cs.PL cs.SE
A System for Explainable Answer Set Programming
University of Corunna(拉科鲁尼亚大学);University of Potsdam(波茨坦大学)
我们提出xclingo,一个工具,用于生成解释的ASP程序注释的文本和标签。这些注释允许跟踪规则的应用或由它们派生的原子。xclingo的输入是一种以ASP注释行形式编写的置标语言,因此以这种方式注释的程序仍然可以被标准ASP求解器接受。xclingo将注释转换为附加的谓词和规则,并使用ASP solver clingo来获得这些辅助谓词的扩展。这些信息随后用于构建包含文本解释的派生树。该语言允许选择解释哪些原子,并依次选择在这些解释中包含哪些原子或规则。我们通过文献中的一个诊断问题来说明其基本特征。
2020-09-22 cs.AI cs.PL
Flexible Correct-by-Construction Programming
比较经典CbC、CbC-Block和TraitCbC三种正确性构造方法,提出编程指南并证明TraitCbC可靠性,评估其构造、工具支持与可用性以适配不同任务。
2023-06-06 cs.LO cs.PL cs.SE
How Rules Represent Causal Knowledge: Causal Modeling with Probabilistic Logic Programming
研究如何将珀尔的因果方法引入概率逻辑编程,通过与不依赖时间概念的哲学基础对齐,提出形式因果语义等,使其语义与分层ProbLog程序的P-log语义一致,解决因果知识在不同形式主义中的应用问题。
2026-07-24 cs.AI cs.LO cs.PL
The concept of class invariant in object-oriented programming
本文提出一种面向对象程序验证的类不变式证明规则,系统解决回调、隐秘访问和引用泄漏三大难题,并能处理文献中的挑战性示例。
2024-01-20 cs.PL cs.SE
A Proof Theoretic View of Constraint Programming
我们在这里提供了一个证明理论帐户的约束编程,试图捕捉这种编程风格的基本成分。我们通过提出区间域上线性约束的证明规则来证明它,并通过分析{ \tt SEND + MORE = MONEY}难题的约束传播过程来说明它们的使用。我们还展示了这种方法如何允许建立新的约束求解器。
1998-10-20 cs.AI cs.PL
Proceedings 36th International Conference on Logic Programming (Technical Communications)
自1982年在马赛举行第一次会议以来,ICLP一直是展示逻辑编程研究的首要国际活动。在逻辑编程和相关领域的所有领域征求贡献,包括但不限于:-基础:语义学,形式主义,集合编程,非单调推理,知识表示。- 声明式编程:推理引擎,分析,类型和模式推理,部分求值,抽象解释,转换,验证,验证,建模,分析,测试,基于逻辑的领域特定语言,约束处理规则。- 相关范例和协同作用:归纳和协同归纳逻辑程序设计、约束逻辑程序设计、与SAT、SMT和CSP求解器的交互、用于类型推断和定理证明的逻辑编程技术、论证、概率逻辑程序设计、与面向对象和函数式编程的关系、描述逻辑、神经符号机器学习、混合深度学习和符号推理。- 实施情况:并发和分布,对象,协调,移动性,虚拟机,编译,高阶,类型系统,模块,约束处理规则,元编程,外部接口,用户界面。- 应用领域:数据库、大数据、数据集成和联合、软件工程、自然语言处理、Web和语义网、代理、人工智能、生物信息学、教育、计算生命科学、教育、网络安全和机器人技术。
2020-09-19 cs.AI cs.LO cs.PL
Static Analysis Techniques for Equational Logic Programming
等式逻辑程序是一组有向等式或规则,用于以明显的方式进行计算(通过用"更简单“的等式替换等式)。我们提出了静态分析技术,有效的方程逻辑编程,其中一些已实施的$LR^2$,实验室开发和评估快速,高效,实用的重写技术。$LR^2$的两个新特性是在大多数情况下允许非左线性规则,并且它具有基于同余闭包算法的制表选项来计算范式。虽然,本研究的重点是在表的方法,一些技术也适用于非表的方法。我们的演示是在$LR^2$的上下文中进行的,它是一个解释器,但其中的一些技术也适用于编译。
2000-10-27 cs.LO cs.PL
Strategies in PRholog
PRholog是逻辑编程的一个实验性扩展,它结合了Prolog和Rholog演算。规则对套期保值执行不确定性转换。在回溯时,可以探索递归的几个结果。策略以声明的方式提供对规则应用程序的控制。使用策略组合子,用户可以从简单的策略构造更复杂的策略。与四种不同类型的变量匹配提供了在执行期间选择(子)项的灵活机制。我们给出了一个概述与PRholog的策略编程,并演示如何重写策略可以表示。
2010-01-25 cs.LO cs.PL cs.SE
LLM-Aided Customizable Profiling of Code Data Based On Programming Language Concepts
IBM Research(IBM研究院);IIIT Hyderabad(印度信息技术学院海得拉巴分校);NIT Durgapur(杜尔加普尔国家理工学院)
本研究针对代码大语言模型数据集的画像需求,提出LLM辅助的两阶段混合方法,可定制化提取多语言代码的句法与语义概念,准确率表现优异,支持低资源语言与扩展。
2025-03-19 cs.ET cs.IR cs.LG