@ -107,24 +107,22 @@ namespace storm { 
			
		
	
		
			
				
					                parseActions ( parsedStructure . at ( " actions " ) ,  model ) ;  
			
		
	
		
			
				
					            }  
			
		
	
		
			
				
					            size_t  constantsCount  =  parsedStructure . count ( " constants " ) ;  
			
		
	
		
			
				
					            std : : unordered_map < std : : string ,  std : : shared_ptr < storm : : jani : : Constant > > constants ;  
			
		
	
		
			
				
					            ConstantsMap constants ;  
			
		
	
		
			
				
					            STORM_LOG_THROW ( constantsCount  <  2 ,  storm : : exceptions : : InvalidJaniException ,  " Constant-declarations can be given at most once. " ) ;  
			
		
	
		
			
				
					            if  ( constantsCount  = =  1 )  {  
			
		
	
		
			
				
					                for  ( auto  const  & constStructure  :  parsedStructure . at ( " constants " ) )  {  
			
		
	
		
			
				
					                    std : : shared_ptr < storm : : jani : : Constant >  constant  =  parseConstant ( constStructure ,  constants ,  " global " ) ;  
			
		
	
		
			
				
					                    constants . emplace ( constant - > getName ( ) ,  constant ) ;  
			
		
	
		
			
				
					                    model . addConstant ( * constant ) ;  
			
		
	
		
			
				
					                    constants . emplace ( constant - > getName ( ) ,  & model . addConstant ( * constant ) ) ;  
			
		
	
		
			
				
					                }  
			
		
	
		
			
				
					            }  
			
		
	
		
			
				
					            size_t  variablesCount  =  parsedStructure . count ( " variables " ) ;  
			
		
	
		
			
				
					            STORM_LOG_THROW ( variablesCount  <  2 ,  storm : : exceptions : : InvalidJaniException ,  " Variable-declarations can be given at most once for global variables. " ) ;  
			
		
	
		
			
				
					            std : : unordered_map < std : : string ,  std : : shared_ptr < storm : : jani : : Variable > > globalVars ;  
			
		
	
		
			
				
					            VariablesMap globalVars ;  
			
		
	
		
			
				
					            if  ( variablesCount  = =  1 )  {  
			
		
	
		
			
				
					                bool  requireInitialValues  =  parsedStructure . count ( " restrict-initial " )  = =  0 ;  
			
		
	
		
			
				
					                for  ( auto  const &  varStructure  :  parsedStructure . at ( " variables " ) )  {  
			
		
	
		
			
				
					                    std : : shared_ptr < storm : : jani : : Variable >  variable  =  parseVariable ( varStructure ,  requireInitialValues ,  " global " ,  globalVars ,  constants ) ;  
			
		
	
		
			
				
					                    globalVars . emplace ( variable - > getName ( ) ,  variable ) ;  
			
		
	
		
			
				
					                    model . addVariable ( * variable ) ;  
			
		
	
		
			
				
					                    globalVars . emplace ( variable - > getName ( ) ,  & model . addVariable ( * variable ) ) ;  
			
		
	
		
			
				
					                }  
			
		
	
		
			
				
					            }  
			
		
	
		
			
				
					            STORM_LOG_THROW ( parsedStructure . count ( " automata " )  = =  1 ,  storm : : exceptions : : InvalidJaniException ,  " Exactly one list of automata must be given " ) ;  
			
		
	
	
		
			
				
					
						
							
								 
						
						
							
								 
						
						
					 
				
				@ -163,19 +161,19 @@ namespace storm { 
			
		
	
		
			
				
					        }  
			
		
	
		
			
				
					
 
			
		
	
		
			
				
					         
			
		
	
		
			
				
					        std : : vector < std : : shared_ptr < storm : : logic : : Formula  const > >  JaniParser : : parseUnaryFormulaArgument ( json  const &  propertyStructure ,  storm : : logic : : FormulaContext  formulaContext ,  std : : string  const &  opstring ,  std : : unordered_map < std : : string ,  std : : shared_ptr < storm : : jani : : Variable > > const &  globalVars ,  std : : unordered_map < std : : string ,  std : : shared_ptr < storm : : jani : : Constant > > const &  constants ,  std : : string  const &  context )  {  
			
		
	
		
			
				
					        std : : vector < std : : shared_ptr < storm : : logic : : Formula  const > >  JaniParser : : parseUnaryFormulaArgument ( json  const &  propertyStructure ,  storm : : logic : : FormulaContext  formulaContext ,  std : : string  const &  opstring ,  VariablesMap const &  globalVars ,  ConstantsMap const &  constants ,  std : : string  const &  context )  {  
			
		
	
		
			
				
					            STORM_LOG_THROW ( propertyStructure . count ( " exp " )  = =  1 ,  storm : : exceptions : : InvalidJaniException ,  " Expecting operand for operator  "  < <  opstring  < <  "  in   "  < <  context ) ;  
			
		
	
		
			
				
					            return   {  parseFormula ( propertyStructure . at ( " exp " ) ,  formulaContext ,  globalVars ,  constants ,  " Operand of operator  "  +  opstring )  } ;  
			
		
	
		
			
				
					        }  
			
		
	
		
			
				
					         
			
		
	
		
			
				
					         
			
		
	
		
			
				
					        std : : vector < std : : shared_ptr < storm : : logic : : Formula  const > >  JaniParser : : parseBinaryFormulaArguments ( json  const &  propertyStructure ,  storm : : logic : : FormulaContext  formulaContext ,  std : : string  const &  opstring ,  std : : unordered_map < std : : string ,  std : : shared_ptr < storm : : jani : : Variable > > const &  globalVars ,  std : : unordered_map < std : : string ,  std : : shared_ptr < storm : : jani : : Constant > > const &  constants ,  std : : string  const &  context )  {  
			
		
	
		
			
				
					        std : : vector < std : : shared_ptr < storm : : logic : : Formula  const > >  JaniParser : : parseBinaryFormulaArguments ( json  const &  propertyStructure ,  storm : : logic : : FormulaContext  formulaContext ,  std : : string  const &  opstring ,  VariablesMap const &  globalVars ,  ConstantsMap const &  constants ,  std : : string  const &  context )  {  
			
		
	
		
			
				
					            STORM_LOG_THROW ( propertyStructure . count ( " left " )  = =  1 ,  storm : : exceptions : : InvalidJaniException ,  " Expecting left operand for operator  "  < <  opstring  < <  "  in   "  < <  context ) ;  
			
		
	
		
			
				
					            STORM_LOG_THROW ( propertyStructure . count ( " right " )  = =  1 ,  storm : : exceptions : : InvalidJaniException ,  " Expecting right operand for operator  "  < <  opstring  < <  "  in   "  < <  context ) ;  
			
		
	
		
			
				
					            return  {  parseFormula ( propertyStructure . at ( " left " ) ,  formulaContext ,  globalVars ,  constants ,  " Operand of operator  "  +  opstring ) ,   parseFormula ( propertyStructure . at ( " right " ) ,  formulaContext ,  globalVars ,  constants ,  " Operand of operator  "  +  opstring )   } ;  
			
		
	
		
			
				
					        }  
			
		
	
		
			
				
					         
			
		
	
		
			
				
					        storm : : jani : : PropertyInterval  JaniParser : : parsePropertyInterval ( json  const &  piStructure ,  std : : unordered_map < std : : string ,  std : : shared_ptr < storm : : jani : : Constant > > const &  constants )  {  
			
		
	
		
			
				
					        storm : : jani : : PropertyInterval  JaniParser : : parsePropertyInterval ( json  const &  piStructure ,  ConstantsMap const &  constants )  {  
			
		
	
		
			
				
					            storm : : jani : : PropertyInterval  pi ;  
			
		
	
		
			
				
					            if  ( piStructure . count ( " lower " )  >  0 )  {  
			
		
	
		
			
				
					                pi . lowerBound  =  parseExpression ( piStructure . at ( " lower " ) ,  " Lower bound for property interval " ,  { } ,  constants ) ;  
			
		
	
	
		
			
				
					
						
							
								 
						
						
							
								 
						
						
					 
				
				@ -218,7 +216,7 @@ namespace storm { 
			
		
	
		
			
				
					            return  storm : : logic : : RewardAccumulation ( accSteps ,  accTime ,  accExit ) ;  
			
		
	
		
			
				
					        }  
			
		
	
		
			
				
					         
			
		
	
		
			
				
					        std : : shared_ptr < storm : : logic : : Formula  const >  JaniParser : : parseFormula ( json  const &  propertyStructure ,  storm : : logic : : FormulaContext  formulaContext , std : : unordered_map < std : : string ,  std : : shared_ptr < storm : : jani : : Variable > > const &  globalVars ,  std : : unordered_map < std : : string ,  std : : shared_ptr < storm : : jani : : Constant > > const &  constants ,  std : : string  const &  context ,  boost : : optional < storm : : logic : : Bound >  bound )  {  
			
		
	
		
			
				
					        std : : shared_ptr < storm : : logic : : Formula  const >  JaniParser : : parseFormula ( json  const &  propertyStructure ,  storm : : logic : : FormulaContext  formulaContext , VariablesMap const &  globalVars ,  ConstantsMap const &  constants ,  std : : string  const &  context ,  boost : : optional < storm : : logic : : Bound >  bound )  {  
			
		
	
		
			
				
					            if  ( propertyStructure . is_boolean ( ) )  {  
			
		
	
		
			
				
					                return  std : : make_shared < storm : : logic : : BooleanLiteralFormula > ( propertyStructure . get < bool > ( ) ) ;  
			
		
	
		
			
				
					            }  
			
		
	
	
		
			
				
					
						
							
								 
						
						
							
								 
						
						
					 
				
				@ -500,7 +498,7 @@ namespace storm { 
			
		
	
		
			
				
					            }  
			
		
	
		
			
				
					        }  
			
		
	
		
			
				
					         
			
		
	
		
			
				
					        storm : : jani : : Property  JaniParser : : parseProperty ( json  const &  propertyStructure ,  std : : unordered_map < std : : string ,  std : : shared_ptr < storm : : jani : : Variable > > const &  globalVars ,  std : : unordered_map < std : : string ,  std : : shared_ptr < storm : : jani : : Constant > > const &  constants )  {  
			
		
	
		
			
				
					        storm : : jani : : Property  JaniParser : : parseProperty ( json  const &  propertyStructure ,  VariablesMap const &  globalVars ,  ConstantsMap const &  constants )  {  
			
		
	
		
			
				
					            STORM_LOG_THROW ( propertyStructure . count ( " name " )  = =   1 ,  storm : : exceptions : : InvalidJaniException ,  " Property must have a name " ) ;  
			
		
	
		
			
				
					            // TODO check unique name
  
			
		
	
		
			
				
					            std : : string  name  =  getString ( propertyStructure . at ( " name " ) ,  " property-name " ) ;  
			
		
	
	
		
			
				
					
						
							
								 
						
						
							
								 
						
						
					 
				
				@ -566,7 +564,7 @@ namespace storm { 
			
		
	
		
			
				
					            return  storm : : jani : : Property ( name ,  storm : : jani : : FilterExpression ( formula ,  ft ,  statesFormula ) ,  comment ) ;  
			
		
	
		
			
				
					        }  
			
		
	
		
			
				
					
 
			
		
	
		
			
				
					        std : : shared_ptr < storm : : jani : : Constant >  JaniParser : : parseConstant ( json  const &  constantStructure ,  std : : unordered_map < std : : string ,  std : : shared_ptr < storm : : jani : : Constant > > const &  constants ,  std : : string  const &  scopeDescription )  {  
			
		
	
		
			
				
					        std : : shared_ptr < storm : : jani : : Constant >  JaniParser : : parseConstant ( json  const &  constantStructure ,  ConstantsMap const &  constants ,  std : : string  const &  scopeDescription )  {  
			
		
	
		
			
				
					            STORM_LOG_THROW ( constantStructure . count ( " name " )  = =  1 ,  storm : : exceptions : : InvalidJaniException ,  " Variable (scope:  "  +  scopeDescription  +  " ) must have a name " ) ;  
			
		
	
		
			
				
					            std : : string  name  =  getString ( constantStructure . at ( " name " ) ,  " variable-name in  "  +  scopeDescription  +  " -scope " ) ;  
			
		
	
		
			
				
					            // TODO check existance of name.
  
			
		
	
	
		
			
				
					
						
							
								 
						
						
							
								 
						
						
					 
				
				@ -635,7 +633,7 @@ namespace storm { 
			
		
	
		
			
				
					            STORM_LOG_THROW ( false ,  storm : : exceptions : : InvalidJaniException ,  " Unknown type description,  "  < <  constantStructure . at ( " type " ) . dump ( )   < <  "  for Variable ' "  < <  name  < <  " ' (scope:  "  < <  scopeDescription  < <  " ) " ) ;  
			
		
	
		
			
				
					        }  
			
		
	
		
			
				
					         
			
		
	
		
			
				
					        void  JaniParser : : parseType ( ParsedType &  result ,  json  const &  typeStructure ,  std : : string  variableName ,  std : : string  const &  scopeDescription ,  std : : unordered_map < std : : string ,  std : : shared_ptr < storm : : jani : : Variable > > const &  globalVars ,  std : : unordered_map < std : : string ,  std : : shared_ptr < storm : : jani : : Constant > > const &  constants ,   std : : unordered_map < std : : string ,  std : : shared_ptr < storm : : jani : : Variable > > const &  localVars )  {  
			
		
	
		
			
				
					        void  JaniParser : : parseType ( ParsedType &  result ,  json  const &  typeStructure ,  std : : string  variableName ,  std : : string  const &  scopeDescription ,  VariablesMap const &  globalVars ,  ConstantsMap const &  constants ,   VariablesMap const &  localVars )  {  
			
		
	
		
			
				
					            if  ( typeStructure . is_string ( ) )  {  
			
		
	
		
			
				
					                if  ( typeStructure  = =  " real " )  {  
			
		
	
		
			
				
					                    result . basicType  =  ParsedType : : BasicType : : Real ;  
			
		
	
	
		
			
				
					
						
							
								 
						
						
							
								 
						
						
					 
				
				@ -679,7 +677,7 @@ namespace storm { 
			
		
	
		
			
				
					            }  
			
		
	
		
			
				
					        }  
			
		
	
		
			
				
					         
			
		
	
		
			
				
					        std : : shared_ptr < storm : : jani : : Variable >  JaniParser : : parseVariable ( json  const &  variableStructure ,  bool  requireInitialValues ,  std : : string  const &  scopeDescription ,  std : : unordered_map < std : : string ,  std : : shared_ptr < storm : : jani : : Variable > > const &  globalVars ,  std : : unordered_map < std : : string ,  std : : shared_ptr < storm : : jani : : Constant > > const &  constants ,   std : : unordered_map < std : : string ,  std : : shared_ptr < storm : : jani : : Variable > > const &  localVars ,  bool  prefWithScope )  {  
			
		
	
		
			
				
					        std : : shared_ptr < storm : : jani : : Variable >  JaniParser : : parseVariable ( json  const &  variableStructure ,  bool  requireInitialValues ,  std : : string  const &  scopeDescription ,  VariablesMap const &  globalVars ,  ConstantsMap const &  constants ,   VariablesMap const &  localVars ,  bool  prefWithScope )  {  
			
		
	
		
			
				
					            STORM_LOG_THROW ( variableStructure . count ( " name " )  = =  1 ,  storm : : exceptions : : InvalidJaniException ,  " Variable (scope:  "  +  scopeDescription  +  " ) must have a name " ) ;  
			
		
	
		
			
				
					            std : : string  pref  =  prefWithScope   ?  scopeDescription  +  VARIABLE_AUTOMATON_DELIMITER  :  " " ;  
			
		
	
		
			
				
					            std : : string  name  =  getString ( variableStructure . at ( " name " ) ,  " variable-name in  "  +  scopeDescription  +  " -scope " ) ;  
			
		
	
	
		
			
				
					
						
							
								 
						
						
							
								 
						
						
					 
				
				@ -801,12 +799,12 @@ namespace storm { 
			
		
	
		
			
				
					            STORM_LOG_THROW ( expected  = =  actual ,  storm : : exceptions : : InvalidJaniException ,  " Operator  "  < <  opstring   < <  "  expects  "  < <  expected  < <  "  arguments, but got  "  < <  actual  < <  "  in  "  < <  errorInfo  < <  " . " ) ;  
			
		
	
		
			
				
					        }  
			
		
	
		
			
				
					
 
			
		
	
		
			
				
					        std : : vector < storm : : expressions : : Expression >  JaniParser : : parseUnaryExpressionArguments ( json  const &  expressionDecl ,  std : : string  const &  opstring ,  std : : string  const &  scopeDescription ,  std : : unordered_map < std : : string ,  std : : shared_ptr < storm : : jani : : Variable > > const &  globalVars ,  std : : unordered_map < std : : string ,  std : : shared_ptr < storm : : jani : : Constant > > const &  constants ,   std : : unordered_map < std : : string ,  std : : shared_ptr < storm : : jani : : Variable > > const &  localVars ,  bool  returnNoneInitializedOnUnknownOperator ,  std : : unordered_map < std : : string ,  storm : : expressions : : Variable >  const &  auxiliaryVariables )  {  
			
		
	
		
			
				
					        std : : vector < storm : : expressions : : Expression >  JaniParser : : parseUnaryExpressionArguments ( json  const &  expressionDecl ,  std : : string  const &  opstring ,  std : : string  const &  scopeDescription ,  VariablesMap const &  globalVars ,  ConstantsMap const &  constants ,   VariablesMap const &  localVars ,  bool  returnNoneInitializedOnUnknownOperator ,  std : : unordered_map < std : : string ,  storm : : expressions : : Variable >  const &  auxiliaryVariables )  {  
			
		
	
		
			
				
					            storm : : expressions : : Expression  left  =  parseExpression ( expressionDecl . at ( " exp " ) ,  " Argument of operator  "  +  opstring  +  "  in  "  +  scopeDescription ,  globalVars ,  constants ,  localVars , returnNoneInitializedOnUnknownOperator ,  auxiliaryVariables ) ;  
			
		
	
		
			
				
					            return  { left } ;  
			
		
	
		
			
				
					        }  
			
		
	
		
			
				
					
 
			
		
	
		
			
				
					        std : : vector < storm : : expressions : : Expression >  JaniParser : : parseBinaryExpressionArguments ( json  const &  expressionDecl ,  std : : string  const &  opstring ,  std : : string  const &  scopeDescription ,  std : : unordered_map < std : : string ,  std : : shared_ptr < storm : : jani : : Variable > > const &  globalVars ,  std : : unordered_map < std : : string ,  std : : shared_ptr < storm : : jani : : Constant > > const &  constants ,   std : : unordered_map < std : : string ,  std : : shared_ptr < storm : : jani : : Variable > > const &  localVars ,  bool  returnNoneInitializedOnUnknownOperator ,  std : : unordered_map < std : : string ,  storm : : expressions : : Variable >  const &  auxiliaryVariables )  {  
			
		
	
		
			
				
					        std : : vector < storm : : expressions : : Expression >  JaniParser : : parseBinaryExpressionArguments ( json  const &  expressionDecl ,  std : : string  const &  opstring ,  std : : string  const &  scopeDescription ,  VariablesMap const &  globalVars ,  ConstantsMap const &  constants ,   VariablesMap const &  localVars ,  bool  returnNoneInitializedOnUnknownOperator ,  std : : unordered_map < std : : string ,  storm : : expressions : : Variable >  const &  auxiliaryVariables )  {  
			
		
	
		
			
				
					            storm : : expressions : : Expression  left  =  parseExpression ( expressionDecl . at ( " left " ) ,  " Left argument of operator  "  +  opstring  +  "  in  "  +  scopeDescription ,  globalVars ,  constants ,  localVars ,  returnNoneInitializedOnUnknownOperator ,  auxiliaryVariables ) ;  
			
		
	
		
			
				
					            storm : : expressions : : Expression  right  =  parseExpression ( expressionDecl . at ( " right " ) ,  " Right argument of operator  "  +  opstring  +  "  in  "  +  scopeDescription ,   globalVars ,  constants ,  localVars ,  returnNoneInitializedOnUnknownOperator ,  auxiliaryVariables ) ;  
			
		
	
		
			
				
					            return  { left ,  right } ;  
			
		
	
	
		
			
				
					
						
							
								 
						
						
							
								 
						
						
					 
				
				@ -839,7 +837,7 @@ namespace storm { 
			
		
	
		
			
				
					            STORM_LOG_THROW ( expr . getType ( ) . isArrayType ( ) ,  storm : : exceptions : : InvalidJaniException ,  " Operator  "  < <  opstring  < <  "  expects argument  "  +  std : : to_string ( argNr )  +  "  to be of type 'array' in  "  < <  errorInfo  < <  " . " ) ;  
			
		
	
		
			
				
					        }  
			
		
	
		
			
				
					
 
			
		
	
		
			
				
					        storm : : jani : : LValue  JaniParser : : parseLValue ( json  const &  lValueStructure ,  std : : string  const &  scopeDescription ,  std : : unordered_map < std : : string ,  std : : shared_ptr < storm : : jani : : Variable > > const &  globalVars ,  std : : unordered_map < std : : string ,  std : : shared_ptr < storm : : jani : : Constant > > const &  constants ,   std : : unordered_map < std : : string ,  std : : shared_ptr < storm : : jani : : Variable > > const &  localVars )  {  
			
		
	
		
			
				
					        storm : : jani : : LValue  JaniParser : : parseLValue ( json  const &  lValueStructure ,  std : : string  const &  scopeDescription ,  VariablesMap const &  globalVars ,  ConstantsMap const &  constants ,   VariablesMap const &  localVars )  {  
			
		
	
		
			
				
					            if  ( lValueStructure . is_string ( ) )  {  
			
		
	
		
			
				
					                std : : string  ident  =  getString ( lValueStructure ,  scopeDescription ) ;  
			
		
	
		
			
				
					                auto  localVar  =  localVars . find ( ident ) ;  
			
		
	
	
		
			
				
					
						
							
								 
						
						
							
								 
						
						
					 
				
				@ -867,7 +865,7 @@ namespace storm { 
			
		
	
		
			
				
					            }  
			
		
	
		
			
				
					        }  
			
		
	
		
			
				
					
 
			
		
	
		
			
				
					        storm : : expressions : : Variable  JaniParser : : getVariableOrConstantExpression ( std : : string  const &  ident ,  std : : string  const &  scopeDescription ,  std : : unordered_map < std : : string ,  std : : shared_ptr < storm : : jani : : Variable > > const &  globalVars ,  std : : unordered_map < std : : string ,  std : : shared_ptr < storm : : jani : : Constant > > const &  constants ,   std : : unordered_map < std : : string ,  std : : shared_ptr < storm : : jani : : Variable > > const &  localVars ,  std : : unordered_map < std : : string ,  storm : : expressions : : Variable >  const &  auxiliaryVariables )  {  
			
		
	
		
			
				
					        storm : : expressions : : Variable  JaniParser : : getVariableOrConstantExpression ( std : : string  const &  ident ,  std : : string  const &  scopeDescription ,  VariablesMap const &  globalVars ,  ConstantsMap const &  constants ,   VariablesMap const &  localVars ,  std : : unordered_map < std : : string ,  storm : : expressions : : Variable >  const &  auxiliaryVariables )  {  
			
		
	
		
			
				
					            {  
			
		
	
		
			
				
					                auto  it  =  auxiliaryVariables . find ( ident ) ;  
			
		
	
		
			
				
					                if  ( it  ! =  auxiliaryVariables . end ( ) )  {  
			
		
	
	
		
			
				
					
						
							
								 
						
						
							
								 
						
						
					 
				
				@ -897,7 +895,7 @@ namespace storm { 
			
		
	
		
			
				
					            return  storm : : expressions : : Variable ( ) ;  
			
		
	
		
			
				
					        }  
			
		
	
		
			
				
					
 
			
		
	
		
			
				
					        storm : : expressions : : Expression  JaniParser : : parseExpression ( json  const &  expressionStructure ,  std : : string  const &  scopeDescription ,  std : : unordered_map < std : : string ,  std : : shared_ptr < storm : : jani : : Variable > > const &  globalVars ,  std : : unordered_map < std : : string ,  std : : shared_ptr < storm : : jani : : Constant > > const &  constants ,   std : : unordered_map < std : : string ,  std : : shared_ptr < storm : : jani : : Variable > > const &  localVars ,  bool  returnNoneInitializedOnUnknownOperator ,  std : : unordered_map < std : : string ,  storm : : expressions : : Variable >  const &  auxiliaryVariables )  {  
			
		
	
		
			
				
					        storm : : expressions : : Expression  JaniParser : : parseExpression ( json  const &  expressionStructure ,  std : : string  const &  scopeDescription ,  VariablesMap const &  globalVars ,  ConstantsMap const &  constants ,   VariablesMap const &  localVars ,  bool  returnNoneInitializedOnUnknownOperator ,  std : : unordered_map < std : : string ,  storm : : expressions : : Variable >  const &  auxiliaryVariables )  {  
			
		
	
		
			
				
					            if ( expressionStructure . is_boolean ( ) )  {  
			
		
	
		
			
				
					                if ( expressionStructure . get < bool > ( ) )  {  
			
		
	
		
			
				
					                    return  expressionManager - > boolean ( true ) ;  
			
		
	
	
		
			
				
					
						
							
								 
						
						
							
								 
						
						
					 
				
				@ -1183,25 +1181,23 @@ namespace storm { 
			
		
	
		
			
				
					            }  
			
		
	
		
			
				
					        }  
			
		
	
		
			
				
					
 
			
		
	
		
			
				
					        storm : : jani : : Automaton  JaniParser : : parseAutomaton ( json  const  & automatonStructure ,  storm : : jani : : Model  const &  parentModel ,  std : : unordered_map < std : : string ,  std : : shared_ptr < storm : : jani : : Variable > > const &  globalVars ,  std : : unordered_map < std : : string ,  std : : shared_ptr < storm : : jani : : Constant > > const &  constants  )  {  
			
		
	
		
			
				
					        storm : : jani : : Automaton  JaniParser : : parseAutomaton ( json  const  & automatonStructure ,  storm : : jani : : Model  const &  parentModel ,  VariablesMap const &  globalVars ,  ConstantsMap const &  constants  )  {  
			
		
	
		
			
				
					            STORM_LOG_THROW ( automatonStructure . count ( " name " )  = =  1 ,  storm : : exceptions : : InvalidJaniException ,  " Each automaton must have a name " ) ;  
			
		
	
		
			
				
					            std : : string  name  =  getString ( automatonStructure . at ( " name " ) ,  "  the name field for automaton " ) ;  
			
		
	
		
			
				
					            storm : : jani : : Automaton  automaton ( name ,  expressionManager - > declareIntegerVariable ( " _loc_ "  +  name ) ) ;  
			
		
	
		
			
				
					
 
			
		
	
		
			
				
					            uint64_t  varDeclCount  =  automatonStructure . count ( " variables " ) ;  
			
		
	
		
			
				
					            STORM_LOG_THROW ( varDeclCount  <  2 ,  storm : : exceptions : : InvalidJaniException ,  " Automaton ' "  < <  name  < <  " ' has more than one list of variables " ) ;  
			
		
	
		
			
				
					            std : : unordered_map < std : : string ,  std : : shared_ptr < storm : : jani : : Variable > > localVars ;  
			
		
	
		
			
				
					            VariablesMap localVars ;  
			
		
	
		
			
				
					            if ( varDeclCount  >  0 )  {  
			
		
	
		
			
				
					                bool  requireInitialValues  =  automatonStructure . count ( " restrict-initial " )  = =  0 ;  
			
		
	
		
			
				
					                for ( auto  const &  varStructure  :  automatonStructure . at ( " variables " ) )  {  
			
		
	
		
			
				
					                    std : : shared_ptr < storm : : jani : : Variable >  var  =  parseVariable ( varStructure ,  requireInitialValues ,  name ,  globalVars ,  constants ,  localVars ,  true ) ;  
			
		
	
		
			
				
					                    assert ( localVars . count ( var - > getName ( ) )  = =  0 ) ;  
			
		
	
		
			
				
					                    automaton . addVariable ( * var ) ;  
			
		
	
		
			
				
					                    localVars . emplace ( var - > getName ( ) ,  var ) ;  
			
		
	
		
			
				
					                    localVars . emplace ( var - > getName ( ) ,  & automaton . addVariable ( * var ) ) ;  
			
		
	
		
			
				
					                }  
			
		
	
		
			
				
					            }  
			
		
	
		
			
				
					
 
			
		
	
		
			
				
					
 
			
		
	
		
			
				
					            STORM_LOG_THROW ( automatonStructure . count ( " locations " )  >  0 ,  storm : : exceptions : : InvalidJaniException ,  " Automaton ' "  < <  name  < <  " ' does not have locations. " ) ;  
			
		
	
		
			
				
					            std : : unordered_map < std : : string ,  uint64_t >  locIds ;  
			
		
	
		
			
				
					            for ( auto  const &  locEntry  :  automatonStructure . at ( " locations " ) )  {