Computer Science > Programming Languages
[Submitted on 16 Apr 2010 (this version), latest version 30 Dec 2010 (v2)]
Title:Refinement type inference via abstract interpretation
View PDFAbstract:Refinement Types are a promising approach for checking behavioral properties of programs written using advanced language features like higher-order functions, parametric polymorphism and recursive datatypes. The main limitation of refinement type systems to date is the requirement that the programmer provides the types of all functions, after which the type system can check the types and hence, verify the program. In this paper, we show how to automatically infer refinement types, using existing abstract interpretation tools for imperative programs. In particular, we demonstrate that the problem of refinement type inference can be reduced to that of computing invariants of simple, first-order imperative programs without recursive datatypes. As a result, our reduction shows that any of the wide variety of abstract interpretation techniques developed for imperative programs, such as polyhedra, counterexample guided predicate abstraction and refinement, or Craig interpolation, can be directly applied to verify behavioral properties of modern software in a fully automatic manner.
Submission history
From: Rupak Majumdar [view email][v1] Fri, 16 Apr 2010 17:01:27 UTC (49 KB)
[v2] Thu, 30 Dec 2010 14:41:52 UTC (49 KB)
References & Citations
Bibliographic and Citation Tools
Bibliographic Explorer (What is the Explorer?)
Litmaps (What is Litmaps?)
scite Smart Citations (What are Smart Citations?)
Code, Data and Media Associated with this Article
CatalyzeX Code Finder for Papers (What is CatalyzeX?)
DagsHub (What is DagsHub?)
Gotit.pub (What is GotitPub?)
Papers with Code (What is Papers with Code?)
ScienceCast (What is ScienceCast?)
Demos
Recommenders and Search Tools
Influence Flower (What are Influence Flowers?)
Connected Papers (What is Connected Papers?)
CORE Recommender (What is CORE?)
arXivLabs: experimental projects with community collaborators
arXivLabs is a framework that allows collaborators to develop and share new arXiv features directly on our website.
Both individuals and organizations that work with arXivLabs have embraced and accepted our values of openness, community, excellence, and user data privacy. arXiv is committed to these values and only works with partners that adhere to them.
Have an idea for a project that will add value for arXiv's community? Learn more about arXivLabs.