Abstract
We propose a new methodology for synthesizing correct functional logic programs. We aim to create an integrated development environment in which it is possible to debug a program and correct it automatically. We start from a declarative diagnoser that we have developed previously which allows us to identify wrong program rules w.r.t. an intended specification. Then a bug-correction, program synthesis methodology tries to correct the erroneous components of the wrong code. We propose a hybrid, top-down (unfolding-based) as well as bottom-up (induction-based), approach for the automatic correction of functional logic programs which is driven by a set of evidence examples which are automatically produced as an outcome by the diagnoser. The resulting program is proven to be correct and complete w.r.t. the considered example sets. Finally, we also provide a prototypical implementation which we use for an experimental evaluation of our system.
This work has been partially supported by CICYT under grant TIC2001-2705-C03-01, by Acción Integrada Hispano-Italiana HI2000-0161 and by Generalitat Valenciana under grant GV01-424.
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
M. Alpuente, D. Ballis, F. J. Correa, and M. Falaschi. Correction of Functional Logic Programs. Technical report, DSIC-II/23/02, UPV, 2002. Available at URL: http://www.dsic.upv.es/users/elp/papers.html.
M. Alpuente, F. J. Correa, and M. Falaschi. Debugging Scheme of Functional Logic Programs. In Proc. of WFLP’01, vol. 64 of ENTCS, 2002.
M. Alpuente, F. J. Correa, M. Falaschi, and S. Marson. The Debugging System buggy. Technical report, UPV, 2001. Available at URL: http://www.dsic.upv.es/users/elp/soft.html.
M. Alpuente, M. Falaschi, G. Moreno, and G. Vidal. Safe folding/unfolding with conditional narrowing. In Proc. ALP’97, pp. 1–15. Springer LNCS 1298, 1997.
M. Alpuente, M. Falaschi, G. Moreno, and G. Vidal. A Transformation System for Lazy Functional Logic Programs. In Proc. of FLOPS’99, pp. 147–162. Springer LNCS 1722, 1999.
M. Alpuente, F. Correa, and M. Falaschi. Declarative Debugging of Funtional Logic Programs. In Proc. of WRS’01, vol. 57 of ENTCS, 2001.
F. Baader and T. Nipkow. Term Rewriting and All That. Cambridge University Press, 1998.
H. Bostrom and P. Idestam-Alquist. Induction of Logic Programs by Example-guided Unfolding. Journal of Logic Programming, 40:159–183, 1999.
Henrik Bostrom. Specialization of recursive predicates. In European Conference on Machine Learning, pp. 92–106, 1995.
M. Comini, R. Gori, and G. Levi. Assertion based Inductive Verification Methods for Logic Programs. In Proc. of MFCSIT’00, vol. 40 of ENTCS, 2001.
M. Comini, G. Levi, and G. Vitiello. Declarative Diagnosis Revisited. In Proc. of ILP’95, pp. 275–287. The MIT Press, 1995.
P. Cousot and R. Cousot. Abstract Interpretation: A Unified Lattice Model for Static Analysis of Programs by Construction or Approximation of Fixpoints. In Proc. of POPL’77, pp. 238–252, 1977.
N. Dershowitz and U. Reddy. Deductive and Inductive Synthesis of Equational Programs. Journal of Symbolic Computation, 15:467–494, 1993.
M. Falaschi, G. Levi, M. Martelli, and C. Palamidessi. Declarative Modeling of the Operational Behavior of Logic Languages. TCS, 69(3):289–318, 1989.
M. Fay. First Order Unification in an Equational Theory. In Proc of 4th Int’l Conf. on Automated Deduction, pp. 161–167, 1979.
C. Ferri, J. Hernández, and M.J. Ramírez. The FLIP System Homepage. 2000. Available at http://www.dsic.upv.es/users/elp/soft.html.
C. Ferri, J. Hernández, and M.J. Ramírez. Incremental Learning of Functional Logic Programs. In Proc. FLOPS’01, pp. 233–247. LNCS 2024, 2001.
E. Giovannetti, G. Levi, C. Moiso, and C. Palamidessi. Kernel Leaf: A Logic plus Functional Language. JCSS, 42:363–377, 1991.
M. Hanus. The Integration of Functions into Logic Programming: From Theory to Practice. Journal of Logic Programming, 19&20:583–628, 1994.
J. Hernández and M.J. Ramírez. Inverse Narrowing for the Induction of Functional Logic Programs. In Proc. of APPIA-GULP-PRODE’ 98, pp. 379–393, 1998.
S. Hölldobler. Foundations of Equational Logic Programming. LNAI 353, 1989.
J.W. Klop. Term Rewriting Systems. In Handbook of Logic in Computer Science, vol. I, pp. 1–112. Oxford University Press, 1992.
S. Lucas. Context-Sensitive Rewriting Strategies. Information and Computation, 178(1):294–343, 2002.
S. Lucas. Termination of Canonical Context-Sensitive Rewriting. In Proc. RTA’02, pp. 296–310. Springer LNCS 2378, 2002.
M.J. Maher. Equivalences of Logic Programs. In Foundations of Deductive Databases and Logic Programming, pp. 627–658. Morgan Kaufmann, 1988.
J.J. Moreno-Navarro and M. Rodríguez-Artalejo. Logic Programming with Functions and Predicates: The language Babel. JLP, 12(3):191–224, 1992.
P. Padawitz. Computing in Horn Clause Theories, vol. 16 of EATCS Monographs on Theoretical Computer Science. Springer-Verlag, Berlin, 1988.
A. Pettorossi and M. Proietti. Transformation of Logic Programs. In Handbook of Logic in Artificial Intelligence, vol. 5, pp. 697–787. Oxford University Press, 1998.
U.S. Reddy. Narrowing as the Operational Semantics of Functional Languages. In Proc. of Second IEEE Int’l Symp. on Logic Programming, pp. 138–151, 1985.
Author information
Authors and Affiliations
Editor information
Editors and Affiliations
Rights and permissions
Copyright information
© 2003 Springer-Verlag Berlin Heidelberg
About this paper
Cite this paper
Alpuente, M., Ballis, D., Correa, F.J., Falaschi, M. (2003). Correction of Functional Logic Programs. In: Degano, P. (eds) Programming Languages and Systems. ESOP 2003. Lecture Notes in Computer Science, vol 2618. Springer, Berlin, Heidelberg. https://doi.org/10.1007/3-540-36575-3_5
Download citation
DOI: https://doi.org/10.1007/3-540-36575-3_5
Published:
Publisher Name: Springer, Berlin, Heidelberg
Print ISBN: 978-3-540-00886-6
Online ISBN: 978-3-540-36575-4
eBook Packages: Springer Book Archive