Dr Andrews here provides a homogeneous treatment of the semantics (operational and logical) of both theoretical and practical logic programming languages. He shows how the rift between theory and practice in logic programming can be bridged. This is achieved by precisely characterizing the way in which 'depth-first' search for solutions to a logical formula - the usual strategy in most practical languages - is incomplete. Languages that perform 'breadth-first'...