A method of combining equality relation into existing logic programming languages is suggested. In this, equality relation is restricted in occurrences and forms so that only pure equations are allowed. Under these restrictions, however, many useful language features are still supported, which include user-definable abstract data types, concept of classes and generic operations, and some degree of equational style programming. Also the reduction algorithm adopted here has the same effect as the lazy evaluation, which broadens the extent of equational programming an greatly enhances the efficiency of the interpreters. But the most advantageous feature of this approach is that the underlying logic with its refutation procedure is logically complete. It guarantees that you can get a correct answer whenever there exists.