Abstract
We describe a new approach to find models for a computational higher-order logic with datatypes. The goal is to find counter-examples for conjectures stated in proof assistants. The technique builds on narrowing [14] but relies on a tight integration with a SAT solver to analyze conflicts precisely, eliminate sets of choices that lead to failures, and sometimes prove unsatisfiability. The architecture is reminiscent of that of an SMT solver. We present the rules of the calculus, an implementation, and some promising experimental results.
Access this chapter
Tax calculation will be finalised at checkout
Purchases are for personal use only
Notes
- 1.
- 2.
A more flexible definition \(\textsf {depth}(c(t_1,\ldots ,t_n)) = \textsf {cost}(c) + \max _{i=1\ldots n} \textsf {depth}(t_i)\) can also be used to skew the search towards some constructors, as long as \(\text {cost}(c) > 0\) holds for all c.
- 3.
Our framework corresponds to the special case of needed narrowing when the only rewrite rules are those defining pattern matching.
- 4.
The example is provided at https://cedeela.fr/~simon/files/cade_17.tar.gz along with other benchmarks.
- 5.
- 6.
- 7.
For example, it might be possible to write an efficient interpreter or compiler for use-cases where evaluation is the bottleneck, as long as explanations are tracked accurately and parallel conjunction is accounted for.
References
Antoy, S., Echahed, R., Hanus, M.: A needed narrowing strategy. J. ACM (JACM) 47, 776–822 (2000)
Barrett, C., Fontaine, P., Tinelli, C.: The SMT-LIB Standard Version 2.6 (2016). http://www.SMT-LIB.org
Barrett, C., Nieuwenhuis, R., Oliveras, A., Tinelli, C.: Splitting on demand in SAT modulo theories. In: Hermann, M., Voronkov, A. (eds.) LPAR 2006. LNCS, vol. 4246, pp. 512–526. Springer, Heidelberg (2006). doi:10.1007/11916277_35
Barrett, C., Shikanian, I., Tinelli, C.: An abstract decision procedure for satisfiability in the theory of recursive data types. Electron. Notes Theor. Comput. Sci. 174(8), 23–37 (2007)
Claessen, K., Hughes, J.: QuickCheck: a lightweight tool for random testing of Haskell programs. ACM Sigplan Not. 46(4), 53–64 (2011)
Claessen, K., Johansson, M., Rosén, D., Smallbone, N.: TIP: tons of inductive problems. In: Kerber, M., Carette, J., Kaliszyk, C., Rabe, F., Sorge, V. (eds.) CICM 2015. LNCS, vol. 9150, pp. 333–337. Springer, Cham (2015). doi:10.1007/978-3-319-20615-8_23
Claessen, K., Rosén, D.: SAT-based bounded model checking for functional programs (2016) (unpublished). https://github.com/danr/hbmc
The Coq Development Team. The Coq Proof Assistant. http://coq.inria.fr/
Cruanes, S., Blanchette, J.C.: Extending Nunchaku to dependent type theory. In: Blanchette, J.C., Kaliszyk, C. (eds.) Proceedings First International Workshop on Hammers for Type Theories, HaTT@IJCAR 2016. EPTCS, vol. 210, Coimbra, Portugal, pp. 3–12, 1 July 2016
Duregård, J., Jansson, P., Wang, M.: Feat: functional enumeration of algebraic types. ACM SIGPLAN Not. 47(12), 61–72 (2013)
Hanus, M.: A unified computation model for functional and logic programming. In: Proceedings of the 24th ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages. ACM (1997)
Kaufmann, M., Moore, S.J.: ACL2: an industrial strength version of Nqthm. In: Computer Assurance, COMPASS 1996, pp. 23–34. IEEE (1996)
Korf, R.E.: Depth-first iterative-deepening: an optimal admissible tree search. Artif. Intell. 27(1), 97–109 (1985)
Lindblad, F.: Property directed generation of first-order test data. In: Trends in Functional Programming, pp. 105–123. Citeseer (2007)
Paulson, L.C.: Isabelle: A Generic Theorem Prover, vol. 828. Springer, Heidelberg (1994)
Reynolds, A., Blanchette, J.C.: A decision procedure for (Co)datatypes in SMT solvers. In: Felty, A.P., Middeldorp, A. (eds.) CADE 2015. LNCS, vol. 9195, pp. 197–213. Springer, Cham (2015). doi:10.1007/978-3-319-21401-6_13
Reynolds, A., Blanchette, J.C., Cruanes, S., Tinelli, C.: Model finding for recursive functions in SMT. In: Olivetti, N., Tiwari, A. (eds.) IJCAR 2016. LNCS (LNAI), vol. 9706, pp. 133–151. Springer, Cham (2016). doi:10.1007/978-3-319-40229-1_10
Runciman, C., Naylor, M., Lindblad, F.: Smallcheck and lazy smallcheck: automatic exhaustive testing for small values. ACM SIGPLAN Not. 44, 37–48 (2008). ACM
Suter, P., Köksal, A.S., Kuncak, V.: Satisfiability modulo recursive programs. In: Yahav, E. (ed.) SAS 2011. LNCS, vol. 6887, pp. 298–315. Springer, Heidelberg (2011). doi:10.1007/978-3-642-23702-7_23
Acknowledgments
The author would like to thank Jasmin Blanchette, Martin Brain, Raphaël Cauderlier, Koen Claessen, Pascal Fontaine, Andrew Reynolds, and Martin Riener, and the anonymous reviewers, for discussing details of this work and suggesting textual improvements.
Author information
Authors and Affiliations
Corresponding author
Editor information
Editors and Affiliations
Rights and permissions
Copyright information
© 2017 Springer International Publishing AG
About this paper
Cite this paper
Cruanes, S. (2017). Satisfiability Modulo Bounded Checking. In: de Moura, L. (eds) Automated Deduction – CADE 26. CADE 2017. Lecture Notes in Computer Science(), vol 10395. Springer, Cham. https://doi.org/10.1007/978-3-319-63046-5_8
Download citation
DOI: https://doi.org/10.1007/978-3-319-63046-5_8
Published:
Publisher Name: Springer, Cham
Print ISBN: 978-3-319-63045-8
Online ISBN: 978-3-319-63046-5
eBook Packages: Computer ScienceComputer Science (R0)