Storm
A Modern Probabilistic Model Checker
Loading...
Searching...
No Matches
SymbolicParetoCurveCheckResult.cpp
Go to the documentation of this file.
1
2
#include "
storm/modelchecker/results/SymbolicParetoCurveCheckResult.h
"
3
4
#include "
storm/adapters/RationalFunctionAdapter.h
"
5
#include "
storm/modelchecker/results/SymbolicQualitativeCheckResult.h
"
6
#include "
storm/storage/dd/DdManager.h
"
7
#include "
storm/utility/macros.h
"
8
9
#include "
storm/exceptions/InvalidOperationException.h
"
10
11
namespace
storm
{
12
namespace
modelchecker {
13
template
<storm::dd::DdType Type,
typename
ValueType>
14
SymbolicParetoCurveCheckResult<Type, ValueType>::SymbolicParetoCurveCheckResult
() {
15
// Intentionally left empty.
16
}
17
18
template
<storm::dd::DdType Type,
typename
ValueType>
19
SymbolicParetoCurveCheckResult<Type, ValueType>::SymbolicParetoCurveCheckResult
(
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
28
template
<storm::dd::DdType Type,
typename
ValueType>
29
SymbolicParetoCurveCheckResult<Type, ValueType>::SymbolicParetoCurveCheckResult
(
storm::dd::Bdd<Type>
const
& state,
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
38
template
<storm::dd::DdType Type,
typename
ValueType>
39
std::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
43
template
<storm::dd::DdType Type,
typename
ValueType>
44
bool
SymbolicParetoCurveCheckResult<Type, ValueType>::isSymbolicParetoCurveCheckResult
()
const
{
45
return
true
;
46
}
47
48
template
<storm::dd::DdType Type,
typename
ValueType>
49
bool
SymbolicParetoCurveCheckResult<Type, ValueType>::isSymbolic
()
const
{
50
return
true
;
51
}
52
53
template
<storm::dd::DdType Type,
typename
ValueType>
54
void
SymbolicParetoCurveCheckResult<Type, ValueType>::filter
(
QualitativeCheckResult
const
& filter) {
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
66
template
<storm::dd::DdType Type,
typename
ValueType>
67
storm::dd::Bdd<Type>
const
&
SymbolicParetoCurveCheckResult<Type, ValueType>::getState
()
const
{
68
return
state;
69
}
70
71
template
class
SymbolicParetoCurveCheckResult<storm::dd::DdType::CUDD, double>
;
72
template
class
SymbolicParetoCurveCheckResult<storm::dd::DdType::Sylvan, double>
;
73
74
template
class
SymbolicParetoCurveCheckResult<storm::dd::DdType::Sylvan, storm::RationalNumber>
;
75
}
// namespace modelchecker
76
}
// namespace storm
DdManager.h
InvalidOperationException.h
RationalFunctionAdapter.h
SymbolicParetoCurveCheckResult.h
SymbolicQualitativeCheckResult.h
storm::dd::Bdd
Definition
Bdd.h:25
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:513
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:67
storm::modelchecker::SymbolicParetoCurveCheckResult::isSymbolic
virtual bool isSymbolic() const override
Definition
SymbolicParetoCurveCheckResult.cpp:49
storm::modelchecker::SymbolicParetoCurveCheckResult::filter
virtual void filter(QualitativeCheckResult const &filter) override
Filters the current result wrt.
Definition
SymbolicParetoCurveCheckResult.cpp:54
storm::modelchecker::SymbolicParetoCurveCheckResult::SymbolicParetoCurveCheckResult
SymbolicParetoCurveCheckResult()
Definition
SymbolicParetoCurveCheckResult.cpp:14
storm::modelchecker::SymbolicParetoCurveCheckResult::isSymbolicParetoCurveCheckResult
virtual bool isSymbolicParetoCurveCheckResult() const override
Definition
SymbolicParetoCurveCheckResult.cpp:44
storm::modelchecker::SymbolicParetoCurveCheckResult::clone
virtual std::unique_ptr< CheckResult > clone() const override
Definition
SymbolicParetoCurveCheckResult.cpp:39
storm::modelchecker::SymbolicQualitativeCheckResult
Definition
SymbolicQualitativeCheckResult.h:12
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
LabParser.cpp.
Definition
cli.cpp:18
src
storm
modelchecker
results
SymbolicParetoCurveCheckResult.cpp
Generated by
1.9.8