def test_AChart(): diagramService = DiagramHelper() automatonService = AutomatonHelper() verifierService = VerifierHelper(automatonService) diagram = diagramService.parseDiagram("./data/AChart.xstd") automaton = automatonService.createFromDiagram(diagram) formula = "G'a'" ltl = ltlParse(formula) counterexample1 = verifierService.verify(automaton, ltl) formula = "F 'E(name)' R !'S(ID)'" ltl = ltlParse(formula) counterexample2 = verifierService.verify(automaton, ltl) assert counterexample1 == expected1 assert counterexample2 == expected2
def validate(self, formula: str): ltl = ltlParse(formula) if ltl: counterexample = self.verifierService.verify(self.automaton, ltl) if counterexample: print('Counterexample for the formula: ' + formula + ":") print(self.verifierService.exampleToString(counterexample)) else: print('The ltl formula is correct for the automaton.') else: print('"Errors occurred while parsing ltl formula: ' + formula)
def test_APParser(): diagramService = DiagramHelper() automatonService = AutomatonHelper() verifierService = VerifierHelper(automatonService) diagram = diagramService.parseDiagram("./data/APParser.xstd") automaton = automatonService.createFromDiagram(diagram) formula = "G ('E(machine_type)' -> X G('E(machine_type)' -> X 'S(NameWithArrow)'))" ltl = ltlParse(formula) counterexample1 = verifierService.verify(automaton, ltl) formula = "G('S(FunctionFound)' -> F('A(WriteFunctionProposition)'))" ltl = ltlParse(formula) counterexample2 = verifierService.verify(automaton, ltl) formula = "'S(FunctionFound)' R !'S(FunctionFound)'" ltl = ltlParse(formula) counterexample3 = verifierService.verify(automaton, ltl) assert counterexample1 == expected1 assert counterexample2 == expected2 assert counterexample3 == expected3
def check(env: Env, a, ltl, iscorrect: bool) -> None: if not os.path.exists(ltl): return with open(ltl) as f: formula = f.readline() log.info("Checking " + ("correct" if iscorrect else "incorrect") + " formula: " + formula) f = ltlParse(formula) ex = env.verifierService.verify(a, f) if iscorrect: assert not ex else: assert ex
def test_simple_2(): assert ltlParse("'b' & 'a'") != ltlParse("('a' & 'b')")
def test_simple_1(): assert ltlParse("'a' & 'b'") == ltlParse("('a' & 'b')")
def test_parse_2(): ref = ltlParse("('a' && (X 'b') U ((F 'a') & 'b'))") test = ltlParse("'a' && X 'b' U (F 'a' & 'b')") assert ref == test
def test_parse_1(): ref = ltlParse("('a' | ('b' R 'c'))") test = ltlParse("'a' | 'b' R 'c'") assert ref == test