In this context, a type is a set of variables together with a collection of constraints on the values of some or all of the predicates determined by those variables; a complete type is a type that constrains all of the predicates determined by its variables. In the theory of graphs, the variables represent vertices and the predicates are the adjacencies between vertices, so a complete type specifies whether an edge is present or absent between every pair of vertices represented by the given variables. That is, a complete type specifies the subgraph that a particular set of vertex variables induces.