def setUp(self): s1 = MealyState('1') s2 = MealyState('2') s3 = MealyState('3') s1.add_edge('a', 'nice', s2) s1.add_edge('b', 'B', s1) s2.add_edge('a', 'nice', s3) s2.add_edge('b', 'back', s1) s3.add_edge('a', 'A', s3) s3.add_edge('b', 'back', s1) self.mm = MealyMachine(s1)
# Do we need state cover or transition cover?? # TODO def get_transition_cover_set(fsm): pass states = fsm.get_states() alphabet = fsm.get_alphabet() if __name__ == "__main__": s1 = MealyState('1') s2 = MealyState('2') s3 = MealyState('3') s4 = MealyState('4') s5 = MealyState('5') s1.add_edge('a', 'nice', s2) s1.add_edge('b', 'nice', s3) s2.add_edge('a', 'nice!', s4) s2.add_edge('b', 'back', s1) s3.add_edge('a', 'nice', s4) s3.add_edge('b', 'back', s1) s4.add_edge('a', 'nice', s5) s4.add_edge('b', 'nice', s5) s5.add_edge('a', 'loop', s5) s5.add_edge('b', 'loop', s5) mm = MealyMachine(s1)
import tempfile from stmlearn.equivalencecheckers import WmethodEquivalenceChecker from stmlearn.learners import LStarMealyLearner from stmlearn.suls import MealyState, MealyMachine from stmlearn.teachers import Teacher # Set up an example mealy machine s1 = MealyState('1') s2 = MealyState('2') s3 = MealyState('3') s1.add_edge('a', 'nice', s2) s1.add_edge('b', 'B', s1) s2.add_edge('a', 'nice', s3) s2.add_edge('b', 'back', s1) s3.add_edge('a', 'A', s3) s3.add_edge('b', 'back', s1) mm = MealyMachine(s1) mm.render_graph(tempfile.mktemp('.gv')) # Use the W method equivalence checker eqc = WmethodEquivalenceChecker(mm) teacher = Teacher(mm, eqc) # We are learning a mealy machine learner = LStarMealyLearner(teacher) hyp = learner.run()
def setUp(self): # Set up an example mealy machine s1 = MealyState('1') s2 = MealyState('2') s3 = MealyState('3') s1.add_edge('a', '1', s2) s1.add_edge('b', 'next', s1) s2.add_edge('a', '2', s3) s2.add_edge('b', 'next', s1) s3.add_edge('a', '3', s3) s3.add_edge('b', 'next', s1) self.mm = MealyMachine(s1)