From b7c3a47e4ba386281c52a76e6c008295d0126dd1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thorsten=20Wi=C3=9Fmann?= <uni@thorsten-wissmann.de> Date: Mon, 13 Jan 2014 13:41:50 +0100 Subject: [PATCH] More helper functions --- CoAlgLogics.ml | 22 +++++++++++++++++----- CoAlgMisc.ml | 1 + CoAlgMisc.mli | 1 + 3 files changed, 19 insertions(+), 5 deletions(-) diff --git a/CoAlgLogics.ml b/CoAlgLogics.ml index fb71722..965295f 100644 --- a/CoAlgLogics.ml +++ b/CoAlgLogics.ml @@ -187,18 +187,30 @@ let disjointAgents sort (a: CoAlgMisc.localFormula) (b: CoAlgMisc.localFormula) Array.iter f la; !res +let compatible sort (a: bset) formula1 = + let res = ref (true) in + let f formula2 = + if not (disjointAgents sort formula1 formula2) + then res := false + else () + in + bsetIter f a; + !res (* -let maxDisjoints (a: bset) : bset list = +let maxDisjoints sort (a: bset) : bset list = let f formula acc = let g cc acc' = - if (compatible cc formula) - then new bset with formula and cc and then prepend it to acc' + if (compatible sort cc formula) + then let newcc = bsetCopy cc in + bsetAdd newcc formula; + (newcc)::acc' + else acc' in - List.fold acc g acc + List.fold_right acc g acc in bsetFold a f [bsetMake ()] -*) + *) (* CoalitionLogic: tableau rules for satisfiability diff --git a/CoAlgMisc.ml b/CoAlgMisc.ml index 17dc05b..c3ec6e6 100644 --- a/CoAlgMisc.ml +++ b/CoAlgMisc.ml @@ -426,6 +426,7 @@ let bsetMake () = S.makeBS () let bsetAdd bs lf = S.addBSNoChk bs lf let bsetMem bs lf = S.memBS bs lf let bsetRem bs lf = S.remBS bs lf +let bsetCopy bs = S.copyBS bs let bsetFold fkt bs init = S.foldBS fkt bs init let bsetIter fkt bset = S.iterBS fkt bset let bsetAddTBox sort bs = S.unionBSNoChk bs !tboxTable.(sort) diff --git a/CoAlgMisc.mli b/CoAlgMisc.mli index bc4e22f..1958b4f 100644 --- a/CoAlgMisc.mli +++ b/CoAlgMisc.mli @@ -251,6 +251,7 @@ val bsetMem : bset -> localFormula -> bool val bsetFold : (localFormula -> 'a -> 'a) -> bset -> 'a -> 'a val bsetIter : (localFormula -> unit) -> bset -> unit val bsetAddTBox : sort -> bset -> bset +val bsetCopy : bset -> bset val csetMake : unit -> cset val csetAdd : cset -> atFormula -> unit -- GitLab