Type Analysis of Prolog Using Type Graphs