当前位置: X-MOL 学术J. Autom. Reason. › 论文详情
Our official English website, www.x-mol.net, welcomes your feedback! (Note: you will need to create a separate account there.)
ICE-Based Refinement Type Discovery for Higher-Order Functional Programs
Journal of Automated Reasoning ( IF 0.9 ) Pub Date : 2020-08-01 , DOI: 10.1007/s10817-020-09571-y
Adrien Champion , Tomoya Chiba , Naoki Kobayashi , Ryosuke Sato

We propose a method for automatically finding refinement types of higher-order function programs. Our method is an extension of the Ice framework of Garg et al. for finding invariants. In addition to the usual positive and negative samples in machine learning, their Ice framework uses implication constraints, which consist of pairs (x, y) such that if x satisfies an invariant, so does y. From these constraints, Ice infers inductive invariants effectively. We observe that the implication constraints in the original Ice framework are not suitable for finding invariants of recursive functions with multiple function calls. We thus generalize the implication constraints to those of the form ({x1,⋯,xk},y)\documentclass[12pt]{minimal} \usepackage{amsmath} \usepackage{wasysym} \usepackage{amsfonts} \usepackage{amssymb} \usepackage{amsbsy} \usepackage{mathrsfs} \usepackage{upgreek} \setlength{\oddsidemargin}{-69pt} \begin{document}$$(\{x_1,\dots ,x_k\}, y)$$\end{document}, which means that if all of x1,⋯,xk\documentclass[12pt]{minimal} \usepackage{amsmath} \usepackage{wasysym} \usepackage{amsfonts} \usepackage{amssymb} \usepackage{amsbsy} \usepackage{mathrsfs} \usepackage{upgreek} \setlength{\oddsidemargin}{-69pt} \begin{document}$$x_1,\dots ,x_k$$\end{document} satisfy an invariant, so does y. We extend their algorithms for inferring likely invariants from samples, verifying the inferred invariants, and generating new samples. We have implemented our method and confirmed its effectiveness through experiments.

中文翻译:

用于高阶函数程序的基于 ICE 的细化类型发现

我们提出了一种自动查找高阶函数程序的细化类型的方法。我们的方法是 Garg 等人的 Ice 框架的扩展。用于寻找不变量。除了机器学习中常见的正负样本外,他们的 Ice 框架还使用了蕴涵约束,它由对 (x, y) 组成,这样如果 x 满足不变量,y 也满足。根据这些约束,Ice 可以有效地推断出归纳不变量。我们观察到原始 Ice 框架中的蕴涵约束不适合寻找具有多个函数调用的递归函数的不变量。因此,我们将蕴涵约束推广到形式为 ({x1,⋯,xk}, y)\documentclass[12pt]{minimal} \usepackage{amsmath} \usepackage{wasysym} \usepackage{amsfonts} \usepackage{amssymb} \usepackage{amsbsy} \usepackage{mathrsfs} \usepackage{upgreek} \setlength{\oddsidemargin }{-69pt} \begin{document}$$(\{x_1,\dots ,x_k\}, y)$$\end{document},这意味着如果所有的 x1,⋯,xk\documentclass[12pt] {minimal} \usepackage{amsmath} \usepackage{wasysym} \usepackage{amsfonts} \usepackage{amssymb} \usepackage{amsbsy} \usepackage{mathrsfs} \usepackage{upgreek} \setlength{\oddsidemargin}{-69pt} \begin {document}$$x_1,\dots ,x_k$$\end{document} 满足一个不变量,y 也是如此。我们扩展了他们的算法,用于从样本中推断出可能的不变量、验证推断出的不变量并生成新样本。我们已经实施了我们的方法并通过实验证实了其有效性。
更新日期:2020-08-01
down
wechat
bug