Choreographic programming is a paradigm for writing coordination plans for distributed systems from a global point of view, from which correct-by-construction decentralised implementations can be generated automatically. Theory of choreographies typically includes a number of complex results that are proved by structural induction. The high number of cases and the subtle details in some of these proofs has led to important errors being found in published works. In this work, we formalise the theory of a choreographic programming language in Coq. Our development includes the basic properties of this language, a proof of its Turing completeness, a compilation procedure to a process language, and an operational characterisation of the correctness of this procedure. Our formalisation experience illustrates the benefits of using a theorem prover: we get both an additional degree of confidence from the mechanised proof, and a significant simplification of the underlying theory. Our results offer a foundation for the future formal development of choreographic languages.
翻译:舞蹈编程是从全球角度为分布式系统编写协调计划的范例,可以自动产生按部就班的分散实施。舞蹈编程理论通常包括一些复杂的结果,这些结果通过结构引导得到证明。一些证据中的大量案例和细微细节导致在出版作品中发现重大错误。在这项工作中,我们正式确定了Coq的舞蹈编程语言理论。我们的发展包括了这种语言的基本特性、它的完整性的证明、其图解的完整性的证明、将程序汇编成一种程序语言的汇编程序,以及这一程序正确性的运作特点。我们的正式化经验说明了使用标语证明的好处:我们从机械化的证明中获得了更多程度的信任,并大大简化了基本理论。我们的成果为今后正式发展拼写语言奠定了基础。