A Formal Comparison of Approaches to Datatype-Generic Programming
数据类型泛型编程通过使函数在不同类型之间统一操作来提高程序抽象和重用。多年来,人们提出了许多泛型编程的方法,其中大多数是针对Haskell的,但最近也有针对依赖类型语言(如Agda)的。不同的方法在表现力、易用性和实现技术方面各不相同。已经做了一些工作来非正式地比较不同的方法。然而,据我们所知,没有人试图正式证明不同方法之间的关系。因此,我们提出了一个正式的比较泛型编程库。我们将展示如何在Agda中正式化不同的方法,包括共归纳表示,然后建立定理,相互关联的方法。我们提供了一种方法包含在另一种方法中的建设性证明,可用于方法之间的转换,有助于减少不同库之间的代码重复。我们的形式化也有助于提供一个清晰的图片的潜力,每种方法,特别是在有关不同的通用视图和它们的表达。
2012-02-14 cs.PL
Proceedings Combined 21st International Workshop on Expressiveness in Concurrency and 11th Workshop on Structural Operational Semantics
本卷包含2014年9月1日在意大利罗马举行的第21届并发表达性国际研讨会和第11届结构操作语义研讨会(EXPRESS/SOS 2014)的会议记录,作为CONCUR 2014的附属研讨会,第25届并发理论国际会议。EXPRESS研讨会旨在汇集对各种形式系统和语义概念的表达感兴趣的研究人员,特别是在并发领域。传统上,他们的重点是比较编程概念(如并发、函数、命令、逻辑和面向对象编程)和计算的数学模型(如进程代数、Petri网、事件结构、模态逻辑和重写系统)之间的相对表达能力。自1994年以来,EXPRESS系列研讨会已经成功举办,多年来,这一重点已经得到广泛的理解。SOS研讨会的目的是成为一个论坛的研究人员,学生和从业人员感兴趣的新发展,未来的调查方向,在结构操作语义领域。SOS研讨会系列的具体目标之一是在从事SOS理论和实践工作的并发和程序设计语言社区之间建立协同作用。SOS在其他领域的应用报告也非常受欢迎,包括:生物系统的建模和分析,计算机系统编程的安全性,嵌入式系统的建模和分析,中间件和协调语言的规范,程序设计语言语义和实现,静态分析软件和硬件验证,以及特定领域语言和基于模型的工程的语义。
2014-08-06 cs.LO cs.PL
Proceedings Combined 20th International Workshop on Expressiveness in Concurrency and 10th Workshop on Structural Operational Semantics
本卷包含2013年8月26日在阿根廷布宜诺斯艾利斯举行的第20届并发表达性国际研讨会和第10届结构操作语义研讨会(EXPRESS/SOS 2013)的会议记录,作为CONCUR 2013的附属研讨会,第24届并发理论国际会议。EXPRESS研讨会旨在汇集对各种形式系统和语义概念的表达感兴趣的研究人员,特别是在并发领域。传统上,他们的重点是编程概念(例如并发、函数式、命令式、逻辑和面向对象编程)之间的比较以及计算数学模型(例如进程代数、Petri网、事件结构、模态逻辑和重写系统)之间的比较。基于它们的相对表达能力。自1994年以来,EXPRESS系列研讨会已经成功举办,多年来,这一重点已经得到广泛的理解。SOS研讨会的目的是成为一个论坛的研究人员,学生和从业人员感兴趣的新发展,未来的调查方向,在结构操作语义领域。SOS研讨会系列的具体目标之一是在从事SOS理论和实践工作的并发和程序设计语言社区之间建立协同作用。SOS在其他领域的应用报告也非常受欢迎,包括:生物系统的建模和分析,计算机系统编程的安全性,嵌入式系统的建模和分析,中间件和协调语言的规范,程序设计语言语义和实现,静态分析软件和硬件验证,以及特定领域语言和基于模型的工程的语义。
2013-07-26 cs.LO cs.PL
Expressiveness of Communication in Answer Set Programming
答案集编程(ASP)是一种声明式编程,允许简洁地制定和有效地解决复杂的问题。这种形式主义的一个直观扩展是通信ASP,其中多个ASP程序协作解决手头的问题。然而,通信ASP的表现力还没有得到彻底的研究。在本文中,我们提出了一个系统的研究提供了额外的表现力,允许ASP程序进行通信。首先,我们考虑一种简单的通信形式,其中程序只允许相互提问。在大多数情况下,我们故意只考虑简单的程序,即程序的计算答案集是在P.我们发现,决定是否是一个文字在一些答案集的通信ASP程序使用简单的通信的问题是NP难的。换句话说:由于这些简单的ASP程序的通信和协作能力,我们在多项式层次结构中向上移动了一步。其次,我们修改了通信机制,使我们能够专注于一系列通信程序,其中序列中的每个程序可能会相继删除一些剩余的模型。这模仿了一个领导者网络,第一个领导者有第一个发言权,可以删除他或她认为不满意的模型。使用这种特殊的通信机制使我们能够捕获整个多项式层次结构。这意味着,特别是,通信ASP可以用来解决的问题,在第二层的多项式层次结构,如某些形式的溯因推理以及PSPACE完全的问题,如CNOPS规划。
2011-09-12 cs.LO cs.PL
Differentially Private Bayesian Programming
我们提出PrivInfer,一个表达框架,用于编写和验证差分私有贝叶斯机器学习算法。PrivInfer中的程序是用一种功能丰富的概率程序设计语言编写的,其中包含用于执行贝叶斯推理的结构。然后,程序的差分隐私建立使用关系的细化类型系统,其中的概率类型的细化由分布的度量索引。我们的框架利用贝叶斯推理,概率程序设计语言,并在关系细化类型的最新发展。我们证明了表达的PrivInfer验证隐私的几个例子的私人贝叶斯推理。
2016-08-17 cs.PL
Functional Package Management with Guix
我们描述了GNU Guix的设计和实现,这是一个纯粹的功能包管理器,旨在支持完整的GNU/Linux发行版。Guix支持事务升级和回滚、无特权包管理、每个用户简档和垃圾回收。它建立在Nix包管理器的低级构建和部署层之上。Guix使用Scheme作为其编程接口。特别是,我们设计了一个嵌入式领域特定的语言(EDSL)来描述和组合包。我们演示了它如何使我们受益于主机通用程序设计语言,同时不影响表达能力。其次,我们展示了使用Scheme来编写构建程序,从而形成“两层”编程系统。
2013-05-20 cs.PL
Type-Driven Prompt Programming: From Typed Interfaces to a Calculus of Constraints
本文提出类型驱动的提示编程框架Lambda Prompt,通过依赖类型演算与概率精化表达句法和语义约束,并针对约束表达与算法支持不足提出优化规则及编译器研究方向。
2025-08-17 cs.FL cs.PL
Design and Implementation of Dynamic Memory Management in a Reversible Object-Oriented Programming Language
可逆面向对象程序设计语言(ROOPL)于2016年底提出,并证明了面向对象编程范式在可逆环境中工作。该语言的特点是简单的静态作用域对象,这使得非平凡的程序乏味,如果不是不可能使用有限的工具编写。我们引入了一个新的语言ROOPL++形式的扩展ROOPL,具有动态存储管理和固定大小的数组,以增加语言的表达能力。该语言是ROOPL的超集,并已正式定义其语言语义,类型系统和计算的普遍性。可逆内存管理器布局的考虑进行了讨论,并最终导致伙伴内存布局的选择。ROOPL++中添加的扩展翻译到可逆的汇编语言PISA提供无垃圾计算。动态存储管理扩展成功地增加了ROOPL的表达能力,并因此表明,非平凡的可逆数据结构,如二叉树和双向链表,是可行的,并不违背可逆计算范式。
2018-04-12 cs.DS cs.PL
Type, Ability, and Effect Systems: Perspectives on Purity, Semantics, and Expressiveness
Augusta University(奥古斯塔大学);Purdue University(普渡大学)
本文提出基于上下文等价的纯度语义定义,以完备性度量表达力,证明最小效应与能力系统不可比较,并综合类型、能力与效应系统以结合优势、避免弱点。
2026-10-06 cs.PL
Elaborating Intersection and Union Types
设计和实现类型化的程序设计语言是困难的。每一个新的类型系统功能都需要扩展元理论和实现,这通常是复杂和脆弱的。为了简化这个过程,我们希望提供一个通用的机制来支持许多不同的特性。在现代类型系统中,参数多态性是基本的,但是交集多态性在程序设计语言中几乎没有得到重视。大多数实际的交集类型系统只支持细化交集,这增加了类型的表达能力(可以检查更精确的属性),而不会改变术语的表达能力;细化交集可以在编译期间简单地删除。相比之下,不受限制的交集增加了术语的表达能力,并且可以用于编码不同的语言特征,从而有望实现理论和实现的经济性。我们描述了一个基础编译无限制的交集和联合类型:一个精心制作的类型系统,产生普通的微积分术语。关键特性是一个类似Forsythe的合并构造。有了这个结构,并不是所有的减少的源程序保留类型,但是,我们证明了普通的调用值评估的精心策划的程序对应的类型保持评价的源程序。我们还描述了一个原型实现和应用程序的无限制的交集和工会:记录,运算符重载,并模拟动态类型。
2020-08-15 cs.PL
The Best of Both Worlds: Linear Functional Programming without Compromise
我们提出了一个线性函数演算与线性类型和丰富的语言的组合子和组合所提供的函数编程的安全保证。与以前的线性类型和函数式编程的组合不同,我们既不妥协线性方面(例如,我们的线性值是语言的一等公民),也不妥协函数方面(例如,我们不需要重复定义线性和无限制函数的组合)。要做到这一点,我们必须将抽象和应用推广到包含线性函数和无限制函数。我们捕获的类型的广义结构与一个新的使用合格的类型。我们的系统保持了限定类型理论的元理论属性,包括主类型和可判定类型推断。最后,我们给出了一个正式的基础,我们要求的表现力,显示评价尊重线性,我们的语言是一个保守的扩展现有的功能演算。
2017-03-16 cs.PL
Constraint Functional Logic Programming over Finite Domains
在本文中,我们提出了我们的建议,有限域上的约束功能逻辑编程(CFLP(FD))与懒惰的功能逻辑程序设计语言,无缝地体现有限域(FD)的约束。该建议通过结合函数和关系表示法、curried表达式、高阶函数、模式、部分应用程序、非确定性、惰性求值、逻辑变量、类型、域变量、约束组合和有限域约束,增加了有限域上约束逻辑编程(CLP(FD))的表达能力和能力。我们描述了该语言的语法、类型规则以及声明和操作语义。我们还描述了TOY(FD),CFLPFD(FD)的实现,并从编程的角度来看,我们的方法相对于CLP(FD)的比较,显示我们引入的新功能。最后,我们展示了一个性能分析,表明我们的实现相对于现有的CLP(FD)系统具有竞争力,并且明显优于更接近CFLP(FD)的方法。
2006-01-16 cs.PL
A Formal Model for Programming Wireless Sensor Networks
在本文中,我们提出了新的发展的表现力和传感器网络(CSN)的微积分理论。我们结合了一个网络层的传感器设备与本地对象模型来描述传感器设备的状态。由此产生的演算非常小,但非常有表现力。我们还提出了一个类型系统和类型不变性结果的演算。这些结果为程序设计语言和运行时环境的开发提供了基本框架。
2007-02-07 cs.DC cs.PL
Uniqueness Typing for Resource Management in Message-Passing Concurrency
我们将通道视为消息传递编程范式中资源的主要形式。在资源稀缺的情况下,需要对这些渠道进行认真管理。为了研究这个问题,我们扩展了π演算与原语的通道分配和释放,并允许通道被重用,以传达不同类型的值。不可避免的是,增加的表达能力增加了运行时错误的可能性。我们定义了一个子结构类型系统,它结合了唯一性类型和仿射类型,以拒绝这些不良行为的程序。
2010-03-29 cs.LO cs.PL
Reactive Graphs for Efficient Markov Chain Monte Carlo Inference in Probabilistic Programming Languages
KTH Royal Institute of Technology(瑞典皇家理工学院);Swedish Museum of Natural History(瑞典自然历史博物馆)
提出一种自动将概率程序转换为动态反应图的方法,显式表示数据依赖,使得MCMC提议仅重新计算依赖已重绘随机变量的部分,从而提升推断效率。
2026-06-29 cs.PL
Topology-Level Reactivity in Distributed Reactive Programs: Reactive Acquaintance Management using Flocks
响应式编程是一种流行的事件驱动应用程序编程范式,并且经常被提议作为编写分布式应用程序的范式。其中一种类型的应用程序是 *prosumer* 应用程序,它们是分布式应用程序,既产生又消费许多事件。我们分析了使用反应式程序设计语言或框架来实现产消者应用程序时出现的问题。我们发现,开放网络的假设,这意味着各种类型的产消者自发地加入和离开网络,可能会导致大量的代码复杂性或运行时效率低下。这些问题的基础在于熟人管理:在生产者加入和离开网络时发现他们的能力,并在整个反应式程序中正确地保持这种状态。大多数现有的反应式程序设计语言和框架对管理熟人的支持有限,导致代码意外复杂或计算效率低下。在本文中,我们提出了反应式程序的熟人管理。首先,我们设计了一个熟人发现机制来创建一个自动发现网络上的产消者的群体。群的一个重要方面是它们与反应式程序的集成,使得反应式程序可以正确有效地维护其状态。为此,我们设计了一个熟人维护机制:一种新型的函数式反应程序设计语言操作符,我们称之为“部署-*”。“deploy-*”操作符能够对所发现的产消者的随时间变化的集合做出正确和有效的反应。所提出的机制是在一个反应式程序设计语言称为斯特拉,它作为一个语言的车辆来展示我们的方法的想法。我们的熟人管理的结果在计算效率和惯用的反应代码的实现。我们通过基准测试定量评估我们的方法,这些基准测试表明我们的实现是有效的:每当发现一个新的产消…
2022-02-18 cs.PL
Constraint Answer Set Programming without Grounding
带约束的扩展ASP(CASP)增强了其表现力和性能。这种扩展并不简单,因为在大多数ASP系统中存在的基础阶段,删除了变量和它们之间的链接,并且还导致了程序大小的组合爆炸。已经设计了几种克服这个问题的方法:限制约束域(例如,离散的而不是密集的),或者可以返回的模型的类型(或数量)。在本文中,我们建议将限制到S(ASP),一个目标导向的,自上而下的执行模型,实现ASP,同时保留逻辑变量在执行过程中和答案集。生成的模型s(CASP)可以约束变量,这些变量与CLP中一样,在执行期间和答案集中保留。s(CASP)继承和推广了s(ASP)的执行模型,是参数化的.约束求解器。我们描述了这种新的执行模型,并通过几个例子显示增强的表现力的s(CASP)w.r.t. ASP、CLP和其他CASP系统。我们还报告了改进的性能w.r.t.其他非常成熟,高度优化的ASP系统中的一些基准。这篇论文正在考虑发表在《逻辑程序设计理论与实践》(TPLP)上。
2018-05-31 cs.LO cs.PL
Multiparty Session Programming with Global Protocol Combinators
多方会话类型(MPST)是通信协议的类型规则。它确保了良好类型的通信进程不会出现通信错误和死锁。MPST理论的最新实现依赖于(1)运行时线性检查以确保通信信道的正确使用,以及(2)用于指定和验证多方协议的外部域特定语言。为了克服这些限制,我们提出了一个用全局组合子编程的库--一组用于在OCaml中编写和验证多方协议的函数。一个协议中所有进程的局部行为都是从全局组合子中一次推断出来的。我们形式化的全球combinators和证明一个健全的可实现的全球combinators -一个良好类型的全球combinator派生出一组本地类型,类型端点程序可以确保类型和通信安全。我们的方法使全静态验证和整个协议的实现,从协议规范的过程实现,发生在同一种语言。我们将我们的实现与无类型和延续传递风格的实现进行比较,并通过实现大量的协议来展示其表现力。我们展示了我们的库可以与现有的库和服务进行互操作,实现DNS(域名服务)协议和OAuth(开放认证)协议。
2020-05-24 cs.PL
An Approach to Programming Based on Concepts
在本文中,我们描述了一种新的编程方法,它概括了面向对象的编程。它基于使用一种新的编程构造,称为概念,它概括了类。概念被定义为一对两个类:一个引用类和一个对象类。每个概念都有一个父概念,父概念是使用包含关系泛化继承指定的。我们描述了几个重要的机制,如引用解析,上下文栈,对偶方法和生命周期管理,继承和多态性。这种编程方法被定位为一种新的编程范式,因此我们制定了它的主要原则和规则。
2007-12-30 cs.PL
Distributed Programming via Safe Closure Passing
包含函数式编程的编程系统,例如,高阶函数对于大规模分布式编程来说正变得越来越流行。Apache Spark等新框架利用功能技术为内存数据分析提供高级声明式API,通常优于Hadoop MapReduce等传统的“大数据”框架。然而,广泛使用的编程模型仍然相当ad-hoc;实现权衡,静态类型和语义等方面尚未得到很好的理解。我们提出了一个新的异步编程模型,其核心有几个原则,促进分布式数据的功能处理。我们的模型的重点是简单性,性能和表现力。通信的主要方式是将函数(闭包)传递给分布式的、不可变的数据。为了确保闭包的安全和有效分布,我们的模型利用了语法和基于类型的限制。我们报告在Scala中的原型实现。最后,我们提出了初步的实验结果评估的静态,基于类型的优化序列化的性能影响。
2016-02-11 cs.DC cs.PL
The Role of Functional Programming in Management and Orchestration of Virtualized Network Resources Part I. System structure for Complex Systems and Design Principles
这是作者在2018年1月在斯洛伐克科希策举行的“三个\CO“(可组合性,可理解性,正确性)冬季学校和2019年6月在匈牙利布达佩斯举行的夏季学校所做讲座的后续讲座笔记的第一部分。在这一部分中,我们解释了函数式编程范式在复杂软件系统管理中的作用,以及函数式编程的概念如何在设计这样的系统中发挥重要作用。实现函数式编程概念的关键先决条件是遵循定义良好的设计原则和规则正确设计系统结构。这是本讲座的主要目标,向学生介绍正确的系统建模。此外,我们还解释了新的新兴技术是如何设计的,以这种方式,他们执行的系统,符合设计规则的启发函数式编程的发展。鉴于当前的网络发展和虚拟化概念,这一点非常重要,这将需要网络服务和功能中的许多功能编程概念,这将在这些课堂讲稿的第二部分中讨论。这些笔记提供了对该主题的介绍,目的是解释问题及其解决方法的原则,方法和技术。工作的例子和练习作为教材,学生可以从中学习如何使用设计原则来建模有效的系统结构。在这里,我们专注于学生理解有效的系统结构的重要性,以协调由业务目标和进一步发展驱动的开发和管理流程。
2021-07-26 cs.PL cs.SE cs.SY
Programming and Reasoning with Guarded Recursion for Coinductive Types
我们提出了守护的Alguda演算,简单类型的Alguda演算与守护递归和共归纳类型的扩展。保护递归类型的使用确保了良好类型程序的生产力。受模态逻辑和Atkey-McBride时钟量化启发的类型生成器可以将受保护的递归类型转换为共归纳类型,从而允许非因果函数的类型化。我们给出了演算的按名调用操作语义,并在树的拓扑中定义了适当的指称语义。充分性证明意味着程序的评估总是终止的。我们展示了表现力的演算显示的可定义性的解决方案Rutten的行为微分方程。我们介绍了一个程序逻辑与Löb归纳推理的上下文等价的程序。
2015-01-15 cs.LO cs.PL
Communication-Safe Web Programming in TypeScript with Routed Multiparty Session Types
现代网络编程涉及协调浏览器客户端和服务器之间的交互。通常,基于Web的分布式系统中的交互是非正式描述的,这使得很难确保正确性,特别是通信安全性,即所有端点都没有类型错误或死锁,符合指定的协议。我们提出了STScript,一个工具链,它生成TypeScript API,用于通过WebSockets进行通信安全的Web开发,以及RouST,一种新的会话类型论,支持具有路由机制的多方通信。STScript为开发人员提供了基于RouST的通信协议规范生成的TypeScript API。生成的API建立在TypeScript并发实践的基础上,补充了全栈Web开发中的事件驱动编程风格,并且与服务器端端点的Node.js运行时和浏览器端端点的React.js框架兼容。RouST可以表达通过中间参与者路由的多方交互。它支持浏览器端端点之间的对等通信,通过服务器路由通信,避免过度序列化。RouST保证使用STScript API编写的端点Web应用程序的通信安全。我们使用几个部署为Web应用程序的生产就绪的案例研究来评估STScript对现代Web编程的表现力。
2021-01-12 cs.PL cs.SE
The Guarded Lambda-Calculus: Programming and Reasoning with Guarded Recursion for Coinductive Types
我们提出了守护的Alguda演算,简单类型的Alguda演算与守护递归和共归纳类型的扩展。保护递归类型的使用确保了良好类型程序的生产力。受模态逻辑和Atkey-McBride时钟量化启发的类型生成器可以将受保护的递归类型转换为共归纳类型,从而允许非因果函数的类型化。我们给出了演算的按名调用操作语义,并在树的拓扑中定义了适当的指称语义。充分性证明意味着程序的评估总是终止的。我们介绍了一个程序逻辑与Löb归纳推理的上下文等价的程序。我们展示了表现力的演算显示的可定义性的解决方案Rutten的行为微分方程。
2016-09-05 cs.LO cs.PL
Quingo: A Programming Framework for Heterogeneous Quantum-Classical Computing with NISQ Features
噪声中尺度量子(NISQ)系统的控制复杂性不断增加,强调了将量子硬件与量子软件集成的必要性。在将异构量子经典计算(HQCC)算法映射到NISQ硬件上执行时,我们观察到量子编程语言(QPL)中的一些不满意之处,包括难以映射到硬件,表达能力有限以及违反直觉的代码。此外,有噪声的量子比特需要重复进行量子实验,这些实验明确地操作低级配置,例如操作的脉冲和定时。该要求超出了大多数现有QPL的范围或能力。我们总结了三种执行模型来描述现有QPL的量子经典相互作用。基于改进的HQCC模型,我们提出了Quingo框架来集成和管理量子经典软件和硬件,以提供HQCC应用程序的可编程性,并将其映射到NISQ硬件。我们提出了一个六阶段的量子程序生命周期模型匹配的改进HQCC模型,这是由一个运行时系统实现。我们还提出了Quingo编程语言,这是一种外部特定领域的语言,突出了基于定时器的定时控制和不透明操作定义,可用于描述量子实验。我们相信,Quingo框架有助于澄清未来HQC CC系统设计中的关键技术。
2021-08-07 cs.PL quant-ph
Hierarchical Memory Management for Mutable State
众所周知,现代函数式程序设计语言自然适合并行编程。然而,使用函数式语言实现有效的并行性仍然很困难。也许最重要的原因是它们缺乏对有效的就地更新的支持,即,变异,这对于并行算法和运行时系统服务(例如,编译器和同步原语)来执行它们。在本文中,我们提出了在并行函数式语言的有效变异技术。为此,我们将内存管理器与线程调度器相结合,以使读取和更新嵌套线程分配的数据变得高效。我们描述了我们的技术背后的关键算法,在MLton标准ML编译器中实现它们,并提出了一个实证评估。我们的实验表明,该方法表现良好,显着提高效率比现有的函数式语言实现。
2018-02-18 cs.DC cs.PL
Fractional Types: Expressive and Safe Space Management for Ancilla Bits
在可逆计算中,空间的管理受到两大类约束。首先,与通用计算一样,每个分配都必须与匹配的解分配配对。其次,只有当空间的内容从分配时恢复到初始值时,空间才能安全地解除分配。一般来说,现有技术提供了有限的部分解决方案,其通过施加堆栈规程并通过将第二约束留给程序员的断言来解决第一约束。我们提出了一种新的方法,基于分数类型的想法。作为一个简单直观的示例,分配一个初始化为$\texttt{false}$的新布尔值也会创建一个值$1/{\texttt{false}}$,该值可被视为专门回收且仅回收包含值$\texttt{false}$的存储的垃圾回收(GC)进程。这个GC流程是一个一流的实体,可以被操作、分解成更小的流程并与其他GC流程组合。我们形式化这个想法的上下文中的可逆的语言建立在类型同构,证明其基本的正确性,并说明其表现力使用各种各样的例子。开发得到了完全正式的Agda实施的支持。
2020-02-17 cs.LO cs.PL
obliv-clang: Real-World Oblivious Programming in C++
Tsinghua University(清华大学);Shanghai Qi Zhi Institute(上海人工智能实验室)
提出 obliv-clang 编译时检查工具,通过设计规则并证明其正确性,支持 C++ 复杂特性(如任意嵌套指针),以最小开销生成高性能二进制,防止侧信道泄露。
2026-06-16 cs.CR cs.PL
An Algebra of Synchronous Scheduling Interfaces
在本文中,我们提出了一个代数的同步调度接口,它结合了布尔代数的逻辑和功能行为的最小最大加算术量化的非功能方面的同步接口的表现力。接口理论起源于直觉模态逻辑的可实现性解释(也称为Curry-Howard-Isomorphism或Propositions-as-types principle)。由此产生的代数接口类型的目的是提供一个通用的设置指定类型导向和成分分析的最坏情况下的调度界限。它涵盖了并发、多处理或多线程执行下的同步控制流,并允许对支持各种抽象的分析的准确性和覆盖范围进行精确的陈述。本文通过网络流问题、最短路径问题、任务调度问题和同步程序设计中的最坏情况反应时间问题的实例说明了该代数的表达能力。
2011-01-25 cs.LO cs.PF cs.PL
Effectiveness of Annotation-Based Static Type Inference
静态类型系统的好处是众所周知的:它们提供了在运行时不会发生类型错误的保证,并且本质上,推断类型充当了函数如何调用的文档。另一方面,许多类型系统不得不限制语言的表达能力,因为一般来说,给定的程序在类型方面是否正确是不可判定的。到目前为止还没有解决的另一个问题是,对于逻辑程序设计语言,如Prolog,如果没有额外的注释,就不可能区分预期的和非预期的失败,更糟糕的是,不可能区分预期的和非预期的成功。在本文中,我们将详细阐述和讨论上述问题。作为替代方案,我们提出了一个静态类型分析,这是基于plspec。而不是确保完全的类型安全,我们的目标是静态识别类型错误的最大努力的基础上,而不限制Prolog程序的表达能力。最后,我们评估我们的方法在现实世界中的SWI社区包和一个大型项目实现模型检查器的代码。
2020-08-28 cs.LO cs.PL
Solving Novel Program Synthesis Problems with Genetic Programming using Parametric Polymorphism
本文通过实验探索 CBGP 对泛型数据类型、高阶函数和多态签名的支持,证明其能求解其他 GP 系统无法表示的新颖程序合成问题。
2023-06-08 cs.NE cs.PL
Object-Spatial Programming
本文提出对象-空间编程(OSP)模型,以拓扑感知 archetype 显式表达空间结构与遍历,从而提升表达力并支持局部性、并行与分布优化。
2025-06-07 cs.MA cs.PL cs.SE