Abstract
TIP is a toolbox for users and developers of inductive provers. It consists of a large number of tools which can, for example, simplify an inductive problem, monomorphise it or find counterexamples to it. We are using TIP to help maintain a set of benchmarks for inductive theorem provers, where its main job is to encode aspects of the problem that are not natively supported by the respective provers. TIP makes it easier to write inductive provers, by supplying necessary tools such as lemma discovery which prover authors can simply import into their own prover.
Access this chapter
Tax calculation will be finalised at checkout
Purchases are for personal use only
Notes
- 1.
Named after the lesser-known Ancient Greek philosopher.
References
Amin, N., Leino, K.R.M., Rompf, T.: Computing with an SMT solver. In: Seidl, M., Tillmann, N. (eds.) TAP 2014. LNCS, vol. 8570, pp. 20–35. Springer, Heidelberg (2014)
Barrett, C., Fontaine, P., Tinelli, C.: The SMT-LIB standard - version 2.5. http://smtlib.cs.uiowa.edu/papers/smt-lib-reference-v2.5-r2015-06-28.pdf
Blanchette, J.C., Böhme, S., Popescu, A., Smallbone, N.: Encoding monomorphic and polymorphic types. In: Piterman, N., Smolka, S.A. (eds.) TACAS 2013 (ETAPS 2013). LNCS, vol. 7795, pp. 493–507. Springer, Heidelberg (2013)
Bobot, F., Conchon, S., Contejean, E., Lescuyer, S.: Implementing polymorphism in SMT solvers. In: Barrett, C., de Moura, L. (eds.) SMT 2008: 6th International Workshop on Satisfiability Modulo. ACM International Conference Proceedings Series, vol. 367, pp. 1–5 (2008)
Bobot, F., Filliâtre, J.C., Marché, C., Paskevich, A.: Why3: Shepherd your herd of provers. In: In Workshop on Intermediate Veri cation Languages, Boogie, August 2011
Bobot, F., Paskevich, A.: Expressing polymorphic types in a many-sorted language. In: Tinelli, C., Sofronie-Stokkermans, V. (eds.) FroCoS 2011. LNCS, vol. 6989, pp. 87–102. Springer, Heidelberg (2011)
Chin, W.N., Darlington, J.: A higher-order removal method. LISP Symbolic Comput. 9(4), 287–322 (1996)
Claessen, K., Hughes, J.: QuickCheck: a lightweight tool for random testing of Haskell programs. In: ICFP 2000 Proceedings of the Fifth ACM SIGPLAN International Conference on Functional Programming, pp. 268–279, ACM, New York (2000)
Claessen, K., Johansson, M., Rosén, D., Smallbone, N.: Automating inductive proofs using theory exploration. In: Bonacina, M.P. (ed.) CADE 2013. LNCS, vol. 7898, pp. 392–406. Springer, Heidelberg (2013)
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, Heidelberg (2015)
Claessen, K., Smallbone, N., Hughes, J.: QuickSpec: guessing formal specifications using testing. In: Fraser, G., Gargantini, A. (eds.) TAP 2010. LNCS, vol. 6143, pp. 6–21. Springer, Heidelberg (2010)
Grechanik, S.A.: Proving properties of functional programs by equality saturation. Program. Comput. Softw. 41(3), 149–161 (2015)
Johansson, M., Rosén, D., Smallbone, N., Claessen, K.: Hipster: integrating theory exploration in a proof assistant. In: Watt, S.M., Davenport, J.H., Sexton, A.P., Sojka, P., Urban, J. (eds.) CICM 2014. LNCS, vol. 8543, pp. 108–122. Springer, Heidelberg (2014)
Kaufmann, M., Panagiotis, M., Moore, J.S.: Computer-Aided Reasoning: An Approach. Kluwer Academic Publishers, Norwell (2000)
Leino, K.R.M.: Automating induction with an SMT solver. In: Kuncak, V., Rybalchenko, A. (eds.) VMCAI 2012. LNCS, vol. 7148, pp. 315–331. Springer, Heidelberg (2012)
Reynolds, A., Kuncak, V.: Induction for SMT solvers. In: D’Souza, D., Lal, A., Larsen, K.G. (eds.) VMCAI 2015. LNCS, vol. 8931, pp. 80–98. Springer, Heidelberg (2015)
Reynolds, J.C.: Definitional interpreters for higher-order programming languages. In: The ACM Annual Conference, vol. 2 (1972)
Sonnex, W., Drossopoulou, S., Eisenbach, S.: Zeno: an automated prover for properties of recursive data structures. In: Flanagan, C., König, B. (eds.) TACAS 2012. LNCS, vol. 7214, pp. 407–421. Springer, Heidelberg (2012)
Wand, D., Weidenbach, C.: Automatic induction inside superposition. https://people.mpi-inf.mpg.de/~dwand/datasup/draft.pdf
Author information
Authors and Affiliations
Corresponding authors
Editor information
Editors and Affiliations
Appendices
A Rudimentocrates Source Code
B Example Run of Rudimentocrates
Here is an example showing the output of Rudimentocrates on a simple theory of append and reverse. The input file has a single conjecture that reverse (reverse xs) = xs:
Rudimentocrates first runs QuickSpec to discover likely lemmas about append and reverse:
It then goes into a proof loop, taking one conjecture at a time and trying to prove it. It prints :( when it failed to prove a conjecture, :) when it proved a conjecture without induction, and :D when it proves a conjecture with the help of induction:
Rudimentocrates prints a newline when it has tried all conjectures, then goes back and retries the failed ones (in case it can now prove them with the help of lemmas). In this case it manages to prove all the discovered conjectures, and prints out the following final theory. Notice that: (a) the property (= xs (reverse (reverse xs))) is now an axiom (assert) rather than a conjecture (assert-not), indicating that it has been proved, and (b) several other proved lemmas have been added to the theory file.
Rights and permissions
Copyright information
© 2015 Springer-Verlag Berlin Heidelberg
About this paper
Cite this paper
Rosén, D., Smallbone, N. (2015). TIP: Tools for Inductive Provers. In: Davis, M., Fehnker, A., McIver, A., Voronkov, A. (eds) Logic for Programming, Artificial Intelligence, and Reasoning. LPAR 2015. Lecture Notes in Computer Science(), vol 9450. Springer, Berlin, Heidelberg. https://doi.org/10.1007/978-3-662-48899-7_16
Download citation
DOI: https://doi.org/10.1007/978-3-662-48899-7_16
Published:
Publisher Name: Springer, Berlin, Heidelberg
Print ISBN: 978-3-662-48898-0
Online ISBN: 978-3-662-48899-7
eBook Packages: Computer ScienceComputer Science (R0)