Logic Programming: The Evolving Algebra Approach