Contributions to the Theory of Logic Programming