Learning refinement types
Learning refinement types
复制标题
学习细化类型
DOI:
10.1145/2784731.2784766
复制
发表时间:
2015
期刊:
影响因子:
--
通讯作者:
S. Jagannathan
中科院分区:
文献类型:
--
作者:
He Zhu;A. Nori;S. Jagannathan
We propose the integration of a random test generation system (capable of discovering program bugs) and a refinement type system (capable of expressing and verifying program invariants), for higher-order functional programs, using a novel lightweight learning algorithm as an effective intermediary between the two. Our approach is based on the well-understood intuition that useful, but difficult to infer, program properties can often be observed from concrete program states generated by tests; these properties act as likely invariants, which if used to refine simple types, can have their validity checked by a refinement type checker. We describe an implementation of our technique for a variety of benchmarks written in ML, and demonstrate its effectiveness in inferring and proving useful invariants for programs that express complex higher-order control and dataflow.