| 
						
						
							
								
							
						
						
					 | 
				
				 | 
				
					@ -5,7 +5,6 @@ import stormpy | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					from configurations import gspn | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					@gspn | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					class TestGSPNBuilder: | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    def test_layout_info(self): | 
				
			
			
		
	
	
		
			
				
					| 
						
						
						
							
								
							
						
					 | 
				
				 | 
				
					@ -25,16 +24,16 @@ class TestGSPNBuilder: | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    def test_place(self): | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        p_id = 4 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        place = stormpy.gspn.Place(id = p_id) | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        place = stormpy.gspn.Place(id=p_id) | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        assert p_id == place.get_id() | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        assert place.has_restricted_capacity() == False | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        place.set_capacity(cap = 5) | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        place.set_capacity(cap=5) | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        assert place.has_restricted_capacity() == True | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        assert place.get_capacity() == 5 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        p_name = "P_0" | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        place.set_name(name = p_name) | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        place.set_name(name=p_name) | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        assert place.get_name() == p_name | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        p_tokens = 2 | 
				
			
			
		
	
	
		
			
				
					| 
						
						
						
							
								
							
						
					 | 
				
				 | 
				
					@ -56,21 +55,20 @@ class TestGSPNBuilder: | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        ti_name = " ti" | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        ti.set_name(ti_name) | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        assert ti_name == ti.get_name() | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        assert ti.no_weight_attached() == True | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        assert ti.no_weight_attached() | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        ti_weight = 0.2 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        ti.set_weight(ti_weight) | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        assert ti_weight == ti.get_weight() | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        assert ti.no_weight_attached() == False | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        assert not ti.no_weight_attached() | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    def test_build_gspn(self): | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        gspn_name = "gspn_test" | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        builder = stormpy.gspn.GSPNBuilder() | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        id_p_0 = builder.add_place() | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        id_p_1 = builder.add_place(initialTokens = 1) | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        id_p_2 = builder.add_place(initialTokens = 0, name = "place_2") | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        id_p_3 = builder.add_place(capacity = 2, initialTokens = 3, name = "place_3") | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        id_p_1 = builder.add_place(initialTokens=1) | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        id_p_2 = builder.add_place(initialTokens=0, name="place_2") | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        id_p_3 = builder.add_place(capacity=2, initialTokens=3, name="place_3") | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        p_layout = stormpy.gspn.LayoutInfo(1, 2) | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        builder.set_place_layout_info(id_p_0, p_layout) | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
	
		
			
				
					| 
						
						
						
							
								
							
						
					 | 
				
				 | 
				
					@ -84,17 +82,17 @@ class TestGSPNBuilder: | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        builder.set_transition_layout_info(id_ti_0, t_layout) | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        # add arcs | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        builder.add_input_arc(id_p_0, id_ti_1, multiplicity = 2) | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        builder.add_input_arc("place_2", "ti_0", multiplicity = 2) | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        builder.add_input_arc(id_p_0, id_ti_1, multiplicity=2) | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        builder.add_input_arc("place_2", "ti_0", multiplicity=2) | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        builder.add_output_arc(id_ti_1, id_p_2, multiplicity = 2) | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        builder.add_output_arc("tt_0", "place_3", multiplicity = 2) | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        builder.add_output_arc(id_ti_1, id_p_2, multiplicity=2) | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        builder.add_output_arc("tt_0", "place_3", multiplicity=2) | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        builder.add_inhibition_arc(id_p_2, id_tt_0, multiplicity = 2) | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        builder.add_inhibition_arc("place_3", "tt_0", multiplicity = 2) | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        builder.add_inhibition_arc(id_p_2, id_tt_0, multiplicity=2) | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        builder.add_inhibition_arc("place_3", "tt_0", multiplicity=2) | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        builder.add_normal_arc("place_3", "tt_0", multiplicity = 2) | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        builder.add_normal_arc("tt_0", "place_3", multiplicity = 2) | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        builder.add_normal_arc("place_3", "tt_0", multiplicity=2) | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        builder.add_normal_arc("tt_0", "place_3", multiplicity=2) | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        # test gspn composition | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        builder.set_name(gspn_name) | 
				
			
			
		
	
	
		
			
				
					| 
						
							
								
							
						
						
							
								
							
						
						
					 | 
				
				 | 
				
					@ -121,7 +119,7 @@ class TestGSPNBuilder: | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        assert p_3.get_name() == "place_3" | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        assert p_3.get_capacity() == 2 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        assert p_3.get_number_of_initial_tokens() == 3 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        assert p_3.has_restricted_capacity() == True | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        assert p_3.has_restricted_capacity() | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        # test transitions | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        ti_0 = gspn.get_immediate_transition("ti_0") | 
				
			
			
		
	
	
		
			
				
					| 
						
							
								
							
						
						
							
								
							
						
						
					 | 
				
				 | 
				
					@ -149,7 +147,7 @@ class TestGSPNBuilder: | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        # add places and transitions | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        id_p_0 = builder.add_place() | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        id_p_1 = builder.add_place(initialTokens = 3,  name = "place_1", capacity = 2) | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        id_p_1 = builder.add_place(initialTokens=3, name="place_1", capacity=2) | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        id_ti_0 = builder.add_immediate_transition(priority=0, weight=0.5, name="ti_0") | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        id_tt_0 = builder.add_timed_transition(priority=0, rate=0.5, numServers=2, name="tt_0") | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
	
		
			
				
					| 
						
						
						
							
								
							
						
					 | 
				
				 | 
				
					@ -175,8 +173,8 @@ class TestGSPNBuilder: | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        p_1 = gspn_import.get_place(id_p_1) | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        assert p_1.get_name() == "place_1" | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        # todo capacity info lost | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        #assert p_1.get_capacity() == 2 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        #assert p_1.has_restricted_capacity() == True | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        # assert p_1.get_capacity() == 2 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        # assert p_1.has_restricted_capacity() == True | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        assert p_1.get_number_of_initial_tokens() == 3 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        ti_0 = gspn_import.get_immediate_transition("ti_0") | 
				
			
			
		
	
	
		
			
				
					| 
						
						
						
							
								
							
						
					 | 
				
				 | 
				
					@ -184,15 +182,13 @@ class TestGSPNBuilder: | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        tt_0 = gspn_import.get_timed_transition("tt_0") | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        assert tt_0.get_id() == id_tt_0 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    def test_export_to_pnml(self, tmpdir): | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        builder = stormpy.gspn.GSPNBuilder() | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        builder.set_name("gspn_test") | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        # add places and transitions | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        id_p_0 = builder.add_place() | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        id_p_1 = builder.add_place(initialTokens = 3,  name = "place_1", capacity = 2) | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        id_p_1 = builder.add_place(initialTokens=3, name="place_1", capacity=2) | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        id_ti_0 = builder.add_immediate_transition(priority=0, weight=0.5, name="ti_0") | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        id_tt_0 = builder.add_timed_transition(priority=0, rate=0.5, numServers=2, name="tt_0") | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
	
		
			
				
					| 
						
							
								
							
						
						
							
								
							
						
						
					 | 
				
				 | 
				
					@ -219,11 +215,9 @@ class TestGSPNBuilder: | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        assert p_1.get_name() == "place_1" | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        assert p_1.get_capacity() == 2 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        assert p_1.get_number_of_initial_tokens() == 3 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        assert p_1.has_restricted_capacity() == True | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        assert p_1.has_restricted_capacity() | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        ti_0 = gspn_import.get_immediate_transition("ti_0") | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        assert ti_0.get_id() == id_ti_0 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        tt_0 = gspn_import.get_timed_transition("tt_0") | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        assert tt_0.get_id() == id_tt_0 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 |