Compositional Analysis of Modular Logic Programs