skip to main content
research-article

Automating relatively complete verification of higher-order functional programs

Published:23 January 2013Publication History
Skip Abstract Section

Abstract

We present an automated approach to relatively completely verifying safety (i.e., reachability) property of higher-order functional programs. Our contribution is two-fold. First, we extend the refinement type system framework employed in the recent work on (incomplete) automated higher-order verification by drawing on the classical work on relatively complete "Hoare logic like" program logic for higher-order procedural languages. Then, by adopting the recently proposed techniques for solving constraints over quantified first-order logic formulas, we develop an automated type inference method for the type system, thereby realizing an automated relatively complete verification of higher-order programs.

Skip Supplemental Material Section

Supplemental Material

r1d1_talk7.mp4

References

  1. L. Augustsson. Cayenne - a language with dependent types. In ICFP, pages 239--250, 1998. Google ScholarGoogle ScholarDigital LibraryDigital Library
  2. C. Barrett and C. Tinelli. CVC3. In CAV, pages 298--302, 2007. Google ScholarGoogle ScholarDigital LibraryDigital Library
  3. E. M. Clarke, O. Grumberg, S. Jha, Y. Lu, and H. Veith. Counterexample-guided abstraction refinement. In CAV, pages 154--169, 2000. Google ScholarGoogle ScholarDigital LibraryDigital Library
  4. M. Colón, S. Sankaranarayanan, and H. Sipma. Linear invariant generation using non-linear constraint solving. In CAV, pages 420--432, 2003.Google ScholarGoogle Scholar
  5. W. Damm and B. Josko. A sound and relatively_ complete Hoarelogic for a language with higher type procedures. Acta Inf., 20:59--101, 1983.Google ScholarGoogle ScholarDigital LibraryDigital Library
  6. S. M. German, E. M. Clarke, and J. Y. Halpern. Reasoning about procedures as parameters. In Logic of Programs, pages 206--220, 1983. Google ScholarGoogle ScholarDigital LibraryDigital Library
  7. S. M. German, E. M. Clarke, and J. Y. Halpern. Reasoning about procedures as parameters in the language L4. Inf. Comput., 83(3):265--359, 1989. Google ScholarGoogle ScholarDigital LibraryDigital Library
  8. A. Goerdt. A Hoare calculus for functions defined by recursion on higher types. In Logic of Programs, pages 106--117, 1985. Google ScholarGoogle ScholarDigital LibraryDigital Library
  9. S. Gulwani, S. Srivastava, and R. Venkatesan. Program analysis as constraint solving. In PLDI, pages 281--292, 2008. Google ScholarGoogle ScholarDigital LibraryDigital Library
  10. C. A. R. Hoare. An axiomatic basis for computer programming. Commun. ACM, 12(10):576--580, 1969. Google ScholarGoogle ScholarDigital LibraryDigital Library
  11. K. Honda, M. Berger, and N. Yoshida. Descriptive and relative completeness of logics for higher-order functions. In ICALP (2), pages 360--371, 2006. Google ScholarGoogle ScholarDigital LibraryDigital Library
  12. R. Jhala and R. Majumdar. Software model checking. ACM Comput. Surv., 41(4), 2009. Google ScholarGoogle ScholarDigital LibraryDigital Library
  13. R. Jhala, R. Majumdar, and A. Rybalchenko. HMC: Verifying functional programs using abstract interpreters. In CAV, pages 470--485, 2011. Google ScholarGoogle ScholarDigital LibraryDigital Library
  14. R. Jhala and K. L. McMillan. A practical and complete approach to predicate refinement. In TACAS, pages 459--473, 2006. Google ScholarGoogle ScholarDigital LibraryDigital Library
  15. T. Johnsson. Lambda lifting: Transforming programs to recursive equations. In FPCA, pages 190--203, 1985. Google ScholarGoogle ScholarDigital LibraryDigital Library
  16. N. Kobayashi. Types and higher-order recursion schemes for verification of higher-order programs. In POPL, pages 416--428, 2009. Google ScholarGoogle ScholarDigital LibraryDigital Library
  17. N. Kobayashi and C.-H. L. Ong. A type system equivalent to the modal mu-calculus model checking of higher-order recursion schemes. In LICS, pages 179--188, 2009. Google ScholarGoogle ScholarDigital LibraryDigital Library
  18. N. Kobayashi, R. Sato, and H. Unno. Predicate abstraction and CEGAR for higher-order model checking. In PLDI, pages 222--233, 2011. Google ScholarGoogle ScholarDigital LibraryDigital Library
  19. U. D. Lago and M. Gaboardi. Linear dependent types and relative completeness. In LICS, pages 133--142, 2011. Google ScholarGoogle ScholarDigital LibraryDigital Library
  20. J. Liu, N. Zhan, and H. Zhao. Computing semi-algebraic invariants for polynomial dynamical systems. In EMSOFT, pages 97--106, 2011. Google ScholarGoogle ScholarDigital LibraryDigital Library
  21. E.-R. Olderog. Correctness of programs with Pascal-like procedures without global variables. Theor. Comput. Sci., 30:49--90, 1984.Google ScholarGoogle ScholarCross RefCross Ref
  22. B. Reus and T. Streicher. Relative completeness for logics of functional programs. In CSL, pages 470--480, 2011.Google ScholarGoogle Scholar
  23. P. M. Rondon, M. Kawaguchi, and R. Jhala. Liquid types. In PLDI, pages 159--169, 2008. Google ScholarGoogle ScholarDigital LibraryDigital Library
  24. S. Sankaranarayanan, H. B. Sipma, and Z. Manna. Constraint-based linear-relations analysis. In SAS, pages 53--68, 2004.Google ScholarGoogle ScholarCross RefCross Ref
  25. S. Srivastava, S. Gulwani, and J. S. Foster. From program verification to program synthesis. In POPL, pages 313--326, 2010. Google ScholarGoogle ScholarDigital LibraryDigital Library
  26. T. Terauchi. Dependent types from counterexamples. In POPL, pages 119--130, 2010. Google ScholarGoogle ScholarDigital LibraryDigital Library
  27. H. Unno and N. Kobayashi. Dependent type inference with interpolants. In PPDP, pages 277--288, 2009. Google ScholarGoogle ScholarDigital LibraryDigital Library
  28. H. Unno, T. Terauchi, and N. Kobayashi. Automating relatively complete verification of higher-order functional programs, 2012. http://www.kb.is.s.u-tokyo.ac.jp/~uhiro/relcomp. Google ScholarGoogle ScholarDigital LibraryDigital Library
  29. A. K. Wright and M. Felleisen. A syntactic approach to type soundness. Inf. Comput., 115(1):38--94, 1994. Google ScholarGoogle ScholarDigital LibraryDigital Library
  30. H. Xi and F. Pfenning. Dependent types in practical programming. In POPL, pages 214--227, 1999.. Google ScholarGoogle ScholarDigital LibraryDigital Library

Index Terms

  1. Automating relatively complete verification of higher-order functional programs

              Recommendations

              Comments

              Login options

              Check if you have access through your login credentials or your institution to get full access on this article.

              Sign in

              Full Access

              • Published in

                cover image ACM SIGPLAN Notices
                ACM SIGPLAN Notices  Volume 48, Issue 1
                POPL '13
                January 2013
                561 pages
                ISSN:0362-1340
                EISSN:1558-1160
                DOI:10.1145/2480359
                Issue’s Table of Contents
                • cover image ACM Conferences
                  POPL '13: Proceedings of the 40th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages
                  January 2013
                  586 pages
                  ISBN:9781450318327
                  DOI:10.1145/2429069

                Copyright © 2013 ACM

                Publisher

                Association for Computing Machinery

                New York, NY, United States

                Publication History

                • Published: 23 January 2013

                Check for updates

                Qualifiers

                • research-article

              PDF Format

              View or Download as a PDF file.

              PDF

              eReader

              View online with eReader.

              eReader
              About Cookies On This Site

              We use cookies to ensure that we give you the best experience on our website.

              Learn more

              Got it!