railroad.py 482 Bytes
import sys

import snakes.plugins
snakes.plugins.load("gv", "snakes.nets", "snk")
from snk import *

n = loads(sys.argv[1])
g = StateGraph(n)
for s in g :
    m = g.net.get_marking()
    # safety property: train present => gates closed
    if ("train().crossing" in m
        and True in m["train().crossing"]
        and "closed" not in m["gate().state"]) :
        print("%s %s" % (s, m))
print("checked %s states" % len(g))

g.draw(sys.argv[1].rsplit(".", 1)[0] + "-states.png")