Simplifying Questions in Maude Declarative Debugger by Transforming Proof Trees

  • Rafael Caballero
  • Adrián Riesco
  • Alberto Verdejo
  • Narciso Martí-Oliet
Part of the Lecture Notes in Computer Science book series (LNCS, volume 7225)


Declarative debugging is a debugging technique that abstracts the execution details that in general may be difficult to follow in declarative languages to focus on results. It relies on a data structure representing the wrong computation, the debugging tree, which is traversed by asking questions to the user about the correctness of the computation steps related to each node. Thus, the complexity of the questions is an important factor regarding the applicability of the technique. In this paper we present a transformation for debugging trees for Maude specifications that ensures that any subterm occurring in a question has been previously replaced by the most reduced form that it has taken during the computation, thus ensuring that questions become as simple as possible.


declarative debugging Maude proof tree transformation 


Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.


  1. 1.
    Bouhoula, A., Jouannaud, J.-P., Meseguer, J.: Specification and proof in membership equational logic. Theoretical Computer Science 236, 35–132 (2000)MathSciNetzbMATHCrossRefGoogle Scholar
  2. 2.
    Caballero, R., Martí-Oliet, N., Riesco, A., Verdejo, A.: Improving the debugging of membership equational logic specifications. Technical Report SIC-02-11, Dpto. Sistemas Informáticos y Computación, Universidad Complutense de Madrid (March 2011),
  3. 3.
    Caballero, R., Rodríguez-Artalejo, M.: DDT: A Declarative Debugging Tool for Functional-Logic Languages. In: Kameyama, Y., Stuckey, P.J. (eds.) FLOPS 2004. LNCS, vol. 2998, pp. 70–84. Springer, Heidelberg (2004)CrossRefGoogle Scholar
  4. 4.
    Clavel, M., Durán, F., Eker, S., Lincoln, P., Martí-Oliet, N., Meseguer, J., Talcott, C.: All About Maude - A High-Performance Logical Framework. LNCS, vol. 4350. Springer, Heidelberg (2007)zbMATHGoogle Scholar
  5. 5.
    Davie, T., Chitil, O.: Hat-Delta: One right does make a wrong. In: 7th Symposium on Trends in Functional Programming, TFP 2006 (2006)Google Scholar
  6. 6.
    Eker, S.: Term rewriting with operator evaluation strategies. In: Proceedings of the 2nd International Workshop on Rewriting Logic and its Applications, WRLA 1998. Electronic Notes in Theoretical Computer Science, vol. 15, pp. 311–330 (1998)Google Scholar
  7. 7.
    Insa, D., Silva, J., Riesco, A.: Balancing execution trees. In: Gulías, V.M., Silva, J., Villanueva, A. (eds.) Proceedings of the 10th Spanish Workshop on Programming Languages, PROLE 2010, pp. 129–142. Ibergarceta Publicaciones (2010)Google Scholar
  8. 8.
    MacLarty, I.: Practical declarative debugging of Mercury programs. Master’s thesis, University of Melbourne (2005)Google Scholar
  9. 9.
    Meseguer, J.: Conditional rewriting logic as a unified model of concurrency. Theoretical Computer Science 96(1), 73–155 (1992)MathSciNetzbMATHCrossRefGoogle Scholar
  10. 10.
    Naish, L.: A declarative debugging scheme. Journal of Functional and Logic Programming 1997(3) (1997)Google Scholar
  11. 11.
    Nilsson, H.: How to look busy while being as lazy as ever: the implementation of a lazy functional debugger. Journal of Functional Programming 11(6), 629–671 (2001)MathSciNetzbMATHCrossRefGoogle Scholar
  12. 12.
    Nilsson, H., Sparud, J.: The evaluation dependence tree as a basis for lazy functional debugging. Automated Software Engineering 4, 121–150 (1997)CrossRefGoogle Scholar
  13. 13.
    Pope, B.: Declarative Debugging with Buddha. In: Vene, V., Uustalu, T. (eds.) AFP 2004. LNCS, vol. 3622, pp. 273–308. Springer, Heidelberg (2005)CrossRefGoogle Scholar
  14. 14.
    Riesco, A., Verdejo, A., Martí-Oliet, N., Caballero, R.: Declarative debugging of rewriting logic specifications. Journal of Logic and Algebraic Programming (2011) (to appear)Google Scholar
  15. 15.
    Shapiro, E.Y.: Algorithmic Program Debugging. ACM Distinguished Dissertation. MIT Press (1983)Google Scholar
  16. 16.
    Silva, J.: A Comparative Study of Algorithmic Debugging Strategies. In: Puebla, G. (ed.) LOPSTR 2006. LNCS, vol. 4407, pp. 143–159. Springer, Heidelberg (2007)CrossRefGoogle Scholar
  17. 17.
    Tessier, A., Ferrand, G.: Declarative Diagnosis in the CLP Scheme. In: Deransart, P., Hermenegildo, M.V., Maluszynski, J. (eds.) DiSCiPl 1999. LNCS, vol. 1870, pp. 151–174. Springer, Heidelberg (2000)CrossRefGoogle Scholar

Copyright information

© Springer-Verlag Berlin Heidelberg 2012

Authors and Affiliations

  • Rafael Caballero
    • 1
  • Adrián Riesco
    • 1
  • Alberto Verdejo
    • 1
  • Narciso Martí-Oliet
    • 1
  1. 1.Facultad de InformáticaUniversidad Complutense de MadridSpain

Personalised recommendations