@ -21,14 +21,49 @@ class TestPLA: 
		
	
		
			
				        checker  =  stormpy . pars . create_region_checker ( env ,  model ,  formulas [ 0 ] . raw_formula )         checker  =  stormpy . pars . create_region_checker ( env ,  model ,  formulas [ 0 ] . raw_formula )  
		
	
		
			
				        parameters  =  model . collect_probability_parameters ( )         parameters  =  model . collect_probability_parameters ( )  
		
	
		
			
				        assert  len ( parameters )  ==  2         assert  len ( parameters )  ==  2  
		
	
		
			
				        region  =  stormpy . pars . ParameterRegion ( " 0.7<=pL<=0.9,0.75<=pK<=0.95 " ,  parameters )  
		
	
		
			
				        region  =  stormpy . pars . ParameterRegion . create_from_string ( " 0.7<=pL<=0.9,0.75<=pK<=0.95 " ,  parameters )  
		
	
		
			
				        result  =  checker . check_region ( env ,  region )         result  =  checker . check_region ( env ,  region )  
		
	
		
			
				        assert  result  ==  stormpy . pars . RegionResult . ALLSAT         assert  result  ==  stormpy . pars . RegionResult . ALLSAT  
		
	
		
			
				        region  =  stormpy . pars . ParameterRegion ( " 0.4<=pL<=0.65,0.75<=pK<=0.95 " ,  parameters )  
		
	
		
			
				        result  =  checker . check_region ( env ,  region ,  stormpy . pars . RegionResultHypothesis . UNKNOWN ,  
		
	
		
			
				                                      stormpy . pars . RegionResult . UNKNOWN ,  True )  
		
	
		
			
				        region  =  stormpy . pars . ParameterRegion . create_from_string ( " 0.4<=pL<=0.65,0.75<=pK<=0.95 " ,  parameters )  
		
	
		
			
				        result  =  checker . check_region ( env ,  region ,  stormpy . pars . RegionResultHypothesis . UNKNOWN ,  stormpy . pars . RegionResult . UNKNOWN ,  True )  
		
	
		
			
				        assert  result  ==  stormpy . pars . RegionResult . EXISTSBOTH         assert  result  ==  stormpy . pars . RegionResult . EXISTSBOTH  
		
	
		
			
				        region  =  stormpy . pars . ParameterRegion ( " 0.1<=pL<=0.73,0.2<=pK<=0.715 " ,  parameters )  
		
	
		
			
				        region  =  stormpy . pars . ParameterRegion . create_from_string ( " 0.1<=pL<=0.73,0.2<=pK<=0.715 " ,  parameters )  
		
	
		
			
				        result  =  checker . check_region ( env ,  region )  
		
	
		
			
				        assert  result  ==  stormpy . pars . RegionResult . ALLVIOLATED  
		
	
		
			
				
 
		
	
		
			
				    def  test_pla_region_valuation ( self ) :  
		
	
		
			
				        program  =  stormpy . parse_prism_program ( get_example_path ( " pdtmc " ,  " brp16_2.pm " ) )  
		
	
		
			
				        prop  =  " P<=0.84 [F s=5 ] "  
		
	
		
			
				        formulas  =  stormpy . parse_properties_for_prism_program ( prop ,  program )  
		
	
		
			
				        model  =  stormpy . build_parametric_model ( program ,  formulas )  
		
	
		
			
				        assert  model . nr_states  ==  613  
		
	
		
			
				        assert  model . nr_transitions  ==  803  
		
	
		
			
				        assert  model . model_type  ==  stormpy . ModelType . DTMC  
		
	
		
			
				        assert  model . has_parameters  
		
	
		
			
				        env  =  stormpy . Environment ( )  
		
	
		
			
				        checker  =  stormpy . pars . create_region_checker ( env ,  model ,  formulas [ 0 ] . raw_formula )  
		
	
		
			
				        parameters  =  model . collect_probability_parameters ( )  
		
	
		
			
				        assert  len ( parameters )  ==  2  
		
	
		
			
				        for  par  in  parameters :  
		
	
		
			
				            if  par . name  ==  " pL " :  
		
	
		
			
				                pL  =  par  
		
	
		
			
				            elif  par . name  ==  " pK " :  
		
	
		
			
				                pK  =  par  
		
	
		
			
				            else :  
		
	
		
			
				                assert  False  
		
	
		
			
				        region_valuation  =  dict ( )  
		
	
		
			
				        region_valuation [ pL ]  =  ( stormpy . RationalRF ( 0.7 ) ,  stormpy . RationalRF ( 0.9 ) )  
		
	
		
			
				        region_valuation [ pK ]  =  ( stormpy . RationalRF ( 0.75 ) ,  stormpy . RationalRF ( 0.95 ) )  
		
	
		
			
				        region  =  stormpy . pars . ParameterRegion ( region_valuation )  
		
	
		
			
				        result  =  checker . check_region ( env ,  region )  
		
	
		
			
				        assert  result  ==  stormpy . pars . RegionResult . ALLSAT  
		
	
		
			
				        region_valuation [ pL ]  =  ( stormpy . RationalRF ( 0.4 ) ,  stormpy . RationalRF ( 0.65 ) )  
		
	
		
			
				        region  =  stormpy . pars . ParameterRegion ( region_valuation )  
		
	
		
			
				        result  =  checker . check_region ( env ,  region ,  stormpy . pars . RegionResultHypothesis . UNKNOWN ,  stormpy . pars . RegionResult . UNKNOWN ,  True )  
		
	
		
			
				        assert  result  ==  stormpy . pars . RegionResult . EXISTSBOTH  
		
	
		
			
				        region_valuation [ pK ]  =  ( stormpy . RationalRF ( 0.2 ) ,  stormpy . RationalRF ( 0.715 ) )  
		
	
		
			
				        region_valuation [ pL ]  =  ( stormpy . RationalRF ( 0.1 ) ,  stormpy . RationalRF ( 0.73 ) )  
		
	
		
			
				        region  =  stormpy . pars . ParameterRegion ( region_valuation )  
		
	
		
			
				        result  =  checker . check_region ( env ,  region )         result  =  checker . check_region ( env ,  region )  
		
	
		
			
				        assert  result  ==  stormpy . pars . RegionResult . ALLVIOLATED         assert  result  ==  stormpy . pars . RegionResult . ALLVIOLATED  
		
	
		
			
				
 
		
	
	
		
			
				
					
					
					
						
							 
					
				 
				@ -42,7 +77,7 @@ class TestPLA: 
		
	
		
			
				        checker  =  stormpy . pars . create_region_checker ( env ,  model ,  formulas [ 0 ] . raw_formula )         checker  =  stormpy . pars . create_region_checker ( env ,  model ,  formulas [ 0 ] . raw_formula )  
		
	
		
			
				        parameters  =  model . collect_probability_parameters ( )         parameters  =  model . collect_probability_parameters ( )  
		
	
		
			
				        assert  len ( parameters )  ==  2         assert  len ( parameters )  ==  2  
		
	
		
			
				        region  =  stormpy . pars . ParameterRegion ( " 0.7<=pL<=0.9,0.75<=pK<=0.95 " ,  parameters )  
		
	
		
			
				        region  =  stormpy . pars . ParameterRegion . create_from_string ( " 0.7<=pL<=0.9,0.75<=pK<=0.95 " ,  parameters )  
		
	
		
			
				        result  =  checker . get_bound ( env ,  region ,  True )         result  =  checker . get_bound ( env ,  region ,  True )  
		
	
		
			
				        assert  math . isclose ( float ( result . constant_part ( ) ) ,  0.8369631383670559 ,  rel_tol = 1e-6 )         assert  math . isclose ( float ( result . constant_part ( ) ) ,  0.8369631383670559 ,  rel_tol = 1e-6 )  
		
	
		
			
				        result_vec  =  checker . get_bound_all_states ( env ,  region ,  True )         result_vec  =  checker . get_bound_all_states ( env ,  region ,  True )  
		
	
	
		
			
				
					
					
					
						
							 
					
				 
				@ -60,7 +95,7 @@ class TestPLA: 
		
	
		
			
				        checker . specify ( env ,  model ,  formulas [ 0 ] . raw_formula )         checker . specify ( env ,  model ,  formulas [ 0 ] . raw_formula )  
		
	
		
			
				        parameters  =  model . collect_probability_parameters ( )         parameters  =  model . collect_probability_parameters ( )  
		
	
		
			
				        assert  len ( parameters )  ==  2         assert  len ( parameters )  ==  2  
		
	
		
			
				        region  =  stormpy . pars . ParameterRegion ( " 0.7<=pL<=0.9,0.75<=pK<=0.95 " ,  parameters )  
		
	
		
			
				        region  =  stormpy . pars . ParameterRegion . create_from_string ( " 0.7<=pL<=0.9,0.75<=pK<=0.95 " ,  parameters )  
		
	
		
			
				        result  =  checker . get_bound ( env ,  region ,  True )         result  =  checker . get_bound ( env ,  region ,  True )  
		
	
		
			
				        assert  math . isclose ( float ( result . constant_part ( ) ) ,  0.8369631383670559 ,  rel_tol = 1e-6 )         assert  math . isclose ( float ( result . constant_part ( ) ) ,  0.8369631383670559 ,  rel_tol = 1e-6 )  
		
	
		
			
				
 
		
	
	
		
			
				
					
					
					
						
							 
					
				 
				@ -75,7 +110,7 @@ class TestPLA: 
		
	
		
			
				        checker . specify ( env ,  model ,  formulas [ 0 ] . raw_formula ,  allow_model_simplification = False )         checker . specify ( env ,  model ,  formulas [ 0 ] . raw_formula ,  allow_model_simplification = False )  
		
	
		
			
				        parameters  =  model . collect_probability_parameters ( )         parameters  =  model . collect_probability_parameters ( )  
		
	
		
			
				        assert  len ( parameters )  ==  2         assert  len ( parameters )  ==  2  
		
	
		
			
				        region  =  stormpy . pars . ParameterRegion ( " 0.7<=pL<=0.9,0.75<=pK<=0.95 " ,  parameters )  
		
	
		
			
				        region  =  stormpy . pars . ParameterRegion . create_from_string ( " 0.7<=pL<=0.9,0.75<=pK<=0.95 " ,  parameters )  
		
	
		
			
				        result  =  checker . get_bound ( env ,  region ,  True )         result  =  checker . get_bound ( env ,  region ,  True )  
		
	
		
			
				        assert  math . isclose ( float ( result . constant_part ( ) ) ,  0.836963056082918 ,  rel_tol = 1e-6 )         assert  math . isclose ( float ( result . constant_part ( ) ) ,  0.836963056082918 ,  rel_tol = 1e-6 )  
		
	
		
			
				
 
		
	
	
		
			
				
					
					
					
						
							 
					
				 
				@ -90,7 +125,7 @@ class TestPLA: 
		
	
		
			
				        checker . specify ( env ,  model ,  formulas [ 0 ] . raw_formula ,  allow_model_simplification = False )         checker . specify ( env ,  model ,  formulas [ 0 ] . raw_formula ,  allow_model_simplification = False )  
		
	
		
			
				        parameters  =  model . collect_probability_parameters ( )         parameters  =  model . collect_probability_parameters ( )  
		
	
		
			
				        assert  len ( parameters )  ==  2         assert  len ( parameters )  ==  2  
		
	
		
			
				        region  =  stormpy . pars . ParameterRegion ( " 0.7<=pL<=0.9,0.75<=pK<=0.95 " ,  parameters )  
		
	
		
			
				        region  =  stormpy . pars . ParameterRegion . create_from_string ( " 0.7<=pL<=0.9,0.75<=pK<=0.95 " ,  parameters )  
		
	
		
			
				        result_vec  =  checker . get_bound_all_states ( env ,  region ,  True )         result_vec  =  checker . get_bound_all_states ( env ,  region ,  True )  
		
	
		
			
				        assert  len ( result_vec . get_values ( ) )  ==  model . nr_states         assert  len ( result_vec . get_values ( ) )  ==  model . nr_states  
		
	
		
			
				        assert  math . isclose ( result_vec . at ( model . initial_states [ 0 ] ) ,  0.836963056082918 ,  rel_tol = 1e-6 )         assert  math . isclose ( result_vec . at ( model . initial_states [ 0 ] ) ,  0.836963056082918 ,  rel_tol = 1e-6 )