Browse Source

added rPATL to FragmentSpecifitcations

tempestpy_adaptions
Stefan Pranger 4 years ago
parent
commit
8dc46968cb
  1. 34
      src/storm/logic/FragmentSpecification.cpp
  2. 60
      src/storm/logic/FragmentSpecification.h

34
src/storm/logic/FragmentSpecification.cpp

@ -41,21 +41,30 @@ namespace storm {
pctl.setBoundedUntilFormulasAllowed(true); pctl.setBoundedUntilFormulasAllowed(true);
pctl.setStepBoundedUntilFormulasAllowed(true); pctl.setStepBoundedUntilFormulasAllowed(true);
pctl.setTimeBoundedUntilFormulasAllowed(true); pctl.setTimeBoundedUntilFormulasAllowed(true);
return pctl; return pctl;
} }
FragmentSpecification flatPctl() { FragmentSpecification flatPctl() {
FragmentSpecification flatPctl = pctl(); FragmentSpecification flatPctl = pctl();
flatPctl.setNestedOperatorsAllowed(false); flatPctl.setNestedOperatorsAllowed(false);
return flatPctl; return flatPctl;
} }
FragmentSpecification rpatl() {
FragmentSpecification rpatl = pctl();
// TODO disallow operator we currently do not support
rpatl.setCoalitionOperatorsAllowed(true);
return rpatl;
}
FragmentSpecification prctl() { FragmentSpecification prctl() {
FragmentSpecification prctl = pctl(); FragmentSpecification prctl = pctl();
prctl.setRewardOperatorsAllowed(true); prctl.setRewardOperatorsAllowed(true);
prctl.setCumulativeRewardFormulasAllowed(true); prctl.setCumulativeRewardFormulasAllowed(true);
prctl.setInstantaneousFormulasAllowed(true); prctl.setInstantaneousFormulasAllowed(true);
@ -614,12 +623,21 @@ namespace storm {
bool FragmentSpecification::isRewardAccumulationAllowed() const { bool FragmentSpecification::isRewardAccumulationAllowed() const {
return rewardAccumulation; return rewardAccumulation;
} }
FragmentSpecification& FragmentSpecification::setRewardAccumulationAllowed(bool newValue) { FragmentSpecification& FragmentSpecification::setRewardAccumulationAllowed(bool newValue) {
rewardAccumulation = newValue; rewardAccumulation = newValue;
return *this; return *this;
} }
bool FragmentSpecification::areCoalitionOperatorsAllowed() const {
return coalitionOperator;
}
FragmentSpecification& FragmentSpecification::setCoalitionOperatorsAllowed(bool newValue) {
coalitionOperator = newValue;
return *this;
}
} }
} }

60
src/storm/logic/FragmentSpecification.h

@ -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();

Loading…
Cancel
Save