|
|
@ -6,27 +6,25 @@ |
|
|
|
#include "storm/models/sparse/Dtmc.h" |
|
|
|
#include <carl/formula/Formula.h> |
|
|
|
|
|
|
|
#include <carl/formula/Formula.h> |
|
|
|
|
|
|
|
namespace storm { |
|
|
|
namespace analysis { |
|
|
|
|
|
|
|
template <typename ValueType, typename Enable=void> |
|
|
|
struct ConstraintType { |
|
|
|
template <typename ValueType, typename Enable=void> |
|
|
|
struct ConstraintType { |
|
|
|
typedef storm::ArithConstraint<ValueType> val; |
|
|
|
}; |
|
|
|
}; |
|
|
|
|
|
|
|
template<typename ValueType> |
|
|
|
struct ConstraintType<ValueType, typename std::enable_if<std::is_same<storm::RationalFunction, ValueType>::value>::type> { |
|
|
|
template<typename ValueType> |
|
|
|
struct ConstraintType<ValueType, typename std::enable_if<std::is_same<storm::RationalFunction, ValueType>::value>::type> { |
|
|
|
typedef carl::Formula<typename ValueType::PolyType::PolyType> val; |
|
|
|
}; |
|
|
|
}; |
|
|
|
|
|
|
|
/** |
|
|
|
/** |
|
|
|
* Class to collect constraints on parametric Markov chains. |
|
|
|
*/ |
|
|
|
template<typename ValueType> |
|
|
|
class ConstraintCollector { |
|
|
|
private: |
|
|
|
template<typename ValueType> |
|
|
|
class ConstraintCollector { |
|
|
|
private: |
|
|
|
// A set of constraints that says that the DTMC actually has valid probability distributions in all states. |
|
|
|
std::unordered_set<typename ConstraintType<ValueType>::val> wellformedConstraintSet; |
|
|
|
|
|
|
@ -35,7 +33,7 @@ private: |
|
|
|
std::unordered_set<typename ConstraintType<ValueType>::val> graphPreservingConstraintSet; |
|
|
|
|
|
|
|
void wellformedRequiresNonNegativeEntries(std::vector<ValueType> const&); |
|
|
|
public: |
|
|
|
public: |
|
|
|
/*! |
|
|
|
* Constructs the a constraint collector for the given DTMC. The constraints are built and ready for |
|
|
|
* retrieval after the construction. |
|
|
@ -72,7 +70,7 @@ public: |
|
|
|
*/ |
|
|
|
void operator()(storm::models::sparse::Dtmc<ValueType> const& dtmc); |
|
|
|
|
|
|
|
}; |
|
|
|
}; |
|
|
|
|
|
|
|
|
|
|
|
} |
|
|
|