Abstract
Recursively defined properties are ubiquitous. We present a proof method for establishing entailment \(\mathcal{G} \models \mathcal{H}\) of such properties \(\mathcal{G}\) and \(\mathcal{H}\) over a set of common variables. The main contribution is a particular proof rule based intuitively upon the concept of coinduction. This rule allows the inductive step of assuming that an entailment holds during the proof the entailment. In general, the proof method is based on an unfolding (and no folding) algorithm that reduces recursive definitions to a point where only constraint solving is necessary. The constraint-based proof obligation is then discharged with available solvers. The algorithm executes the proof by a search-based method which automatically discovers the opportunity of applying induction instead of the user having to specify some induction schema, and which does not require any base case.
Access provided by Autonomous University of Puebla. Download to read the full chapter text
Chapter PDF
Similar content being viewed by others
Keywords
These keywords were added by machine and not by the authors. This process is experimental and the keywords may be updated as the learning algorithm improves.
References
Barras, B., Boutin, S., Cornes, C., Courant, J., Filliatre, J., Giménez, E., Herbelin, H., Huet, G., Noz, C.M., Murthy, C., Parent, C., Paulin, C., Saïbi, A., Werner, B.: The Coq proof assistant reference manual—version v6.1. Technical Report 0203, INRIA (1997)
Boyer, R.S., Moore, J.S.: Proving theorems about LISP functions. J. ACM 22(1), 129–144 (1975)
Craciunescu, S.: Proving equivalence of CLP programs. In: Stuckey, P.J. (ed.) ICLP 2002. LNCS, vol. 2401. Springer, Heidelberg (2002)
Fribourg, L.: Automatic generation of simplification lemmas for inductive proofs. In: ISLP 1991, pp. 103–116. MIT Press, Cambridge (1991)
Gupta, G., Bansal, A., Min, R., Simon, L., Mallya, A.: Coinductive logic programming and its applications. In: Dahl, V., Niemelä, I. (eds.) ICLP 2007. LNCS, vol. 4670, pp. 27–44. Springer, Heidelberg (2007)
Harrison, J.: HOL light: A tutorial introduction. In: Srivas, M.K., Camilleri, A.J. (eds.) FMCAD 1996. LNCS, vol. 1166, pp. 265–269. Springer, Heidelberg (1996)
Hsiang, J., Srivas, M.: Automatic inductive theorem proving using Prolog. TCS 54(1), 3–28 (1987)
Hsiang, J., Srivas, M.K.: A PROLOG framework for developing and reasoning about data types. In: Ehrig, H., Floyd, C., Nivat, M., Thatcher, J. (eds.) TAPSOFT 1985. LNCS, vol. 186, pp. 276–293. Springer, Heidelberg (1985)
Jaffar, J., Maher, M.J.: Constraint logic programming: A survey. J. LP 19/20, 503–581 (1994)
Jaffar, J., Santosa, A., Voicu, R.: A CLP proof method for timed automata. In: 25th RTSS, pp. 175–186. IEEE Computer Society Press, Los Alamitos (2004)
Jaffar, J., Santosa, A.E., Voicu, R.: Recursive assertions for data structures, http://www.comp.nus.edu.sg/~joxan/papers/rads.pdf
Jaffar, J., Santosa, A.E., Voicu, R.: Relative safety. In: Emerson, E.A., Namjoshi, K.S. (eds.) VMCAI 2006. LNCS, vol. 3855, pp. 282–297. Springer, Heidelberg (2005)
Kanamori, T., Fujita, H.: Formulation of induction formulas in verification of Prolog programs. In: Siekmann, J.H. (ed.) CADE 1986. LNCS, vol. 230, pp. 281–299. Springer, Heidelberg (1986)
Kanamori, T., Seki, H.: Verification of Prolog programs using an extension of execution. In: Shapiro, E. (ed.) ICLP 1986. LNCS, vol. 225, pp. 475–489. Springer, Heidelberg (1986)
Manna, Z., Ness, S., Vuillemin, J.: Inductive methods for proving properties of programs. Comm. ACM 16(8), 491–502 (1973)
McCarthy, J.: Towards a mathematical science of computation. In: Popplewell, C.M. (ed.) IFIP Congress 1962. North-Holland, Amsterdam (1983)
McPeak, S., Necula, G.C.: Data structure specifications via local equality axioms. In: Etessami, K., Rajamani, S.K. (eds.) CAV 2005. LNCS, vol. 3576, pp. 476–490. Springer, Heidelberg (2005)
Mesnard, F., Hoarau, S., Maillard, A.: CLP(\(\cal X\)) for automatically proving program properties. In: Baader, F., Schulz, K.U. (eds.) 1st FroCoS. Applied Logic Series, vol. 3. Kluwer Academic Publishers, Dordrecht (1996)
Nguyen, H.H., David, C., Qin, S.C., Chin, W.N.: Automated verification of shape and size properties via separation logic. In: Cook, B., Podelski, A. (eds.) VMCAI 2007. LNCS, vol. 4349, pp. 251–266. Springer, Heidelberg (2007)
Owre, S., Rajan, S., Rushby, J.M., Shankar, N., Srivas, M.K.: PVS: combining specification, proof checking, and model checking. In: Alur, R., Henzinger, T.A. (eds.) CAV 1996. LNCS, vol. 1102, pp. 411–414. Springer, Heidelberg (1996)
Pettorossi, A., Proietti, M.: Synthesis and transformation of logic programs using unfold/fold proofs. J. LP 41(2–3), 197–230 (1999)
Roychoudhury, A., Kumar, K.N., Ramakrishnan, C.R., Ramakrishnan, I.V.: An unfold/fold transformation framework for definite logic programs. ACM TOPLAS 26(3), 464–509 (2004)
Roychoudhury, A., Ramakrishnan, C.R., Ramakrishnan, I.V., Smolka, S.A.: Tabulation-based induction proofs with application to automated verification. In: 1st TAPD, April 1998, pp. 83–88 (1998), http://pauillac.inria.fr/~clerger/tapd.html
Sagonas, K., Swift, T., Warren, D.S., Freire, J., Rao, P., Cui, B., Johnson, E., de Castro, L., Dawson, S., Kifer, M.: The XSB System Version 2.5 Volume 1: Programmer’s Manual (June 2003)
Stickel, M.E.: A Prolog technology theorem prover: A new exposition and implementation in prolog. TCS 104(1), 109–128 (1992)
Author information
Authors and Affiliations
Editor information
Rights and permissions
Copyright information
© 2008 Springer-Verlag Berlin Heidelberg
About this paper
Cite this paper
Jaffar, J., Santosa, A.E., Voicu, R. (2008). A Coinduction Rule for Entailment of Recursively Defined Properties. In: Stuckey, P.J. (eds) Principles and Practice of Constraint Programming. CP 2008. Lecture Notes in Computer Science, vol 5202. Springer, Berlin, Heidelberg. https://doi.org/10.1007/978-3-540-85958-1_33
Download citation
DOI: https://doi.org/10.1007/978-3-540-85958-1_33
Publisher Name: Springer, Berlin, Heidelberg
Print ISBN: 978-3-540-85957-4
Online ISBN: 978-3-540-85958-1
eBook Packages: Computer ScienceComputer Science (R0)