@ -14,313 +14,317 @@ namespace storm {
bool Formula : : isPathFormula ( ) const {
return false ;
}
bool Formula : : isStateFormula ( ) const {
return false ;
}
bool Formula : : isMultiObjectiveFormula ( ) const {
return false ;
}
bool Formula : : isQuantileFormula ( ) const {
return false ;
}
bool Formula : : isBinaryStateFormula ( ) const {
return false ;
}
bool Formula : : isUnaryStateFormula ( ) const {
return false ;
}
bool Formula : : isBinaryBooleanStateFormula ( ) const {
return false ;
}
bool Formula : : isUnaryBooleanStateFormula ( ) const {
return false ;
}
bool Formula : : isBooleanLiteralFormula ( ) const {
return false ;
}
bool Formula : : isTrueFormula ( ) const {
return false ;
}
bool Formula : : isFalseFormula ( ) const {
return false ;
}
bool Formula : : isAtomicExpressionFormula ( ) const {
return false ;
}
bool Formula : : isAtomicLabelFormula ( ) const {
return false ;
}
bool Formula : : isUntilFormula ( ) const {
return false ;
}
bool Formula : : isBoundedUntilFormula ( ) const {
return false ;
}
bool Formula : : isEventuallyFormula ( ) const {
return false ;
}
bool Formula : : isReachabilityProbabilityFormula ( ) const {
return false ;
}
bool Formula : : isGloballyFormula ( ) const {
return false ;
}
bool Formula : : isBinaryPathFormula ( ) const {
return false ;
}
bool Formula : : isUnaryPathFormula ( ) const {
return false ;
}
bool Formula : : isConditionalProbabilityFormula ( ) const {
return false ;
}
bool Formula : : isConditionalRewardFormula ( ) const {
return false ;
}
bool Formula : : isProbabilityPathFormula ( ) const {
return false ;
}
bool Formula : : isRewardPathFormula ( ) const {
return false ;
}
bool Formula : : isTimePathFormula ( ) const {
return false ;
}
bool Formula : : isNextFormula ( ) const {
return false ;
}
bool Formula : : isLongRunAverageOperatorFormula ( ) const {
return false ;
}
bool Formula : : isTimeOperatorFormula ( ) const {
return false ;
}
bool Formula : : isCumulativeRewardFormula ( ) const {
return false ;
}
bool Formula : : isInstantaneousRewardFormula ( ) const {
return false ;
}
bool Formula : : isReachabilityRewardFormula ( ) const {
return false ;
}
bool Formula : : isLongRunAverageRewardFormula ( ) const {
return false ;
}
bool Formula : : isTotalRewardFormula ( ) const {
return false ;
}
bool Formula : : isReachabilityTimeFormula ( ) const {
return false ;
}
bool Formula : : isGameFormula ( ) const {
return false ;
}
bool Formula : : isProbabilityOperatorFormula ( ) const {
return false ;
}
bool Formula : : isRewardOperatorFormula ( ) const {
return false ;
}
bool Formula : : isOperatorFormula ( ) const {
return false ;
}
bool Formula : : hasQualitativeResult ( ) const {
return true ;
}
bool Formula : : hasQuantitativeResult ( ) const {
return false ;
}
bool Formula : : isInFragment ( FragmentSpecification const & fragment ) const {
FragmentChecker checker ;
return checker . conformsToSpecification ( * this , fragment ) ;
}
FormulaInformation Formula : : info ( ) const {
FormulaInformationVisitor visitor ;
return visitor . getInformation ( * this ) ;
}
std : : shared_ptr < Formula const > Formula : : getTrueFormula ( ) {
return std : : shared_ptr < Formula const > ( new BooleanLiteralFormula ( true ) ) ;
}
bool Formula : : isInitialFormula ( ) const {
return this - > isAtomicLabelFormula ( ) & & this - > asAtomicLabelFormula ( ) . getLabel ( ) = = " init " ;
}
PathFormula & Formula : : asPathFormula ( ) {
return dynamic_cast < PathFormula & > ( * this ) ;
}
PathFormula const & Formula : : asPathFormula ( ) const {
return dynamic_cast < PathFormula const & > ( * this ) ;
}
StateFormula & Formula : : asStateFormula ( ) {
return dynamic_cast < StateFormula & > ( * this ) ;
}
StateFormula const & Formula : : asStateFormula ( ) const {
return dynamic_cast < StateFormula const & > ( * this ) ;
}
MultiObjectiveFormula & Formula : : asMultiObjectiveFormula ( ) {
return dynamic_cast < MultiObjectiveFormula & > ( * this ) ;
}
MultiObjectiveFormula const & Formula : : asMultiObjectiveFormula ( ) const {
return dynamic_cast < MultiObjectiveFormula const & > ( * this ) ;
}
QuantileFormula & Formula : : asQuantileFormula ( ) {
return dynamic_cast < QuantileFormula & > ( * this ) ;
}
QuantileFormula const & Formula : : asQuantileFormula ( ) const {
return dynamic_cast < QuantileFormula const & > ( * this ) ;
}
BinaryStateFormula & Formula : : asBinaryStateFormula ( ) {
return dynamic_cast < BinaryStateFormula & > ( * this ) ;
}
BinaryStateFormula const & Formula : : asBinaryStateFormula ( ) const {
return dynamic_cast < BinaryStateFormula const & > ( * this ) ;
}
UnaryStateFormula & Formula : : asUnaryStateFormula ( ) {
return dynamic_cast < UnaryStateFormula & > ( * this ) ;
}
UnaryStateFormula const & Formula : : asUnaryStateFormula ( ) const {
return dynamic_cast < UnaryStateFormula const & > ( * this ) ;
}
ConditionalFormula & Formula : : asConditionalFormula ( ) {
return dynamic_cast < ConditionalFormula & > ( * this ) ;
}
ConditionalFormula const & Formula : : asConditionalFormula ( ) const {
return dynamic_cast < ConditionalFormula const & > ( * this ) ;
}
BinaryBooleanStateFormula & Formula : : asBinaryBooleanStateFormula ( ) {
return dynamic_cast < BinaryBooleanStateFormula & > ( * this ) ;
}
BinaryBooleanStateFormula const & Formula : : asBinaryBooleanStateFormula ( ) const {
return dynamic_cast < BinaryBooleanStateFormula const & > ( * this ) ;
}
UnaryBooleanStateFormula & Formula : : asUnaryBooleanStateFormula ( ) {
return dynamic_cast < UnaryBooleanStateFormula & > ( * this ) ;
}
UnaryBooleanStateFormula const & Formula : : asUnaryBooleanStateFormula ( ) const {
return dynamic_cast < UnaryBooleanStateFormula const & > ( * this ) ;
}
BooleanLiteralFormula & Formula : : asBooleanLiteralFormula ( ) {
return dynamic_cast < BooleanLiteralFormula & > ( * this ) ;
}
BooleanLiteralFormula const & Formula : : asBooleanLiteralFormula ( ) const {
return dynamic_cast < BooleanLiteralFormula const & > ( * this ) ;
}
AtomicExpressionFormula & Formula : : asAtomicExpressionFormula ( ) {
return dynamic_cast < AtomicExpressionFormula & > ( * this ) ;
}
AtomicExpressionFormula const & Formula : : asAtomicExpressionFormula ( ) const {
return dynamic_cast < AtomicExpressionFormula const & > ( * this ) ;
}
AtomicLabelFormula & Formula : : asAtomicLabelFormula ( ) {
return dynamic_cast < AtomicLabelFormula & > ( * this ) ;
}
AtomicLabelFormula const & Formula : : asAtomicLabelFormula ( ) const {
return dynamic_cast < AtomicLabelFormula const & > ( * this ) ;
}
UntilFormula & Formula : : asUntilFormula ( ) {
return dynamic_cast < UntilFormula & > ( * this ) ;
}
UntilFormula const & Formula : : asUntilFormula ( ) const {
return dynamic_cast < UntilFormula const & > ( * this ) ;
}
BoundedUntilFormula & Formula : : asBoundedUntilFormula ( ) {
return dynamic_cast < BoundedUntilFormula & > ( * this ) ;
}
BoundedUntilFormula const & Formula : : asBoundedUntilFormula ( ) const {
return dynamic_cast < BoundedUntilFormula const & > ( * this ) ;
}
EventuallyFormula & Formula : : asEventuallyFormula ( ) {
return dynamic_cast < EventuallyFormula & > ( * this ) ;
}
EventuallyFormula const & Formula : : asEventuallyFormula ( ) const {
return dynamic_cast < EventuallyFormula const & > ( * this ) ;
}
EventuallyFormula & Formula : : asReachabilityRewardFormula ( ) {
return dynamic_cast < EventuallyFormula & > ( * this ) ;
}
EventuallyFormula const & Formula : : asReachabilityRewardFormula ( ) const {
return dynamic_cast < EventuallyFormula const & > ( * this ) ;
}
EventuallyFormula & Formula : : asReachabilityProbabilityFormula ( ) {
return dynamic_cast < EventuallyFormula & > ( * this ) ;
}
EventuallyFormula const & Formula : : asReachabilityProbabilityFormula ( ) const {
return dynamic_cast < EventuallyFormula const & > ( * this ) ;
}
EventuallyFormula & Formula : : asReachabilityTimeFormula ( ) {
return dynamic_cast < EventuallyFormula & > ( * this ) ;
}
@ -328,160 +332,160 @@ namespace storm {
EventuallyFormula const & Formula : : asReachabilityTimeFormula ( ) const {
return dynamic_cast < EventuallyFormula const & > ( * this ) ;
}
GloballyFormula & Formula : : asGloballyFormula ( ) {
return dynamic_cast < GloballyFormula & > ( * this ) ;
}
GloballyFormula const & Formula : : asGloballyFormula ( ) const {
return dynamic_cast < GloballyFormula const & > ( * this ) ;
}
BinaryPathFormula & Formula : : asBinaryPathFormula ( ) {
return dynamic_cast < BinaryPathFormula & > ( * this ) ;
}
BinaryPathFormula const & Formula : : asBinaryPathFormula ( ) const {
return dynamic_cast < BinaryPathFormula const & > ( * this ) ;
}
UnaryPathFormula & Formula : : asUnaryPathFormula ( ) {
return dynamic_cast < UnaryPathFormula & > ( * this ) ;
}
UnaryPathFormula const & Formula : : asUnaryPathFormula ( ) const {
return dynamic_cast < UnaryPathFormula const & > ( * this ) ;
}
NextFormula & Formula : : asNextFormula ( ) {
return dynamic_cast < NextFormula & > ( * this ) ;
}
NextFormula const & Formula : : asNextFormula ( ) const {
return dynamic_cast < NextFormula const & > ( * this ) ;
}
LongRunAverageOperatorFormula & Formula : : asLongRunAverageOperatorFormula ( ) {
return dynamic_cast < LongRunAverageOperatorFormula & > ( * this ) ;
}
LongRunAverageOperatorFormula const & Formula : : asLongRunAverageOperatorFormula ( ) const {
return dynamic_cast < LongRunAverageOperatorFormula const & > ( * this ) ;
}
TimeOperatorFormula & Formula : : asTimeOperatorFormula ( ) {
return dynamic_cast < TimeOperatorFormula & > ( * this ) ;
}
TimeOperatorFormula const & Formula : : asTimeOperatorFormula ( ) const {
return dynamic_cast < TimeOperatorFormula const & > ( * this ) ;
}
CumulativeRewardFormula & Formula : : asCumulativeRewardFormula ( ) {
return dynamic_cast < CumulativeRewardFormula & > ( * this ) ;
}
CumulativeRewardFormula const & Formula : : asCumulativeRewardFormula ( ) const {
return dynamic_cast < CumulativeRewardFormula const & > ( * this ) ;
}
TotalRewardFormula & Formula : : asTotalRewardFormula ( ) {
return dynamic_cast < TotalRewardFormula & > ( * this ) ;
}
TotalRewardFormula const & Formula : : asTotalRewardFormula ( ) const {
return dynamic_cast < TotalRewardFormula const & > ( * this ) ;
}
InstantaneousRewardFormula & Formula : : asInstantaneousRewardFormula ( ) {
return dynamic_cast < InstantaneousRewardFormula & > ( * this ) ;
}
InstantaneousRewardFormula const & Formula : : asInstantaneousRewardFormula ( ) const {
return dynamic_cast < InstantaneousRewardFormula const & > ( * this ) ;
}
LongRunAverageRewardFormula & Formula : : asLongRunAverageRewardFormula ( ) {
return dynamic_cast < LongRunAverageRewardFormula & > ( * this ) ;
}
LongRunAverageRewardFormula const & Formula : : asLongRunAverageRewardFormula ( ) const {
return dynamic_cast < LongRunAverageRewardFormula const & > ( * this ) ;
}
ProbabilityOperatorFormula & Formula : : asProbabilityOperatorFormula ( ) {
return dynamic_cast < ProbabilityOperatorFormula & > ( * this ) ;
}
ProbabilityOperatorFormula const & Formula : : asProbabilityOperatorFormula ( ) const {
return dynamic_cast < ProbabilityOperatorFormula const & > ( * this ) ;
}
RewardOperatorFormula & Formula : : asRewardOperatorFormula ( ) {
return dynamic_cast < RewardOperatorFormula & > ( * this ) ;
}
RewardOperatorFormula const & Formula : : asRewardOperatorFormula ( ) const {
return dynamic_cast < RewardOperatorFormula const & > ( * this ) ;
}
OperatorFormula & Formula : : asOperatorFormula ( ) {
return dynamic_cast < OperatorFormula & > ( * this ) ;
}
OperatorFormula const & Formula : : asOperatorFormula ( ) const {
return dynamic_cast < OperatorFormula const & > ( * this ) ;
}
std : : vector < std : : shared_ptr < AtomicExpressionFormula const > > Formula : : getAtomicExpressionFormulas ( ) const {
std : : vector < std : : shared_ptr < AtomicExpressionFormula const > > result ;
this - > gatherAtomicExpressionFormulas ( result ) ;
return result ;
}
std : : vector < std : : shared_ptr < AtomicLabelFormula const > > Formula : : getAtomicLabelFormulas ( ) const {
std : : vector < std : : shared_ptr < AtomicLabelFormula const > > result ;
this - > gatherAtomicLabelFormulas ( result ) ;
return result ;
}
std : : set < storm : : expressions : : Variable > Formula : : getUsedVariables ( ) const {
std : : set < storm : : expressions : : Variable > usedVariables ;
this - > gatherUsedVariables ( usedVariables ) ;
return usedVariables ;
}
std : : set < std : : string > Formula : : getReferencedRewardModels ( ) const {
std : : set < std : : string > referencedRewardModels ;
this - > gatherReferencedRewardModels ( referencedRewardModels ) ;
return referencedRewardModels ;
}
std : : shared_ptr < Formula > Formula : : substitute ( std : : map < storm : : expressions : : Variable , storm : : expressions : : Expression > const & substitution ) const {
storm : : expressions : : JaniExpressionSubstitutionVisitor < std : : map < storm : : expressions : : Variable , storm : : expressions : : Expression > > v ( substitution ) ;
return substitute ( [ & v ] ( storm : : expressions : : Expression const & exp ) { return v . substitute ( exp ) ; } ) ;
}
std : : shared_ptr < Formula > Formula : : substitute ( std : : function < storm : : expressions : : Expression ( storm : : expressions : : Expression const & ) > const & expressionSubstitution ) const {
ExpressionSubstitutionVisitor visitor ;
return visitor . substitute ( * this , expressionSubstitution ) ;
}
std : : shared_ptr < Formula > Formula : : substitute ( std : : map < std : : string , storm : : expressions : : Expression > const & labelSubstitution ) const {
LabelSubstitutionVisitor visitor ( labelSubstitution ) ;
return visitor . substitute ( * this ) ;
}
std : : shared_ptr < Formula > Formula : : substitute ( std : : map < std : : string , std : : string > const & labelSubstitution ) const {
LabelSubstitutionVisitor visitor ( labelSubstitution ) ;
return visitor . substitute ( * this ) ;
}
std : : shared_ptr < Formula > Formula : : substituteRewardModelNames ( std : : map < std : : string , std : : string > const & rewardModelNameSubstitution ) const {
RewardModelNameSubstitutionVisitor visitor ( rewardModelNameSubstitution ) ;
return visitor . substitute ( * this ) ;
}
storm : : expressions : : Expression Formula : : toExpression ( storm : : expressions : : ExpressionManager const & manager , std : : map < std : : string , storm : : expressions : : Expression > const & labelToExpressionMapping ) const {
ToExpressionVisitor visitor ;
if ( labelToExpressionMapping . empty ( ) ) {
@ -490,37 +494,37 @@ namespace storm {
return visitor . toExpression ( * this - > substitute ( labelToExpressionMapping ) , manager ) ;
}
}
std : : shared_ptr < Formula const > Formula : : asSharedPointer ( ) {
return this - > shared_from_this ( ) ;
}
std : : shared_ptr < Formula const > Formula : : asSharedPointer ( ) const {
return this - > shared_from_this ( ) ;
}
void Formula : : gatherAtomicExpressionFormulas ( std : : vector < std : : shared_ptr < AtomicExpressionFormula const > > & ) const {
return ;
}
void Formula : : gatherAtomicLabelFormulas ( std : : vector < std : : shared_ptr < AtomicLabelFormula const > > & ) const {
return ;
}
void Formula : : gatherReferencedRewardModels ( std : : set < std : : string > & ) const {
return ;
}
void Formula : : gatherUsedVariables ( std : : set < storm : : expressions : : Variable > & usedVariables ) const {
return ;
}
std : : string Formula : : toString ( ) const {
std : : stringstream str2 ;
writeToStream ( str2 ) ;
return str2 . str ( ) ;
}
std : : ostream & operator < < ( std : : ostream & out , Formula const & formula ) {
return formula . writeToStream ( out ) ;
}