This commit is contained in:
Artur Meski
2024-08-30 07:58:58 +01:00
parent 64cff38e84
commit a4d7d82edd
2 changed files with 25 additions and 19 deletions

View File

@@ -1,6 +1,6 @@
#!/usr/bin/env python
from sys import argv,exit
from sys import argv, exit
OPTIONS_STR = """
options { use-context-automaton; make-progressive; };
@@ -51,57 +51,67 @@ out += "};\n"
transitions = ""
init_trans = 8*" " + "{ "
init_trans = 8 * " " + "{ "
for i in range(n):
init_trans += "proc{:d}={{out}} ".format(i)
init_trans += "}: init -> green;\n"
transitions += init_trans
for i in range(n):
transitions += "{:s}{{ proc{:d}={{allowed}} }}: green -> red : proc{:d}.req;\n".format(8*" ", i, i)
transitions += (
"{:s}{{ proc{:d}={{allowed}} }}: green -> red : proc{:d}.req;\n".format(
8 * " ", i, i
)
)
no_req_cond = "~proc0.req"
for i in range(1, n):
no_req_cond += " AND ~proc{:d}.req".format(i)
no_req_cond += " AND ~proc{:d}.req".format(i)
for i in range(n):
transitions += "{:s}{{ proc{:d}={{}} }}: green -> green : {:s};\n".format(8*" ", i, no_req_cond)
transitions += "{:s}{{ proc{:d}={{}} }}: green -> green : {:s};\n".format(
8 * " ", i, no_req_cond
)
for i in range(n):
transitions += "{:s}{{ proc{:d}={{}} }}: red -> green : proc{:d}.leave;\n".format(8*" ", i, i)
transitions += "{:s}{{ proc{:d}={{}} }}: red -> green : proc{:d}.leave;\n".format(
8 * " ", i, i
)
no_leave_cond = "~proc0.leave"
for i in range(1, n):
no_leave_cond += " AND ~proc{:d}.leave".format(i)
no_leave_cond += " AND ~proc{:d}.leave".format(i)
for i in range(n):
transitions += "{:s}{{ proc{:d}={{}} }}: red -> red : {:s};\n".format(8*" ", i, no_leave_cond)
transitions += "{:s}{{ proc{:d}={{}} }}: red -> red : {:s};\n".format(
8 * " ", i, no_leave_cond
)
out += CA_STR.format(transitions)
## f1
#formula = "EF( proc0.in )"
#out += PROPERTY_STR.format("f1",formula)
# formula = "EF( proc0.in )"
# out += PROPERTY_STR.format("f1",formula)
# f1
formula = "EF( E<proc0.allowed>X( proc0.in ) )"
for i in range(1, n):
formula += " AND EF( E<proc{:d}.allowed>X( proc{:d}.in ) )".format(i, i)
out += PROPERTY_STR.format("f1",formula)
out += PROPERTY_STR.format("f1", formula)
# f2
formula = "EF( proc0.approach"
for i in range(1, n):
formula += " AND proc{:d}.approach".format(i)
formula += " )"
out += PROPERTY_STR.format("f2",formula)
out += PROPERTY_STR.format("f2", formula)
# f3
subf = "~proc1.in"
for i in range(2, n):
subf += " AND ~proc{:d}.in".format(i)
formula = "AG( proc0.in IMPLIES K[proc0]({:s}) )".format(subf)
out += PROPERTY_STR.format("f3",formula)
out += PROPERTY_STR.format("f3", formula)
# f4
subf = "~proc1.in"
@@ -110,8 +120,7 @@ for i in range(2, n):
all_agents = "proc0"
for i in range(1, n):
all_agents += ",proc{:d}".format(i)
formula = "AG( proc0.in IMPLIES C[{:s}]({:s}) )".format(all_agents,subf)
out += PROPERTY_STR.format("f4",formula)
formula = "AG( proc0.in IMPLIES C[{:s}]({:s}) )".format(all_agents, subf)
out += PROPERTY_STR.format("f4", formula)
print(out)