Invertibility of Logic Programs.
Abstract:
Predicates can describe functions the arguments of the predicates are the input and output parameters of the function. Logic programs describe relationships between objects rather than merely sequential instructions, and it is common for both a function and its inverse to be computable by the same logic program. Given values for some subset of the arguments to a function-describing predicate, one may be able to decide, in general, which of the remaining arguments are computable by the logic program. The concept of functional inverse can be generalized in the context of logic programming. A new kind of inverse, called j-inverse, is defined. Two algorithms which analyze and test the recursive structure of logic programs for any specific invertibility are presented. A set of guidelines to help the logic programmer construct j-invertible programs is given.