diff --git a/src/lib/CoAlgLogicUtils.ml b/src/lib/CoAlgLogicUtils.ml index 8438f63fa934d6a057d19184e9ff6021b33c2f5d..591cf8cfd0504ffdafe3e2f8e959e4990c840f56 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 5fc525bbac2e3903f81bfda6c0b027b0a0c4d535..7d460bdf2ef5a7be4b6a4fa4ff6cdea127807c26 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