From 26e21f07f9b0db99fc87c2a348d823a2e8985b38 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Thorsten=20Wi=C3=9Fmann?= <edu@thorsten-wissmann.de>
Date: Thu, 15 May 2014 11:12:05 +0200
Subject: [PATCH] Add coalition list printing

---
 src/lib/CoAlgLogicUtils.ml  | 20 +++++++++++++++++++-
 src/lib/CoAlgLogicUtils.mli |  2 ++
 2 files changed, 21 insertions(+), 1 deletion(-)

diff --git a/src/lib/CoAlgLogicUtils.ml b/src/lib/CoAlgLogicUtils.ml
index 8438f63..591cf8c 100644
--- a/src/lib/CoAlgLogicUtils.ml
+++ b/src/lib/CoAlgLogicUtils.ml
@@ -68,8 +68,26 @@ let maxDisjoints sort (a: bset) : bset list =
     let tmpf : bset -> int -> bset =
         (fun bs f -> bsetAdd bs (lfFromInt f) ; bs)
     in
-    List.map (List.fold_left tmpf (bsetMake ()))
+    List.map (List.fold_left tmpf (bsetMakeRealEmpty ()))
              (List.map S.elements intlist)
 
+let string_of_coalition sort bs =
+    let modlist = bsetFold (fun x l -> x::l) bs [] in
+    let show modality =
+        let (o,c) = (* open/close brackets *)
+            match lfGetType sort modality with
+            | EnforcesF -> ("[","]")
+            | AllowsF -> ("{","}")
+            | _ -> ("¿","?")
+        in
+        let agents = (Array.to_list (lfGetDestAg sort modality)) in
+        let agents = List.map string_of_int agents in
+        o^(String.concat ", " agents)^c
+    in
+    let modlist = List.map show modlist in
+    "{ " ^ (String.concat ", " modlist) ^ " }"
+
 
+let string_of_coalition_list sort bs_list =
+    String.concat "\n" (List.map (string_of_coalition sort) bs_list)
 
diff --git a/src/lib/CoAlgLogicUtils.mli b/src/lib/CoAlgLogicUtils.mli
index 5fc525b..7d460bd 100644
--- a/src/lib/CoAlgLogicUtils.mli
+++ b/src/lib/CoAlgLogicUtils.mli
@@ -10,6 +10,8 @@ open CoolUtils
 val disjointAgents : sort -> localFormula -> localFormula -> bool
 
 val maxDisjoints : sort -> bset -> bset list
+val string_of_coalition : sort -> bset -> string
+val string_of_coalition_list : sort -> bset list -> string
 
 
 
-- 
GitLab