Hostname: page-component-76fb5796d-r6qrq Total loading time: 0 Render date: 2024-04-25T11:23:23.418Z Has data issue: false hasContentIssue false

Solving Horn Clauses on Inductive Data Types Without Induction

Published online by Cambridge University Press:  10 August 2018

EMANUELE DE ANGELIS
Affiliation:
DEC, ‘G. d'Annunzio’ University of Chieti-Pescara, Pescara, Italy (e-mails: emanuele.deangelis@unich.it, fabio.fioravanti@unich.it)
FABIO FIORAVANTI
Affiliation:
DEC, ‘G. d'Annunzio’ University of Chieti-Pescara, Pescara, Italy (e-mails: emanuele.deangelis@unich.it, fabio.fioravanti@unich.it)
ALBERTO PETTOROSSI
Affiliation:
DICII, University of Rome Tor Vergata, Rome, Italy (e-mail: pettorossi@info.uniroma2.it)
MAURIZIO PROIETTI
Affiliation:
CNR-IASI, Rome, Italy (e-mail: maurizio.proietti@iasi.cnr.it)
Rights & Permissions [Opens in a new window]

Abstract

Core share and HTML view are not available for this content. However, as you have access to this content, a full PDF is available via the ‘Save PDF’ action button.

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.

Type
Original Article
Copyright
Copyright © Cambridge University Press 2018 

References

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.Google Scholar
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.Google Scholar
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.Google Scholar
Bradley, A. R. 2011. SAT-based model checking without unrolling. In Proc. of VMCAI '11, LNCS 6538. Springer, 70–87.Google Scholar
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.Google Scholar
Cousot, P. and Halbwachs, N. 1978. Automatic discovery of linear restraints among variables of a program. In Proc. of POPL '78. ACM, 84–96.Google Scholar
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.Google Scholar
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.Google Scholar
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.Google Scholar
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).Google Scholar
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.Google Scholar
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.Google Scholar
de Moura, L. M. and Bjørner, N. 2008. Z3: An efficient SMT solver. In Proc. of TACAS '08. LNCS 4963. Springer, 337–340.Google Scholar
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.Google Scholar
Dixon, L. and Fleuriot, J. D. 2003. IsaPlanner: A prototype proof planner in Isabelle. In Proc. of CADE-19, LNCS 2741. Springer, 279–283.Google Scholar
Enderton, H. 1972. A Mathematical Introduction to Logic. Academic Press.Google Scholar
Etalle, S. and Gabbrielli, M. 1996. Transformations of CLP modules. Theoretical Computer Science 166, 101146.Google Scholar
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.Google Scholar
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.Google Scholar
Hoder, K. and Bjørner, N. 2012. Generalized property directed reachability. In Proc. of SAT '12, LNCS 7317. Springer, 157–171.Google Scholar
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.Google Scholar
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.Google Scholar
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.Google Scholar
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.Google Scholar
Leroy, X., Doligez, D., Frisch, A., Garrigue, J., Rémy, D., and Vouillon, J. 2017. The OCaml system, Release 4.06. INRIA, France.Google Scholar
McMillan, K. L. 2003. Interpolation and SAT-based model checking. In Proc. of CAV '03. LNCS 2725. Springer, 1–13.Google Scholar
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.Google Scholar
Mordvinov, D. and Fedyukovich, G. 2017. Synchronizing constrained Horn clauses. In Proc. of LPAR-21 EPiC Series in Computing Vol. 46. EasyChair, 338–355.Google Scholar
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.Google Scholar
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.Google Scholar
Reynolds, A. and Kuncak, V. 2015. Induction for SMT solvers. In Proc. of VMCAI '15, LNCS 8931. Springer, 80–98.Google Scholar
Suter, P., Köksal, A. S., and Kuncak, V. 2011. Satisfiability modulo recursive programs. In Proc. of SAS '11, LNCS 6887. Springer, 298–315.Google Scholar
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.Google Scholar
Unno, H., Torii, S., and Sakamoto, H. 2017. Automating induction for solving Horn clauses. In Proc. of CAV '17. LNCS 10427. Springer, 571–591.Google Scholar
Wadler, P. L. 1990. Deforestation: Transforming programs to eliminate trees. Theoretical Computer Science 73, 231248.Google Scholar
Supplementary material: PDF

De Angelis et al. supplementary material

De Angelis et al. supplementary material 1

Download De Angelis et al. supplementary material(PDF)
PDF 231 KB