public void TestMobilizedWhenAlloc() { ILiteral alloc = new Proposition ("allocated"); ILiteral mob = new Proposition ("mobilized"); ILiteral nalloc = new Negation (alloc); ILiteral nmob = new Negation (mob); var lts = new BuchiAutomaton<AutomatonNode> (new AutomatonNodeFactory ()); var n0 = lts.AddNode ("i"); var n1 = lts.AddNode ("s0"); var n2 = lts.AddNode ("s1"); var n3 = lts.AddNode ("s2"); lts.SetInitialNode (n0); lts.AddTransition (n0, n1, new ILiteral [] { nalloc, nmob }); lts.AddTransition (n1, n2, new ILiteral [] { alloc, nmob }); lts.AddTransition (n2, n3, new ILiteral [] { alloc, mob }); lts.AddTransition (n3, n0, new ILiteral [] { nalloc, nmob }); lts.SetAcceptanceCondition (new BuchiAcceptance<AutomatonNode> (lts.Nodes)); var f = new StrongImplication (alloc, new Next (mob)).Negate (); var t = new GPVW (); var gba = t.GetGBA (f); var ba = gba.ToBA (); var otfec = new OnTheFlyEmptinessChecker<AutomatonNode,AutomatonNode> (ba, lts); var e1 = otfec.Emptiness (); if (e1) { foreach (var i in otfec.counterexample_prefix) { Console.WriteLine (i.Name); } Console.WriteLine ("-- loop starts here --"); foreach (var i in otfec.counterexample_loop) { Console.WriteLine (i.Name); } Console.WriteLine ("-- loop ends here --"); } else { Console.WriteLine ("No trace found"); } }
public void TestMobilizedWhenAllocGBA() { ILiteral alloc = new Proposition ("allocated"); ILiteral mob = new Proposition ("mobilized"); ILiteral nalloc = new Negation (alloc); ILiteral nmob = new Negation (mob); var lts = new BuchiAutomaton<AutomatonNode> (new AutomatonNodeFactory ()); var n0 = lts.AddNode ("i"); var n1 = lts.AddNode ("s0"); var n2 = lts.AddNode ("s1"); var n3 = lts.AddNode ("s2"); lts.SetInitialNode (n0); lts.AddTransition (n0, n1, new ILiteral [] { nalloc, nmob }); lts.AddTransition (n1, n2, new ILiteral [] { alloc, nmob }); lts.AddTransition (n2, n3, new ILiteral [] { alloc, mob }); lts.AddTransition (n3, n0, new ILiteral [] { nalloc, nmob }); lts.SetAcceptanceCondition (new BuchiAcceptance<AutomatonNode> (lts.Nodes)); var f = new StrongImplication (alloc, new Next (mob)).Negate (); var t = new GPVW (); var gba = t.GetGBA (f); var otfec = new OnTheFlyGBAEmptinessChecker (gba, lts); var e1 = otfec.EmptinessSearch (); Console.WriteLine (e1); }
public void TestMobilizedWhenAlloc() { ITLFormula f0 = new StrongImplication (new Proposition ("allocated"), new Proposition ("allocated")); AssertEquivalentEmptiness (f0.Negate ()); }