  Program slicing has been mainly studied in the context of imperative
languages, where it has been applied to a wide variety of software engineering
tasks, like program understanding, maintenance, debugging, testing, code reuse,
etc. This work introduces the first forward slicing technique for declarative
multi-paradigm programs which integrate features from functional and logic
programming. Basically, given a program and a slicing criterion (a function
call in our setting), the computed forward slice contains those parts of the
original program which are reachable from the slicing criterion. Our approach
to program slicing is based on an extension of (online) partial evaluation.
Therefore, it provides a simple way to develop program slicing tools from
existing partial evaluators and helps to clarify the relation between both
methodologies. A slicing tool for the multi-paradigm language Curry, which
demonstrates the usefulness of our approach, has been implemented in Curry
itself.
