31 changed files with 899 additions and 0 deletions
-
2CMakeLists.txt
-
13src/modelchecker/CheckResult.h
-
35src/modelchecker/SparseAllStatesQualitativeCheckResult.h
-
37src/modelchecker/SparseAllStatesQuantitativeCheckResult.h
-
14src/properties/logic/AtomicExpressionFormula.h
-
14src/properties/logic/AtomicLabelFormula.h
-
14src/properties/logic/BinaryBooleanStateFormula.h
-
14src/properties/logic/BinaryPathFormula.h
-
14src/properties/logic/BinaryStateFormula.h
-
14src/properties/logic/BooleanLiteralFormula.h
-
14src/properties/logic/BoundedUntilFormula.h
-
14src/properties/logic/ConditionalPathFormula.h
-
14src/properties/logic/CumulativeRewardFormula.h
-
14src/properties/logic/EventuallyFormula.h
-
297src/properties/logic/Formula.cpp
-
148src/properties/logic/Formula.h
-
31src/properties/logic/Formulas.h
-
14src/properties/logic/GloballyFormula.h
-
14src/properties/logic/InstantaneousRewardFormula.h
-
14src/properties/logic/NextFormula.h
-
14src/properties/logic/PathFormula.h
-
14src/properties/logic/PathRewardFormula.h
-
14src/properties/logic/ProbabilityOperatorFormula.h
-
14src/properties/logic/ReachabilityRewardFormula.h
-
14src/properties/logic/RewardOperatorFormula.h
-
14src/properties/logic/StateFormula.h
-
14src/properties/logic/SteadyStateFormula.h
-
14src/properties/logic/UnaryBooleanStateFormula.h
-
14src/properties/logic/UnaryPathFormula.h
-
14src/properties/logic/UnaryStateFormula.h
-
14src/properties/logic/UntilFormula.h
@ -0,0 +1,13 @@ |
|||||
|
#ifndef STORM_MODELCHECKER_CHECKRESULT_H_ |
||||
|
#define STORM_MODELCHECKER_CHECKRESULT_H_ |
||||
|
|
||||
|
namespace storm { |
||||
|
namespace modelchecker { |
||||
|
// The base class of all check results. |
||||
|
class CheckResult { |
||||
|
|
||||
|
}; |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
#endif /* STORM_MODELCHECKER_CHECKRESULT_H_ */ |
@ -0,0 +1,35 @@ |
|||||
|
#ifndef STORM_MODELCHECKER_SPARSEALLSTATESQUALITATIVECHECKRESULT_H_ |
||||
|
#define STORM_MODELCHECKER_SPARSEALLSTATESQUALITATIVECHECKRESULT_H_ |
||||
|
|
||||
|
#include "src/modelchecker/CheckResult.h" |
||||
|
#include "src/storage/BitVector.h" |
||||
|
|
||||
|
namespace storm { |
||||
|
namespace modelchecker { |
||||
|
template<typename ValueType> |
||||
|
class SparseAllStatesQualitativeCheckResult : public CheckResult { |
||||
|
public: |
||||
|
/*! |
||||
|
* Constructs a check result with the provided truth values. |
||||
|
* |
||||
|
* @param truthValues The truth values of the result. |
||||
|
*/ |
||||
|
SparseAllStatesQualitativeCheckResult(storm::storage::BitVector&& truthValues) : truthValues(std::move(truthValues)) { |
||||
|
// Intentionally left empty. |
||||
|
} |
||||
|
|
||||
|
SparseAllStatesQualitativeCheckResult(SparseAllStatesQualitativeCheckResult const& other) = default; |
||||
|
SparseAllStatesQualitativeCheckResult& operator=(SparseAllStatesQualitativeCheckResult const& other) = default; |
||||
|
#ifndef WINDOWS |
||||
|
SparseAllStatesQualitativeCheckResult(SparseAllStatesQualitativeCheckResult&& other) = default; |
||||
|
SparseAllStatesQualitativeCheckResult& operator=(SparseAllStatesQualitativeCheckResult&& other) = default; |
||||
|
#endif |
||||
|
|
||||
|
private: |
||||
|
// The values of the quantitative check result. |
||||
|
storm::storage::BitVector truthValues; |
||||
|
}; |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
#endif /* STORM_MODELCHECKER_SPARSEALLSTATESQUALITATIVECHECKRESULT_H_ */ |
@ -0,0 +1,37 @@ |
|||||
|
#ifndef STORM_MODELCHECKER_SPARSEALLSTATESQUANTITATIVECHECKRESULT_H_ |
||||
|
#define STORM_MODELCHECKER_SPARSEALLSTATESQUANTITATIVECHECKRESULT_H_ |
||||
|
|
||||
|
#include <vector> |
||||
|
|
||||
|
#include "src/modelchecker/CheckResult.h" |
||||
|
#include "src/utility/OsDetection.h" |
||||
|
|
||||
|
namespace storm { |
||||
|
namespace modelchecker { |
||||
|
template<typename ValueType> |
||||
|
class SparseAllStatesQuantitativeCheckResult : public CheckResult { |
||||
|
public: |
||||
|
/*! |
||||
|
* Constructs a check result with the provided values. |
||||
|
* |
||||
|
* @param values The values of the result. |
||||
|
*/ |
||||
|
SparseAllStatesQuantitativeCheckResult(std::vector<ValueType>&& values) : values(std::move(values)) { |
||||
|
// Intentionally left empty. |
||||
|
} |
||||
|
|
||||
|
SparseAllStatesQuantitativeCheckResult(SparseAllStatesQuantitativeCheckResult const& other) = default; |
||||
|
SparseAllStatesQuantitativeCheckResult& operator=(SparseAllStatesQuantitativeCheckResult const& other) = default; |
||||
|
#ifndef WINDOWS |
||||
|
SparseAllStatesQuantitativeCheckResult(SparseAllStatesQuantitativeCheckResult&& other) = default; |
||||
|
SparseAllStatesQuantitativeCheckResult& operator=(SparseAllStatesQuantitativeCheckResult&& other) = default; |
||||
|
#endif |
||||
|
|
||||
|
private: |
||||
|
// The values of the quantitative check result. |
||||
|
std::vector<ValueType> values; |
||||
|
}; |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
#endif /* STORM_MODELCHECKER_SPARSEALLSTATESQUANTITATIVECHECKRESULT_H_ */ |
@ -0,0 +1,14 @@ |
|||||
|
#ifndef STORM_LOGIC_ATOMICEXPRESSIONFORMULA_H_ |
||||
|
#define STORM_LOGIC_ATOMICEXPRESSIONFORMULA_H_ |
||||
|
|
||||
|
#include "src/properties/logic/StateFormula.h" |
||||
|
|
||||
|
namespace storm { |
||||
|
namespace logic { |
||||
|
class AtomicExpressionFormula : public StateFormula { |
||||
|
|
||||
|
}; |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
#endif /* STORM_LOGIC_ATOMICEXPRESSIONFORMULA_H_ */ |
@ -0,0 +1,14 @@ |
|||||
|
#ifndef STORM_LOGIC_ATOMICLABELFORMULA_H_ |
||||
|
#define STORM_LOGIC_ATOMICLABELFORMULA_H_ |
||||
|
|
||||
|
#include "src/properties/logic/StateFormula.h" |
||||
|
|
||||
|
namespace storm { |
||||
|
namespace logic { |
||||
|
class AtomicLabelFormula : public StateFormula { |
||||
|
|
||||
|
}; |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
#endif /* STORM_LOGIC_ATOMICLABELFORMULA_H_ */ |
@ -0,0 +1,14 @@ |
|||||
|
#ifndef STORM_LOGIC_BINARYBOOLEANSTATEFORMULA_H_ |
||||
|
#define STORM_LOGIC_BINARYBOOLEANSTATEFORMULA_H_ |
||||
|
|
||||
|
#include "src/properties/logic/BinaryStateFormula.h" |
||||
|
|
||||
|
namespace storm { |
||||
|
namespace logic { |
||||
|
class BinaryBooleanStateFormula : public BinaryStateFormula { |
||||
|
|
||||
|
}; |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
#endif /* STORM_LOGIC_BINARYBOOLEANSTATEFORMULA_H_ */ |
@ -0,0 +1,14 @@ |
|||||
|
#ifndef STORM_LOGIC_BINARYPATHFORMULA_H_ |
||||
|
#define STORM_LOGIC_BINARYPATHFORMULA_H_ |
||||
|
|
||||
|
#include "src/properties/logic/PathFormula.h" |
||||
|
|
||||
|
namespace storm { |
||||
|
namespace logic { |
||||
|
class BinaryPathFormula : public PathFormula { |
||||
|
|
||||
|
}; |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
#endif /* STORM_LOGIC_BINARYPATHFORMULA_H_ */ |
@ -0,0 +1,14 @@ |
|||||
|
#ifndef STORM_LOGIC_BINARYSTATEFORMULA_H_ |
||||
|
#define STORM_LOGIC_BINARYSTATEFORMULA_H_ |
||||
|
|
||||
|
#include "src/properties/logic/StateFormula.h" |
||||
|
|
||||
|
namespace storm { |
||||
|
namespace logic { |
||||
|
class BinaryStateFormula : public StateFormula { |
||||
|
|
||||
|
}; |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
#endif /* STORM_LOGIC_BINARYSTATEFORMULA_H_ */ |
@ -0,0 +1,14 @@ |
|||||
|
#ifndef STORM_LOGIC_BOOLEANLITERALFORMULA_H_ |
||||
|
#define STORM_LOGIC_BOOLEANLITERALFORMULA_H_ |
||||
|
|
||||
|
#include "src/properties/logic/StateFormula.h" |
||||
|
|
||||
|
namespace storm { |
||||
|
namespace logic { |
||||
|
class BooleanLiteralFormula : public StateFormula { |
||||
|
|
||||
|
}; |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
#endif /* STORM_LOGIC_BOOLEANLITERALFORMULA_H_ */ |
@ -0,0 +1,14 @@ |
|||||
|
#ifndef STORM_LOGIC_BOUNDEDUNTILFORMULA_H_ |
||||
|
#define STORM_LOGIC_BOUNDEDUNTILFORMULA_H_ |
||||
|
|
||||
|
#include "src/properties/logic/BinaryPathFormula.h" |
||||
|
|
||||
|
namespace storm { |
||||
|
namespace logic { |
||||
|
class BoundedUntilFormula : public BinaryPathFormula { |
||||
|
|
||||
|
}; |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
#endif /* STORM_LOGIC_BOUNDEDUNTILFORMULA_H_ */ |
@ -0,0 +1,14 @@ |
|||||
|
#ifndef STORM_LOGIC_CONDITIONALPATHFORMULA_H_ |
||||
|
#define STORM_LOGIC_CONDITIONALPATHFORMULA_H_ |
||||
|
|
||||
|
#include "src/properties/logic/BinaryPathFormula.h" |
||||
|
|
||||
|
namespace storm { |
||||
|
namespace logic { |
||||
|
class ConditionalPathFormula : public BinaryPathFormula { |
||||
|
|
||||
|
}; |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
#endif /* STORM_LOGIC_CONDITIONALPATHFORMULA_H_ */ |
@ -0,0 +1,14 @@ |
|||||
|
#ifndef STORM_LOGIC_CUMULATIVEREWARDFORMULA_H_ |
||||
|
#define STORM_LOGIC_CUMULATIVEREWARDFORMULA_H_ |
||||
|
|
||||
|
#include "src/properties/logic/PathRewardFormula.h" |
||||
|
|
||||
|
namespace storm { |
||||
|
namespace logic { |
||||
|
class CumulativeRewardFormula : public PathRewardFormula { |
||||
|
|
||||
|
}; |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
#endif /* STORM_LOGIC_CUMULATIVEREWARDFORMULA_H_ */ |
@ -0,0 +1,14 @@ |
|||||
|
#ifndef STORM_LOGIC_EVENTUALLYFORMULA_H_ |
||||
|
#define STORM_LOGIC_EVENTUALLYFORMULA_H_ |
||||
|
|
||||
|
#include "src/properties/logic/UnaryPathFormula.h" |
||||
|
|
||||
|
namespace storm { |
||||
|
namespace logic { |
||||
|
class EventuallyFormula : public UnaryPathFormula { |
||||
|
|
||||
|
}; |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
#endif /* STORM_LOGIC_EVENTUALLYFORMULA_H_ */ |
@ -0,0 +1,297 @@ |
|||||
|
#include "src/properties/logic/Formulas.h"
|
||||
|
|
||||
|
namespace storm { |
||||
|
namespace logic { |
||||
|
Formula::~Formula() { |
||||
|
// Intentionally left empty.
|
||||
|
} |
||||
|
|
||||
|
bool Formula::isPathFormula() const { |
||||
|
return false; |
||||
|
} |
||||
|
|
||||
|
bool Formula::isStateFormula() 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::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::isGloballyFormula() const { |
||||
|
return false; |
||||
|
} |
||||
|
|
||||
|
bool Formula::isBinaryPathFormula() const { |
||||
|
return false; |
||||
|
} |
||||
|
|
||||
|
bool Formula::isUnaryPathFormula() const { |
||||
|
return false; |
||||
|
} |
||||
|
|
||||
|
bool Formula::isConditionalPathFormula() const { |
||||
|
return false; |
||||
|
} |
||||
|
|
||||
|
bool Formula::isNextFormula() const { |
||||
|
return false; |
||||
|
} |
||||
|
|
||||
|
bool Formula::isSteadyStateFormula() const { |
||||
|
return false; |
||||
|
} |
||||
|
|
||||
|
bool Formula::isPathRewardFormula() const { |
||||
|
return false; |
||||
|
} |
||||
|
|
||||
|
bool Formula::isCumulativeRewardFormula() const { |
||||
|
return false; |
||||
|
} |
||||
|
|
||||
|
bool Formula::isInstantaneousRewardFormula() const { |
||||
|
return false; |
||||
|
} |
||||
|
|
||||
|
bool Formula::isReachabilityRewardFormula() const { |
||||
|
return false; |
||||
|
} |
||||
|
|
||||
|
bool Formula::isProbabilisticOperator() const { |
||||
|
return false; |
||||
|
} |
||||
|
|
||||
|
bool Formula::isRewardOperator() const { |
||||
|
return false; |
||||
|
} |
||||
|
|
||||
|
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); |
||||
|
} |
||||
|
|
||||
|
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); |
||||
|
} |
||||
|
|
||||
|
ConditionalPathFormula& Formula::asConditionalPathFormula() { |
||||
|
return dynamic_cast<ConditionalPathFormula&>(*this); |
||||
|
} |
||||
|
|
||||
|
ConditionalPathFormula const& Formula::asConditionalPathFormula() const { |
||||
|
return dynamic_cast<ConditionalPathFormula 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); |
||||
|
} |
||||
|
|
||||
|
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); |
||||
|
} |
||||
|
|
||||
|
SteadyStateFormula& Formula::asSteadyStateFormula() { |
||||
|
return dynamic_cast<SteadyStateFormula&>(*this); |
||||
|
} |
||||
|
|
||||
|
SteadyStateFormula const& Formula::asSteadyStateFormula() const { |
||||
|
return dynamic_cast<SteadyStateFormula const&>(*this); |
||||
|
} |
||||
|
|
||||
|
PathRewardFormula& Formula::asPathRewardFormula() { |
||||
|
return dynamic_cast<PathRewardFormula&>(*this); |
||||
|
} |
||||
|
|
||||
|
PathRewardFormula const& Formula::asPathRewardFormula() const { |
||||
|
return dynamic_cast<PathRewardFormula const&>(*this); |
||||
|
} |
||||
|
|
||||
|
CumulativeRewardFormula& Formula::asCumulativeRewardFormula() { |
||||
|
return dynamic_cast<CumulativeRewardFormula&>(*this); |
||||
|
} |
||||
|
|
||||
|
CumulativeRewardFormula const& Formula::asCumulativeRewardFormula() const { |
||||
|
return dynamic_cast<CumulativeRewardFormula const&>(*this); |
||||
|
} |
||||
|
|
||||
|
InstantaneousRewardFormula& Formula::asInstantaneousRewardFormula() { |
||||
|
return dynamic_cast<InstantaneousRewardFormula&>(*this); |
||||
|
} |
||||
|
|
||||
|
InstantaneousRewardFormula const& Formula::asInstantaneousRewardFormula() const { |
||||
|
return dynamic_cast<InstantaneousRewardFormula const&>(*this); |
||||
|
} |
||||
|
|
||||
|
ReachabilityRewardFormula& Formula::asReachabilityRewardFormula() { |
||||
|
return dynamic_cast<ReachabilityRewardFormula&>(*this); |
||||
|
} |
||||
|
|
||||
|
ReachabilityRewardFormula const& Formula::asReachabilityRewardFormula() const { |
||||
|
return dynamic_cast<ReachabilityRewardFormula 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); |
||||
|
} |
||||
|
} |
||||
|
} |
@ -0,0 +1,148 @@ |
|||||
|
#ifndef STORM_LOGIC_FORMULA_H_ |
||||
|
#define STORM_LOGIC_FORMULA_H_ |
||||
|
|
||||
|
#include <memory> |
||||
|
|
||||
|
#include "src/modelchecker/CheckResult.h" |
||||
|
|
||||
|
namespace storm { |
||||
|
namespace logic { |
||||
|
// Forward-declare all formula classes. |
||||
|
class PathFormula; |
||||
|
class StateFormula; |
||||
|
class BinaryStateFormula; |
||||
|
class UnaryStateFormula; |
||||
|
class BinaryBooleanStateFormula; |
||||
|
class UnaryBooleanStateFormula; |
||||
|
class BooleanLiteralFormula; |
||||
|
class AtomicExpressionFormula; |
||||
|
class AtomicLabelFormula; |
||||
|
class UntilFormula; |
||||
|
class BoundedUntilFormula; |
||||
|
class EventuallyFormula; |
||||
|
class GloballyFormula; |
||||
|
class BinaryPathFormula; |
||||
|
class UnaryPathFormula; |
||||
|
class ConditionalPathFormula; |
||||
|
class NextFormula; |
||||
|
class SteadyStateFormula; |
||||
|
class PathRewardFormula; |
||||
|
class CumulativeRewardFormula; |
||||
|
class InstantaneousRewardFormula; |
||||
|
class ReachabilityRewardFormula; |
||||
|
class ProbabilityOperatorFormula; |
||||
|
class RewardOperatorFormula; |
||||
|
|
||||
|
// Also foward-declare base model checker class. |
||||
|
class ModelChecker; |
||||
|
|
||||
|
class Formula { |
||||
|
public: |
||||
|
// Make the destructor virtual to allow deletion of objects of subclasses via a pointer to this class. |
||||
|
virtual ~Formula(); |
||||
|
|
||||
|
// Methods for querying the exact formula type. |
||||
|
virtual bool isPathFormula() const; |
||||
|
virtual bool isStateFormula() const; |
||||
|
virtual bool isBinaryStateFormula() const; |
||||
|
virtual bool isUnaryStateFormula() const; |
||||
|
virtual bool isBinaryBooleanStateFormula() const; |
||||
|
virtual bool isUnaryBooleanStateFormula() const; |
||||
|
virtual bool isBooleanLiteralFormula() const; |
||||
|
virtual bool isAtomicExpressionFormula() const; |
||||
|
virtual bool isAtomicLabelFormula() const; |
||||
|
virtual bool isUntilFormula() const; |
||||
|
virtual bool isBoundedUntilFormula() const; |
||||
|
virtual bool isEventuallyFormula() const; |
||||
|
virtual bool isGloballyFormula() const; |
||||
|
virtual bool isBinaryPathFormula() const; |
||||
|
virtual bool isUnaryPathFormula() const; |
||||
|
virtual bool isConditionalPathFormula() const; |
||||
|
virtual bool isNextFormula() const; |
||||
|
virtual bool isSteadyStateFormula() const; |
||||
|
virtual bool isPathRewardFormula() const; |
||||
|
virtual bool isCumulativeRewardFormula() const; |
||||
|
virtual bool isInstantaneousRewardFormula() const; |
||||
|
virtual bool isReachabilityRewardFormula() const; |
||||
|
virtual bool isProbabilisticOperator() const; |
||||
|
virtual bool isRewardOperator() const; |
||||
|
|
||||
|
PathFormula& asPathFormula(); |
||||
|
PathFormula const& asPathFormula() const; |
||||
|
|
||||
|
StateFormula& asStateFormula(); |
||||
|
StateFormula const& asStateFormula() const; |
||||
|
|
||||
|
BinaryStateFormula& asBinaryStateFormula(); |
||||
|
BinaryStateFormula const& asBinaryStateFormula() const; |
||||
|
|
||||
|
UnaryStateFormula& asUnaryStateFormula(); |
||||
|
UnaryStateFormula const& asUnaryStateFormula() const; |
||||
|
|
||||
|
BinaryBooleanStateFormula& asBinaryBooleanStateFormula(); |
||||
|
BinaryBooleanStateFormula const& asBinaryBooleanStateFormula() const; |
||||
|
|
||||
|
UnaryBooleanStateFormula& asUnaryBooleanStateFormula(); |
||||
|
UnaryBooleanStateFormula const& asUnaryBooleanStateFormula() const; |
||||
|
|
||||
|
BooleanLiteralFormula& asBooleanLiteralFormula(); |
||||
|
BooleanLiteralFormula const& asBooleanLiteralFormula() const; |
||||
|
|
||||
|
AtomicExpressionFormula& asAtomicExpressionFormula(); |
||||
|
AtomicExpressionFormula const& asAtomicExpressionFormula() const; |
||||
|
|
||||
|
AtomicLabelFormula& asAtomicLabelFormula(); |
||||
|
AtomicLabelFormula const& asAtomicLabelFormula() const; |
||||
|
|
||||
|
UntilFormula& asUntilFormula(); |
||||
|
UntilFormula const& asUntilFormula() const; |
||||
|
|
||||
|
BoundedUntilFormula& asBoundedUntilFormula(); |
||||
|
BoundedUntilFormula const& asBoundedUntilFormula() const; |
||||
|
|
||||
|
EventuallyFormula& asEventuallyFormula(); |
||||
|
EventuallyFormula const& asEventuallyFormula() const; |
||||
|
|
||||
|
GloballyFormula& asGloballyFormula(); |
||||
|
GloballyFormula const& asGloballyFormula() const; |
||||
|
|
||||
|
BinaryPathFormula& asBinaryPathFormula(); |
||||
|
BinaryPathFormula const& asBinaryPathFormula() const; |
||||
|
|
||||
|
UnaryPathFormula& asUnaryPathFormula(); |
||||
|
UnaryPathFormula const& asUnaryPathFormula() const; |
||||
|
|
||||
|
ConditionalPathFormula& asConditionalPathFormula(); |
||||
|
ConditionalPathFormula const& asConditionalPathFormula() const; |
||||
|
|
||||
|
NextFormula& asNextFormula(); |
||||
|
NextFormula const& asNextFormula() const; |
||||
|
|
||||
|
SteadyStateFormula& asSteadyStateFormula(); |
||||
|
SteadyStateFormula const& asSteadyStateFormula() const; |
||||
|
|
||||
|
PathRewardFormula& asPathRewardFormula(); |
||||
|
PathRewardFormula const& asPathRewardFormula() const; |
||||
|
|
||||
|
CumulativeRewardFormula& asCumulativeRewardFormula(); |
||||
|
CumulativeRewardFormula const& asCumulativeRewardFormula() const; |
||||
|
|
||||
|
InstantaneousRewardFormula& asInstantaneousRewardFormula(); |
||||
|
InstantaneousRewardFormula const& asInstantaneousRewardFormula() const; |
||||
|
|
||||
|
ReachabilityRewardFormula& asReachabilityRewardFormula(); |
||||
|
ReachabilityRewardFormula const& asReachabilityRewardFormula() const; |
||||
|
|
||||
|
ProbabilityOperatorFormula& asProbabilityOperatorFormula(); |
||||
|
ProbabilityOperatorFormula const& asProbabilityOperatorFormula() const; |
||||
|
|
||||
|
RewardOperatorFormula& asRewardOperatorFormula(); |
||||
|
RewardOperatorFormula const& asRewardOperatorFormula() const; |
||||
|
|
||||
|
private: |
||||
|
// Currently empty. |
||||
|
}; |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
#endif /* STORM_LOGIC_FORMULA_H_ */ |
@ -0,0 +1,31 @@ |
|||||
|
#include "src/properties/logic/Formula.h" |
||||
|
#include "src/properties/logic/AtomicExpressionFormula.h" |
||||
|
#include "src/properties/logic/AtomicLabelFormula.h" |
||||
|
#include "src/properties/logic/BinaryBooleanStateFormula.h" |
||||
|
#include "src/properties/logic/BinaryPathFormula.h" |
||||
|
#include "src/properties/logic/BinaryStateFormula.h" |
||||
|
#include "src/properties/logic/BooleanLiteralFormula.h" |
||||
|
#include "src/properties/logic/BoundedUntilFormula.h" |
||||
|
#include "src/properties/logic/CumulativeRewardFormula.h" |
||||
|
#include "src/properties/logic/EventuallyFormula.h" |
||||
|
#include "src/properties/logic/GloballyFormula.h" |
||||
|
#include "src/properties/logic/InstantaneousRewardFormula.h" |
||||
|
#include "src/properties/logic/NextFormula.h" |
||||
|
#include "src/properties/logic/PathFormula.h" |
||||
|
#include "src/properties/logic/ProbabilityOperatorFormula.h" |
||||
|
#include "src/properties/logic/ReachabilityRewardFormula.h" |
||||
|
#include "src/properties/logic/RewardOperatorFormula.h" |
||||
|
#include "src/properties/logic/StateFormula.h" |
||||
|
#include "src/properties/logic/SteadyStateFormula.h" |
||||
|
#include "src/properties/logic/UnaryBooleanStateFormula.h" |
||||
|
#include "src/properties/logic/UnaryPathFormula.h" |
||||
|
#include "src/properties/logic/UnaryStateFormula.h" |
||||
|
#include "src/properties/logic/UntilFormula.h" |
||||
|
#include "src/properties/logic/ConditionalPathFormula.h" |
||||
|
|
||||
|
|
||||
|
|
||||
|
|
||||
|
|
||||
|
|
||||
|
|
@ -0,0 +1,14 @@ |
|||||
|
#ifndef STORM_LOGIC_GLOBALLYFORMULA_H_ |
||||
|
#define STORM_LOGIC_GLOBALLYFORMULA_H_ |
||||
|
|
||||
|
#include "src/properties/logic/UnaryPathFormula.h" |
||||
|
|
||||
|
namespace storm { |
||||
|
namespace logic { |
||||
|
class GloballyFormula : public UnaryPathFormula { |
||||
|
|
||||
|
}; |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
#endif /* STORM_LOGIC_GLOBALLYFORMULA_H_ */ |
@ -0,0 +1,14 @@ |
|||||
|
#ifndef STORM_LOGIC_INSTANTANEOUSREWARDFORMULA_H_ |
||||
|
#define STORM_LOGIC_INSTANTANEOUSREWARDFORMULA_H_ |
||||
|
|
||||
|
#include "src/properties/logic/PathRewardFormula.h" |
||||
|
|
||||
|
namespace storm { |
||||
|
namespace logic { |
||||
|
class InstantaneousRewardFormula : public PathRewardFormula { |
||||
|
|
||||
|
}; |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
#endif /* STORM_LOGIC_INSTANTANEOUSREWARDFORMULA_H_ */ |
@ -0,0 +1,14 @@ |
|||||
|
#ifndef STORM_LOGIC_NEXTFORMULA_H_ |
||||
|
#define STORM_LOGIC_NEXTFORMULA_H_ |
||||
|
|
||||
|
#include "src/properties/logic/UnaryPathFormula.h" |
||||
|
|
||||
|
namespace storm { |
||||
|
namespace logic { |
||||
|
class NextFormula : public UnaryPathFormula { |
||||
|
|
||||
|
}; |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
#endif /* STORM_LOGIC_NEXTFORMULA_H_ */ |
@ -0,0 +1,14 @@ |
|||||
|
#ifndef STORM_LOGIC_PATHFORMULA_H_ |
||||
|
#define STORM_LOGIC_PATHFORMULA_H_ |
||||
|
|
||||
|
#include "src/properties/logic/Formula.h" |
||||
|
|
||||
|
namespace storm { |
||||
|
namespace logic { |
||||
|
class PathFormula : public Formula { |
||||
|
|
||||
|
}; |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
#endif /* STORM_LOGIC_PATHFORMULA_H_ */ |
@ -0,0 +1,14 @@ |
|||||
|
#ifndef STORM_LOGIC_PATHREWARDFORMULA_H_ |
||||
|
#define STORM_LOGIC_PATHREWARDFORMULA_H_ |
||||
|
|
||||
|
#include "src/properties/logic/PathFormula.h" |
||||
|
|
||||
|
namespace storm { |
||||
|
namespace logic { |
||||
|
class PathRewardFormula : public PathFormula { |
||||
|
|
||||
|
}; |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
#endif /* STORM_LOGIC_PATHREWARDFORMULA_H_ */ |
@ -0,0 +1,14 @@ |
|||||
|
#ifndef STORM_LOGIC_PROBABILITYOPERATORFORMULA_H_ |
||||
|
#define STORM_LOGIC_PROBABILITYOPERATORFORMULA_H_ |
||||
|
|
||||
|
#include "src/properties/logic/PathRewardFormula.h" |
||||
|
|
||||
|
namespace storm { |
||||
|
namespace logic { |
||||
|
class ProbabilityOperatorFormula : public Formula { |
||||
|
|
||||
|
}; |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
#endif /* STORM_LOGIC_PROBABILITYOPERATORFORMULA_H_ */ |
@ -0,0 +1,14 @@ |
|||||
|
#ifndef STORM_LOGIC_REACHABILITYREWARDFORMULA_H_ |
||||
|
#define STORM_LOGIC_REACHABILITYREWARDFORMULA_H_ |
||||
|
|
||||
|
#include "src/properties/logic/PathRewardFormula.h" |
||||
|
|
||||
|
namespace storm { |
||||
|
namespace logic { |
||||
|
class ReachabilityRewardFormula : public PathRewardFormula { |
||||
|
|
||||
|
}; |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
#endif /* STORM_LOGIC_REACHABILITYREWARDFORMULA_H_ */ |
@ -0,0 +1,14 @@ |
|||||
|
#ifndef STORM_LOGIC_REWARDOPERATORFORMULA_H_ |
||||
|
#define STORM_LOGIC_REWARDOPERATORFORMULA_H_ |
||||
|
|
||||
|
#include "src/properties/logic/PathRewardFormula.h" |
||||
|
|
||||
|
namespace storm { |
||||
|
namespace logic { |
||||
|
class RewardOperatorFormula : public Formula { |
||||
|
|
||||
|
}; |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
#endif /* STORM_LOGIC_REWARDOPERATORFORMULA_H_ */ |
@ -0,0 +1,14 @@ |
|||||
|
#ifndef STORM_LOGIC_STATEFORMULA_H_ |
||||
|
#define STORM_LOGIC_STATEFORMULA_H_ |
||||
|
|
||||
|
#include "src/properties/logic/Formula.h" |
||||
|
|
||||
|
namespace storm { |
||||
|
namespace logic { |
||||
|
class StateFormula : public Formula { |
||||
|
|
||||
|
}; |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
#endif /* STORM_LOGIC_STATEFORMULA_H_ */ |
@ -0,0 +1,14 @@ |
|||||
|
#ifndef STORM_LOGIC_STEADYSTATEFORMULA_H_ |
||||
|
#define STORM_LOGIC_STEADYSTATEFORMULA_H_ |
||||
|
|
||||
|
#include "src/properties/logic/UnaryStateFormula.h" |
||||
|
|
||||
|
namespace storm { |
||||
|
namespace logic { |
||||
|
class SteadyStateFormula : public UnaryStateFormula { |
||||
|
|
||||
|
}; |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
#endif /* STORM_LOGIC_STEADYSTATEFORMULA_H_ */ |
@ -0,0 +1,14 @@ |
|||||
|
#ifndef STORM_LOGIC_UNARYBOOLEANSTATEFORMULA_H_ |
||||
|
#define STORM_LOGIC_UNARYBOOLEANSTATEFORMULA_H_ |
||||
|
|
||||
|
#include "src/properties/logic/UnaryStateFormula.h" |
||||
|
|
||||
|
namespace storm { |
||||
|
namespace logic { |
||||
|
class UnaryBooleanStateFormula : public UnaryStateFormula { |
||||
|
|
||||
|
}; |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
#endif /* STORM_LOGIC_UNARYBOOLEANSTATEFORMULA_H_ */ |
@ -0,0 +1,14 @@ |
|||||
|
#ifndef STORM_LOGIC_UNARYPATHFORMULA_H_ |
||||
|
#define STORM_LOGIC_UNARYPATHFORMULA_H_ |
||||
|
|
||||
|
#include "src/properties/logic/PathFormula.h" |
||||
|
|
||||
|
namespace storm { |
||||
|
namespace logic { |
||||
|
class UnaryPathFormula : public PathFormula { |
||||
|
|
||||
|
}; |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
#endif /* STORM_LOGIC_UNARYPATHFORMULA_H_ */ |
@ -0,0 +1,14 @@ |
|||||
|
#ifndef STORM_LOGIC_UNARYSTATEFORMULA_H_ |
||||
|
#define STORM_LOGIC_UNARYSTATEFORMULA_H_ |
||||
|
|
||||
|
#include "src/properties/logic/StateFormula.h" |
||||
|
|
||||
|
namespace storm { |
||||
|
namespace logic { |
||||
|
class UnaryStateFormula : public StateFormula { |
||||
|
|
||||
|
}; |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
#endif /* STORM_LOGIC_UNARYSTATEFORMULA_H_ */ |
@ -0,0 +1,14 @@ |
|||||
|
#ifndef STORM_LOGIC_UNTILFORMULA_H_ |
||||
|
#define STORM_LOGIC_UNTILFORMULA_H_ |
||||
|
|
||||
|
#include "src/properties/logic/BinaryPathFormula.h" |
||||
|
|
||||
|
namespace storm { |
||||
|
namespace logic { |
||||
|
class UntilFormula : public BinaryPathFormula { |
||||
|
|
||||
|
}; |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
#endif /* STORM_LOGIC_UNTILFORMULA_H_ */ |
Write
Preview
Loading…
Cancel
Save
Reference in new issue