A normal logic program P is transformed to another Pω by a bottom-up computation on the positive component of P while the negative counterpart is left untouched. The declarative semantics of P is given by the completion of Pω. The completed predicate definitions in Pω, if they do not contain local variables, can be used as a basis for expanding each negated atom in the bodies of Pω. We show that for a class of programs where every negative subgoal can be expanded, the resultant program P′ is a definite logic program with equality and disequality constraints. If the program falls outside this class, the resultant program may be executed using constructive negation. Our proposed scheme provides an effective sound and complete query-answering system for the well-founded models of a class of programs whose positive part has a finite Pω and whose clauses satisfy the positive groundedness property defined herein.