skip to main content
10.1145/2678015.2682546acmconferencesArticle/Chapter ViewAbstractPublication PagespepmConference Proceedingsconference-collections
research-article

Verifying Relational Properties of Functional Programs by First-Order Refinement

Published: 13 January 2015 Publication History

Abstract

Much progress has been made recently on fully automated verification of higher-order functional programs, based on refinement types and higher-order model checking. Most of those verification techniques are, however, based on first-order refinement types, hence unable to verify certain properties of functions (such as the equality of two recursive functions and the monotonicity of a function, which we call relational properties). To relax this limitation, we introduce a restricted form of higher-order refinement types where refinement predicates can refer to functions, and formalize a systematic program transformation to reduce type checking/inference for higher-order refinement types to that for first-order refinement types, so that the latter can be automatically solved by using an existing software model checker. We also prove the soundness of the transformation, and report on preliminary implementation and experiments.

References

[1]
A. Ahmed. Step-indexed syntactic logical relations for recursive and quantified types. In ESOP '06, pages 69--83, 2006.
[2]
A. W. Appel and D. McAllester. An indexed model of recursive types for foundational proof-carrying code. TOPLAS, 23(5):657--683, Sept. 2001.
[3]
K. Asada, R. Sato, and N. Kobayashi. Verifying relational properties of functional programs by first-order refinement. An extended version, available from http://www-kb.is.s.u-tokyo.ac.jp/?ryosuke/pepm2015.pdf, 2014.
[4]
G. Barthe, C. Fournet, B. Grégoire, P.-Y. Strub, N. Swamy, and S. Zanella-Béguelin. Probabilistic relational verification for cryptographic implementations. In POPL '14, volume 49, pages 193--205, 2014.
[5]
J. Bengtson, K. Bhargavan, C. Fournet, A. D. Gordon, and S. Maffeis. Refinement types for secure implementations. TOPLAS, 33(2):8, Jan. 2011.
[6]
W.-N. Chin. Towards an automated tupling strategy. In PEPM 1993, pages 119--132, 1993.
[7]
D. Dreyer, A. Ahmed, and L. Birkedal. Logical step-indexed logical relations. In LICS '09, pages 71--80, 2009.
[8]
K. Knowles and C. Flanagan. Type reconstruction for general refinement types. In ESOP '07, pages 505--519, 2007.
[9]
K. L. Knowles and C. Flanagan. Hybrid type checking. TOPLAS, 32 (2), Jan. 2010.
[10]
N. Kobayashi. Model checking higher-order programs. J. ACM, 60 (3):20, 2013.
[11]
N. Kobayashi, R. Sato, and H. Unno. Predicate abstraction and CEGAR for higher-order model checking. In PLDI '11, pages 222--233, 2011.
[12]
C.-H. L. Ong and S. J. Ramsay. Verifying higher-order functional programs with pattern-matching algebraic data types. In POPL '11, pages 587--598, 2011.
[13]
P. M. Rondon, M. Kawaguchi, and R. Jhala. Liquid types. In PLDI '08, pages 159--169, 2008.
[14]
R. Sato, H. Unno, and N. Kobayashi. Towards a scalable software model checker for higher-order programs. In PEPM '13, pages 53-- 62, 2013.
[15]
P. Suter, M. Dotta, and V. Kuncak. Decision procedures for algebraic data types with abstractions. In POPL '10, volume 45, page 199, 2010.
[16]
P. Suter, A. S. Köksal, and V. Kuncak. Satisfiability modulo recursive programs. In SAS '11, pages 298--315, 2011.
[17]
T. Terauchi. Dependent types from counterexamples. In POPL '10, pages 119--130, 2010.
[18]
H. Unno and N. Kobayashi. Dependent type inference with interpolants. In PPDP '09, pages 277--288, 2009.
[19]
H. Unno, T. Terauchi, and N. Kobayashi. Automating relatively complete verification of higher-order functional programs. In POPL '13, page 75, 2013.
[20]
N. Vazou, P. M. Rondon, and R. Jhala. Abstract refinement types. In ESOP '13, 2013.
[21]
H. Xi and F. Pfenning. Dependent types in practical programming. In POPL '99, pages 214--227, 1999.
[22]
D. N. Xu. Hybrid contract checking via symbolic simplification. In PEPM '12, pages 107--116, 2012.
[23]
D. N. Xu, S. Peyton Jones, and K. Claessen. Static contract checking for Haskell. In Workshop on Haskell, pages 41--52, 2009.
[24]
H. Zhu and S. Jagannathan. Compositional and lightweight dependent type inference for ML. In VMCAI '13, 2013.

Cited By

View all
  • (2021)Modelling and verification of parameterized architectures: A functional approachIET Computers & Digital Techniques10.1049/cdt2.1202415:5(335-348)Online publication date: 22-Mar-2021
  • (2021)Constraint-Based Relational VerificationComputer Aided Verification10.1007/978-3-030-81685-8_35(742-766)Online publication date: 15-Jul-2021
  • (2017)Refinement reflection: complete verification with SMTProceedings of the ACM on Programming Languages10.1145/31581412:POPL(1-31)Online publication date: 27-Dec-2017
  • Show More Cited By

Recommendations

Comments

Information & Contributors

Information

Published In

cover image ACM Conferences
PEPM '15: Proceedings of the 2015 Workshop on Partial Evaluation and Program Manipulation
January 2015
152 pages
ISBN:9781450332972
DOI:10.1145/2678015
Permission to make digital or hard copies of all or part of this work for personal or classroom use is granted without fee provided that copies are not made or distributed for profit or commercial advantage and that copies bear this notice and the full citation on the first page. Copyrights for components of this work owned by others than the author(s) must be honored. Abstracting with credit is permitted. To copy otherwise, or republish, to post on servers or to redistribute to lists, requires prior specific permission and/or a fee. Request permissions from [email protected].

Sponsors

In-Cooperation

Publisher

Association for Computing Machinery

New York, NY, United States

Publication History

Published: 13 January 2015

Permissions

Request permissions for this article.

Check for updates

Author Tags

  1. automated verification
  2. higher-order functional language
  3. refinement types

Qualifiers

  • Research-article

Funding Sources

Conference

POPL '15
Sponsor:

Acceptance Rates

PEPM '15 Paper Acceptance Rate 14 of 27 submissions, 52%;
Overall Acceptance Rate 66 of 120 submissions, 55%

Contributors

Other Metrics

Bibliometrics & Citations

Bibliometrics

Article Metrics

  • Downloads (Last 12 months)6
  • Downloads (Last 6 weeks)0
Reflects downloads up to 02 Mar 2025

Other Metrics

Citations

Cited By

View all
  • (2021)Modelling and verification of parameterized architectures: A functional approachIET Computers & Digital Techniques10.1049/cdt2.1202415:5(335-348)Online publication date: 22-Mar-2021
  • (2021)Constraint-Based Relational VerificationComputer Aided Verification10.1007/978-3-030-81685-8_35(742-766)Online publication date: 15-Jul-2021
  • (2017)Refinement reflection: complete verification with SMTProceedings of the ACM on Programming Languages10.1145/31581412:POPL(1-31)Online publication date: 27-Dec-2017
  • (2017)A Nonstandard Functional Programming LanguageProgramming Languages and Systems10.1007/978-3-319-71237-6_25(514-533)Online publication date: 19-Nov-2017
  • (2017)Automating Induction for Solving Horn ClausesComputer Aided Verification10.1007/978-3-319-63390-9_30(571-591)Online publication date: 13-Jul-2017
  • (2016)Relational Verification Through Horn Clause TransformationStatic Analysis10.1007/978-3-662-53413-7_8(147-169)Online publication date: 31-Aug-2016
  • (2015)Automata-Based Abstraction for Automated Verification of Higher-Order Tree-Processing ProgramsProgramming Languages and Systems10.1007/978-3-319-26529-2_16(295-312)Online publication date: 9-Dec-2015

View Options

Login options

View options

PDF

View or Download as a PDF file.

PDF

eReader

View online with eReader.

eReader

Figures

Tables

Media

Share

Share

Share this Publication link

Share on social media