A Bottom-Up Polymorphic Type Inference in Logic Programming