一句话:提出参数化精化类型系统,用抽象解释刻画数据流语义并导出推断算法,统一并推广现有方法。
精化类型支持函数式程序的轻量级验证。现有静态推断常归约为约束Horn子句求解,但该归约本身抽象程序语义,影响精度。本文以抽象解释视角整体研究精化类型推断,提出一个参数化精化类型系统:参数可选择类型精化的抽象域及上下文敏感控制流的跟踪程度;并通过对函数式程序的新数据流语义做抽象解释,导出参数化推断算法。作者证明系统相对所构造抽象语义是可靠且完备的,揭示了推断中的关键抽象步骤,精度与效率权衡由参数控制,Liquid types等现有系统可视为具体实例。作者实现原型,评估八边形、多面体等新实例,效果优于现有工具,表明可系统构造稳健精确的推断算法。
Refinement types enable lightweight verification of functional programs. Algorithms for statically inferring refinement types typically work by reduction to solving systems of constrained Horn clauses extracted from typing derivations. An example is Liquid type inference, which solves the extracted constraints using predicate abstraction. However, the reduction to constraint solving in itself already signifies an abstraction of the program semantics that affects the precision of the overall static analysis. To better understand this issue, we study the type inference problem in its entirety through the lens of abstract interpretation. We propose a new refinement type system that is parametric with the choice of the abstract domain of type refinements as well as the degree to which it tracks context-sensitive control flow information. We then derive an accompanying parametric inference algorithm as an abstract interpretation of a novel data flow semantics of functional programs. We further show that the type system is sound and complete with respect to the constructed abstract semantics. Our theoretical development reveals the key abstraction steps inherent in refinement type inference algorithms. The trade-off between precision and efficiency of these abstraction steps is controlled by the parameters of the type system. Existing refinement type systems and their respective inference algorithms, such as Liquid types, are captured by concrete parameter instantiations. We have implemented our framework in a prototype tool and evaluated it for a range of new parameter instantiations (e.g., using octagons and polyhedra for expressing type refinements). The tool compares favorably against other existing tools. Our evaluation indicates that our approach can be used to systematically construct new refinement type inference algorithms that are both robust and precise.