Mario Rodríguez-Artalejo
Complutense University of Madrid
Network
Latest external collaboration on country level. Dive into details by clicking on the dots.
Publication
Featured researches published by Mario Rodríguez-Artalejo.
Journal of Logic Programming | 1999
J.C. González-Moreno; M.T. Hortalá-González; Francisco Javier López-Fraguas; Mario Rodríguez-Artalejo
Abstract We propose an approach to declarative programming which integrates the functional and relational paradigms by taking possibly non-deterministic lazy functions as the fundamental notion. Classical equational logic does not supply a suitable semantics in a natural way. Therefore, we suggest to view programs as theories in a constructor-based conditional rewriting logic. We present proof calculi and a model theory for this logic, and we prove the existence of free term models which provide an adequate intended semantics for programs. We develop a sound and strongly complete lazy narrowing calculus, which is able to support sharing without the technical overhead of graph rewriting and to identify safe cases for eager variable elimination. Moreover, we give some illustrative programming examples, and we discuss the implementability of our approach.
Journal of Logic Programming | 1992
Juan José Moreno-Navarro; Mario Rodríguez-Artalejo
Abstract We investigate the experimental programming language BABEL , designed to achieve integration of functional programming (as embodied in HOPE , Standard ML , or MIRANDA ) and logic programming (as embodied in PROLOG) in a simple, flexible, and mathematically well-founded way. The language relies on a constructor discipline, well suited to accommodate PROLOG terms and HOPE -like patterns. From the syntactical point of view, BABEL combines pure PROLOG with a first order functional notation. On the other side, the language uses narrowing as the basis of a lazy reduction semantics which embodies both rewriting and SLD resolution and supports computation with potentially infinite data structures. There is also a declarative semantics, based on Scott domains, which provides a notion of least Herbrand model for BABEL programs. We develop both semantics and prove the existence of least Herbrand models, as well as a soundness result for the reduction semantics w.r.t. the declarative one. We also sketch a completeness result for the reduction semantics and illustrate the features of the language through some programming examples.
international symposium on programming language implementation and logic programming | 1993
Rita Loogen; Francisco Javier López-Fraguas; Mario Rodríguez-Artalejo
Many recent proposals for the integration of functional and logic programming use conditional term rewriting systems (CTRS) as programs and narrowing as goal solving mechanism. This paper specifies a computation strategy for lazy conditional narrowing, based on the idea of transforming patterns into decision trees to control the computation. The specification is presented as a translation of CTRS into Prolog, which makes it executable and portable. Moreover, in comparison to related approaches, our method works for a wider class of CTRS.
Lecture Notes in Computer Science | 2001
Mario Rodríguez-Artalejo
Starting at a seminal paper published by J. Jaffar and J.L. Lassez in 1987 [JL87], Constraint Logic Programming (CLP) has developed as a powerful programming paradigm which supports a clean combination of logic (in the form of Horn clauses) and domain-specific methods for constraint satisfaction, simplification and optimization. The well established mathematical foundations of logic programming [Llo87, Apt90] have been succesfully extended to CLP [JMMS96]. Simultaneously, practical applications of CLP have arisen in many fields. Good introductions to the theory, implementation issues and programming applications of CLP languages can be found in [JM94, MS98]. On the other hand, the combination of logic programming with other declarative programming paradigms (especially functional programming) has been widely investigated during the last decade, leading to useful insights for the design of more expressive declarative languages. The first attempt to combine functional and logic languages was done by J.A. Robinson and E.E. Sibert when proposing the language LOGLISP [RS82]. Some other early proposals for the design of functional + logic languages are described in [De86]. A more recent survey of the operational principles and implementation techniques used for the integration of functions into logic programming can be found in [Han94b].
Proceedings of the Second International Conference on Algebraic and Logic Programming | 1990
Jj Moreno-Navarro; Herbert Kuchen; Rita Loogen; Mario Rodríguez-Artalejo
The paper investigates the implementation of lazy narrowing in the framework of a graph reduction machine. By extending an appropriate architecture for purely functional languages an abstract graph narrowing machine for a functional logic language is constructed. The machine is capable of performing unification and backtracking. The techniques used in functional languages to cope with lazy evaluation are not directly applicable, but must be modified due to the logic component of the implemented language. A prototype implementation of the new machine has been developed.
european symposium on programming | 1996
J. C. González-Moreno; Maria Teresa Hortalá-González; Francisco Javier López-Fraguas; Mario Rodríguez-Artalejo
We propose an approach to declarative programming which integrates the functional and relational paradigms by taking possibly non-deterministic lazy functions as the fundamental notion. Programs in our paradigm are theories in a constructor-based conditional rewriting logic. We present proof calculi and a model theory for this logic, and we prove the existence of free term models which provide an adequate intended semantics for programs. Moreover, we develop a sound and strongly complete lazy narrowing calculus, which is able to support sharing without the technical overhead of graph rewriting and to identify safe cases for eager variable elimination.
european symposium on programming | 1990
Herbert Kuchen; Rita Loogen; Juan José Moreno-Navarro; Mario Rodríguez-Artalejo
We present in this paper a graph-narrowing abstract machine which has been designed to support a sequential eager implementation of a functional logic language. Our approach has been to extend a purely functional, (programmed) graph reduction machine by mechanisms capable of performing unification and backtracking. We describe the structure of the machine and explain the compilation scheme which generates machine code from a given source program. Both the machine and the compilation scheme have been formally specified. A prototype emulator of the machine has been implemented in Occam on a transputer system. Future work is planned for incorporating lazy evaluation and parallelism to the machine.
international symposium on functional and logic programming | 2008
Mario Rodríguez-Artalejo; Carlos A. Romero-Díaz
Uncertainty in Logic Programming has been investigated since about 25 years, publishing papers dealing with various approaches to semantics and different applications. This paper is intended as a first step towards the investigation of uncertainty in Constraint Functional Logic Programming. We revise an early proposal, namely van Emdens Quantitative Logic Programming [22], and we improve it in two ways. Firstly, we generalize van Emdens QLP to a generic scheme QLP(D) parameterized by any given Qualification Domain D, which must be a lattice satisfying certain natural axioms. We present several interesting instances for D, one of which corresponds to van Emdens QLP. Secondly, we generalize van Emdens results by providing stronger ones, concerning both semantics and goal solving. We present Qualified SLD Resolution over D, a sound and strongly complete goal solving procedure for QLP(D), which is applicable to open goals and can be efficiently implemented using CLP technology over any constraint domain CD able to deal with qualification constraints over D. We have developed a prototype implementation for van Emdens QLP as an instance of QLP(D), on top of the CFLP system TOY.
international symposium on functional and logic programming | 2001
Rafael Caballero; Francisco Javier López-Fraguas; Mario Rodríguez-Artalejo
The aim of this paper is to provide theoretical foundations for the declarative debugging of wrong answers in lazy functional logic programming. We rely on a logical framework which formalizes both the intended meaning and the execution model of programs in a simple language which combines the expressivity of pure Prolog and a significant subset of Haskell. As novelties w.r.t. to previous related approaches, we deal with functional values both as arguments and as results of higher order functions, we obtain a completely formal specification of the debugging method, and we extend known soundness and completeness results for the debugging of wrong answers in logic programming to a substantially more difficult context. A prototype implementation of a working debugger is planned as future work.
Electronic Notes in Theoretical Computer Science | 2002
Rafael Caballero; Mario Rodríguez-Artalejo
We present a declarative debugger for lazy functional logic programs with polymorphic type discipline. Whenever a computed answer is considered wrong by the user (error symptom), the debugger locates a program fragment (function dening rule) responsible for the error. The notions of symptom and error have a declarative meaning w.r.t. to an intended program semantics. Debugging is performed by searching in a computation tree which is a logical representation of the computation. Following a known technique, our tool is based on a program transformation: transformed programs return computation trees along with the results expected by source programs. Our transformation is provably correct w.r.t. well-typing and program semantics. As additional improvements w.r.t. related approaches, we solve a previously open problem concerning the use of curried functions, and we provide a correct method for avoiding redundant questions to the user during debugging. A prototype implementation of the debugger is available. Case studies and extensions are planned as future work.