From 1b17ef3ccddbc66e4af677882f9910b390bf391f Mon Sep 17 00:00:00 2001 From: Christoph Egger <Christoph.Egger@fau.de> Date: Wed, 13 Apr 2016 02:18:49 +0200 Subject: [PATCH] Fix bug in FL calculation and refocusing after states --- src/lib/CoAlgLogics.ml | 14 ++------------ src/lib/CoAlgMisc.ml | 4 +++- 2 files changed, 5 insertions(+), 13 deletions(-) diff --git a/src/lib/CoAlgLogics.ml b/src/lib/CoAlgLogics.ml index ee274e3..853e5ae 100644 --- a/src/lib/CoAlgLogics.ml +++ b/src/lib/CoAlgLogics.ml @@ -27,16 +27,6 @@ let mkRuleList_MultiModalK sort bs defer sl : rule list = *) assert (List.length sl = 1); let refocusing = bsetCompare (bsetMakeRealEmpty ()) defer = 0 in - let deferral = - if refocusing then begin - print_endline ("Empty focus (Modal step) at\n" ^ (bsetToString sort bs)); - let newdef = bsetCopy bs in - bsetRem newdef !S.bstrue; - newdef - end - else - defer - in let dep f bsl = (* dependencies for formula f (f is a diamond) *) assert (List.length bsl = 1); (* -+ *) let bs1 = List.hd bsl in (* -+-> [bs1] := bsl *) @@ -70,8 +60,8 @@ let mkRuleList_MultiModalK sort bs defer sl : rule list = (* if f1 = ∀R.D then bs1 = bs1 ∪ { D } *) let nextf1 = (lfGetDest1 sort f1) in bsetAdd bs1 nextf1; - (if (bsetMem deferral f1) && - (lfGetDeferral sort f1) = (lfGetDeferral sort nextf1) then + (if (refocusing && (lfGetDeferral sort nextf1) != (Hashtbl.hash "ε")) || + ((bsetMem defer f1) && (lfGetDeferral sort f1) = (lfGetDeferral sort nextf1)) then bsetAdd defer1 nextf1;) else () in diff --git a/src/lib/CoAlgMisc.ml b/src/lib/CoAlgMisc.ml index 2f5fd5e..504a030 100644 --- a/src/lib/CoAlgMisc.ml +++ b/src/lib/CoAlgMisc.ml @@ -891,7 +891,9 @@ let rec detClosure vars nomTbl hcF fset vset atset nomset s f = raise (C.CoAlgException ("Invalid sort (i.e. sort out of range): " ^ sstr)) else (); if C.HcFHt.mem vset.(s) f && - compare (C.HcFHt.find vset.(s) f) deferral = 0 then () + (compare (C.HcFHt.find vset.(s) f) deferral = 0) || + compare deferral "ε" = 0) + then () else let () = C.HcFHt.add vset.(s) f deferral in let () = C.HcFHt.add fset.(s) f () in -- GitLab