Skip to main content Accessibility help
×
×
Home

Solving Horn Clauses on Inductive Data Types Without Induction

  • EMANUELE DE ANGELIS (a1), FABIO FIORAVANTI (a1), ALBERTO PETTOROSSI (a2) and MAURIZIO PROIETTI (a3)
Abstract

We address the problem of verifying the satisfiability of Constrained Horn Clauses (CHCs) based on theories of inductively defined data structures, such as lists and trees. We propose a transformation technique whose objective is the removal of these data structures from CHCs, hence reducing their satisfiability to a satisfiability problem for CHCs on integers and booleans. We propose a transformation algorithm and identify a class of clauses where it always succeeds. We also consider an extension of that algorithm, which combines clause transformation with reasoning on integer constraints. Via an experimental evaluation we show that our technique greatly improves the effectiveness of applying the Z3 solver to CHCs. We also show that our verification technique based on CHC transformation followed by CHC solving, is competitive with respect to CHC solvers extended with induction.

    • Send article to Kindle

      To send this article to your Kindle, first ensure no-reply@cambridge.org is added to your Approved Personal Document E-mail List under your Personal Document Settings on the Manage Your Content and Devices page of your Amazon account. Then enter the ‘name’ part of your Kindle email address below. Find out more about sending to your Kindle. Find out more about sending to your Kindle.

      Note you can select to send to either the @free.kindle.com or @kindle.com variations. ‘@free.kindle.com’ emails are free but can only be sent to your device when it is connected to wi-fi. ‘@kindle.com’ emails can be delivered even when you are not connected to wi-fi, but note that service fees apply.

      Find out more about the Kindle Personal Document Service.

      Solving Horn Clauses on Inductive Data Types Without Induction
      Available formats
      ×
      Send article to Dropbox

      To send this article to your Dropbox account, please select one or more formats and confirm that you agree to abide by our usage policies. If this is the first time you use this feature, you will be asked to authorise Cambridge Core to connect with your <service> account. Find out more about sending content to Dropbox.

      Solving Horn Clauses on Inductive Data Types Without Induction
      Available formats
      ×
      Send article to Google Drive

      To send this article to your Google Drive account, please select one or more formats and confirm that you agree to abide by our usage policies. If this is the first time you use this feature, you will be asked to authorise Cambridge Core to connect with your <service> account. Find out more about sending content to Google Drive.

      Solving Horn Clauses on Inductive Data Types Without Induction
      Available formats
      ×
Copyright
References
Hide All
Albert, E., Gómez-Zamalloa, M., Hubert, L., and Puebla, G. 2007. Verification of Java bytecode using analysis and transformation of logic programs. In Proc. of PADL '07, LNCS 4354. Springer, 124–139.
Bagnara, R., Hill, P. M., and Zaffanella, E. 2008. The Parma Polyhedra Library: Toward a complete set of numerical abstractions for the analysis and verification of hardware and software systems. Science of Computer Programming, 72 (1–2):321, 2008.
Bjørner, N., Gurfinkel, A., McMillan, K. L., and Rybalchenko, A. 2015. Horn clause solvers for program verification. In Fields of Logic and Computation II, LNCS 9300. Springer, 2451.
Bradley, A. R. 2011. SAT-based model checking without unrolling. In Proc. of VMCAI '11, LNCS 6538. Springer, 70–87.
Clarke, E. M., Grumberg, O., Jha, S., Lu, Y., and Veith, H. 2000. Counterexample-Guided Abstraction Refinement. In Proc. of CAV '00, LNCS 1855. Springer, 154–169.
Cousot, P. and Halbwachs, N. 1978. Automatic discovery of linear restraints among variables of a program. In Proc. of POPL '78. ACM, 84–96.
De Angelis, E., Fioravanti, F., Pettorossi, A., and Proietti, M. 2014. VeriMAP: A tool for verifying programs through transformations. In Proc. of TACAS '14, LNCS 8413. Springer, 568–574.
De Angelis, E., Fioravanti, F., Pettorossi, A., and Proietti, M. 2015. Proving correctness of imperative programs by linearizing constrained Horn clauses. Theory and Practice of Logic Programming 15, 635650.
De Angelis, E., Fioravanti, F., Pettorossi, A., and Proietti, M. 2016. Relational verification through Horn clause transformation. In Proc. of SAS '16, LNCS 9837. Springer, 147–169.
De Angelis, E., Fioravanti, F., Pettorossi, A., and Proietti, M. 2017a. Predicate pairing for program verification. Theory and Practice of Logic Programming, 1–41. Published online, to appear in press (https://arxiv.org/abs/1708.01473).
De Angelis, E., Fioravanti, F., Pettorossi, A., and Proietti, M. 2017b. Program Verification using Constraint Handling Rules and array constraint generalizations. Fundamenta Informaticae 150, 73117.
De Angelis, E., Fioravanti, F., Pettorossi, A., and Proietti, M. 2017c. Semantics-based generation of verification conditions via program specialization. Science of Computer Programming 147, 78–108.
de Moura, L. M. and Bjørner, N. 2008. Z3: An efficient SMT solver. In Proc. of TACAS '08. LNCS 4963. Springer, 337–340.
De Schreye, D., Glück, R., Jørgensen, J., Leuschel, M., Martens, B., and Sørensen, M. H. 1999. Conjunctive partial deduction: Foundations, control, algorithms, and experiments. Journal of Logic Programming 41, 2–3, 231277.
Dixon, L. and Fleuriot, J. D. 2003. IsaPlanner: A prototype proof planner in Isabelle. In Proc. of CADE-19, LNCS 2741. Springer, 279–283.
Enderton, H. 1972. A Mathematical Introduction to Logic. Academic Press.
Etalle, S. and Gabbrielli, M. 1996. Transformations of CLP modules. Theoretical Computer Science 166, 101146.
Felsing, D., Grebing, S., Klebanov, V., Rümmer, P., and Ulbrich, M. 2014. Automating regression verification. In Proc. of ACM/IEEE Conf. ASE '14. 349–360.
Grebenshchikov, S., Lopes, N. P., Popeea, C., and Rybalchenko, A. 2012. Synthesizing software verifiers from proof rules. In Proc. of ACM SIGPLAN PLDI '12. 405–416.
Hoder, K. and Bjørner, N. 2012. Generalized property directed reachability. In Proc. of SAT '12, LNCS 7317. Springer, 157–171.
Hojjat, H., Konecný, F., Garnier, F., Iosif, R., Kuncak, V., and Rümmer, P. 2012. A verification toolkit for numerical transition systems. In Proc. of FM '12, LNCS 7436. Springer, 247–251.
Jaffar, J., Navas, J. A., and Santosa, A. E. 2012. Unbounded symbolic execution for program verification. In Proc. of RV '11. LNCS 7186. Springer, 396–411.
Kafle, B., Gallagher, J. P., and Morales, J. F. 2016. RAHFT: A tool for verifying Horn clauses using abstract interpretation and finite tree automata. In Proc. of CAV '16. LNCS 9779. Springer, 261–268.
Komuravelli, A., Gurfinkel, A., Chaki, S., and Clarke, E. M. 2013. Automatic abstraction in SMT-based unbounded software model checking. In Proc. of CAV '13, LNCS 8044. Springer, 846–862.
Leroy, X., Doligez, D., Frisch, A., Garrigue, J., Rémy, D., and Vouillon, J. 2017. The OCaml system, Release 4.06. INRIA, France.
McMillan, K. L. 2003. Interpolation and SAT-based model checking. In Proc. of CAV '03. LNCS 2725. Springer, 1–13.
Méndez-Lojo, M., Navas, J. A., and Hermenegildo, M. V. 2008. A flexible, (C)LP-based approach to the analysis of object-oriented programs. In Proc. of LOPSTR'07. LNCS 4915. Springer, 154–168.
Mordvinov, D. and Fedyukovich, G. 2017. Synchronizing constrained Horn clauses. In Proc. of LPAR-21 EPiC Series in Computing Vol. 46. EasyChair, 338–355.
Peralta, J. C., Gallagher, J. P., and Saglam, H. 1998. Analysis of imperative programs through analysis of constraint logic programs. In Proc. of SAS '98, LNCS 1503. Springer, 246–261.
Proietti, M. and Pettorossi, A. 1995. Unfolding-definition-folding, in this order, for avoiding unnecessary variables in logic programs. Theoretical Computer Science 142, 1, 89124.
Reynolds, A. and Kuncak, V. 2015. Induction for SMT solvers. In Proc. of VMCAI '15, LNCS 8931. Springer, 80–98.
Suter, P., Köksal, A. S., and Kuncak, V. 2011. Satisfiability modulo recursive programs. In Proc. of SAS '11, LNCS 6887. Springer, 298–315.
Tamaki, H. and Sato, T. 1984. Unfold/fold transformation of logic programs. In Proc. of ICLP '84, Tärnlund, S.-Å., Ed., Uppsala University, Sweden, 127–138.
Unno, H., Torii, S., and Sakamoto, H. 2017. Automating induction for solving Horn clauses. In Proc. of CAV '17. LNCS 10427. Springer, 571–591.
Wadler, P. L. 1990. Deforestation: Transforming programs to eliminate trees. Theoretical Computer Science 73, 231248.
Recommend this journal

Email your librarian or administrator to recommend adding this journal to your organisation's collection.

Theory and Practice of Logic Programming
  • ISSN: 1471-0684
  • EISSN: 1475-3081
  • URL: /core/journals/theory-and-practice-of-logic-programming
Please enter your name
Please enter a valid email address
Who would you like to send this to? *
×

Keywords

Type Description Title
PDF
Supplementary materials

De Angelis et al. supplementary material
De Angelis et al. supplementary material 1

 PDF (231 KB)
231 KB

Metrics

Altmetric attention score

Full text views

Total number of HTML views: 0
Total number of PDF views: 0 *
Loading metrics...

Abstract views

Total abstract views: 0 *
Loading metrics...

* Views captured on Cambridge Core between <date>. This data will be updated every 24 hours.

Usage data cannot currently be displayed