The model of asynchronous programming arises in many contexts, from low-level systems software to high-level web programming. We take a language-theoretic perspective and show general decidability and undecidability results for asynchronous programs that capture all known results as well as show decidability of new and important classes. As a main consequence, we show decidability of safety, termination and boundedness verification for higher-order asynchronous programs -- such as OCaml programs using Lwt -- and undecidability of liveness verification already for order-2 asynchronous programs. We show that under mild assumptions, surprisingly, safety and termination verification of asynchronous programs with handlers from a language class are decidable iff emptiness is decidable for the underlying language class. Moreover, we show that configuration reachability and liveness (fair termination) verification are equivalent, and decidability of these problems implies decidability of the well-known "equal-letters" problem on languages. Our results close the decidability frontier for asynchronous programs.
翻译:从低层次系统软件到高层次网络程序等许多情况下都产生了无序编程模式,从低层次系统软件到高层次网络程序。我们从语言理论的角度来看待,并显示对非同步程序的一般可归性和不可归并性结果,这种程序既包含所有已知结果,也显示新的和重要类的可归并性。主要结果是,我们展示了对高层次非同步程序的安全性、终止性和约束性核查的可归并性,例如使用 Lwt 的OCaml 程序,以及已经用于顺序-2 同步程序的生存性核查的不可归并性。我们显示,在温和的假设下,对来自语言类处理者的无序程序的安全性和终止性核查是可归并的。此外,我们表明,对基本语言类的可归并性(公正终止)校验的配置性和适性(公正终止)等是相等的,这些问题的可归并意味着语言上众所周知的“等同性”问题的可归并性。我们的结果关闭了与无序程序不归并性边界。