Storm
1.11.1.1
A Modern Probabilistic Model Checker
Loading...
Searching...
No Matches
SymbolicParetoCurveCheckResult.cpp
Go to the documentation of this file.
1
#include "
storm/modelchecker/results/SymbolicParetoCurveCheckResult.h
"
2
3
#include "
storm/adapters/RationalNumberAdapter.h
"
4
#include "
storm/exceptions/InvalidOperationException.h
"
5
#include "
storm/modelchecker/results/SymbolicQualitativeCheckResult.h
"
6
#include "
storm/storage/dd/DdManager.h
"
7
#include "
storm/utility/macros.h
"
8
9
namespace
storm
{
10
namespace
modelchecker {
11
template
<storm::dd::DdType Type,
typename
ValueType>
12
SymbolicParetoCurveCheckResult<Type, ValueType>::SymbolicParetoCurveCheckResult
() {
13
// Intentionally left empty.
14
}
15
16
template
<storm::dd::DdType Type,
typename
ValueType>
17
SymbolicParetoCurveCheckResult<Type, ValueType>::SymbolicParetoCurveCheckResult
(
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
26
template
<storm::dd::DdType Type,
typename
ValueType>
27
SymbolicParetoCurveCheckResult<Type, ValueType>::SymbolicParetoCurveCheckResult
(
storm::dd::Bdd<Type>
const
& state,
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
36
template
<storm::dd::DdType Type,
typename
ValueType>
37
std::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
41
template
<storm::dd::DdType Type,
typename
ValueType>
42
bool
SymbolicParetoCurveCheckResult<Type, ValueType>::isSymbolicParetoCurveCheckResult
()
const
{
43
return
true
;
44
}
45
46
template
<storm::dd::DdType Type,
typename
ValueType>
47
bool
SymbolicParetoCurveCheckResult<Type, ValueType>::isSymbolic
()
const
{
48
return
true
;
49
}
50
51
template
<storm::dd::DdType Type,
typename
ValueType>
52
void
SymbolicParetoCurveCheckResult<Type, ValueType>::filter
(
QualitativeCheckResult
const
& filter) {
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
64
template
<storm::dd::DdType Type,
typename
ValueType>
65
storm::dd::Bdd<Type>
const
&
SymbolicParetoCurveCheckResult<Type, ValueType>::getState
()
const
{
66
return
state;
67
}
68
69
template
class
SymbolicParetoCurveCheckResult<storm::dd::DdType::CUDD, double>
;
70
template
class
SymbolicParetoCurveCheckResult<storm::dd::DdType::Sylvan, double>
;
71
template
class
SymbolicParetoCurveCheckResult<storm::dd::DdType::Sylvan, storm::RationalNumber>
;
72
}
// namespace modelchecker
73
}
// namespace storm
DdManager.h
InvalidOperationException.h
RationalNumberAdapter.h
SymbolicParetoCurveCheckResult.h
SymbolicQualitativeCheckResult.h
storm::dd::Bdd
Definition
Bdd.h:24
storm::dd::Bdd::getNonZeroCount
virtual uint_fast64_t getNonZeroCount() const override
Retrieves the number of encodings that are mapped to a non-zero value.
Definition
Bdd.cpp:507
storm::modelchecker::ParetoCurveCheckResult
Definition
ParetoCurveCheckResult.h:12
storm::modelchecker::ParetoCurveCheckResult::polytope_type
std::shared_ptr< storm::storage::geometry::Polytope< ValueType > > polytope_type
Definition
ParetoCurveCheckResult.h:15
storm::modelchecker::ParetoCurveCheckResult::point_type
std::vector< ValueType > point_type
Definition
ParetoCurveCheckResult.h:14
storm::modelchecker::QualitativeCheckResult
Definition
QualitativeCheckResult.h:8
storm::modelchecker::SymbolicParetoCurveCheckResult
Definition
SymbolicParetoCurveCheckResult.h:13
storm::modelchecker::SymbolicParetoCurveCheckResult::getState
storm::dd::Bdd< Type > const & getState() const
Definition
SymbolicParetoCurveCheckResult.cpp:65
storm::modelchecker::SymbolicParetoCurveCheckResult::isSymbolic
virtual bool isSymbolic() const override
Definition
SymbolicParetoCurveCheckResult.cpp:47
storm::modelchecker::SymbolicParetoCurveCheckResult::filter
virtual void filter(QualitativeCheckResult const &filter) override
Filters the current result wrt.
Definition
SymbolicParetoCurveCheckResult.cpp:52
storm::modelchecker::SymbolicParetoCurveCheckResult::SymbolicParetoCurveCheckResult
SymbolicParetoCurveCheckResult()
Definition
SymbolicParetoCurveCheckResult.cpp:12
storm::modelchecker::SymbolicParetoCurveCheckResult::isSymbolicParetoCurveCheckResult
virtual bool isSymbolicParetoCurveCheckResult() const override
Definition
SymbolicParetoCurveCheckResult.cpp:42
storm::modelchecker::SymbolicParetoCurveCheckResult::clone
virtual std::unique_ptr< CheckResult > clone() const override
Definition
SymbolicParetoCurveCheckResult.cpp:37
storm::modelchecker::SymbolicQualitativeCheckResult
Definition
SymbolicQualitativeCheckResult.h:11
storm::modelchecker::SymbolicQualitativeCheckResult::getTruthValuesVector
storm::dd::Bdd< Type > const & getTruthValuesVector() const
Definition
SymbolicQualitativeCheckResult.cpp:67
macros.h
STORM_LOG_THROW
#define STORM_LOG_THROW(cond, exception, message)
Definition
macros.h:30
storm
Definition
AutomaticSettings.cpp:13
src
storm
modelchecker
results
SymbolicParetoCurveCheckResult.cpp
Generated by
1.9.8