示例#1
0
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
示例#2
0
 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
示例#4
0
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