diff --git a/CoolUtils.ml b/CoolUtils.ml
index c525032fbc2070f1aded3475efc7e0cd8d625dfa..24b64863295feee9990f638ef9a62b5d5ad03de0 100644
--- a/CoolUtils.ml
+++ b/CoolUtils.ml
@@ -44,3 +44,7 @@ let cl_set_agents arr = ignore (
 
 
 let intlist_of_string str = List.map int_of_string (Str.split (Str.regexp "[ \t,]+") str)
+
+let compose f g x = f (g (x))
+let flip f y x = f x y
+
diff --git a/CoolUtils.mli b/CoolUtils.mli
index 24af1e8a09b690e4e6282ff635ab428e0770934a..24016a479673caf6a0919ac4eadc1f29f2cb62a8 100644
--- a/CoolUtils.mli
+++ b/CoolUtils.mli
@@ -21,3 +21,5 @@ val cl_set_agents : int array -> unit
 
 val intlist_of_string : string -> int list
 
+val compose : ('b -> 'c) -> ('a -> 'b) -> ('a -> 'c)
+val flip : ('a -> 'b -> 'c) -> ('b -> 'a -> 'c)
diff --git a/coalgcompare.ml b/coalgcompare.ml
index 26bc05f73be13167909fd4f4dac88abbe596c2d6..35bcecd264cabd6a9f14db4064fd1404fda2845a 100644
--- a/coalgcompare.ml
+++ b/coalgcompare.ml
@@ -204,16 +204,20 @@ let doTestK (tboxsizes:int list) (szlist:int list) : testresults =
     lPPP A list of pairs (p->p->p, n), e.g. (.+., 1).
   *)
   let timeout = !ptimeout in (* 5 minutes *)
-  let lF = List.map (fun p -> (C.AP ("p"^(string_of_int p)), 1)) (1--3) in
-  let lFF = [(C.const_not,1)] in
-  let lFFF = [(C.const_and,1)] in (* Warning: This forbids disjunctions! *)
-  let lPFF = [(C.const_ex,1); (C.const_ax, 1)] in
-  (* role names *)
-  let lP : (string *int) list = List.map (fun p -> ("R"^(string_of_int p), 1)) (1--3) in
-  let lPP : ((string -> string) * int) list= [] in
-  let lFP : ((C.formula -> string) * int) list = [] in
-  let lPPP = [] in
-  let (genF,_) = G.mk_generator lF lFF lFFF lPFF lP lPP lFP lPPP in
+  let lF = List.map (fun p -> C.AP ("p"^(string_of_int p))) (1--3) in
+  let lF = List.append lF (List.map (C.const_not) lF) in
+  let lF = C.TRUE :: C.FALSE :: lF in
+  let lF = List.map (fun v -> (v,1)) lF in
+  let roles : string list = List.map (fun p -> "R"^(string_of_int p)) (1--3) in
+  let exs : (C.formula -> C.formula) list = List.map C.const_ex roles in
+  let axs : (C.formula -> C.formula) list = List.map C.const_ax roles in
+  let lFF = List.map (fun v -> (v,1)) (List.append exs axs) in
+  let lFFF : (C.formula -> C.formula -> C.formula) list = List.append
+                (List.map (fun x y z -> x (C.const_and y z)) exs)
+                (List.map (fun x y z -> x (C.const_or y z))  axs)
+  in
+  let lFFF = List.map (fun v -> (v,1)) lFFF in
+  let (genF,_) = G.mk_generator lF lFF lFFF [] [] [] [] [] in
   let reasonerNames = List.map (fun (_,s) -> s) solvs in
   let s1 = 0 in (* probably the correct formula... *)
   let formulas = List.map (fun (sz,cnt) ->