Higher-order recursion schemes are a higher-order analogue of Boolean Programs; they form a natural class of abstractions for functional programs. We present a new, efficient algorithm for checking CTL properties of the trees generated by higher-order recursion schemes, which is an extension of Kobayashi's intersection type-based model checking technique. We show that an implementation of this algorithm, THORS, performs well on a number of small examples and we demonstrate how it can be used to verify liveness properties of OCaml programs. Example properties include statements such as "all opened sockets are eventually closed" and "the lock is held until the file is closed".
翻译:高级顺序递归方案是比布尔程序更高级的类比;它们构成功能程序自然的抽象类别。我们提出了一个新的、有效的算法,用于检查高顺序重现方案产生的树木的CTL特性,这是Kobayashi交叉类型基于模式的模型检查技术的延伸。我们显示,这种算法THORS的运用在许多小例子中表现良好,我们证明如何使用它来核查OCaml程序的生存性特性。例如“所有打开的插座最终关闭”和“锁一直保持到文件关闭为止”。