def testproducts(): NFA.VISULANG = 5 NFA.VISU_INITIAL_ARROW = False Char = NFA.spec(""" 0 1 0 1 1 1 0 0 """).map(g=int).named("Char").visu() _ = NFA.Stay C1 = Char.copy().map(g=lambda x: "b" if x else "a").named("C1") C2 = Char.copy().map(g=lambda x: "B" if x else "A").named("C2") from itertools import product NFA._sprod2_brutal(Char, Char, {(0, 0), (1, 1)}).visu() NFA._sprod2_brutal(Char, Char, set(product([0, 1], repeat=2))).visu() NFA._sprod2_brutal(Char, Char, {(_, 0), (_, 1), (1, _)}).visu() NFA._sprod2_brutal(Char, Char, {(_, 0), (_, 1), (1, 1)}).visu() NFA._sprod2_brutal(Char, Char, {x for y in [0, 1] for x in {(_, y), (y, _)}}).visu() (Char @ Char).visu() C1.visu() NFA._sprod2_brutal(Char, C1, set(product([0, 1, _], ["a", 'b', _]))).visu() (NFA.of_word([1, 2, 3]) @ NFA.of_word([_, _])).visu() NFA.sprod_brutal(Char, C1, svec=set(product([0, 1, _], ["a", 'b', _]))).visu() X = NFA.sprod_brutal(Char, C1, C2, svec=set( product([0, 1, _], ["a", 'b', _], ["A", "B", _]))).visu() Y = NFA.sprod_brutal(Char, Char, Char, svec=set(product([0, 1, _], repeat=3))).visu() # on the fly version tests svec = NFA.shuffle([1, 1], [_]) | NFA.shuffle([0], [_, _]) P = NFA.sprod_brutal(Char, Char, Char, svec=svec).visu() svec = NFA.shuffle([1, 1], [_]) | NFA.shuffle([0], [_, _]) P = NFA.sprod(Char, Char, Char, svec=svec, record_steps=True).visu() P.visusteps(P._grow_step) svec = {(1, 1)} P = NFA.sprod_brutal(Char, Char, svec=svec, silent=[0]).visu() Q = NFA.sprod(Char, Char, svec=svec, silent=[0]).visu() NFA.VISULANG = 10 NFA.VISU_INITIAL_ARROW = True