diff --git a/rs/__init__.py b/rs/__init__.py index 7cf6e8e..e64783c 100644 --- a/rs/__init__.py +++ b/rs/__init__.py @@ -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 \ No newline at end of file diff --git a/rs/context_automaton.py b/rs/context_automaton.py index faccc43..46f2514 100644 --- a/rs/context_automaton.py +++ b/rs/context_automaton.py @@ -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() diff --git a/rs/extended_context_automaton.py b/rs/extended_context_automaton.py index 2b18773..863af67 100644 --- a/rs/extended_context_automaton.py +++ b/rs/extended_context_automaton.py @@ -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() diff --git a/rs/network_of_context_automata.py b/rs/network_of_context_automata.py new file mode 100644 index 0000000..a2a34a8 --- /dev/null +++ b/rs/network_of_context_automata.py @@ -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) diff --git a/rs/reaction_system_with_automaton.py b/rs/reaction_system_with_automaton.py index 9e99eb3..6e8332f 100644 --- a/rs/reaction_system_with_automaton.py +++ b/rs/reaction_system_with_automaton.py @@ -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): diff --git a/rs_testing.py b/rs_testing.py index 6ccd8f5..8f11eed 100644 --- a/rs_testing.py +++ b/rs_testing.py @@ -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() diff --git a/rssmt.py b/rssmt.py index d638a0a..5978531 100755 --- a/rssmt.py +++ b/rssmt.py @@ -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 / """ +################################################################## + 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: