def test_hoa_body(self): """Test that the HOA body is correct.""" state_edges_dict = OrderedDict({}) hoa_body = HOABody(state_edges_dict) state_edges_dict[State(0)] = [ Edge( [0], label=~self.alias_a & ~self.alias_b, ), Edge( [0], label=self.alias_a & ~self.alias_b, acc_sig={0}, ), Edge( [0], label=~self.alias_a & self.alias_b, acc_sig={1}, ), Edge( [0], label=self.alias_a & self.alias_b, acc_sig={0, 1}, ), ] assert self.hoa_body == hoa_body
def test_hoa(self): """Test that the HOA automaton is correct.""" hoa_header = HOAHeader( identifier("v1"), Acceptance(Fin(0), identifier("co-Buchi")), nb_states=4, start_states={frozenset([0, 2]), frozenset([3])}, propositions=(string("a"), string("b"), string("c")), name=string("(Fa & G(b&Xc)) | c"), ) state_edges_dict = OrderedDict({}) state_edges_dict[State(0, name=string("Fa"))] = [ Edge([0], label=TRUE, acc_sig=frozenset({0})), Edge([1], label=LabelAtom(0)), ] state_edges_dict[State(1, name=string("true"))] = [Edge([1], label=TRUE)] state_edges_dict[State(2, name=string("G(b&Xc)"))] = [ Edge([2, 3], label=LabelAtom(1)) ] state_edges_dict[State(3, name=string("c"))] = [Edge([1], label=LabelAtom(2))] hoa_body = HOABody(state_edges_dict) hoa_obj = HOA(hoa_header, hoa_body) assert self.hoa_obj == hoa_obj
def test_hoa_body(self): """Test that the HOA body is correct.""" a0, a1 = LabelAtom(0), LabelAtom(1) state_edges_dict = OrderedDict({}) state_edges_dict[State(0)] = [ Edge( [0], label=~a0 & ~a1, ), Edge( [0], label=a0 & ~a1, acc_sig={0}, ), Edge( [0], label=~a0 & a1, acc_sig={1}, ), Edge( [0], label=a0 & a1, acc_sig={0, 1}, ), ] hoa_body = HOABody(state_edges_dict) assert self.hoa_body == hoa_body
def test_hoa_body(self): """Test that the HOA body is correct.""" state_edges_dict = OrderedDict({}) state_edges_dict[State(0)] = [ Edge([0]), Edge([0], acc_sig=frozenset({0})), Edge([0], acc_sig=frozenset({1})), Edge([0], acc_sig=frozenset({0, 1})), ] hoa_body = HOABody(state_edges_dict) assert self.hoa_body == hoa_body
def test_body(self): """Test that the HOA body is correct.""" state_edges_dict = OrderedDict({}) state_edges_dict[State(0, name=string("a U b"))] = [ Edge( [0], LabelAtom(0) & ~LabelAtom(1), {0}, ), Edge([1], LabelAtom(1), {0}), ] state_edges_dict[State(1)] = [Edge([1], TRUE, {1})] assert self.hoa_body.state2edges == state_edges_dict
def test_hoa_body(self): """Test that the HOA body is correct.""" state_edges_dict = OrderedDict({}) state_edges_dict[State(0, label=LabelAtom(0), acc_sig=frozenset({0}))] = [ Edge([0]), Edge([1]), ] state_edges_dict[State(1, label=~LabelAtom(0))] = [ Edge([0]), Edge([1]), ] hoa_body = HOABody(state_edges_dict) assert self.hoa_body == hoa_body
def test_hoa(self): """Test that the HOA automaton is correct.""" hoa_header = HOAHeader( identifier("v1"), Acceptance(Inf(0), identifier("Buchi")), start_states={frozenset([0])}, propositions=(string("a"), string("b")), name=string("GFa | G(b <-> Xa)"), properties=[ identifier("explicit-labels"), identifier("trans-labels"), identifier("trans-acc"), ], ) state_edges_dict = OrderedDict({}) state_edges_dict[State(0)] = [ Edge([1], label=TRUE), Edge([2], label=LabelAtom(1)), Edge([3], label=~(LabelAtom(1))), ] state_edges_dict[State(1, name=string("GFa"))] = [ Edge([1], label=LabelAtom(0), acc_sig=frozenset({0})), Edge([1], label=~(LabelAtom(0))), ] state_edges_dict[State(2, name=string("a & G(b <-> Xa)"))] = [ Edge( [2], label=LabelAtom(0) & LabelAtom(1), acc_sig=frozenset({0}), ), Edge( [3], label=LabelAtom(0) & ~LabelAtom(1), acc_sig=frozenset({0}), ), ] state_edges_dict[State(3, name=string("!a & G(b <-> Xa)"))] = [ Edge( [2], label=~LabelAtom(0) & LabelAtom(1), acc_sig=frozenset({0}), ), Edge( [3], label=~LabelAtom(0) & ~LabelAtom(1), acc_sig=frozenset({0}), ), ] hoa_body = HOABody(state_edges_dict) hoa_obj = HOA(hoa_header, hoa_body) assert self.hoa_obj == hoa_obj
def edge(self, args): """Parse the 'edge' node.""" if len(args) == 1: return Edge(args[0]) elif len(args) == 2: # either 'label state_conj' or 'state_conj acc-sig' first, second = args if isinstance(first, Tree): return Edge(second, label=first.children[0]) else: return Edge(first, acc_sig=frozenset( second.children)) # acc_sig as frozenset() elif len(args) == 3: label, state_conj, acc_sig = ( args[0].children[0], args[1], frozenset(args[2].children), ) return Edge(state_conj, label=label, acc_sig=acc_sig) else: raise ValueError("Should not be here.")
def test_hoa(self): """Test that the HOA automaton is correct.""" hoa_header = HOAHeader( identifier("v1"), Acceptance(Inf(0), identifier("Buchi")), nb_states=3, start_states={frozenset([0])}, propositions=(string("a"),), ) state_edges_dict = OrderedDict({}) state_edges_dict[State(0)] = [ Edge([1], label=LabelAtom(0)), Edge([2], label=~(LabelAtom(0))), ] state_edges_dict[State(1)] = [ Edge([1], label=LabelAtom(0), acc_sig=frozenset({0})), Edge( [2], label=~(LabelAtom(0)), acc_sig=frozenset({0}), ), ] state_edges_dict[State(2)] = [ Edge([1], label=LabelAtom(0)), Edge([2], label=~LabelAtom(0)), ] hoa_body = HOABody(state_edges_dict) hoa_obj = HOA(hoa_header, hoa_body) assert self.hoa_obj == hoa_obj
def test_body(self): """Test that the HOA body is correct.""" state_edges_dict = OrderedDict({}) state_edges_dict[State(0, name=string("a U b"), acc_sig=frozenset({0}))] = [ Edge([2]), Edge([0]), Edge([1]), Edge([1]), ] state_edges_dict[State(1, acc_sig=frozenset({1}))] = [ Edge([1]), Edge([1]), Edge([1]), Edge([1]), ] state_edges_dict[ State(2, name=string("sink state"), acc_sig=frozenset({0})) ] = [ Edge([2]), Edge([2]), Edge([2]), Edge([2]), ] assert self.hoa_body.state2edges == state_edges_dict