This commit is contained in:
Artur Meski
2019-09-22 18:23:59 +01:00
parent c6b0d874da
commit acc4998613
2 changed files with 64 additions and 50 deletions

View File

@@ -26,15 +26,20 @@ from smt import *
import sys import sys
import resource import resource
def chain_reaction(print_system=False): def chain_reaction(print_system=False):
if len(sys.argv) < 1 + 3: if len(sys.argv) < 1 + 3:
print("provide N M B") print("{source} <N> <M> <type>".format(source=sys.argv[0]))
print(" B=1 - RSC") print()
print(" B=0 - RSC translated into RS") print("* N,M -- integers (scaling parameters)")
print("* type:")
print(" - 1 - RSC")
print(" - 0 - RSC translated into RS")
print()
exit(1) exit(1)
chainLen=int(sys.argv[1]) # chain length chainLen = int(sys.argv[1])
maxConc = int(sys.argv[2]) # depth (max concentration) maxConc = int(sys.argv[2]) # depth (max concentration)
verify_rsc = bool(int(sys.argv[3])) verify_rsc = bool(int(sys.argv[3]))
@@ -57,7 +62,11 @@ def chain_reaction(print_system=False):
if i < chainLen: if i < chainLen:
r.add_reaction([(ent, maxConc)], [], [("e_" + str(i + 1), 1)]) r.add_reaction([(ent, maxConc)], [], [("e_" + str(i + 1), 1)])
r.add_reaction([("e_" + str(chainLen),maxConc)],[("dec",1)],[("e_" + str(chainLen),maxConc)]) r.add_reaction(
[("e_" + str(chainLen), maxConc)],
[("dec", 1)],
[("e_" + str(chainLen), maxConc)],
)
c = ContextAutomatonWithConcentrations(r) c = ContextAutomatonWithConcentrations(r)
c.add_init_state("init") c.add_init_state("init")
@@ -72,7 +81,7 @@ def chain_reaction(print_system=False):
if verify_rsc: if verify_rsc:
smt_rsc = SmtCheckerRSC(rc) smt_rsc = SmtCheckerRSC(rc)
prop = [('e_'+str(chainLen),maxConc)] prop = [("e_" + str(chainLen), maxConc)]
smt_rsc.check_reachability((prop, []), max_level=maxConc * chainLen + 10) smt_rsc.check_reachability((prop, []), max_level=maxConc * chainLen + 10)
else: else:
@@ -81,7 +90,7 @@ def chain_reaction(print_system=False):
print("\nTranslated:") print("\nTranslated:")
orc.show() orc.show()
smt_tr_rs = SmtCheckerRS(orc) smt_tr_rs = SmtCheckerRS(orc)
smt_tr_rs.check_reachability(['e_'+str(chainLen)+"#"+str(maxConc)]) smt_tr_rs.check_reachability(["e_" + str(chainLen) + "#" + str(maxConc)])
time = 0 time = 0
mem_usage = resource.getrusage(resource.RUSAGE_SELF).ru_maxrss / (1024 * 1024) mem_usage = resource.getrusage(resource.RUSAGE_SELF).ru_maxrss / (1024 * 1024)
@@ -94,12 +103,12 @@ def chain_reaction(print_system=False):
filename_m = "bench_tr_rs_mem.log" filename_m = "bench_tr_rs_mem.log"
time = smt_tr_rs.get_verification_time() time = smt_tr_rs.get_verification_time()
f=open(filename_t, 'a') f = open(filename_t, "a")
log_str = "(" + str(chainLen) + "," + str(maxConc) + "," + str(time) + ")\n" log_str = "(" + str(chainLen) + "," + str(maxConc) + "," + str(time) + ")\n"
f.write(log_str) f.write(log_str)
f.close() f.close()
f=open(filename_m, 'a') f = open(filename_m, "a")
log_str = "(" + str(chainLen) + "," + str(maxConc) + "," + str(mem_usage) + ")\n" log_str = "(" + str(chainLen) + "," + str(maxConc) + "," + str(mem_usage) + ")\n"
f.write(log_str) f.write(log_str)
f.close() f.close()
@@ -109,6 +118,7 @@ def main():
chain_reaction() chain_reaction()
if __name__ == "__main__": if __name__ == "__main__":
main() main()

View File

@@ -112,6 +112,10 @@ def heat_shock_response(print_system=True, verify_rsc=True):
smt_tr_rs.check_reachability(rs_prop) smt_tr_rs.check_reachability(rs_prop)
def state_translate_rsc2rs(p):
return [e[0] + "#" + str(e[1]) for e in p]
def main(): def main():
heat_shock_response() heat_shock_response()