adding support for network of automata...

This commit is contained in:
Artur Meski
2016-12-28 21:36:49 +01:00
parent a1b660abea
commit 5ddc549245
7 changed files with 59 additions and 12 deletions

View File

@@ -8,3 +8,4 @@ from rs.reaction_system_with_automaton import ReactionSystemWithAutomaton
from rs.extended_context_automaton import ExtendedContextAutomaton
from rs.network_of_context_automata import NetworkOfContextAutomata

View File

@@ -8,6 +8,7 @@ class ContextAutomaton(object):
self._transitions = []
self._init_state = None
self._reaction_system = reaction_system
self._name = ""
@property
def states(self):
@@ -17,6 +18,14 @@ class ContextAutomaton(object):
def transitions(self):
return self._transitions
@property
def name(self):
return self._name
@name.setter
def name(self, automaton_name):
self._name = automaton_name
def add_state(self, name):
if name not in self._states:
self._states.append(name)
@@ -126,7 +135,13 @@ class ContextAutomaton(object):
else:
print()
def show_header(self):
if self.name:
name_string = ": " + colour_str(C_BOLD, self.name)
print(C_MARK_INFO + " Context automaton" + name_string)
def show(self):
self.show_header()
self.show_states()
self.show_transitions()

View File

@@ -97,6 +97,5 @@ class ExtendedContextAutomaton(ContextAutomaton):
print(" - " + act + " (id=" + str(self.get_action_id(act)) + ")")
def show(self):
self.show_states()
super(ExtendedContextAutomaton, self).show()
self.show_actions()
self.show_transitions()

View File

@@ -0,0 +1,14 @@
from sys import exit
class NetworkOfContextAutomata(object):
def __init__(self, context_automata):
self.cas = list(context_automata)
def show(self):
for ca in self.cas:
print()
ca.show()
def add(self, aut):
self.cas.append(aut)

View File

@@ -3,6 +3,7 @@ from colour import *
from rs.reaction_system_with_concentrations import ReactionSystemWithConcentrations
from rs.context_automaton_with_concentrations import ContextAutomatonWithConcentrations
from rs.network_of_context_automata import NetworkOfContextAutomata
class ReactionSystemWithAutomaton(object):

View File

@@ -12,15 +12,27 @@ def test_extended_automaton():
r.add_bg_set_entity("inc")
r.add_bg_set_entity("dec")
c = ExtendedContextAutomaton(r)
c.add_init_state("init")
c.add_state("working")
c.add_action("act1")
c.add_action("act2")
c.add_transition("init", ["act1", "act2"], ([],[],["inc"]), "working")
c.add_transition("working", ["act2"], ([],[],["inc"]), "working")
c1 = ExtendedContextAutomaton(r)
c1.add_init_state("init")
c1.name = "catest"
c1.add_state("working")
c1.add_action("act1")
c1.add_action("act2")
c1.add_transition("init", ["act1", "act2"], ([],[],["inc"]), "working")
c1.add_transition("working", ["act2"], ([],[],["inc"]), "working")
rc = ReactionSystemWithAutomaton(r,c)
c2 = ExtendedContextAutomaton(r)
c2.add_init_state("init")
c2.name = "cxxxx"
c2.add_state("working")
c2.add_action("act1")
c2.add_action("act2")
c2.add_transition("init", ["act1", "act2"], ([],[],["inc"]), "working")
c2.add_transition("working", ["act2"], ([],[],["inc"]), "working")
na = NetworkOfContextAutomata([c1,c2])
rc = ReactionSystemWithAutomaton(r,na)
rc.show()

View File

@@ -18,12 +18,16 @@ import resource
profiling = False
##################################################################
version = "2016/12/28/00"
rsmc_banner = """Reaction Systems SMT-Based Model Checking
Version: """ + version + """
Author: Artur Męski <meski@ipipan.waw.pl> / <artur.meski@ncl.ac.uk>"""
##################################################################
def print_banner():
print()
for line in rsmc_banner.split("\n"):
@@ -33,11 +37,12 @@ def print_banner():
##################################################################
def main():
"""Main function"""
print_banner()
rs_testing.run_tests()
##################################################################
if __name__ == "__main__":
try: