Storm
A Modern Probabilistic Model Checker
Loading...
Searching...
No Matches
SymbolicParetoCurveCheckResult.cpp
Go to the documentation of this file.
1
3
8
10
11namespace storm {
12namespace modelchecker {
13template<storm::dd::DdType Type, typename ValueType>
17
18template<storm::dd::DdType Type, typename ValueType>
20 storm::dd::Bdd<Type> const& state, std::vector<typename ParetoCurveCheckResult<ValueType>::point_type> const& points,
21 typename ParetoCurveCheckResult<ValueType>::polytope_type const& underApproximation,
22 typename ParetoCurveCheckResult<ValueType>::polytope_type const& overApproximation)
23 : ParetoCurveCheckResult<ValueType>(points, underApproximation, overApproximation), state(state) {
24 STORM_LOG_THROW(this->state.getNonZeroCount() == 1, storm::exceptions::InvalidOperationException,
25 "ParetoCheckResults are only relevant for a single state.");
26}
27
28template<storm::dd::DdType Type, typename ValueType>
30 std::vector<typename ParetoCurveCheckResult<ValueType>::point_type>&& points,
31 typename ParetoCurveCheckResult<ValueType>::polytope_type&& underApproximation,
32 typename ParetoCurveCheckResult<ValueType>::polytope_type&& overApproximation)
33 : ParetoCurveCheckResult<ValueType>(points, underApproximation, overApproximation), state(state) {
34 STORM_LOG_THROW(this->state.getNonZeroCount() == 1, storm::exceptions::InvalidOperationException,
35 "ParetoCheckResults are only relevant for a single state.");
36}
37
38template<storm::dd::DdType Type, typename ValueType>
39std::unique_ptr<CheckResult> SymbolicParetoCurveCheckResult<Type, ValueType>::clone() const {
40 return std::make_unique<SymbolicParetoCurveCheckResult<Type, ValueType>>(this->state, this->points, this->underApproximation, this->overApproximation);
41}
42
43template<storm::dd::DdType Type, typename ValueType>
47
48template<storm::dd::DdType Type, typename ValueType>
52
53template<storm::dd::DdType Type, typename ValueType>
55 STORM_LOG_THROW(filter.isSymbolicQualitativeCheckResult(), storm::exceptions::InvalidOperationException,
56 "Cannot filter Symbolic check result with non-Symbolic filter.");
57 STORM_LOG_THROW(filter.isResultForAllStates(), storm::exceptions::InvalidOperationException, "Cannot filter check result with non-complete filter.");
58 SymbolicQualitativeCheckResult<Type> const& symbolicFilter = filter.template asSymbolicQualitativeCheckResult<Type>();
59
60 storm::dd::Bdd<Type> const& filterTruthValues = symbolicFilter.getTruthValuesVector();
61
62 STORM_LOG_THROW(filterTruthValues.getNonZeroCount() == 1 && !(filterTruthValues && state).isZero(), storm::exceptions::InvalidOperationException,
63 "The check result fails to contain some results referred to by the filter.");
64}
65
66template<storm::dd::DdType Type, typename ValueType>
70
73
75} // namespace modelchecker
76} // 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:513
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
LabParser.cpp.
Definition cli.cpp:18