Choreographies are global descriptions of interactions among concurrent components, most notably used in the settings of verification and synthesis of correct-by-construction software. They require a top-down approach: programmers first write choreographies, and then use them to verify or synthesize their programs. However, most software does not come with choreographies yet, which prevents their application. To attack this problem, previous work investigated choreography extraction, which automatically constructs a choreography that describes the behaviour of a given set of programs or protocol specifications. We propose a new extraction methodology that improves on the state of the art: we can deal with programs that are equipped with state and internal computation and time complexity is dramatically better. We also implement this theory and show that, in spite of its theoretical exponential complexity, it is usable in practice. We discuss the data structures needed for an efficient implementation, introduce some optimisations, and perform a systematic practical evaluation.
翻译:舞蹈是同步组件相互作用的全球描述, 最显著的是用于校正软件的核查和合成环境中。 它们需要一种自上而下的方法: 程序员先写舞蹈编程, 然后用它们来核查或合成程序。 但是, 大多数软件并不带有舞蹈编程, 却阻止了它们的应用。 为了解决这个问题, 先前调查舞蹈抽取的工作是自动构造舞蹈结构, 描述一套特定程序或协议规格的行为。 我们建议一种新的提炼方法, 改进工艺状态: 我们可以处理装备有州和内部计算和时间复杂性的程序, 并且要大大改进时间复杂性。 我们还执行这一理论, 并表明尽管理论上的指数复杂, 但它在实践上是有用的。 我们讨论高效实施所需的数据结构, 引入一些优化, 并进行系统化的实际评估 。