show_winner g x (y : ys) =
  case (g y) of 
   (ExistT u (Pair v (ExistT f _))) -> 
    "   for " P.++ P.show y P.++ ": " P.++ "path " P.++ P.show v P.++ " of strenght "  P.++ P.show (haskZ u) P.++  ", " P.++ 
    P.show (1 P.+ haskZ u) P.++ "-" P.++ "coclosed set: " P.++ P.show (P.filter (\(xx, yy) -> f (Pair xx yy) P.== True) [(a, b) | a <- (c2hl cand_all), b <- (c2hl cand_all), a P./= b])
    P.++ "\n" P.++ show_winner g x ys
show_winner g x (y : ys) =
  case (g y) of 
   (ExistT u (Pair v (ExistT f _))) -> 
    "   for " P.++ P.show y P.++ ": " P.++ "path " P.++ P.show v P.++ " of strenght "  P.++ P.show (haskZ u) P.++  ", " P.++ 
    P.show (1 P.+ haskZ u) P.++ "-" P.++ "coclosed set: " P.++ P.show (P.filter (\(xx, yy) -> f (Pair xx yy) P.== True) [(a, b) | a <- (c2hl cand_all), b <- (c2hl cand_all), a P./= b])
    P.++ "\n" P.++ show_winner g x ys
show_winner g x (y : ys) =
  case (g y) of 
   (ExistT u (Pair v (ExistT f _))) -> 
    "   for " P.++ P.show y P.++ ": " P.++ "path " P.++ P.show v P.++ " of strenght "  P.++ P.show (haskZ u) P.++  ", " P.++ 
    P.show (1 P.+ haskZ u) P.++ "-" P.++ "coclosed set: " P.++ P.show (P.filter (\(xx, yy) -> f (Pair xx yy) P.== True) [(a, b) | a <- (c2hl cand_all), b <- (c2hl cand_all), a P./= b])
    P.++ "\n" P.++ show_winner g x ys