Observable Behaviors and Equivalences of Logic Programs