let pp pp_e fmt (g, e, p) = 
    Format.fprintf fmt "@[(G:";
    G.pp fmt g; 
    Format.fprintf fmt ",@, E:";
    pp_e fmt e; 
    Format.fprintf fmt ",@, V:"
    (let v = Partition.v_of p in
       if V.is_empty v then
         Format.fprintf fmt "{}"
       else 
       V.pp fmt v);
    Format.fprintf fmt ",@, D:"
    (let d = Partition.d_of p in
       if D.is_empty d then
         Format.fprintf fmt "{}"
       else 
         D.pp fmt d);
    Format.fprintf fmt ")@]@."