Recursive query optimization in deductive databases via proof-tree transformations