| Unfolding Fuzzy Logic Programs
|Unfolding is a semantics-preserving program transformation
technique that consists in the expansion of subexpressions of a program using their own definitions. The unfolding transformation is able to improve programs, generating more efficient code. Unfolding is the basis for developing sophisticated and powerful programming tools, such as fold/unfold transformation systems or partial evaluators.
In this paper we address the problem of extending the classical definition of the unfolding rule (for pure logic programs) to a fuzzy logic setting. We use a fuzzy variant of Prolog where a fuzzy computed answer is a pair
(truth degree; substitution) computed by Fuzzy SLD-Resolution. We adapt the concept of a computation rule, a mapping that selects the subexpression of a goal involved in a computation step, and we prove the independence
of the computation rule. Moreover, we define a fuzzy unfolding rule and we demonstrate its strong correctness properties, that is, the original and the unfolded program compute the same fuzzy computed answers. Finally, we discuss how to improve the expressive power (of
the fuzzy component) of our language by introducing a more
general labeled mark language.