@ -44,7 +44,7 @@ class TestSparseModelComponents: 
			
		
	
		
			
				
					        # Build transition matrix, update number of rows and columns  
			
		
	
		
			
				
					        transition_matrix  =  builder . build ( nr_states ,  nr_states )  
			
		
	
		
			
				
					
 
			
		
	
		
			
				
					        # state_ labeling  
			
		
	
		
			
				
					        # state  labeling  
			
		
	
		
			
				
					        state_labeling  =  stormpy . storage . StateLabeling ( nr_states )  
			
		
	
		
			
				
					        state_labels  =  { ' init ' ,  ' one ' ,  ' two ' ,  ' three ' ,  ' four ' ,  ' five ' ,  ' six ' ,  ' done ' ,  ' deadlock ' }  
			
		
	
		
			
				
					        for  label  in  state_labels :  
			
		
	
	
		
			
				
					
						
						
						
							
								 
						
					 
				
				@ -66,7 +66,7 @@ class TestSparseModelComponents: 
			
		
	
		
			
				
					        action_reward  =  [ 1.0 ,  1.0 ,  1.0 ,  1.0 ,  1.0 ,  1.0 ,  1.0 ,  0.0 ,  0.0 ,  0.0 ,  0.0 ,  0.0 ,  0.0 ]  
			
		
	
		
			
				
					        reward_models [ ' coin_flips ' ]  =  stormpy . SparseRewardModel ( optional_state_action_reward_vector = action_reward )  
			
		
	
		
			
				
					
 
			
		
	
		
			
				
					        # state_ valuations  
			
		
	
		
			
				
					        # state  valuations  
			
		
	
		
			
				
					        manager  =  stormpy . ExpressionManager ( )  
			
		
	
		
			
				
					        var_s  =  manager . create_integer_variable ( name = ' s ' )  
			
		
	
		
			
				
					        var_d  =  manager . create_integer_variable ( name = ' d ' )  
			
		
	
	
		
			
				
					
						
						
						
							
								 
						
					 
				
				@ -92,7 +92,7 @@ class TestSparseModelComponents: 
			
		
	
		
			
				
					        choice_origins  =  stormpy . PrismChoiceOrigins ( prism_program ,  index_to_identifier_mapping ,  
			
		
	
		
			
				
					                                                    id_to_command_set_mapping )  
			
		
	
		
			
				
					
 
			
		
	
		
			
				
					        # Construct C omponents  
			
		
	
		
			
				
					        # Construct c omponents  
			
		
	
		
			
				
					        components  =  stormpy . SparseModelComponents ( transition_matrix = transition_matrix ,  state_labeling = state_labeling ,  
			
		
	
		
			
				
					                                                   reward_models = reward_models )  
			
		
	
		
			
				
					        components . choice_origins  =  choice_origins  
			
		
	
	
		
			
				
					
						
						
						
							
								 
						
					 
				
				@ -114,7 +114,7 @@ class TestSparseModelComponents: 
			
		
	
		
			
				
					        for  state  in  dtmc . states :  
			
		
	
		
			
				
					            assert  len ( state . actions )  < =  1  
			
		
	
		
			
				
					
 
			
		
	
		
			
				
					        # Test state_ labeling  
			
		
	
		
			
				
					        # Test state  labeling  
			
		
	
		
			
				
					        assert  dtmc . labeling . get_labels ( )  ==  { ' init ' ,  ' deadlock ' ,  ' done ' ,  ' one ' ,  ' two ' ,  ' three ' ,  ' four ' ,  ' five ' ,  ' six ' }  
			
		
	
		
			
				
					
 
			
		
	
		
			
				
					        # Test reward_models  
			
		
	
	
		
			
				
					
						
						
						
							
								 
						
					 
				
				@ -125,7 +125,7 @@ class TestSparseModelComponents: 
			
		
	
		
			
				
					            assert  reward  ==  1.0  or  reward  ==  0.0  
			
		
	
		
			
				
					        assert  not  dtmc . reward_models [ " coin_flips " ] . has_transition_rewards  
			
		
	
		
			
				
					
 
			
		
	
		
			
				
					        # Test choice_ labeling  
			
		
	
		
			
				
					        # Test choice  labeling  
			
		
	
		
			
				
					        assert  not  dtmc . has_choice_labeling ( )  
			
		
	
		
			
				
					
 
			
		
	
		
			
				
					        # Test state_valuations  
			
		
	
	
		
			
				
					
						
						
						
							
								 
						
					 
				
				@ -139,7 +139,7 @@ class TestSparseModelComponents: 
			
		
	
		
			
				
					        assert  value_s  ==  [ 0 ,  1 ,  2 ,  3 ,  4 ,  5 ,  6 ,  7 ,  7 ,  7 ,  7 ,  7 ,  7 ]  
			
		
	
		
			
				
					        assert  value_d  ==  [ 0 ,  0 ,  0 ,  0 ,  0 ,  0 ,  0 ,  1 ,  2 ,  3 ,  4 ,  5 ,  6 ]  
			
		
	
		
			
				
					
 
			
		
	
		
			
				
					        # Test choice_ origins  
			
		
	
		
			
				
					        # Test choice  origins  
			
		
	
		
			
				
					        assert  dtmc . has_choice_origins ( )  
			
		
	
		
			
				
					        assert  dtmc . choice_origins  is  components . choice_origins  
			
		
	
		
			
				
					        assert  dtmc . choice_origins . get_number_of_identifiers ( )  ==  9  
			
		
	
	
		
			
				
					
						
							
								 
						
						
							
								 
						
						
					 
				
				@ -168,7 +168,7 @@ class TestSparseModelComponents: 
			
		
	
		
			
				
					
 
			
		
	
		
			
				
					        transition_matrix  =  stormpy . build_sparse_matrix ( transitions )  
			
		
	
		
			
				
					
 
			
		
	
		
			
				
					        # state_ labeling  
			
		
	
		
			
				
					        # state  labeling  
			
		
	
		
			
				
					        state_labeling  =  stormpy . storage . StateLabeling ( nr_states )  
			
		
	
		
			
				
					        # Add labels  
			
		
	
		
			
				
					        state_labels  =  { ' init ' ,  ' deadlock ' ,  ' target ' }  
			
		
	
	
		
			
				
					
						
						
						
							
								 
						
					 
				
				@ -179,7 +179,7 @@ class TestSparseModelComponents: 
			
		
	
		
			
				
					        state_labeling . add_label_to_state ( ' init ' ,  0 )  
			
		
	
		
			
				
					        state_labeling . set_states ( ' target ' ,  stormpy . BitVector ( nr_states ,  [ 5 ,  8 ] ) )  
			
		
	
		
			
				
					
 
			
		
	
		
			
				
					        # reward_ models  
			
		
	
		
			
				
					        # reward  models  
			
		
	
		
			
				
					        reward_models  =  { }  
			
		
	
		
			
				
					        # vector representing state-action rewards  
			
		
	
		
			
				
					        action_reward  =  [ 0.0 ,  0.0 ,  0.0 ,  0.0 ,  0.0 ,  2  /  3 ,  0.0 ,  0.0 ,  1.0 ,  0.0 ,  0.0 ,  0.0 ]  
			
		
	
	
		
			
				
					
						
						
						
							
								 
						
					 
				
				@ -189,7 +189,7 @@ class TestSparseModelComponents: 
			
		
	
		
			
				
					        state_reward  =  [ 0.0 ,  1.0 ,  0.0 ,  0.0 ,  1.0 ,  0.0 ,  0.0 ,  1.0 ,  0.0 ,  1.0 ,  0.0 ,  1.0 ]  
			
		
	
		
			
				
					        reward_models [ ' waiting ' ]  =  stormpy . SparseRewardModel ( optional_state_reward_vector = state_reward )  
			
		
	
		
			
				
					
 
			
		
	
		
			
				
					        # choice_ labeling  
			
		
	
		
			
				
					        # choice  labeling  
			
		
	
		
			
				
					        choice_labeling  =  stormpy . storage . ChoiceLabeling ( nr_choices )  
			
		
	
		
			
				
					        choice_labels  =  { ' loop1a ' ,  ' loop1b ' ,  ' serve1 ' ,  ' loop2a ' ,  ' loop2b ' ,  ' serve2 ' }  
			
		
	
		
			
				
					        # Add labels  
			
		
	
	
		
			
				
					
						
						
						
							
								 
						
					 
				
				@ -206,7 +206,7 @@ class TestSparseModelComponents: 
			
		
	
		
			
				
					        # state exit rates  
			
		
	
		
			
				
					        exit_rates  =  [ 201.0 ,  200.5 ,  200.5 ,  201.0 ,  200.0 ,  1.5 ,  200.5 ,  200.5 ,  1.0 ,  200.0 ,  1.5 ,  1.0 ]  
			
		
	
		
			
				
					
 
			
		
	
		
			
				
					        # state_ valuations  
			
		
	
		
			
				
					        # state  valuations  
			
		
	
		
			
				
					        manager  =  stormpy . ExpressionManager ( )  
			
		
	
		
			
				
					        var_s  =  manager . create_integer_variable ( name = ' s ' )  
			
		
	
		
			
				
					        var_a  =  manager . create_integer_variable ( name = ' a ' )  
			
		
	
	
		
			
				
					
						
							
								 
						
						
							
								 
						
						
					 
				
				@ -240,6 +240,7 @@ class TestSparseModelComponents: 
			
		
	
		
			
				
					        components . exit_rates  =  exit_rates  
			
		
	
		
			
				
					        components . state_valuations  =  state_valuations  
			
		
	
		
			
				
					
 
			
		
	
		
			
				
					        # Build CTMC  
			
		
	
		
			
				
					        ctmc  =  stormpy . storage . SparseCtmc ( components )  
			
		
	
		
			
				
					        assert  type ( ctmc )  is  stormpy . SparseCtmc  
			
		
	
		
			
				
					        assert  not  ctmc . supports_parameters  
			
		
	
	
		
			
				
					
						
						
						
							
								 
						
					 
				
				@ -255,10 +256,10 @@ class TestSparseModelComponents: 
			
		
	
		
			
				
					        for  state  in  ctmc . states :  
			
		
	
		
			
				
					            assert  len ( state . actions )  < =  1  
			
		
	
		
			
				
					
 
			
		
	
		
			
				
					        # Test state_ labeling  
			
		
	
		
			
				
					        # Test state  labeling  
			
		
	
		
			
				
					        assert  ctmc . labeling . get_labels ( )  ==  { ' target ' ,  ' init ' ,  ' deadlock ' }  
			
		
	
		
			
				
					
 
			
		
	
		
			
				
					        # Test reward_ models  
			
		
	
		
			
				
					        # Test reward  models  
			
		
	
		
			
				
					        assert  len ( ctmc . reward_models )  ==  2  
			
		
	
		
			
				
					        assert  not  ctmc . reward_models [ " served " ] . has_state_rewards  
			
		
	
		
			
				
					        assert  ctmc . reward_models [ " served " ] . has_state_action_rewards  
			
		
	
	
		
			
				
					
						
						
						
							
								 
						
					 
				
				@ -271,11 +272,11 @@ class TestSparseModelComponents: 
			
		
	
		
			
				
					        assert  ctmc . reward_models [ " waiting " ] . state_rewards  ==  [ 0.0 ,  1.0 ,  0.0 ,  0.0 ,  1.0 ,  0.0 ,  0.0 ,  1.0 ,  0.0 ,  1.0 ,  0.0 ,  1.0 ]  
			
		
	
		
			
				
					        assert  not  ctmc . reward_models [ " waiting " ] . has_transition_rewards  
			
		
	
		
			
				
					
 
			
		
	
		
			
				
					        # Test choice_ labeling  
			
		
	
		
			
				
					        # Test choice  labeling  
			
		
	
		
			
				
					        assert  ctmc . has_choice_labeling ( )  
			
		
	
		
			
				
					        assert  ctmc . choice_labeling . get_labels ( )  ==  { ' loop1a ' ,  ' loop1b ' ,  ' serve1 ' ,  ' loop2a ' ,  ' loop2b ' ,  ' serve2 ' }  
			
		
	
		
			
				
					
 
			
		
	
		
			
				
					        # Test state_ valuations  
			
		
	
		
			
				
					        # Test state  valuations  
			
		
	
		
			
				
					        assert  ctmc . has_state_valuations ( )  
			
		
	
		
			
				
					        assert  ctmc . state_valuations  
			
		
	
		
			
				
					        value_s  =  [ None ]  *  nr_states  
			
		
	
	
		
			
				
					
						
						
						
							
								 
						
					 
				
				@ -292,7 +293,7 @@ class TestSparseModelComponents: 
			
		
	
		
			
				
					        assert  value_s1  ==  [ 0 ,  1 ,  0 ,  0 ,  1 ,  1 ,  0 ,  1 ,  1 ,  1 ,  0 ,  1 ]  
			
		
	
		
			
				
					        assert  value_s2  ==  [ 0 ,  0 ,  1 ,  0 ,  1 ,  0 ,  1 ,  0 ,  1 ,  1 ,  1 ,  1 ]  
			
		
	
		
			
				
					
 
			
		
	
		
			
				
					        # Test choice_ origins  
			
		
	
		
			
				
					        # Test choice  origins  
			
		
	
		
			
				
					        assert  not  ctmc . has_choice_origins ( )  
			
		
	
		
			
				
					
 
			
		
	
		
			
				
					        # Test exit_rates  
			
		
	
	
		
			
				
					
						
						
						
							
								 
						
					 
				
				@ -302,7 +303,7 @@ class TestSparseModelComponents: 
			
		
	
		
			
				
					        nr_states  =  5  
			
		
	
		
			
				
					        nr_choices  =  10  
			
		
	
		
			
				
					
 
			
		
	
		
			
				
					        # Build transition_ matrix  
			
		
	
		
			
				
					        # Build transition  matrix  
			
		
	
		
			
				
					        builder  =  stormpy . SparseMatrixBuilder ( rows = 0 ,  columns = 0 ,  entries = 0 ,  force_dimensions = False ,  
			
		
	
		
			
				
					                                              has_custom_row_grouping = True ,  row_groups = 0 )  
			
		
	
		
			
				
					
 
			
		
	
	
		
			
				
					
						
							
								 
						
						
							
								 
						
						
					 
				
				@ -341,7 +342,7 @@ class TestSparseModelComponents: 
			
		
	
		
			
				
					
 
			
		
	
		
			
				
					        transition_matrix  =  builder . build ( nr_choices ,  nr_states )  
			
		
	
		
			
				
					
 
			
		
	
		
			
				
					        # state_ labeling  
			
		
	
		
			
				
					        # state  labeling  
			
		
	
		
			
				
					        state_labeling  =  stormpy . storage . StateLabeling ( nr_states )  
			
		
	
		
			
				
					        # Add labels  
			
		
	
		
			
				
					        state_labels  =  { ' init ' ,  ' deadlock ' }  
			
		
	
	
		
			
				
					
						
						
						
							
								 
						
					 
				
				@ -351,7 +352,7 @@ class TestSparseModelComponents: 
			
		
	
		
			
				
					        # Add label to states  
			
		
	
		
			
				
					        state_labeling . add_label_to_state ( ' init ' ,  0 )  
			
		
	
		
			
				
					
 
			
		
	
		
			
				
					        # state_ valuations  
			
		
	
		
			
				
					        # state  valuations  
			
		
	
		
			
				
					        manager  =  stormpy . ExpressionManager ( )  
			
		
	
		
			
				
					        var_s  =  manager . create_integer_variable ( name = ' s ' )  
			
		
	
		
			
				
					        v_builder  =  stormpy . StateValuationsBuilder ( )  
			
		
	
	
		
			
				
					
						
							
								 
						
						
							
								 
						
						
					 
				
				@ -396,6 +397,7 @@ class TestSparseModelComponents: 
			
		
	
		
			
				
					        components . choice_origins  =  choice_origins  
			
		
	
		
			
				
					        components . exit_rates  =  exit_rates  
			
		
	
		
			
				
					
 
			
		
	
		
			
				
					        # Build MA  
			
		
	
		
			
				
					        ma  =  stormpy . storage . SparseMA ( components )  
			
		
	
		
			
				
					        assert  type ( ma )  is  stormpy . SparseMA  
			
		
	
		
			
				
					        assert  not  ma . supports_parameters  
			
		
	
	
		
			
				
					
						
							
								 
						
						
							
								 
						
						
					 
				
				@ -423,16 +425,16 @@ class TestSparseModelComponents: 
			
		
	
		
			
				
					        for  state  in  ma . states :  
			
		
	
		
			
				
					            assert  len ( state . actions )  < =  3  
			
		
	
		
			
				
					
 
			
		
	
		
			
				
					        # Test state_ labeling  
			
		
	
		
			
				
					        # Test state  labeling  
			
		
	
		
			
				
					        assert  ma . labeling . get_labels ( )  ==  { ' deadlock ' ,  ' init ' }  
			
		
	
		
			
				
					
 
			
		
	
		
			
				
					        # Test reward_ models  
			
		
	
		
			
				
					        # Test reward  models  
			
		
	
		
			
				
					        assert  len ( ma . reward_models )  ==  0  
			
		
	
		
			
				
					
 
			
		
	
		
			
				
					        # Test choice_ labeling  
			
		
	
		
			
				
					        # Test choice  labeling  
			
		
	
		
			
				
					        assert  not  ma . has_choice_labeling ( )  
			
		
	
		
			
				
					
 
			
		
	
		
			
				
					        # Test state_ valuations  
			
		
	
		
			
				
					        # Test state  valuations  
			
		
	
		
			
				
					        assert  ma . has_state_valuations ( )  
			
		
	
		
			
				
					
 
			
		
	
		
			
				
					        value_s  =  [ None ]  *  nr_states  
			
		
	
	
		
			
				
					
						
						
						
							
								 
						
					 
				
				@ -440,14 +442,14 @@ class TestSparseModelComponents: 
			
		
	
		
			
				
					            value_s [ s ]  =  ma . state_valuations . get_integer_value ( s ,  var_s )  
			
		
	
		
			
				
					        assert  value_s  ==  [ 0 ,  2 ,  1 ,  4 ,  3 ]  
			
		
	
		
			
				
					
 
			
		
	
		
			
				
					        # Test choice_ origins  
			
		
	
		
			
				
					        # Test choice  origins  
			
		
	
		
			
				
					        assert  ma . has_choice_origins ( )  
			
		
	
		
			
				
					        assert  ma . choice_origins . get_number_of_identifiers ( )  ==  11  
			
		
	
		
			
				
					
 
			
		
	
		
			
				
					        # Test exit_ rates  
			
		
	
		
			
				
					        # Test exit  rates  
			
		
	
		
			
				
					        assert  ma . exit_rates  ==  [ 3.0 ,  12.0 ,  10.0 ,  3.0 ,  4.0 ]  
			
		
	
		
			
				
					
 
			
		
	
		
			
				
					        # Test m arkovian states  
			
		
	
		
			
				
					        # Test M arkovian states  
			
		
	
		
			
				
					        assert  ma . markovian_states  ==  stormpy . BitVector ( 5 ,  [ 0 ,  1 ,  2 ,  3 ,  4 ] )  
			
		
	
		
			
				
					
 
			
		
	
		
			
				
					    def  test_build_mdp ( self ) :  
			
		
	
	
		
			
				
					
						
							
								 
						
						
							
								 
						
						
					 
				
				@ -495,7 +497,7 @@ class TestSparseModelComponents: 
			
		
	
		
			
				
					
 
			
		
	
		
			
				
					        transition_matrix  =  builder . build ( nr_choices ,  nr_states )  
			
		
	
		
			
				
					
 
			
		
	
		
			
				
					        # state_ labeling  
			
		
	
		
			
				
					        # state  labeling  
			
		
	
		
			
				
					        state_labeling  =  stormpy . storage . StateLabeling ( nr_states )  
			
		
	
		
			
				
					        labels  =  { ' init ' ,  ' one ' ,  ' two ' ,  ' three ' ,  ' four ' ,  ' five ' ,  ' six ' ,  ' done ' ,  ' deadlock ' }  
			
		
	
		
			
				
					        for  label  in  labels :  
			
		
	
	
		
			
				
					
						
						
						
							
								 
						
					 
				
				@ -510,13 +512,13 @@ class TestSparseModelComponents: 
			
		
	
		
			
				
					
 
			
		
	
		
			
				
					        state_labeling . set_states ( ' done ' ,  stormpy . BitVector ( nr_states ,  [ 7 ,  8 ,  9 ,  10 ,  11 ,  12 ] ) )  
			
		
	
		
			
				
					
 
			
		
	
		
			
				
					        # reward_ models  
			
		
	
		
			
				
					        # reward  models  
			
		
	
		
			
				
					        reward_models  =  { }  
			
		
	
		
			
				
					        # Vector representing the state-action rewards  
			
		
	
		
			
				
					        action_reward  =  [ 0.0 ,  0.0 ,  1.0 ,  1.0 ,  1.0 ,  1.0 ,  1.0 ,  1.0 ,  0.0 ,  0.0 ,  0.0 ,  0.0 ,  0.0 ,  0.0 ]  
			
		
	
		
			
				
					        reward_models [ ' coin_flips ' ]  =  stormpy . SparseRewardModel ( optional_state_action_reward_vector = action_reward )  
			
		
	
		
			
				
					
 
			
		
	
		
			
				
					        # choice_ labeling  
			
		
	
		
			
				
					        # choice  labeling  
			
		
	
		
			
				
					        choice_labeling  =  stormpy . storage . ChoiceLabeling ( nr_choices )  
			
		
	
		
			
				
					        choice_labels  =  { ' a ' ,  ' b ' }  
			
		
	
		
			
				
					        for  label  in  choice_labels :  
			
		
	
	
		
			
				
					
						
						
						
							
								 
						
					 
				
				@ -524,7 +526,7 @@ class TestSparseModelComponents: 
			
		
	
		
			
				
					        choice_labeling . add_label_to_choice ( ' a ' ,  0 )  
			
		
	
		
			
				
					        choice_labeling . add_label_to_choice ( ' b ' ,  1 )  
			
		
	
		
			
				
					
 
			
		
	
		
			
				
					        # state_ valuations  
			
		
	
		
			
				
					        # state  valuations  
			
		
	
		
			
				
					        manager  =  stormpy . ExpressionManager ( )  
			
		
	
		
			
				
					        var_s  =  manager . create_integer_variable ( name = ' s ' )  
			
		
	
		
			
				
					        var_d  =  manager . create_integer_variable ( name = ' d ' )  
			
		
	
	
		
			
				
					
						
						
						
							
								 
						
					 
				
				@ -538,7 +540,7 @@ class TestSparseModelComponents: 
			
		
	
		
			
				
					            v_builder . add_state ( state = s ,  boolean_values = [ ] ,  integer_values = [ 7 ,  s  -  6 ] ,  rational_values = [ ] )  
			
		
	
		
			
				
					        state_valuations  =  v_builder . build ( 13 )  
			
		
	
		
			
				
					
 
			
		
	
		
			
				
					        # choice_ origins  
			
		
	
		
			
				
					        # choice  origins  
			
		
	
		
			
				
					        prism_program  =  stormpy . parse_prism_program ( get_example_path ( " mdp " ,  " die_c1.nm " ) )  
			
		
	
		
			
				
					        index_to_identifier_mapping  =  [ 1 ,  2 ,  3 ,  4 ,  5 ,  6 ,  7 ,  8 ,  9 ,  9 ,  9 ,  9 ,  9 ,  9 ]  
			
		
	
		
			
				
					
 
			
		
	
	
		
			
				
					
						
						
						
							
								 
						
					 
				
				@ -557,6 +559,7 @@ class TestSparseModelComponents: 
			
		
	
		
			
				
					        components . choice_labeling  =  choice_labeling  
			
		
	
		
			
				
					        components . choice_origins  =  choice_origins  
			
		
	
		
			
				
					
 
			
		
	
		
			
				
					        # Build MDP  
			
		
	
		
			
				
					        mdp  =  stormpy . storage . SparseMdp ( components )  
			
		
	
		
			
				
					
 
			
		
	
		
			
				
					        assert  type ( mdp )  is  stormpy . SparseMdp  
			
		
	
	
		
			
				
					
						
						
						
							
								 
						
					 
				
				@ -573,10 +576,10 @@ class TestSparseModelComponents: 
			
		
	
		
			
				
					        for  state  in  mdp . states :  
			
		
	
		
			
				
					            assert  len ( state . actions )  < =  2  
			
		
	
		
			
				
					
 
			
		
	
		
			
				
					        # Test state_ labeling  
			
		
	
		
			
				
					        # Test state  labeling  
			
		
	
		
			
				
					        assert  mdp . labeling . get_labels ( )  ==  { ' init ' ,  ' deadlock ' ,  ' done ' ,  ' one ' ,  ' two ' ,  ' three ' ,  ' four ' ,  ' five ' ,  ' six ' }  
			
		
	
		
			
				
					
 
			
		
	
		
			
				
					        # Test reward_ models  
			
		
	
		
			
				
					        # Test reward  models  
			
		
	
		
			
				
					        assert  len ( mdp . reward_models )  ==  1  
			
		
	
		
			
				
					        assert  not  mdp . reward_models [ " coin_flips " ] . has_state_rewards  
			
		
	
		
			
				
					        assert  mdp . reward_models [ " coin_flips " ] . has_state_action_rewards  
			
		
	
	
		
			
				
					
						
						
						
							
								 
						
					 
				
				@ -584,11 +587,11 @@ class TestSparseModelComponents: 
			
		
	
		
			
				
					            assert  reward  ==  1.0  or  reward  ==  0.0  
			
		
	
		
			
				
					        assert  not  mdp . reward_models [ " coin_flips " ] . has_transition_rewards  
			
		
	
		
			
				
					
 
			
		
	
		
			
				
					        # Test choice_ labeling  
			
		
	
		
			
				
					        # Test choice  labeling  
			
		
	
		
			
				
					        assert  mdp . has_choice_labeling ( )  
			
		
	
		
			
				
					        assert  mdp . choice_labeling . get_labels ( )  ==  { ' a ' ,  ' b ' }  
			
		
	
		
			
				
					
 
			
		
	
		
			
				
					        # Test state_ valuations  
			
		
	
		
			
				
					        # Test state  valuations  
			
		
	
		
			
				
					        assert  mdp . has_state_valuations ( )  
			
		
	
		
			
				
					        assert  mdp . state_valuations  
			
		
	
		
			
				
					        value_s  =  [ None ]  *  nr_states  
			
		
	
	
		
			
				
					
						
						
						
							
								 
						
					 
				
				@ -599,7 +602,7 @@ class TestSparseModelComponents: 
			
		
	
		
			
				
					        assert  value_s  ==  [ 0 ,  1 ,  2 ,  3 ,  4 ,  5 ,  6 ,  7 ,  7 ,  7 ,  7 ,  7 ,  7 ]  
			
		
	
		
			
				
					        assert  value_d  ==  [ 0 ,  0 ,  0 ,  0 ,  0 ,  0 ,  0 ,  1 ,  2 ,  3 ,  4 ,  5 ,  6 ]  
			
		
	
		
			
				
					
 
			
		
	
		
			
				
					        # Test choice_ origins  
			
		
	
		
			
				
					        # Test choice  origins  
			
		
	
		
			
				
					        assert  mdp . has_choice_origins ( )  
			
		
	
		
			
				
					        assert  mdp . choice_origins  is  components . choice_origins  
			
		
	
		
			
				
					        assert  mdp . choice_origins . get_number_of_identifiers ( )  ==  10  
			
		
	
	
		
			
				
					
						
							
								 
						
						
							
								 
						
						
					 
				
				@ -662,7 +665,7 @@ class TestSparseModelComponents: 
			
		
	
		
			
				
					        transition_matrix  =  stormpy . build_sparse_matrix ( transitions ,  
			
		
	
		
			
				
					                                                        row_group_indices = [ 0 ,  1 ,  5 ,  9 ,  13 ,  17 ,  21 ,  25 ,  29 ,  33 ] )  
			
		
	
		
			
				
					
 
			
		
	
		
			
				
					        # state_ labeling  
			
		
	
		
			
				
					        # state  labeling  
			
		
	
		
			
				
					        state_labeling  =  stormpy . storage . StateLabeling ( nr_states )  
			
		
	
		
			
				
					        labels  =  { ' deadlock ' ,  ' goal ' ,  ' init ' }  
			
		
	
		
			
				
					        for  label  in  labels :  
			
		
	
	
		
			
				
					
						
						
						
							
								 
						
					 
				
				@ -670,14 +673,14 @@ class TestSparseModelComponents: 
			
		
	
		
			
				
					        state_labeling . add_label_to_state ( ' init ' ,  0 )  
			
		
	
		
			
				
					        state_labeling . add_label_to_state ( ' goal ' ,  9 )  
			
		
	
		
			
				
					
 
			
		
	
		
			
				
					        # reward_ models  
			
		
	
		
			
				
					        # reward  models  
			
		
	
		
			
				
					        reward_models  =  { }  
			
		
	
		
			
				
					        # Vector representing state-action rewards  
			
		
	
		
			
				
					        action_reward  =  [ 0.0 ,  1.0 ,  1.0 ,  1.0 ,  1.0 ,  1.0 ,  1.0 ,  1.0 ,  1.0 ,  1.0 ,  1.0 ,  1.0 ,  1.0 ,  1.0 ,  1.0 ,  1.0 ,  1.0 ,  1.0 ,  1.0 ,  
			
		
	
		
			
				
					                         1.0 ,  1.0 ,  1.0 ,  1.0 ,  1.0 ,  1.0 ,  1.0 ,  1.0 ,  1.0 ,  1.0 ,  1.0 ,  1.0 ,  1.0 ,  1.0 ,  0.0 ]  
			
		
	
		
			
				
					        reward_models [ ' ' ]  =  stormpy . SparseRewardModel ( optional_state_action_reward_vector = action_reward )  
			
		
	
		
			
				
					
 
			
		
	
		
			
				
					        # choice_ labeling  
			
		
	
		
			
				
					        # choice  labeling  
			
		
	
		
			
				
					        choice_labeling  =  stormpy . storage . ChoiceLabeling ( nr_choices )  
			
		
	
		
			
				
					        choice_labels  =  { ' south ' ,  ' north ' ,  ' west ' ,  ' east ' ,  ' done ' }  
			
		
	
		
			
				
					        for  label  in  choice_labels :  
			
		
	
	
		
			
				
					
						
						
						
							
								 
						
					 
				
				@ -688,7 +691,7 @@ class TestSparseModelComponents: 
			
		
	
		
			
				
					        choice_labeling . set_choices ( ' east ' ,  stormpy . BitVector ( nr_choices ,  [ 1 ,  5 ,  9 ,  13 ,  17 ,  21 ,  25 ,  29 ] ) )  
			
		
	
		
			
				
					        choice_labeling . set_choices ( ' done ' ,  stormpy . BitVector ( nr_choices ,  [ 33 ] ) )  
			
		
	
		
			
				
					
 
			
		
	
		
			
				
					        # StateV aluations  
			
		
	
		
			
				
					        # state v aluations  
			
		
	
		
			
				
					        manager  =  stormpy . ExpressionManager ( )  
			
		
	
		
			
				
					        var_x  =  manager . create_integer_variable ( name = ' x ' )  
			
		
	
		
			
				
					        var_y  =  manager . create_integer_variable ( name = ' y ' )  
			
		
	
	
		
			
				
					
						
							
								 
						
						
							
								 
						
						
					 
				
				@ -722,6 +725,7 @@ class TestSparseModelComponents: 
			
		
	
		
			
				
					        # components.choice_origins=choice_origins  
			
		
	
		
			
				
					        components . observability_classes  =  observations  
			
		
	
		
			
				
					
 
			
		
	
		
			
				
					        # Build POMDP  
			
		
	
		
			
				
					        pomdp  =  stormpy . storage . SparsePomdp ( components )  
			
		
	
		
			
				
					        assert  type ( pomdp )  is  stormpy . SparsePomdp  
			
		
	
		
			
				
					        assert  not  pomdp . supports_parameters  
			
		
	
	
		
			
				
					
						
						
						
							
								 
						
					 
				
				@ -735,10 +739,10 @@ class TestSparseModelComponents: 
			
		
	
		
			
				
					        for  state  in  pomdp . states :  
			
		
	
		
			
				
					            assert  len ( state . actions )  < =  4  
			
		
	
		
			
				
					
 
			
		
	
		
			
				
					        # Test state_ labeling  
			
		
	
		
			
				
					        # Test state  labeling  
			
		
	
		
			
				
					        assert  pomdp . labeling . get_labels ( )  ==  { ' init ' ,  ' goal ' ,  ' deadlock ' }  
			
		
	
		
			
				
					
 
			
		
	
		
			
				
					        # Test reward_ models  
			
		
	
		
			
				
					        # Test reward  models  
			
		
	
		
			
				
					        assert  len ( pomdp . reward_models )  ==  1  
			
		
	
		
			
				
					        assert  not  pomdp . reward_models [ ' ' ] . has_state_rewards  
			
		
	
		
			
				
					        assert  pomdp . reward_models [ ' ' ] . has_state_action_rewards  
			
		
	
	
		
			
				
					
						
						
						
							
								 
						
					 
				
				@ -746,11 +750,11 @@ class TestSparseModelComponents: 
			
		
	
		
			
				
					            assert  reward  ==  1.0  or  reward  ==  0.0  
			
		
	
		
			
				
					        assert  not  pomdp . reward_models [ ' ' ] . has_transition_rewards  
			
		
	
		
			
				
					
 
			
		
	
		
			
				
					        # Test choice_ labeling  
			
		
	
		
			
				
					        # Test choice  labeling  
			
		
	
		
			
				
					        assert  pomdp . has_choice_labeling ( )  
			
		
	
		
			
				
					        assert  pomdp . choice_labeling . get_labels ( )  ==  { ' east ' ,  ' west ' ,  ' north ' ,  ' south ' ,  ' done ' }  
			
		
	
		
			
				
					
 
			
		
	
		
			
				
					        # Test state_ valuations  
			
		
	
		
			
				
					        # Test state  valuations  
			
		
	
		
			
				
					        assert  pomdp . has_state_valuations ( )  
			
		
	
		
			
				
					        assert  pomdp . state_valuations  
			
		
	
		
			
				
					        value_x  =  [ None ]  *  nr_states  
			
		
	
	
		
			
				
					
						
						
						
							
								 
						
					 
				
				@ -764,7 +768,7 @@ class TestSparseModelComponents: 
			
		
	
		
			
				
					        assert  value_y  ==  [ 0 ,  0 ,  1 ,  2 ,  0 ,  1 ,  2 ,  1 ,  2 ,  0 ]  
			
		
	
		
			
				
					        assert  value_o  ==  [ 0 ,  1 ,  1 ,  1 ,  1 ,  1 ,  1 ,  1 ,  1 ,  2 ]  
			
		
	
		
			
				
					
 
			
		
	
		
			
				
					        # Test choice_ origins  
			
		
	
		
			
				
					        # Test choice  origins  
			
		
	
		
			
				
					        assert  not  pomdp . has_choice_origins ( )  
			
		
	
		
			
				
					
 
			
		
	
		
			
				
					        assert  pomdp . observations  ==  [ 1 ,  0 ,  0 ,  0 ,  0 ,  0 ,  0 ,  0 ,  0 ,  2 ]