Abstract
We present a slicing approach for analyzing logic programs with respect to non-termination. The notion of a failure-slice is presented which is an executable reduced fragment of the program. Each failure-slice represents a necessary termination condition for the program. If a failure-slice does not terminate it can be used as an explanation for the non-termination of the whole program. To effectively determine useful failure-slices we combine a constraint based static analysis with the dynamic execution of actual slices. The current approach has been integrated into a programming environment for beginners. Further, we show how our approach can be combined with traditional techniques of termination analysis.
Access this chapter
Tax calculation will be finalised at checkout
Purchases are for personal use only
Preview
Unable to display preview. Download preview PDF.
References
Bol, R.N.: Loop Checking in Logic Programming. Thesis, Univ. Amsterdam (1991)
Byrd, L.: Understanding the control flow of Prolog programs. In: Logic Programming Workshop, Debrecen, Hungary (1980)
Carlsson, M., Ottosson, G., Carlson, B.: An Open-Ended Finite Domain Constraint Solver. In: Glaser, H., Hartel, P., Kuchen, H. (eds.) PLILP 1997. LNCS, vol. 1292, pp. 191–206. Springer, Heidelberg (1997)
Deransart, P., Maluszynski, J.: A Grammatical View of Logic Programming. MIT-Press, Cambridge (1993)
Gyimothy, T., Paakki, J.: Static slicing of logic programs. In: Ducasse, M. (ed.) AADEBUG 1995. IRISA-CNRS, pp. 87–103 (1995)
O’Keefe, R.A.: The Craft of Prolog. In: Plümer, L. (ed.) Termination Proofs for Logic Programs. LNCS, vol. 446. Springer, Heidelberg (1990)
Plümer, L. (ed.): Termination Proofs for Logic Programs. LNCS (LNAI), vol. 446. Springer, Heidelberg (1990)
Vasak, T., Potter, J.: Characterization of Termination Logic Programs, IEEE SLP, pp. 140–147 (1986)
Mesnard, F.: Inferring Left-terminating Classes of Queries for Constraint Logic Programs. In: Maher, M. (ed.) JICSLP 1996, pp. 7–21. MIT-Press, Cambridge (1996)
Mesnard, F., Hoarau, S.: A tabulation algorithm for CLP. In: Proc. of the 1st International Workshop on Tabling in Logic Programming, Leuven (1997) Revised report www.univreunion.fr/~gcc
Neumerkel, U.: Mathematische Logik und logikorientierte Programmierung, Skriptum zur Laborübung (1993–1997)
Neumerkel, U.: Teaching Prolog and CLP. Tutorial. PAP (1995) Paris, 1995 and ICLP 1997 Leuven (1997)
Neumerkel, U.: GUPU: A Prolog course environment and its programming methodology. In: Fuchs, N., Geske, U. (eds.) Proc. of the Poster Session at JICSLP 1996, GMD-Studien Nr. 296, Bonn (1996)
Schoenig, S., Ducassé, M.: A Backward Slicing Algorithm for Prolog. In: Cousot, R., Schmidt, D.A. (eds.) SAS 1996. LNCS, vol. 1145, pp. 317–331. Springer, Heidelberg (1996)
Weiser, M.: Programmers Use Slices When Debugging. CACM 25(7), 446–452 (1982)
Weiser, M.: Program Slicing. IEEE TSE 10(4), 352–357 (1984)
Zhao, J., Cheng, J., Ushijima, K.: Literal Dependence Net and Its Use in Concurrent Logic Programming Environment. In: Proc. Workshop on Parallel Logic Programming FGCS 1994, Tokyo, pp. 127–141 (1994)
Author information
Authors and Affiliations
Editor information
Editors and Affiliations
Rights and permissions
Copyright information
© 1999 Springer-Verlag Berlin Heidelberg
About this paper
Cite this paper
Neumerkel, U., Mesnard, F. (1999). Localizing and Explaining Reasons for Non-terminating Logic Programs with Failure-Slices. In: Nadathur, G. (eds) Principles and Practice of Declarative Programming. PPDP 1999. Lecture Notes in Computer Science, vol 1702. Springer, Berlin, Heidelberg. https://doi.org/10.1007/10704567_20
Download citation
DOI: https://doi.org/10.1007/10704567_20
Publisher Name: Springer, Berlin, Heidelberg
Print ISBN: 978-3-540-66540-3
Online ISBN: 978-3-540-48164-5
eBook Packages: Springer Book Archive