Skip to main content

Advertisement

SpringerLink
  • Log in
Book cover

European Symposium on Programming

ESOP 2013: Programming Languages and Systems pp 209–228Cite as

  1. Home
  2. Programming Languages and Systems
  3. Conference paper
Abstract Refinement Types

Abstract Refinement Types

  • Niki Vazou18,
  • Patrick M. Rondon19 &
  • Ranjit Jhala18 
  • Conference paper
  • 2129 Accesses

  • 60 Citations

  • 1 Altmetric

Part of the Lecture Notes in Computer Science book series (LNPSE,volume 7792)

Abstract

We present abstract refinement types which enable quantification over the refinements of data- and function-types. Our key insight is that we can avail of quantification while preserving SMT-based decidability, simply by encoding refinement parameters as uninterpreted propositions within the refinement logic. We illustrate how this mechanism yields a variety of sophisticated means for reasoning about programs, including: parametric refinements for reasoning with type classes, index-dependent refinements for reasoning about key-value maps, recursive refinements for reasoning about recursive data types, and inductive refinements for reasoning about higher-order traversal routines. We have implemented our approach in a refinement type checker for Haskell and present experiments using our tool to verify correctness invariants of various programs.

Keywords

  • Type Check
  • Parametric Invariant
  • Input List
  • Typing Judgment
  • Predicate Abstraction

These keywords were added by machine and not by the authors. This process is experimental and the keywords may be updated as the learning algorithm improves.

Download conference paper PDF

References

  1. Belo, J.F., Greenberg, M., Igarashi, A., Pierce, B.C.: Polymorphic Contracts. In: Barthe, G. (ed.) ESOP 2011. LNCS, vol. 6602, pp. 18–37. Springer, Heidelberg (2011)

    CrossRef  Google Scholar 

  2. Bengtson, J., Bhargavan, K., Fournet, C., Gordon, A.D., Maffeis, S.: Refinement types for secure implementations. ACM TOPLAS 33(2), 8 (2011)

    CrossRef  Google Scholar 

  3. Bertot, Y., Castéran, P.: Interactive Theorem Proving and Program Development. Coq’Art: The Calculus of Inductive Constructions. Texts in Theoretical Computer Science. Springer (2004)

    Google Scholar 

  4. Constable, R.L.: Implementing Mathematics with the Nuprl Proof Development System. Prentice-Hall (1986)

    Google Scholar 

  5. Cousot, P., Cousot, R., Logozzo, F.: A parametric segmentation functor for fully automatic and scalable array content analysis. In: POPL, pp. 105–118 (2011)

    Google Scholar 

  6. de Moura, L., Bjørner, N.: Z3: An Efficient SMT Solver. In: Ramakrishnan, C.R., Rehof, J. (eds.) TACAS 2008. LNCS, vol. 4963, pp. 337–340. Springer, Heidelberg (2008)

    CrossRef  Google Scholar 

  7. Dunfield, J.: A Unified System of Type Refinements. PhD thesis, Carnegie Mellon University, Pittsburgh, PA, USA (2007)

    Google Scholar 

  8. Findler, R.B., Felleisen, M.: Contracts for higher-order functions. In: ICFP, pp. 48–59 (2002)

    Google Scholar 

  9. Flanagan, C., Joshi, R., Leino, K.R.M.: Annotation inference for modular checkers. Information Processing Letters (2001)

    Google Scholar 

  10. Fournet, C., Kohlweiss, M., Strub, P.-Y.: Modular code-based cryptographic verification. In: CCS, pp. 341–350 (2011)

    Google Scholar 

  11. Freeman, T., Pfenning, F.: Refinement types for ML. In: PLDI (1991)

    Google Scholar 

  12. Gopan, D., Reps, T.W., Sagiv, S.: A framework for numeric analysis of array operations. In: POPL, pp. 338–350 (2005)

    Google Scholar 

  13. Graf, S., Saïdi, H.: Construction of Abstract State Graphs with PVS. In: Grumberg, O. (ed.) CAV 1997. LNCS, vol. 1254, pp. 72–83. Springer, Heidelberg (1997)

    CrossRef  Google Scholar 

  14. Guha, A., Fredrikson, M., Livshits, B., Swamy, N.: Verified security for browser extensions. In: IEEE Symposium on Security and Privacy, pp. 115–130 (2011)

    Google Scholar 

  15. Jhala, R., McMillan, K.L.: Array Abstractions from Proofs. In: Damm, W., Hermanns, H. (eds.) CAV 2007. LNCS, vol. 4590, pp. 193–206. Springer, Heidelberg (2007)

    CrossRef  Google Scholar 

  16. Kawaguchi, M., Rondon, P., Jhala, R.: Type-based data structure verification. In: PLDI, pp. 304–315 (2009)

    Google Scholar 

  17. Knowles, K.W., Flanagan, C.: Hybrid type checking. ACM TOPLAS 32(2) (2010)

    Google Scholar 

  18. Meyer, B.: Eiffel: the language. Prentice-Hall, Inc., Upper Saddle River (1992)

    MATH  Google Scholar 

  19. Nelson, G.: Techniques for program verification. Technical Report CSL81-10, Xerox Palo Alto Research Center (1981)

    Google Scholar 

  20. Norell, U.: Towards a practical programming language based on dependent type theory. PhD thesis, Chalmers, SE-412 96 Göteborg, Sweden (September 2007)

    Google Scholar 

  21. Ou, X., Tan, G., Mandelbaum, Y., Walker, D.: Dynamic Typing with Dependent Types. In: Levy, J.-J., Mayr, E.W., Mitchell, J.C. (eds.) TCS 2004. IFIP, vol. 155, pp. 437–450. Springer, Boston (2004)

    Google Scholar 

  22. Pierce, B.C.: Types and Programming Languages. MIT Press (2002)

    Google Scholar 

  23. Rondon, P., Kawaguchi, M., Jhala, R.: Liquid types. In: PLDI (2008)

    Google Scholar 

  24. Sheard, T.: Type-level computation using narrowing in omega. In: PLPV (2006)

    Google Scholar 

  25. Swamy, N., Chen, J., Fournet, C., Strub, P.-Y., Bhargavan, K., Yang, J.: Secure distributed programming with value-dependent types. In: ICFP, pp. 266–278 (2011)

    Google Scholar 

  26. Vytiniotis, D., Peyton Jones, S.L., Magalhães, J.: Equality proofs and deferred type errors: a compiler pearl. In: ICFP, pp. 341–352 (2012)

    Google Scholar 

  27. Xi, H., Pfenning, F.: Eliminating array bound checking through dependent types. In: PLDI (1998)

    Google Scholar 

Download references

Author information

Authors and Affiliations

  1. UC San Diego, USA

    Niki Vazou & Ranjit Jhala

  2. Google, USA

    Patrick M. Rondon

Authors
  1. Niki Vazou
    View author publications

    You can also search for this author in PubMed Google Scholar

  2. Patrick M. Rondon
    View author publications

    You can also search for this author in PubMed Google Scholar

  3. Ranjit Jhala
    View author publications

    You can also search for this author in PubMed Google Scholar

Editor information

Editors and Affiliations

  1. College of Computer Science, Northeastern University, 02115, Boston, MA, USA

    Matthias Felleisen

  2. Department of Computing, Imperial College, SW7 2AZ, London, UK

    Philippa Gardner

Rights and permissions

Reprints and Permissions

Copyright information

© 2013 Springer-Verlag Berlin Heidelberg

About this paper

Cite this paper

Vazou, N., Rondon, P.M., Jhala, R. (2013). Abstract Refinement Types. In: Felleisen, M., Gardner, P. (eds) Programming Languages and Systems. ESOP 2013. Lecture Notes in Computer Science, vol 7792. Springer, Berlin, Heidelberg. https://doi.org/10.1007/978-3-642-37036-6_13

Download citation

  • .RIS
  • .ENW
  • .BIB
  • DOI: https://doi.org/10.1007/978-3-642-37036-6_13

  • Publisher Name: Springer, Berlin, Heidelberg

  • Print ISBN: 978-3-642-37035-9

  • Online ISBN: 978-3-642-37036-6

  • eBook Packages: Computer ScienceComputer Science (R0)

Share this paper

Anyone you share the following link with will be able to read this content:

Sorry, a shareable link is not currently available for this article.

Provided by the Springer Nature SharedIt content-sharing initiative

Over 10 million scientific documents at your fingertips

Switch Edition
  • Academic Edition
  • Corporate Edition
  • Home
  • Impressum
  • Legal information
  • Privacy statement
  • California Privacy Statement
  • How we use cookies
  • Manage cookies/Do not sell my data
  • Accessibility
  • FAQ
  • Contact us
  • Affiliate program

Not logged in - 34.239.173.144

Not affiliated

Springer Nature

© 2023 Springer Nature Switzerland AG. Part of Springer Nature.