Storm 1.11.1.1
A Modern Probabilistic Model Checker
Loading...
Searching...
No Matches
SymbolicParetoCurveCheckResult.cpp
Go to the documentation of this file.
2
8
9namespace storm {
10namespace modelchecker {
11template<storm::dd::DdType Type, typename ValueType>
15
16template<storm::dd::DdType Type, typename ValueType>
18 storm::dd::Bdd<Type> const& state, std::vector<typename ParetoCurveCheckResult<ValueType>::point_type> const& points,
19 typename ParetoCurveCheckResult<ValueType>::polytope_type const& underApproximation,
20 typename ParetoCurveCheckResult<ValueType>::polytope_type const& overApproximation)
21 : ParetoCurveCheckResult<ValueType>(points, underApproximation, overApproximation), state(state) {
22 STORM_LOG_THROW(this->state.getNonZeroCount() == 1, storm::exceptions::InvalidOperationException,
23 "ParetoCheckResults are only relevant for a single state.");
24}
25
26template<storm::dd::DdType Type, typename ValueType>
28 std::vector<typename ParetoCurveCheckResult<ValueType>::point_type>&& points,
29 typename ParetoCurveCheckResult<ValueType>::polytope_type&& underApproximation,
30 typename ParetoCurveCheckResult<ValueType>::polytope_type&& overApproximation)
31 : ParetoCurveCheckResult<ValueType>(points, underApproximation, overApproximation), state(state) {
32 STORM_LOG_THROW(this->state.getNonZeroCount() == 1, storm::exceptions::InvalidOperationException,
33 "ParetoCheckResults are only relevant for a single state.");
34}
35
36template<storm::dd::DdType Type, typename ValueType>
37std::unique_ptr<CheckResult> SymbolicParetoCurveCheckResult<Type, ValueType>::clone() const {
38 return std::make_unique<SymbolicParetoCurveCheckResult<Type, ValueType>>(this->state, this->points, this->underApproximation, this->overApproximation);
39}
40
41template<storm::dd::DdType Type, typename ValueType>
45
46template<storm::dd::DdType Type, typename ValueType>
50
51template<storm::dd::DdType Type, typename ValueType>
53 STORM_LOG_THROW(filter.isSymbolicQualitativeCheckResult(), storm::exceptions::InvalidOperationException,
54 "Cannot filter Symbolic check result with non-Symbolic filter.");
55 STORM_LOG_THROW(filter.isResultForAllStates(), storm::exceptions::InvalidOperationException, "Cannot filter check result with non-complete filter.");
56 SymbolicQualitativeCheckResult<Type> const& symbolicFilter = filter.template asSymbolicQualitativeCheckResult<Type>();
57
58 storm::dd::Bdd<Type> const& filterTruthValues = symbolicFilter.getTruthValuesVector();
59
60 STORM_LOG_THROW(filterTruthValues.getNonZeroCount() == 1 && !(filterTruthValues && state).isZero(), storm::exceptions::InvalidOperationException,
61 "The check result fails to contain some results referred to by the filter.");
62}
63
64template<storm::dd::DdType Type, typename ValueType>
68
72} // namespace modelchecker
73} // namespace storm
virtual uint_fast64_t getNonZeroCount() const override
Retrieves the number of encodings that are mapped to a non-zero value.
Definition Bdd.cpp:507
std::shared_ptr< storm::storage::geometry::Polytope< ValueType > > polytope_type
virtual void filter(QualitativeCheckResult const &filter) override
Filters the current result wrt.
virtual std::unique_ptr< CheckResult > clone() const override
#define STORM_LOG_THROW(cond, exception, message)
Definition macros.h:30