Storm 1.14.0.1
A Modern Probabilistic Model Checker
Loading...
Searching...
No Matches
DFTModelChecker.h
Go to the documentation of this file.
1#pragma once
2
3#include <boost/variant.hpp>
4#include <functional>
5
13
14namespace storm::dft {
15namespace modelchecker {
16
20template<typename ValueType>
22 public:
24 typedef std::pair<ExtendedValueType, ExtendedValueType> approximation_result;
25 typedef std::vector<boost::variant<ExtendedValueType, approximation_result>> dft_results;
26 typedef std::vector<std::shared_ptr<storm::logic::Formula const>> property_vector;
27
35 using ModelExportCallback = std::function<void(std::shared_ptr<storm::models::sparse::Model<ValueType>> const& model, bool isFinal)>;
36
37 class ResultOutputVisitor : public boost::static_visitor<> {
38 public:
39 void operator()(ExtendedValueType const& result, std::ostream& os) const {
40 os << result;
41 }
42
43 void operator()(approximation_result const& result, std::ostream& os) const {
44 os << "(" << result.first << ", " << result.second << ")";
45 }
46 };
47
51 DFTModelChecker(bool printOutput, ModelExportCallback exportCallback = {}) : printInfo(printOutput), exportCallback(std::move(exportCallback)) {}
52
63 storm::dft::utility::RelevantEvents const& relevantEvents = {});
64
70 void printTimings(std::ostream& os = std::cout) const;
71
78 void printResults(dft_results const& results, std::ostream& os = std::cout) const;
79
80 private:
81 bool printInfo;
82 ModelExportCallback exportCallback;
83
84 // Timing values
85 storm::utility::Stopwatch buildingTimer;
86 storm::utility::Stopwatch explorationTimer;
87 storm::utility::Stopwatch bisimulationTimer;
88 storm::utility::Stopwatch modelCheckingTimer;
90
100 dft_results checkHelper(storm::dft::DftEnvironment const& env, storm::dft::storage::DFT<ValueType> const& dft, property_vector const& properties,
101 storm::dft::utility::RelevantEvents const& relevantEvents);
102
112 std::shared_ptr<storm::models::sparse::Ctmc<ValueType>> buildModelViaComposition(storm::dft::DftEnvironment const& env,
114 property_vector const& properties,
115 storm::dft::utility::RelevantEvents const& relevantEvents);
116
128 storm::dft::utility::RelevantEvents const& relevantEvents);
129
139 std::vector<ExtendedValueType> checkModel(storm::dft::DftEnvironment const& env, std::shared_ptr<storm::models::sparse::Model<ValueType>>& model,
140 property_vector const& properties);
141
154 bool isApproximationSufficient(ValueType lowerBound, ValueType upperBound, double approximationError, bool relative);
155};
156
157} // namespace modelchecker
158} // namespace storm::dft
void checkModel(std::string const &path, std::string const &formulaString, double maxmin, double maxmax, double minmax, double minmin, bool produceScheduler)
Environment for storm-dft.
void operator()(approximation_result const &result, std::ostream &os) const
void operator()(ExtendedValueType const &result, std::ostream &os) const
dft_results check(storm::dft::DftEnvironment const &env, storm::dft::storage::DFT< ValueType > const &origDft, property_vector const &properties, storm::dft::utility::RelevantEvents const &relevantEvents={})
Main method for checking DFTs.
std::pair< ExtendedValueType, ExtendedValueType > approximation_result
std::vector< boost::variant< ExtendedValueType, approximation_result > > dft_results
std::function< void(std::shared_ptr< storm::models::sparse::Model< ValueType > > const &model, bool isFinal)> ModelExportCallback
Callback invoked whenever a model has been built and is available for export.
std::vector< std::shared_ptr< storm::logic::Formula const > > property_vector
void printResults(dft_results const &results, std::ostream &os=std::cout) const
Print result to stream.
storm::utility::ExtendedValueType< ValueType > ExtendedValueType
DFTModelChecker(bool printOutput, ModelExportCallback exportCallback={})
Constructor.
void printTimings(std::ostream &os=std::cout) const
Print timings of all operations to stream.
Represents a Dynamic Fault Tree.
Definition DFT.h:50
Base class for all sparse models.
Definition Model.h:34
A class that provides convenience operations to display run times.
Definition Stopwatch.h:13
SFTBDDChecker::ValueType ValueType
std::conditional_t< storm::NumberTraits< ValueType >::HasInfinity, ValueType, ExtendedNumber< ValueType > > ExtendedValueType
The type to use for values that may be infinite.