| 
					
					
						
							
						
					
					
				 | 
				@ -93,105 +93,110 @@ namespace storm { | 
			
		
		
	
		
			
				 | 
				 | 
				
 | 
				 | 
				 | 
				
 | 
			
		
		
	
		
			
				 | 
				 | 
				            bool areNestedOperatorsAllowed() const; | 
				 | 
				 | 
				            bool areNestedOperatorsAllowed() const; | 
			
		
		
	
		
			
				 | 
				 | 
				            FragmentSpecification& setNestedOperatorsAllowed(bool newValue); | 
				 | 
				 | 
				            FragmentSpecification& setNestedOperatorsAllowed(bool newValue); | 
			
		
		
	
		
			
				 | 
				 | 
				             | 
				 | 
				 | 
				 | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				
 | 
			
		
		
	
		
			
				 | 
				 | 
				            bool areNestedPathFormulasAllowed() const; | 
				 | 
				 | 
				            bool areNestedPathFormulasAllowed() const; | 
			
		
		
	
		
			
				 | 
				 | 
				            FragmentSpecification& setNestedPathFormulasAllowed(bool newValue); | 
				 | 
				 | 
				            FragmentSpecification& setNestedPathFormulasAllowed(bool newValue); | 
			
		
		
	
		
			
				 | 
				 | 
				             | 
				 | 
				 | 
				 | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				
 | 
			
		
		
	
		
			
				 | 
				 | 
				            bool areNestedMultiObjectiveFormulasAllowed() const; | 
				 | 
				 | 
				            bool areNestedMultiObjectiveFormulasAllowed() const; | 
			
		
		
	
		
			
				 | 
				 | 
				            FragmentSpecification& setNestedMultiObjectiveFormulasAllowed(bool newValue); | 
				 | 
				 | 
				            FragmentSpecification& setNestedMultiObjectiveFormulasAllowed(bool newValue); | 
			
		
		
	
		
			
				 | 
				 | 
				             | 
				 | 
				 | 
				 | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				
 | 
			
		
		
	
		
			
				 | 
				 | 
				            bool areNestedOperatorsInsideMultiObjectiveFormulasAllowed() const; | 
				 | 
				 | 
				            bool areNestedOperatorsInsideMultiObjectiveFormulasAllowed() const; | 
			
		
		
	
		
			
				 | 
				 | 
				            FragmentSpecification& setNestedOperatorsInsideMultiObjectiveFormulasAllowed(bool newValue); | 
				 | 
				 | 
				            FragmentSpecification& setNestedOperatorsInsideMultiObjectiveFormulasAllowed(bool newValue); | 
			
		
		
	
		
			
				 | 
				 | 
				             | 
				 | 
				 | 
				 | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				
 | 
			
		
		
	
		
			
				 | 
				 | 
				            bool areOnlyEventuallyFormuluasInConditionalFormulasAllowed() const; | 
				 | 
				 | 
				            bool areOnlyEventuallyFormuluasInConditionalFormulasAllowed() const; | 
			
		
		
	
		
			
				 | 
				 | 
				            FragmentSpecification& setOnlyEventuallyFormuluasInConditionalFormulasAllowed(bool newValue); | 
				 | 
				 | 
				            FragmentSpecification& setOnlyEventuallyFormuluasInConditionalFormulasAllowed(bool newValue); | 
			
		
		
	
		
			
				 | 
				 | 
				
 | 
				 | 
				 | 
				
 | 
			
		
		
	
		
			
				 | 
				 | 
				            bool areStepBoundedUntilFormulasAllowed() const; | 
				 | 
				 | 
				            bool areStepBoundedUntilFormulasAllowed() const; | 
			
		
		
	
		
			
				 | 
				 | 
				            FragmentSpecification& setStepBoundedUntilFormulasAllowed(bool newValue); | 
				 | 
				 | 
				            FragmentSpecification& setStepBoundedUntilFormulasAllowed(bool newValue); | 
			
		
		
	
		
			
				 | 
				 | 
				             | 
				 | 
				 | 
				 | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				
 | 
			
		
		
	
		
			
				 | 
				 | 
				            bool areTimeBoundedUntilFormulasAllowed() const; | 
				 | 
				 | 
				            bool areTimeBoundedUntilFormulasAllowed() const; | 
			
		
		
	
		
			
				 | 
				 | 
				            FragmentSpecification& setTimeBoundedUntilFormulasAllowed(bool newValue); | 
				 | 
				 | 
				            FragmentSpecification& setTimeBoundedUntilFormulasAllowed(bool newValue); | 
			
		
		
	
		
			
				 | 
				 | 
				
 | 
				 | 
				 | 
				
 | 
			
		
		
	
		
			
				 | 
				 | 
				            bool areRewardBoundedUntilFormulasAllowed() const; | 
				 | 
				 | 
				            bool areRewardBoundedUntilFormulasAllowed() const; | 
			
		
		
	
		
			
				 | 
				 | 
				            FragmentSpecification& setRewardBoundedUntilFormulasAllowed(bool newValue); | 
				 | 
				 | 
				            FragmentSpecification& setRewardBoundedUntilFormulasAllowed(bool newValue); | 
			
		
		
	
		
			
				 | 
				 | 
				             | 
				 | 
				 | 
				 | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				
 | 
			
		
		
	
		
			
				 | 
				 | 
				            bool areMultiDimensionalBoundedUntilFormulasAllowed() const; | 
				 | 
				 | 
				            bool areMultiDimensionalBoundedUntilFormulasAllowed() const; | 
			
		
		
	
		
			
				 | 
				 | 
				            FragmentSpecification& setMultiDimensionalBoundedUntilFormulasAllowed(bool newValue); | 
				 | 
				 | 
				            FragmentSpecification& setMultiDimensionalBoundedUntilFormulasAllowed(bool newValue); | 
			
		
		
	
		
			
				 | 
				 | 
				             | 
				 | 
				 | 
				 | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				
 | 
			
		
		
	
		
			
				 | 
				 | 
				            bool areStepBoundedCumulativeRewardFormulasAllowed() const; | 
				 | 
				 | 
				            bool areStepBoundedCumulativeRewardFormulasAllowed() const; | 
			
		
		
	
		
			
				 | 
				 | 
				            FragmentSpecification& setStepBoundedCumulativeRewardFormulasAllowed(bool newValue); | 
				 | 
				 | 
				            FragmentSpecification& setStepBoundedCumulativeRewardFormulasAllowed(bool newValue); | 
			
		
		
	
		
			
				 | 
				 | 
				             | 
				 | 
				 | 
				 | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				
 | 
			
		
		
	
		
			
				 | 
				 | 
				            bool areTimeBoundedCumulativeRewardFormulasAllowed() const; | 
				 | 
				 | 
				            bool areTimeBoundedCumulativeRewardFormulasAllowed() const; | 
			
		
		
	
		
			
				 | 
				 | 
				            FragmentSpecification& setTimeBoundedCumulativeRewardFormulasAllowed(bool newValue); | 
				 | 
				 | 
				            FragmentSpecification& setTimeBoundedCumulativeRewardFormulasAllowed(bool newValue); | 
			
		
		
	
		
			
				 | 
				 | 
				
 | 
				 | 
				 | 
				
 | 
			
		
		
	
		
			
				 | 
				 | 
				            bool areRewardBoundedCumulativeRewardFormulasAllowed() const; | 
				 | 
				 | 
				            bool areRewardBoundedCumulativeRewardFormulasAllowed() const; | 
			
		
		
	
		
			
				 | 
				 | 
				            FragmentSpecification& setRewardBoundedCumulativeRewardFormulasAllowed(bool newValue); | 
				 | 
				 | 
				            FragmentSpecification& setRewardBoundedCumulativeRewardFormulasAllowed(bool newValue); | 
			
		
		
	
		
			
				 | 
				 | 
				             | 
				 | 
				 | 
				 | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				
 | 
			
		
		
	
		
			
				 | 
				 | 
				            bool areMultiDimensionalCumulativeRewardFormulasAllowed() const; | 
				 | 
				 | 
				            bool areMultiDimensionalCumulativeRewardFormulasAllowed() const; | 
			
		
		
	
		
			
				 | 
				 | 
				            FragmentSpecification& setMultiDimensionalCumulativeRewardFormulasAllowed(bool newValue); | 
				 | 
				 | 
				            FragmentSpecification& setMultiDimensionalCumulativeRewardFormulasAllowed(bool newValue); | 
			
		
		
	
		
			
				 | 
				 | 
				             | 
				 | 
				 | 
				 | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				
 | 
			
		
		
	
		
			
				 | 
				 | 
				            bool isVarianceMeasureTypeAllowed() const; | 
				 | 
				 | 
				            bool isVarianceMeasureTypeAllowed() const; | 
			
		
		
	
		
			
				 | 
				 | 
				            FragmentSpecification& setVarianceMeasureTypeAllowed(bool newValue); | 
				 | 
				 | 
				            FragmentSpecification& setVarianceMeasureTypeAllowed(bool newValue); | 
			
		
		
	
		
			
				 | 
				 | 
				             | 
				 | 
				 | 
				 | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				
 | 
			
		
		
	
		
			
				 | 
				 | 
				            bool areQuantitativeOperatorResultsAllowed() const; | 
				 | 
				 | 
				            bool areQuantitativeOperatorResultsAllowed() const; | 
			
		
		
	
		
			
				 | 
				 | 
				            FragmentSpecification& setQuantitativeOperatorResultsAllowed(bool newValue); | 
				 | 
				 | 
				            FragmentSpecification& setQuantitativeOperatorResultsAllowed(bool newValue); | 
			
		
		
	
		
			
				 | 
				 | 
				
 | 
				 | 
				 | 
				
 | 
			
		
		
	
		
			
				 | 
				 | 
				            bool areQualitativeOperatorResultsAllowed() const; | 
				 | 
				 | 
				            bool areQualitativeOperatorResultsAllowed() const; | 
			
		
		
	
		
			
				 | 
				 | 
				            FragmentSpecification& setQualitativeOperatorResultsAllowed(bool newValue); | 
				 | 
				 | 
				            FragmentSpecification& setQualitativeOperatorResultsAllowed(bool newValue); | 
			
		
		
	
		
			
				 | 
				 | 
				             | 
				 | 
				 | 
				 | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				
 | 
			
		
		
	
		
			
				 | 
				 | 
				            bool isOperatorAtTopLevelRequired() const; | 
				 | 
				 | 
				            bool isOperatorAtTopLevelRequired() const; | 
			
		
		
	
		
			
				 | 
				 | 
				            FragmentSpecification& setOperatorAtTopLevelRequired(bool newValue); | 
				 | 
				 | 
				            FragmentSpecification& setOperatorAtTopLevelRequired(bool newValue); | 
			
		
		
	
		
			
				 | 
				 | 
				             | 
				 | 
				 | 
				 | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				
 | 
			
		
		
	
		
			
				 | 
				 | 
				            bool isMultiObjectiveFormulaAtTopLevelRequired() const; | 
				 | 
				 | 
				            bool isMultiObjectiveFormulaAtTopLevelRequired() const; | 
			
		
		
	
		
			
				 | 
				 | 
				            FragmentSpecification& setMultiObjectiveFormulaAtTopLevelRequired(bool newValue); | 
				 | 
				 | 
				            FragmentSpecification& setMultiObjectiveFormulaAtTopLevelRequired(bool newValue); | 
			
		
		
	
		
			
				 | 
				 | 
				             | 
				 | 
				 | 
				 | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				
 | 
			
		
		
	
		
			
				 | 
				 | 
				            bool areOperatorsAtTopLevelOfMultiObjectiveFormulasRequired() const; | 
				 | 
				 | 
				            bool areOperatorsAtTopLevelOfMultiObjectiveFormulasRequired() const; | 
			
		
		
	
		
			
				 | 
				 | 
				            FragmentSpecification& setOperatorsAtTopLevelOfMultiObjectiveFormulasRequired(bool newValue); | 
				 | 
				 | 
				            FragmentSpecification& setOperatorsAtTopLevelOfMultiObjectiveFormulasRequired(bool newValue); | 
			
		
		
	
		
			
				 | 
				 | 
				             | 
				 | 
				 | 
				 | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				
 | 
			
		
		
	
		
			
				 | 
				 | 
				            bool isQuantileFormulaAtTopLevelRequired() const; | 
				 | 
				 | 
				            bool isQuantileFormulaAtTopLevelRequired() const; | 
			
		
		
	
		
			
				 | 
				 | 
				            FragmentSpecification& setQuantileFormulaAtTopLevelRequired(bool newValue); | 
				 | 
				 | 
				            FragmentSpecification& setQuantileFormulaAtTopLevelRequired(bool newValue); | 
			
		
		
	
		
			
				 | 
				 | 
				             | 
				 | 
				 | 
				 | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				
 | 
			
		
		
	
		
			
				 | 
				 | 
				            bool isRewardAccumulationAllowed() const; | 
				 | 
				 | 
				            bool isRewardAccumulationAllowed() const; | 
			
		
		
	
		
			
				 | 
				 | 
				            FragmentSpecification& setRewardAccumulationAllowed(bool newValue); | 
				 | 
				 | 
				            FragmentSpecification& setRewardAccumulationAllowed(bool newValue); | 
			
		
		
	
		
			
				 | 
				 | 
				
 | 
				 | 
				 | 
				
 | 
			
		
		
	
		
			
				 | 
				 | 
				             | 
				 | 
				 | 
				 | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				            bool areCoalitionOperatorsAllowed() const; | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				            FragmentSpecification& setCoalitionOperatorsAllowed(bool newValue); | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				
 | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				
 | 
			
		
		
	
		
			
				 | 
				 | 
				            FragmentSpecification& setOperatorsAllowed(bool newValue); | 
				 | 
				 | 
				            FragmentSpecification& setOperatorsAllowed(bool newValue); | 
			
		
		
	
		
			
				 | 
				 | 
				            FragmentSpecification& setTimeAllowed(bool newValue); | 
				 | 
				 | 
				            FragmentSpecification& setTimeAllowed(bool newValue); | 
			
		
		
	
		
			
				 | 
				 | 
				            FragmentSpecification& setLongRunAverageProbabilitiesAllowed(bool newValue); | 
				 | 
				 | 
				            FragmentSpecification& setLongRunAverageProbabilitiesAllowed(bool newValue); | 
			
		
		
	
		
			
				 | 
				 | 
				             | 
				 | 
				 | 
				 | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				
 | 
			
		
		
	
		
			
				 | 
				 | 
				        private: | 
				 | 
				 | 
				        private: | 
			
		
		
	
		
			
				 | 
				 | 
				            // Flags that indicate whether it is legal to see such a formula. | 
				 | 
				 | 
				            // Flags that indicate whether it is legal to see such a formula. | 
			
		
		
	
		
			
				 | 
				 | 
				            bool probabilityOperator; | 
				 | 
				 | 
				            bool probabilityOperator; | 
			
		
		
	
		
			
				 | 
				 | 
				            bool rewardOperator; | 
				 | 
				 | 
				            bool rewardOperator; | 
			
		
		
	
		
			
				 | 
				 | 
				            bool expectedTimeOperator; | 
				 | 
				 | 
				            bool expectedTimeOperator; | 
			
		
		
	
		
			
				 | 
				 | 
				            bool longRunAverageOperator; | 
				 | 
				 | 
				            bool longRunAverageOperator; | 
			
		
		
	
		
			
				 | 
				 | 
				             | 
				 | 
				 | 
				 | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				
 | 
			
		
		
	
		
			
				 | 
				 | 
				            bool multiObjectiveFormula; | 
				 | 
				 | 
				            bool multiObjectiveFormula; | 
			
		
		
	
		
			
				 | 
				 | 
				            bool quantileFormula; | 
				 | 
				 | 
				            bool quantileFormula; | 
			
		
		
	
		
			
				 | 
				 | 
				             | 
				 | 
				 | 
				 | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				
 | 
			
		
		
	
		
			
				 | 
				 | 
				            bool globallyFormula; | 
				 | 
				 | 
				            bool globallyFormula; | 
			
		
		
	
		
			
				 | 
				 | 
				            bool reachabilityProbabilityFormula; | 
				 | 
				 | 
				            bool reachabilityProbabilityFormula; | 
			
		
		
	
		
			
				 | 
				 | 
				            bool nextFormula; | 
				 | 
				 | 
				            bool nextFormula; | 
			
		
		
	
		
			
				 | 
				 | 
				            bool untilFormula; | 
				 | 
				 | 
				            bool untilFormula; | 
			
		
		
	
		
			
				 | 
				 | 
				            bool boundedUntilFormula; | 
				 | 
				 | 
				            bool boundedUntilFormula; | 
			
		
		
	
		
			
				 | 
				 | 
				             | 
				 | 
				 | 
				 | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				
 | 
			
		
		
	
		
			
				 | 
				 | 
				            bool atomicExpressionFormula; | 
				 | 
				 | 
				            bool atomicExpressionFormula; | 
			
		
		
	
		
			
				 | 
				 | 
				            bool atomicLabelFormula; | 
				 | 
				 | 
				            bool atomicLabelFormula; | 
			
		
		
	
		
			
				 | 
				 | 
				            bool booleanLiteralFormula; | 
				 | 
				 | 
				            bool booleanLiteralFormula; | 
			
		
		
	
		
			
				 | 
				 | 
				            bool unaryBooleanStateFormula; | 
				 | 
				 | 
				            bool unaryBooleanStateFormula; | 
			
		
		
	
		
			
				 | 
				 | 
				            bool binaryBooleanStateFormula; | 
				 | 
				 | 
				            bool binaryBooleanStateFormula; | 
			
		
		
	
		
			
				 | 
				 | 
				             | 
				 | 
				 | 
				 | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				
 | 
			
		
		
	
		
			
				 | 
				 | 
				            bool cumulativeRewardFormula; | 
				 | 
				 | 
				            bool cumulativeRewardFormula; | 
			
		
		
	
		
			
				 | 
				 | 
				            bool instantaneousRewardFormula; | 
				 | 
				 | 
				            bool instantaneousRewardFormula; | 
			
		
		
	
		
			
				 | 
				 | 
				            bool reachabilityRewardFormula; | 
				 | 
				 | 
				            bool reachabilityRewardFormula; | 
			
		
		
	
		
			
				 | 
				 | 
				            bool longRunAverageRewardFormula; | 
				 | 
				 | 
				            bool longRunAverageRewardFormula; | 
			
		
		
	
		
			
				 | 
				 | 
				            bool totalRewardFormula; | 
				 | 
				 | 
				            bool totalRewardFormula; | 
			
		
		
	
		
			
				 | 
				 | 
				             | 
				 | 
				 | 
				 | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				
 | 
			
		
		
	
		
			
				 | 
				 | 
				            bool conditionalProbabilityFormula; | 
				 | 
				 | 
				            bool conditionalProbabilityFormula; | 
			
		
		
	
		
			
				 | 
				 | 
				            bool conditionalRewardFormula; | 
				 | 
				 | 
				            bool conditionalRewardFormula; | 
			
		
		
	
		
			
				 | 
				 | 
				             | 
				 | 
				 | 
				 | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				
 | 
			
		
		
	
		
			
				 | 
				 | 
				            bool reachabilityTimeFormula; | 
				 | 
				 | 
				            bool reachabilityTimeFormula; | 
			
		
		
	
		
			
				 | 
				 | 
				             | 
				 | 
				 | 
				 | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				
 | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				            bool coalitionOperator; | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				
 | 
			
		
		
	
		
			
				 | 
				 | 
				            // Members that indicate certain restrictions. | 
				 | 
				 | 
				            // Members that indicate certain restrictions. | 
			
		
		
	
		
			
				 | 
				 | 
				            bool nestedOperators; | 
				 | 
				 | 
				            bool nestedOperators; | 
			
		
		
	
		
			
				 | 
				 | 
				            bool nestedPathFormulas; | 
				 | 
				 | 
				            bool nestedPathFormulas; | 
			
		
		
	
	
		
			
				| 
					
						
							
						
					
					
						
							
						
					
					
				 | 
				@ -228,7 +233,10 @@ namespace storm { | 
			
		
		
	
		
			
				 | 
				 | 
				
 | 
				 | 
				 | 
				
 | 
			
		
		
	
		
			
				 | 
				 | 
				        // Flat PCTL. | 
				 | 
				 | 
				        // Flat PCTL. | 
			
		
		
	
		
			
				 | 
				 | 
				        FragmentSpecification flatPctl(); | 
				 | 
				 | 
				        FragmentSpecification flatPctl(); | 
			
		
		
	
		
			
				 | 
				 | 
				         | 
				 | 
				 | 
				 | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				
 | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				        // rPATL for SMGs | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				        FragmentSpecification rpatl(); | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				
 | 
			
		
		
	
		
			
				 | 
				 | 
				        // PCTL + cumulative, instantaneous, reachability and long-run rewards. | 
				 | 
				 | 
				        // PCTL + cumulative, instantaneous, reachability and long-run rewards. | 
			
		
		
	
		
			
				 | 
				 | 
				        FragmentSpecification prctl(); | 
				 | 
				 | 
				        FragmentSpecification prctl(); | 
			
		
		
	
		
			
				 | 
				 | 
				         | 
				 | 
				 | 
				         | 
			
		
		
	
	
		
			
				| 
					
						
							
						
					
					
					
				 | 
				
  |