Choreographic Programming: a Semantic Approach
FORM, University of Southern Denmark(南丹麦大学 FORM)
本文针对编排式编程中端点投影定理证明困难的问题,通过设计基于进程局部视图的编排新语义及相关预序关系,给出了端点投影定理的模块化证明,使其更简单并增进了对编排式编程理论的理解。
2026-07-28 cs.PL
HasChor: Functional Choreographic Programming for All (Functional Pearl)
本研究提出一种基于单子的函数式编排编程新模型,支持高阶与位置多态编排特性,并在Haskell库HasChor中实现,让普通Haskell开发者可便捷使用编排编程,且库实现简洁精炼。
2023-07-19 cs.PL
Ozone: Fully Out-of-Order Choreographies
针对编排式编程中进程固定顺序执行导致高延迟且乱序易引发通信完整性违规的问题,提出保证无CIVs和死锁的乱序编排模型,并在Choral语言中实现对应API,验证其可降延迟提吞吐。
2024-07-12 cs.PL
MultiChor: Census Polymorphic Choreographic Programming with Multiply Located Values
针对分布式并发编程的死锁检测与推理难题,提出Haskell库MultiChor,无需额外通信处理选择知识,且支持参与者数量多态的编排表达。
2024-06-19 cs.DC cs.PL
Step in Tine: Forking Processes in Functional Choreographies
University of Wisconsin–Madison(威斯康星大学麦迪逊分校);University at Buffalo, SUNY(纽约州立大学布法罗分校)
本文提出函数式编舞语言$λ{\pitchfork}$,通过引入进程分叉原语,在保证无死锁的同时支持动态进程创建、任务分配和通信,应用于负载均衡和并行分治等场景。
2026-05-21 cs.PL
Mechanizing Choreographic Programs and Hoare Logic with State Transformers
TU Darmstadt(达姆施塔特工业大学);University of St. Gallen(圣加仑大学);National Research Center for Applied Cybersecurity ATHENE(国家应用网络安全研究中心 ATHENE)
该研究将状态变换子模型引入编排编程,在Lean中机械化实现支持多种通信与方法的编排语言,证明了端点投影等性质及霍尔逻辑,规避了绑定替换问题以简化机械化。
2026-08-18 cs.PL
Toward Verified Library-Level Choreographic Programming with Algebraic Effects
针对库级编排编程缺乏坚实理论基础的问题,提出用代数效应建模该范式的方法,实现了基于Agda的原型框架,并正推进其正确性证明工作。
2024-07-09 cs.PL
Reasoning about Choreographic Programs
本文针对编排编程领域其他性质验证研究不足的问题,提出一种Hoare风格的编排行为推理逻辑,证明其可靠性与完备性,且编排的功能正确性性质可传递至编译后的分布式实现。
2023-04-27 cs.LO cs.PL
Choreographies as Macros
本文利用Racket的宏系统构建新编舞语言Choret,以简化并发编程中的发送接收配对,避免死锁,并复用基础设施提升功能与正确性。
2025-05-27 cs.DC cs.PL
Real-World Choreographic Programming: Full-Duplex Asynchrony and Interoperability
本文首次用编排式编程语言Choral实现IRC协议,验证了该范式在真实世界协议中的可行性,并通过子类型化扩展解决选择通信的静态检测问题,实现与第三方软件的互操作性。
2023-12-29 cs.PL
Chorex: Restartable, Language-Integrated Choreographies
University of Utah(犹他大学)
Chorex是一种通过元编程实现编舞编程的语言,支持可重启的演员,并通过检查点实现与宿主语言的紧密集成。
2025-11-19 cs.PL
On Asynchrony and Choreographies
编排程序设计是并发软件开发的一个范例,其中从语法上防止死锁。然而,编排语言通常是同步的,而许多现实世界的系统具有异步通信。以前的尝试丰富舞蹈与ad-hoc结构依赖于ad-hoc结构,其充分性只是非正式地争论。在这项工作中,我们正式的属性,一个异步的语义编排应该有:消息可以发送没有预定的接收器准备好,所有发送的消息最终被接收。我们探讨如何乱序执行,用于建模并发编排,可以利用赋予编排与异步语义。我们的方法满足我们确定的属性。我们展示了我们的开发如何产生一个愉快的对应基于FIFO的异步消息传递,在一个过程演算建模,并讨论它如何可以通过更复杂的编排模型。
2017-11-30 cs.PL
Connectors meet Choreographies
我们提出了Cho-Reo-graphics(CR),一个新的语言模型,统一了两个强大的编程范式的并发软件的基础上通信过程:Choreographic编程和外生协调。在CR中,程序员使用编排来指定进程之间所需的通信,并定义通信应该如何通过作为约束自动机给出的连接器来具体地动画化(例如,同步屏障和异步多播)。CR是第一个可以自由混合不同通信语义(由连接器确定)的编排演算;由于连接器是用户定义的,CR还支持许多以前无法用于编排的通信语义。我们开发了一个静态分析,保证在CR的编排和用户定义的连接器是兼容的,定义一个编译器从编排到基于连接器的进程演算,并证明了兼容性保证死锁自由的编译过程实现。
2018-04-24 cs.PL
Mech: Mechanised Choreographic Programming
University of Southern Denmark(南丹麦大学)
研究针对编排编程,提出在Lean 4中的新机械化Mech,解决现有问题。核心方法是制定新语义、揭示代数定律。主要贡献是证明EPP相关特性,推导投影网络相关属性,形成最广泛的CP机械化理论。
2026-07-17 cs.PL
Portable, Efficient, and Practical Library-Level Choreographic Programming
针对库级编排编程在可移植性、效率和实用性上的缺陷,提出EPP-as-DI与编排飞地两项新技术,并在Rust语言的首个CP库ChoRus中实现,显著提升了可用性与性能。
2023-11-20 cs.PL
Certifying Choreography Compilation
编排编程是开发并发和分布式系统的一种范式,其中程序是从全局角度定义通信进程应该执行的计算和交互的编排。编排编译将编排转换为流程行为的本地定义,作为流程演算中的术语给出。证明编排编译的正确性是具有挑战性和容易出错的,因为它需要在不同的范式(全局交互与本地操作)中关联语言,并处理证明案例的组合爆炸。我们提出了第一个认证程序的编排编译的非平凡的舞蹈语言支持递归。
2021-08-26 cs.LO cs.PL
A Theory of Available-by-Design Communicating Systems
Choreographic programming是一种编程语言设计方法,用于驱动分布式系统中的错误安全协议开发。从全局规范(编排)开始,可以生成分布式实现。这种自顶向下方法的优点在于设计的正确性原则,其中从编排生成的实现(端点)根据编排中描述的严格控制流进行操作,并且不会死锁。出于网络物理系统(CPS)中具有挑战性的场景,我们研究如何编排编程可以满足动态基础设施,并不是所有的端点总是可用的。我们介绍了全球质量演算($GC_q$),舞蹈编程的一个变种,用于描述通信系统中涉及的一些组件可能会失败。GCq具有用于多方、部分和集体通信的新型运营商。本文研究了故障感知通信的本质:首先,我们介绍了$GC_q$的语法,语义和它的使用示例。编排中的失败和集体通信之间的相互作用可能导致编排由于缺乏资源而无法进行。在我们的第二个贡献,我们提供了一个类型系统,确保编排可以实现,尽管不断变化的可用性条件。$GC_q$中的规范指导分布式端点在与全局(会话)类型配对时的实现。我们的第三个贡献提供了一个端点投影为基础的方法生成故障感知分布式进程。我们展示了投影的正确性,以及具有可用性考虑的良好类型的编排享受进步。
2016-11-17 cs.PL
Formalising a Turing-Complete Choreographic Language in Coq
舞蹈语言的理论通常包括许多复杂的结果,这些结果是由结构归纳证明的。大量的案例和其中一些微妙的细节导致了漫长的审查过程,偶尔也会在出版的证明中发现错误。在这项工作中,我们采取了一个公开的证明图灵完备性的舞蹈语言和形式化的Coq。我们的发展包括形式化的编排语言和它的基本属性,Kleene的理论部分递归函数,这些功能的编码编排,并证明这种编码正确。通过这一努力,我们表明,定理证明可以是一个非常有用的工具,在舞蹈语言领域:除了增加的信心程度,我们从一个机械化的证明,形式化的过程使我们显着简化的基础理论。我们的研究结果提供了一个基础,为未来的形式化发展的舞蹈语言。
2021-02-04 cs.LO cs.PL
Type-Based Enforcement of Non-Interference for Choreographic Programming
Inria Paris(巴黎国家信息与自动化研究所);Università di Bologna(博洛尼亚大学);Inria Sophia Antipolis(索菲亚安提波利斯国家信息与自动化研究所);FORM, University of Southern Denmark(南丹麦大学 FORM)
本文提出了一种参数化策略类型系统,用于在舞剧编程中强制执行非干扰,防止高安全数据泄露,并通过程序计数器纪律处理显式和隐式流。
2026-02-25 cs.CR cs.DC cs.PL
A Formal Theory of Choreographic Programming
编排编程是一种从全局角度为分布式系统编写协调计划的范例,可以自动生成正确的分布式实现。舞蹈编排理论通常包括一些复杂的结果,证明了结构归纳。大量的案件和微妙的细节,在一些这些证明已导致重要的错误被发现在出版的作品。在这项工作中,我们正式理论的舞蹈程序设计语言在Coq。我们的发展包括这种语言的基本属性,证明其图灵完备性,编译过程的过程语言,和操作特性的正确性,这个过程。我们的形式化经验说明了使用定理证明器的好处:我们从机械化证明中获得了额外的信心,并大大简化了基础理论。我们的研究结果提供了一个基础,为未来的形式化发展的舞蹈语言。
2022-09-05 cs.LO cs.PL
A Promising Future: Omission Failures in Choreographic Programming
针对分布式系统中的发送、接收与网络遗漏故障,提出支持独立恢复策略和投递保证静态检查的编排式编程理论,并在 Choral 中实现验证。
2025-03-17 cs.PL
Now It Compiles! Certified Automatic Repair of Uncompilable Protocols
Choreographic Programming是一种范式,开发人员编写通信系统的全局规范(称为Choreography),然后自动编译正确的分布式实现。不幸的是,由于与称为选择知识的协议属性相关的问题,可能会编写无法编译的编排。这迫使程序员手动推理可能与他们正在编写的协议正交的实现细节。修正是一个自动修复不可编译编排的过程。我们提出了一个正式的文献修正案,建立在现有的形式化编排节目。然而,在形式化这个过程的预期属性的过程中,我们发现了一个微妙的反例,使最初发表和同行评议的纸笔理论无效。我们将讨论如何使用定理证明器使我们既找到问题,并说明和证明一个正确的制定的性质的修正案。
2023-02-28 cs.LO cs.PL
Dynamic Choreographies: Theory And Implementation
对分布式应用程序进行无通信死锁和竞争条件的编程是复杂的。当应用程序在运行时更新时,保留这些属性就更难了。我们提出了一个编排的方法编程可更新的,分布式应用程序。我们定义了一个编排语言,称为动态面向交互的编排(AIOC),它允许程序员指定,从全局的角度来看,应用程序的哪些部分可以更新。在运行时,这些部分可能被来自应用程序外部的新AIOC片段替换。AIOC程序被编译,用称为动态面向过程的编排(APOC)的过程级语言为每个参与者生成代码。我们证明,APOC分布式应用程序生成的AIOC规范是死锁自由和种族自由,这些属性也举行任何运行时更新后。我们将上述理论模型实例化为一个名为Adaptable Interaction-Oriented Choreographies in Jolie(AIOCJ)的编程框架,该框架包括一个集成开发环境,一个从AIOCs扩展到分布式Jolie程序的编译器,以及一个支持其执行的运行时环境。
2017-04-06 cs.LO cs.PL
Qoreo: Choreographic Programming for Quantum Distributed Systems
University of Vermont(佛蒙特大学)
研究针对分布式量子系统编程难题,提出Qoreo语言,它以全局编排表达协议,含局部量子语言等。证明编排类型安全,定义端点投影,其元理论机械化,还提供提取管道用于模拟与部署。
2026-07-23 cs.PL quant-ph
We Know I Know You Know; Choreographic Programming With Multicast and Multiply Located Values
针对传统编排编程需插入select操作保证通信一致的问题,提出支持多位置值与多播的新型编排语言He-Lambda-Small,通过条件判定值多位置化替代select,类型良好即可保证无死锁,可简洁编码复杂通信模式。
2024-03-12 cs.DC cs.PL
Towards a Function-as-a-Service Choreographic Programming Language: Examples and Applications
本文提出面向无服务器 FaaS 的编排式编程语言 FaaSChal,通过示例说明投影等特性,并利用编排提取函数基础设施关系以自动生成兼顾用户约束与低延迟的策略。
2024-06-13 cs.DC cs.PL
From Infinity to Choreographies: Extraction for Unbounded Systems
编排是分布式系统的形式化描述,它关注参与者的通信方式。虽然它们对分析协议很有用,但实际上系统是通过指定每个参与者的行为直接编写的。这就产生了对编排提取的需求:获得一个忠实地描述分布式协议中所有参与者的集体行为的编排的过程。以前的工作已经解决了这个问题的系统与预定义的,有限数量的参与者。在这项工作中,我们将展示如何从系统描述中提取编排的参与者的总数是未知的和无界的,由于在运行时产生新的进程的能力。这种扩展是具有挑战性的,因为以前的算法严重依赖于执行期间网络的可能状态集是有限的。
2022-07-18 cs.PL
Multiparty Motion Coordination: From Choreographies to Robotics Programs
Max Planck Institute for Software Systems(马克斯·普朗克软件系统研究所);Imperial College London(帝国理工学院)
我们提出了一个复杂的多机器人协调规划的编程模型和类型的纪律。我们的模型包括同步通过消息传递和连续时间动态运动原语在物理空间。我们指定\emph{continuous-time motion primitives}在一个假设保证逻辑,确保运动原语的兼容性以及碰撞自由。我们指定的全球行为的程序中的\emph{choreographic}类型的系统,扩展多方会话类型与联合执行的运动原语,预测的改进,以及一个\emph{separating conjunction},允许推理的子集相互作用的机器人。我们描述了一个概念,\emph{well-formedness}的全球类型,确保运动和通信可以正确同步,并提供检查格式良好,投影类型,和本地类型检查的算法。良好类型的程序是\emph{communication safe}、\emph{motion compatible}和\emph{collision free}。我们的类型系统提供了一种组合方法来确保这些属性。我们已经在ROS框架之上实现了我们的模型。这使我们能够在商业和定制机器人硬件平台上编程多机器人协调场景。我们通过案例研究表明,我们可以建模和静态验证相当复杂的动作,涉及多个机械手和移动机器人-这样的例子是超出了以前的方法的范围。
2020-10-12 cs.PL cs.RO
A Language for the Declarative Composition of Concurrent Protocols
最近对现实世界并发和分布式系统中的错误的研究发现,虽然单个协议的实现往往是健壮的,但多个协议的组成及其与内部计算的相互作用是大多数错误的罪魁祸首。多方会话类型和编排编程是基于通信流的全局描述开发按构造正确的并发和分布式软件的方法论。然而,协议的组成要么是有限的,要么是未经检查的。受这两种方法的启发,在这项工作中,我们提出了一个新的语言模型的协议,称为程序编排(PC)的安全组成。PC中的协议是过程,由执行过程参数化。过程使用全局描述以声明方式定义通信,程序是通过调用和组合这些过程来编写的。然后,根据流程模型的实现被机械地合成,保证正确性和无死锁。我们研究了PC机在同步和异步通信的设置,并说明其表现力与一些有代表性的例子。
2016-10-24 cs.PL
A Probabilistic Choreography Language for PRISM
IT University of Copenhagen(哥本哈根信息技术大学);TU Darmstadt(达姆施塔特工业大学)
本文提出一种基于PRISM的概率编舞语言,用于建模和分析并发系统,通过概率语义和形式编码提升系统可靠性与可验证性。
2026-10-05 cs.LO cs.PL