Design Patterns for Functional Strategic Programming
在以前的工作中,我们介绍了\emph{strategic programming}的基础知识和支持组合子库。这是一种基于\emph{functional strategy}概念的泛型编程习惯用法:一种第一类泛型函数,不仅可以应用于任何类型的项,而且还允许泛型遍历到子项,并可以使用特定于类型的行为进行定制。本文旨在为实践功能程序员提供实用的指导,在制定自己的战略计划。我们从用户的角度介绍基本原理和支持,并启动\emph{strategy design patterns}目录。这些设计模式旨在以可访问的形式巩固战略编程专业知识。
2002-04-09 cs.PL
Proceedings Ninth International Workshop on Reduction Strategies in Rewriting and Programming
本卷包含在2009年6月28日在巴西利亚举行的第九届重写和编程中的缩减策略国际研讨会(WRS 2009)上提交的论文,与RDP的RTA 2009(第20届重写技术和应用国际会议)有关,联邦会议重写,演绎和编程。归约策略定义应选择哪些(子)表达式进行评估以及应应用哪些规则。这些选择会影响约简的基本属性,例如完整性、惰性和效率。WRS研讨会促进了约简策略及其在规范和编程、定理证明、软件工程等领域的应用方面的研究和合作。
2010-01-26 cs.LO cs.PL cs.SC
Reversible Computation in Term Rewriting
本质上,在可逆程序设计语言中,对于从状态$S$到状态$S'$的每个前向计算,存在从状态$S'$到状态$S$的反向的构造性方法。除了理论上的兴趣,可逆计算是一个基本概念,在许多不同的领域,如细胞自动机,双向程序转换或量子计算,仅举几例。在这项工作中,我们专注于长期重写,计算模型,基于大多数规则的程序设计语言。一般来说,项重写是不可逆的,即使对于内射函数也是如此;也就是说,给定重写步骤$t_1 \rightarrow t_2$,我们并不总是有一个可判定的方法从$t_2$得到$t_1$。在这里,我们介绍了一个保守的长期重写,成为可逆的扩展。此外,我们还定义了两个转换,内射化和反演,使重写系统可逆使用标准项重写。我们说明了我们的转换的双向程序转换的上下文中的有用性。
2017-10-08 cs.PL
A General Framework For Lazy Functional Logic Programming With Algebraic Polymorphic Types
我们提出了一个一阶函数逻辑编程的一般框架,支持懒惰的功能,非确定性和多态数据库,其数据构造器服从一组C的方程公理。在给定的C之上,我们指定一个程序作为定义函数的基于C的条件重写规则的集合R。我们认为,等式逻辑不提供适当的语义,这样的程序。因此,我们提出了一个替代逻辑,其中包括基于C的重写演算和模型的概念。我们得到了基于C的重写w.r.t.的可靠性和完整性。模型,所有程序的自由模型的存在,以及类型保留结果。作为操作语义,我们开发了一个完善的目标求解过程,该过程基于懒惰收缩与模C统一的结合。我们的框架是相当有表现力的许多目的,如解决行动和变化的问题,或实现的伽马计算模型。
2004-04-24 cs.PL
Composing Programs in a Rewriting Logic for Declarative Programming
基于构造器的条件重写逻辑是一个集成一阶泛函和逻辑程序设计的通用框架,它为非确定性泛函-逻辑程序提供了一种代数语义。在这种形式主义的背景下,我们引入了一个简单的概念,程序模块作为一个开放的程序,可以扩展与几种机制结合起来。这些机制是基于一组减少的操作。然而,这些操作的高表达性使我们能够以简单的方式为程序模块化建模典型的构造,如隐藏,导出/导入,泛型/实例化和继承。我们还通过引入一个直接结果运算符来处理该建议的语义方面,并在逻辑编程的路线上研究基于该运算符的程序模块的几种替代语义:运算符本身,它的最小不动点(模块的最小模型),其前缀定点的集合(模块的术语模型)和一些其他变体,以便找到一个组合的和完全抽象的语义wrt的操作集和一个自然的可观察性概念。
2002-03-04 cs.LO cs.PL
Strategic polymorphism requires just two combinators!
在以前的工作中,我们介绍了函数策略的概念:第一类通用函数,可以遍历任何类型的术语,同时混合统一和类型特定的行为。函数式策略将术语重写策略(包括遍历)的概念转移到函数式编程范式中。同时,提出了许多基于Haskell的模型和组合子套件,以支持具有函数式策略的泛型编程。在本文中,我们提供了一个紧凑和成熟的功能策略的重建。我们只通过两个原始的组合子来捕获策略多态性。这是在不承诺特定函数语言的情况下完成的。我们分析了功能策略实施模型的设计空间。为了完整起见,我们还提供了一个用于实现函数策略的操作参考模型(在Haskell中)。我们证明了我们的方法的一般性,通过重建的Strafunski库的功能策略的代表性片段。
2002-12-19 cs.PL
Confluence in Probabilistic Rewriting
基于概率程序设计语言推理的兴趣,我们开始研究它们的范式的唯一性概念。为了提供一个易于处理的证明方法,我们定义了一个属性的分布汇合,这意味着所需的唯一性(即使是无限序列的减少)和进一步的属性。然后,我们进行了几个标准,从经典的情况下,如纽曼的引理,以简化证明融合在具体的语言。使用这些标准,我们得到简单的证明合流$λ_1$,仿射概率$λ$演算,并为Q $^*$,量子程序设计语言的相关属性已经在文献中得到证明。
2018-05-01 cs.LO cs.PL
Faithful (meta-)encodings of programmable strategies into term rewriting systems
重写是一种广泛应用于计算机科学和数理逻辑的形式主义。当使用重写作为编程或建模范例时,重写规则描述了想要操作的转换,并且重写策略用于控制其应用。这些策略的操作语义被普遍接受,并研究了分析特定策略终止性的方法。在本文中,我们提出了一个通用的编码的经典控制和遍历策略中使用的重写为基础的语言,如Maude的,Atomgo和汤姆到一个普通的长期重写系统。编码被证明是健全和完整的,作为一个直接的结果,建立的终止方法用于项重写系统可以应用于分析的终止策略控制的项重写系统。我们表明,编码的策略到长期重写系统可以很容易地适应处理许多排序的signa- tures和我们使用的元级表示的条款,以减少编码的大小。相应的实现在汤姆生成的术语重写系统兼容的语法终止工具,如AProVE和TTT 2,工具,证明是非常有效的(DIS)证明所生成的术语重写系统的终止。该方法也可以被看作是一个通用的策略编译器,可以集成到语言提供模式匹配原语;汤姆的实验表明,应用我们的编码导致性能媲美本地汤姆战略。
2017-11-27 cs.PL
ACD Term Rewriting
我们介绍了结合交换分配项重写(ACDTR),重写逻辑公式的重写语言。ACDTR通过添加合取在其他运算符上的分布来扩展AC项重写。连接对于表达性术语重写系统是至关重要的,因为它允许我们要求多个条件保持要使用的术语重写规则。ACDTR使用“合取上下文”的概念,这是必须在术语的上下文中保持的约束的合取,以使程序员能够编写非常有表达力和有针对性的重写规则。ACDTR可以被看作是一种通用的逻辑程序设计语言,它扩展了约束处理规则和AC项重写。在本文中,我们定义的语义ACDTR和描述我们的原型实现。
2006-08-03 cs.PL cs.SC
Implementing G-Machine in HyperLMNtal
由于语言处理系统通常分配/丢弃具有复杂引用关系(包括循环和间接引用)的存储器,因此它们的实现通常不是微不足道的。这里,分配的内存和引用可以抽象为图的标记顶点和边。存在一种图形重写语言、一种程序设计语言或一种计算模型,可以直观、安全、高效地处理图形。因此,作为图重写语言的应用领域,语言处理系统的实现可以被高度期望。为了证明这一点,在这项研究中,我们实现了G机,虚拟机的懒惰的评价,在超图重写语言,HyperLMNtal。
2021-03-02 cs.PL
Graph Creation, Visualisation and Transformation
我们描述了一个工具来创建,编辑,可视化和计算的交互网络-一种形式的图形重写系统。这个名为GraphPaper的编辑器允许用户使用直观的用户界面创建和编辑图形及其转换规则。编辑器使用TULIP系统的功能,这使我们能够访问丰富的可视化算法。交互网不仅是一种图的形式化描述,而且是一种基于重写的计算模型。我们讨论了图重写策略和语言来表达它们,以执行战略互动网络重写。
2010-03-23 cs.LO cs.PL cs.SE
Programming and Symbolic Computation in Maude
重写逻辑既是一个灵活的语义框架,在这个框架中可以自然地指定各种各样的并发系统,也是一个逻辑框架,在这个框架中可以指定各种各样的逻辑。Maude程序就是重写理论。Maude也有一个正式的验证工具环境。符号计算是一种强大的技术,用于推理并发系统的正确性和增加形式化工具的能力。我们提出了几个新的象征性功能的Maude,加强形式化推理的Maude程序和正式工具的有效性。它们包括:(i)非常一般的统一模用户可定义的方程理论,和(ii)并发系统的符号可达性分析使用缩小。该文件并不专注于只是象征性的功能:它还介绍了其他几个新的莫德功能,包括:(iii)莫德的策略语言控制重写,及(iv)外部对象,允许灵活的互动莫德基于对象的并发系统与外部世界。特别是,元解释器是封装Maude解释器的外部对象,可以与许多其他对象交互。为了使文件独立,并给出一个合理的完整的语言概述,我们还审查了基本的Maude功能的等式重写和重写规则,Maude编程的并发对象系统,和反射。此外,我们包括许多例子说明所有的莫德的概念和功能中描述的文件。
2019-10-18 cs.LO cs.PL cs.SC
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
Programming errors in traversal programs over structured data
Traffic strategies á la Strafunski和“Scrap Your Boilerplate”提供了一种非常通用和统一的方法来查询和转换深度嵌套和异构结构的数据,包括函数式编程和重写中的术语、OO编程中的对象以及XML编程中的XML文档。然而,由此产生的遍历程序容易出现编程错误。我们特别关注超出保守类型错误的错误;我们检查的示例包括发散遍历、过早终止的遍历和带有死代码的遍历。基于可能的编程错误清单,我们探讨了静态类型和静态分析的选项,以便可以避免某些类别的错误。这种探索产生了对策略库及其底层程序设计语言的改进建议。Haskell用于插图和规格说明,并提供充分的解释,以使非专业人员能够理解演示文稿。总体思想是语言不可知论的,并据此进行了总结。
2012-01-29 cs.PL
A Distribution Semantics for Probabilistic Term Rewriting
Universitat Politècnica de València(瓦伦西亚理工大学);VRAIN
该研究针对结合传统重写规则与概率的概率项重写系统,提出新型分布语义以建模项规约概率,还给出可高效计算规约概率的解释集方法,并通过示例验证及提出扩展方向。
2025-03-19 cs.AI cs.PL
Dist-Orc: A Rewriting-based Distributed Implementation of Orc with Formal Analysis
Orc是一种服务编排理论,允许分布式和定时计算的结构化编程。已经提出了几种形式语义的Orc,包括重写逻辑语义的作者开发的。Orc在Java中也有一个完全成熟的实现,具有函数式编程特性。然而,与大多数分布式语言的描述一样,Orc的形式语义和其实现之间存在相当大的差距,因为:(i)Orc中的程序不容易仅通过使用Orc的形式语义在分布式实现中部署,以及(ii)它们不容易在分布式Orc实现的级别上进行形式分析。在这项工作中,我们克服了Orc的问题(i)和(ii)。具体来说,我们描述了一种基于重写逻辑和Maude的实现技术,大大缩小了这一差距。这种技术的启用特性是Maude通过TCP套接字支持外部对象。我们描述了如何使用套接字来实现Orc站点调用和返回,并为Orc表达式和站点提供实时定时信息。然后,我们将展示如何在所得到的分布式实现的Orc程序可以正式分析在一个合理的抽象层次,通过定义一个抽象的时间模型和套接字通信基础设施,并讨论的假设下,分析可以被认为是正确的。最后,通过一个实例说明了分布式实现和形式化分析方法。
2010-09-22 cs.DC cs.LO cs.PL
Introducing Quantification into a Hierarchical Graph Rewriting Language
本文将量词引入分层图重写语言LMNtal,扩展得到QLMNtal,可统一表达全称量化等特性,语法基于项且语义与原语言兼容,支持重写规则内量词的组合嵌套,提升了分层图重写的高层建模实用性。
2024-09-17 cs.PL cs.SC
Needed Computations Shortcutting Needed Steps
我们定义了一个基于构造函数的强顺序图重写系统的编译方案,它可以缩短一些必要的步骤。目标代码是另一个基于构造器的图重写系统。当使用最内层策略时,该系统是对原系统的归一化。因此,目标代码可以容易地由各种程序设计语言中的渴望函数实现。我们修改这个目标代码的方式,避免了一些计算所需的步骤的合同的全部或部分建设。当以这种方式计算范式时,与原始系统中的普通重写计算相比,减少了存储器消耗和执行时间。
2015-05-27 cs.LO cs.PL
In-place Graph Rewriting with Interaction Nets
当一个算法不需要任何额外的内存来执行超过一个小的常量时,它就是就地的,或者说是就地运行的。有许多算法是有效的,因为这个功能,因此它是算法的一个重要方面。在大多数程序设计语言中,算法何时可以就地运行并不明显,而且通常也不清楚实现是否尊重这一思想。在本文中,我们研究交互网络作为一种形式主义,我们可以直接,直观地看到,算法是到位的,而且实现将尊重它是到位的。然而,并不是所有的算法都可以就地运行。尽管如此,我们仍然可以使用相同的语言,但现在我们可以注释可以就地运行的算法部分。我们提出了一个规则的注释,并给出了一个算法,通过分析的相互作用规则,自动找到这个。
2016-09-13 cs.LO cs.PL
Reflective Metagraph Rewriting as a Foundation for an AGI "Language of Thought"
MeTTa(Meta Type Talk)是一种新的程序设计语言,用于OpenCog Hyperon AGI系统。它被设计为一种元语言,具有非常基本和通用的设施,用于处理符号、接地、变量、类型、替换和模式匹配。原语的存在是为了创建新的类型系统和相关的DSL。非正式地说,MeTTa是Hyperon最低级的“思想语言”--学习更具体知识表示的算法将在其中操作的元语言,并且这些算法本身可以在其中表示。在这里,我们解释了如何将MeTTa语言形式化为元数据重写规则系统,这种方法自然适合Hyperon框架,因为后者的核心组件是分布式元数据知识存储(Atomspace)。构成MeTTa程序的元图重写规则也可以表示为元图,为MeTTa反射和自修改代码提供了自然模型。考虑到MeTTa程序计算其他MeTTa程序的执行轨迹之间的等价性,允许我们使用同伦类型论来建模MeTTa执行轨迹的空间。考虑到在MeTTa程序的执行轨迹之间映射的MeTTa程序的限制,我们发现,给定的MeTTa码基被有效地建模为无穷广群,并且所有MeTTa码基的空间被建模为(无穷,1)-topis。在离散物理学上下文中,该拓扑基本上与先前从关于超图的重写规则导出的所谓的“Ruliad”相同。作为元数据重写规则的MeTTA的形式化还可以提供有用的框架,用于在MeTTa解释器内构造用于模式匹配和等式推断的有效方法的实现。
2021-12-12 cs.PL
Rascal: From Algebraic Specification to Meta-Programming
代数规范在通过使规范可执行来弥合规范和编程之间的差距方面有着悠久的传统。在设计、实现和使用基于代数规范和术语重写(即Asf和Asf+Sdf)的规范形式主义方面积累了丰富的经验,我们现在专注于使用代数规范中的最佳概念,并将其集成到一种新的程序设计语言中:Rascal。这种语言对于非专家来说很容易学习,但也可以扩展到非常大的元编程应用程序。我们解释Rascal的代数根及其主要应用领域:软件分析,软件转换,以及特定领域语言的设计和实现。模型驱动工程(MDE)领域中的一些示例应用程序的描述来说明这一点。
2011-06-30 cs.PL cs.SE
Applying Type Oriented Programming to the PGAS Memory Model
分区全局地址空间内存模型已经被许多语言和应用程序所普及。然而,这种抽象通常会导致程序员不得不依赖于一些内置的选择,并且由于这种隐式并行性,在程序员很少帮助的情况下,代码的可伸缩性和性能严重依赖于编译器和应用程序的选择。我们提出了一种方法,面向类型的编程,并行性的所有方面都通过类型和类型系统编码。例如,程序员关联的类型信息将决定数组如何分配、分区和分布。有了这些丰富的高级信息,编译器就可以生成一个高效的目标可执行文件。如果程序员希望省略详细的类型信息,那么编译器将依赖于有良好文档记录的安全默认行为,这些行为可以在以后通过添加类型进行调优。提出了一种遵循PGAS存储模型的面向类型的并行程序设计语言Mesham。我们说明了如何,如果这样做的话,使用类型可以调整所有参数和选项与此PGAS模型在一个干净和一致的方式,而无需重写大部分的代码。FFT的案例研究,并考虑在可编程性和性能方面-后者,我们证明了与现有的FFT求解器的比较。
2020-09-26 cs.PL
An Encoding of Interaction Nets in OCaml
本文提出在OCaml中编码交互网及其类型系统,利用图变换的并行性,强调正确性保证,实现简单且简洁的编码方法。
2025-03-26 cs.PL cs.SE
Static Analysis Techniques for Equational Logic Programming
等式逻辑程序是一组有向等式或规则,用于以明显的方式进行计算(通过用"更简单“的等式替换等式)。我们提出了静态分析技术,有效的方程逻辑编程,其中一些已实施的$LR^2$,实验室开发和评估快速,高效,实用的重写技术。$LR^2$的两个新特性是在大多数情况下允许非左线性规则,并且它具有基于同余闭包算法的制表选项来计算范式。虽然,本研究的重点是在表的方法,一些技术也适用于非表的方法。我们的演示是在$LR^2$的上下文中进行的,它是一个解释器,但其中的一些技术也适用于编译。
2000-10-27 cs.LO cs.PL
Automated Code Optimization with E-Graphs
本文提出了一个先进的,通用的和高层次的代码重写和分析系统的Julia程序设计语言,提供应用的平等饱和存在的多重分派和元编程。我们展示了我们的系统如何实际解决一些具有挑战性的问题:程序员可以实现自己的高层次的编译器优化其特定领域的科学计划,而不要求他们在所有的编译器专家?这些优化器是否可以由用户在相同的语言和他们想要优化的相同程序中实现,从而解决两种语言的问题?这些编译器优化器是否可以以高级方式编写,如方程式,而无需担心重写顺序?因此,符号数学可以进行高级编译器优化,反之亦然吗?
2021-12-30 cs.PL cs.SC
Proceedings 6th International Workshop on Computing with Terms and Graphs
本卷包含第六届国际计算与术语和图形研讨会(TERMGRAPH 2011)的会议记录。该研讨会于2011年4月2日在德国萨尔布吕肯举行,作为第十四届欧洲软件理论与实践联合会议(ETAPS 2011)的一部分。术语和图重写的研究范围从理论问题到实际问题。图计算以自然和无缝的方式处理公共子表达式的共享,并提高了空间和时间上的计算效率。共享是无处不在的几个研究领域,例如:建模的第一和高阶长期重写(无环或循环)图重写,建模的生物或化学抽象机,实现技术的程序设计语言。术语图也用于自动定理证明和符号计算系统中的共享结构。本次研讨会的目的是汇集研究人员在不同领域的术语和图形转换,并促进他们的互动,提供一个论坛,提出新的想法和工作进展,并使新来者了解当前的活动在术语图重写。这些会议记录包含六篇已接受的论文和三篇受邀演讲的摘要。所有提交的材料都经过了仔细的评审。被接受的论文的主题范围很广,包括术语图重写的理论方面,证明方法,语义以及术语图转换的应用问题。
2011-02-11 cs.LO cs.PL cs.SE
Symmetries in Reversible Programming: From Symmetric Rig Groupoids to Reversible Programming Languages
布尔电路可逆程序设计语言的$\mathitΠ$族被提出作为见证代数数据集类型同构的组合子的语法。在本文中,我们给出了这种语言的指称语义,使用同伦类型论的弱群胚的语言,并展示了如何推导出它的方程理论,由2-组合子证明可逆电路的等价性。我们建立一个对应的语法广群的语言和一个正式提出的有限类型的单叶子宇宙。对应关系1-combinators的1-路径,2-combinators的2-路径在宇宙中,这被证明是健全的和完整的两个层次,建立充分的抽象和充分性。我们已经建立的Curry-Howard对应$\mathitΠ$的可逆逻辑,可逆程序设计语言和对称钻机广群之间的Curry-Howard-Lambek对应,表明语法的$\mathitΠ$是由自由对称钻机广群,有限集和排列。我们的证明使用的技术,从理论的组介绍和重写系统来解决对称群的字的问题。利用我们结果的形式化,我们展示了如何通过评估、验证和合成可逆逻辑门来进行规范化,并以量子计算的示例为动力。
2021-10-11 cs.LO cs.PL
Strategies in PRholog
PRholog是逻辑编程的一个实验性扩展,它结合了Prolog和Rholog演算。规则对套期保值执行不确定性转换。在回溯时,可以探索递归的几个结果。策略以声明的方式提供对规则应用程序的控制。使用策略组合子,用户可以从简单的策略构造更复杂的策略。与四种不同类型的变量匹配提供了在执行期间选择(子)项的灵活机制。我们给出了一个概述与PRholog的策略编程,并演示如何重写策略可以表示。
2010-01-25 cs.LO cs.PL cs.SE
A Lambda-Calculus with letrec, case, constructors and non-determinism
研究了一个基于重写规则的非确定性按需调用λ演算\calc,该演算包含case、构造函数、letrec和一个(非确定性的)不规则选择.标准归约被定义为最左最外归约的变体。语义由表达式的上下文等价而不是使用$αβ(η)$ -等价来定义。它表明,几个程序转换是正确的,例如所有(确定性)的规则的演算,以及除了规则的垃圾回收,消除间接和唯一的副本。这表明,上下文引理和元重写的组合约简使用完整的交换集(分叉,分别)。图是用于提供函数式程序设计语言的语义和证明程序变换的正确性的有用且成功的方法。
2000-11-06 cs.AI cs.PL cs.SC
Process algebra with strategic interleaving
在进程代数中,如ACP(通信进程代数),并行进程被认为是以任意方式交织的。在当代程序设计语言中发现的多线程的情况下,并行进程实际上根据某种交错策略交错。交错策略在操作系统领域中被称为进程调度策略。在许多系统中,例如硬件/软件系统,我们必须处理最好被认为是以任意方式交织的并行进程和最好被认为是根据某种交织策略交织的并行进程。因此,我们在本文中扩展ACP与交织的后一种形式。所涉及的扩张的已建立的性质包括消去性质、保守扩张性质和唯一扩张性质。
2020-04-21 cs.LO cs.PL
Towards a Semantics-Aware Code Transformation Toolchain for Heterogeneous Systems
在对异构计算平台进行编程时获得良好的性能提出了重大挑战。我们提出了一个程序转换环境,在Haskell中实现,其中架构不可知的科学C代码与语义注释转换成功能等效的代码更适合于给定的平台。转换步骤被表示为规则,当满足某些语法和语义条件时,可以触发这些规则。这些规则不是硬连接到重写引擎中的:它们是用类似C的语言编写的,并被自动处理和合并到重写引擎中。这使得最终用户可以添加自己的规则或提供适合某些特定领域或目的的规则集。
2017-01-12 cs.DC cs.PL cs.SE
A Generic Scheme for Qualified Constraint Functional Logic Progamming
限定最近被引入作为逻辑程序设计领域中的不确定性的概括。在这份报告中,我们研究了一个更有表现力的语言一阶函数逻辑编程的约束和资格。我们提出了一个重写逻辑,其特点是打算语义的程序,和一个原型实现的基础上,语义正确的程序转换。所得到的语言的潜在应用包括灵活的信息检索。作为一个具体的例子,我们展示了如何编写程序规则来计算合格的答案,用户查询有关的书籍在一个给定的图书馆。
2011-01-11 cs.LO cs.PL
Language-integrated provenance
来源,或关于数据来源或来源的信息,对于评估数据的可信度以及识别和纠正错误非常重要。数据起源的大多数现有实现涉及对数据库系统的重量级修改,并且很少关注起源数据如何可以在这样的系统之外使用。我们提出了扩展链接程序设计语言,建立在其支持语言集成查询支持出处查询重写和规范化的一元理解和扩展的类型系统,以区分出处元数据从正常的数据。这篇文章的主要贡献是表明两种最常见的起源形式可以有效地实现,并安全地用作程序设计语言的功能,而无需更改数据库系统。
2017-08-22 cs.DB cs.PL