def test_eu_continuation(): net, state = parse_net(""" P:7 T:0->1 T:0->2 T:0->3 T:0->4 T:0->5 T:0->6 S:1|0|0|0|0|0|0 """) prop = parse_props('E true U $6 = 1')[0] prop1 = parse_props('E true U $6 = 1')[0] assert state.evaluate(prop) == True
def test_eg_continuation1(): net, state = parse_net(""" P:7 T:0->1 T:0->2 T:0->3 T:0->4 T:0->5 T:0->6 S:1|0|0|0|0|0|0 """) prop = parse_props('EG true')[0] prop1 = parse_props('EG false')[0] assert state.evaluate(prop) == True assert state.evaluate(prop1) == False
def test_parse_ctl_paren(): ctl = parse_props( """EG not(true) EX not(true & false)""" ) assert ctl[0] == EGProposition(NegationProposition(TrueProposition())) assert ctl[1] == EXProposition(NegationProposition(AndProposition(TrueProposition(), FalseProposition())))
def test_parse_ctl(): ctls = parse_props( """EG true EX false E true U false EX true & not false EG not(false & not true) EG $1 < 100 & 0 = $1 EX true | false""" ) assert ctls[0] == EGProposition(TrueProposition()) assert ctls[1] == EXProposition(FalseProposition()) assert ctls[2] == EUProposition(TrueProposition(), FalseProposition()) assert ctls[3] == EXProposition(AndProposition(TrueProposition(), NegationProposition(FalseProposition()))) assert ctls[4] == EGProposition( NegationProposition(AndProposition(FalseProposition(), NegationProposition(TrueProposition()))) ) assert ctls[5] == EGProposition( AndProposition( LessProposition(VariableExpression(1), NumericExpression(100)), EqualsProposition(NumericExpression(0), VariableExpression(1)), ) ) assert ctls[6] == EXProposition(OrProposition(TrueProposition(), FalseProposition()))
def test_eg_continuation2(): net, state = parse_net(""" P:5 T:0->1 T:0->2 T:1->3 T:2->4 S:1|0|0|0|0""") prop = parse_props('EG $4=0')[0] assert state.evaluate(prop) == False
def entry_point(argv): file = argv[1] net, state = parse_net(read_file(file)) props = parse_props(argv[2]) for prop in props: print prop.label() g_start = time.time() for p in props: print p.label(),"= ", start = time.time() res = state.evaluate(p) end = time.time() if res: print "True", else: print "False", print "(%f)" % (end -start,) g_end = time.time() print "Total runtime %f" % (g_end - g_start, ) print "Calculated %d states" % len(net._states_cache) return 0
def test_parse_top_level_not(): f = parse_props("""not(EG false)""") assert f[0] == NegationProposition(EGProposition(FalseProposition()))