28template<
typename ValueType>
29std::shared_ptr<storm::dft::storage::DFT<ValueType>>
loadDFTGalileoFile(std::string
const& file) {
39template<
typename ValueType>
40std::shared_ptr<storm::dft::storage::DFT<ValueType>>
loadDFTJsonString(std::string
const& jsonString) {
50template<
typename ValueType>
51std::shared_ptr<storm::dft::storage::DFT<ValueType>>
loadDFTJsonFile(std::string
const& file) {
62template<
typename ValueType>
64 std::stringstream stream;
65 bool wellFormed =
false;
66 if (validForMarkovianAnalysis) {
71 return std::pair<bool, std::string>(wellFormed, stream.str());
80template<
typename ValueType>
82 std::stringstream stream;
84 return std::pair<bool, std::string>(modelingIssues, stream.str());
96template<
typename ValueType>
98 bool exponentialDistributions) {
99 std::shared_ptr<storm::dft::storage::DFT<ValueType>> transformedDft = std::make_shared<storm::dft::storage::DFT<ValueType>>(dft);
109 return transformedDft;
118template<
typename ValueType>
123template<
typename ValueType>
127 return std::make_pair(lowerBEBound, upperBEBound);
130template<
typename ValueType>
132 std::vector<std::pair<uint64_t, uint64_t>> fdepConflicts =
135 for (
auto const& pair : fdepConflicts) {
140 std::set<size_t> conflict_set;
141 for (
auto const& conflict : fdepConflicts) {
142 conflict_set.insert(
size_t(conflict.first));
143 conflict_set.insert(
size_t(conflict.second));
146 if (!conflict_set.count(depId)) {
150 return !fdepConflicts.empty();
161 std::vector<std::string>
const& additionalRelevantEventNames);
180template<
typename ValueType>
186 bool printOutput =
false) {
189 modelChecker.check(dft, properties, symred, allowModularisation, relevantEvents, allowDCForRelevant, approximationError, approximationHeuristic,
190 eliminateChains, labelBehavior);
192 modelChecker.printTimings();
193 modelChecker.printResults(results);
247template<
typename ValueType>
249 bool const calculateMttf,
double const mttfPrecision,
double const mttfStepsize, std::string
const mttfAlgorithmName,
250 bool const calculateMCS,
bool const calculateProbability,
bool const useModularisation, std::string
const importanceMeasureName,
251 std::vector<double>
const& timepoints, std::vector<std::shared_ptr<storm::logic::Formula const>>
const& properties,
252 std::vector<std::string>
const& additionalRelevantEventNames,
size_t const chunksize);
261template<
typename ValueType>
270template<
typename ValueType>
279template<
typename ValueType>
288template<
typename ValueType>
297template<
typename ValueType>
std::vector< boost::variant< ValueType, approximation_result > > dft_results
static storm::dft::storage::DFT< ValueType > parseDFT(std::string const &filename)
Parse DFT in Galileo format and build DFT.
static storm::dft::storage::DFT< ValueType > parseJsonFromFile(std::string const &filename)
Parse DFT from JSON format given as file and build DFT.
static storm::dft::storage::DFT< ValueType > parseJsonFromString(std::string const &jsonString)
Parse DFT from JSON format given as a string and build DFT.
Represents a Dynamic Fault Tree.
void setDependencyNotInConflict(size_t id)
DFTElementCPointer getElement(size_t index) const
Get a pointer to an element in the DFT.
std::vector< size_t > const & getDependencies() const
static bool isDftValidForMarkovianAnalysis(storm::dft::storage::DFT< ValueType > const &dft, std::ostream &stream)
Check whether the DFT can be analysed by translation to a Markov model, i.e.
static bool isDftWellFormed(storm::dft::storage::DFT< ValueType > const &dft, std::ostream &stream)
Check whether the DFT is well-formed.
static bool hasPotentialModelingIssues(storm::dft::storage::DFT< ValueType > const &dft, std::ostream &stream)
Check whether the DFT has potential modeling issues.
static std::vector< std::pair< uint64_t, uint64_t > > getDependencyConflicts(storm::dft::storage::DFT< ValueType > const &dft, bool useSMT=false, uint_fast64_t timeout=10)
Get a vector of index pairs of FDEPs in the DFT which are conflicting.
static uint64_t getLeastFailureBound(storm::dft::storage::DFT< double > const &dft, bool useSMT=false, uint_fast64_t timeout=10)
Get the minimal number of BEs necessary for the TLE to fail (lower bound for number of failures to ch...
static uint64_t getAlwaysFailedBound(storm::dft::storage::DFT< double > const &dft, bool useSMT=false, uint_fast64_t timeout=10)
Get the number of BE failures for which the TLE always fails (upper bound for number of failures to c...
#define STORM_LOG_DEBUG(message)
storm::dft::modelchecker::DFTModelChecker< ValueType >::dft_results analyzeDFT(storm::dft::storage::DFT< ValueType > const &dft, std::vector< std::shared_ptr< storm::logic::Formula const > > const &properties, bool symred=true, bool allowModularisation=true, storm::dft::utility::RelevantEvents const &relevantEvents={}, bool allowDCForRelevant=false, double approximationError=0.0, storm::dft::builder::ApproximationHeuristic approximationHeuristic=storm::dft::builder::ApproximationHeuristic::DEPTH, bool eliminateChains=false, storm::transformer::EliminationLabelBehavior labelBehavior=storm::transformer::EliminationLabelBehavior::KeepLabels, bool printOutput=false)
Compute the exact or approximate analysis result of the given DFT according to the given properties.
std::pair< uint64_t, uint64_t > computeBEFailureBounds(storm::dft::storage::DFT< ValueType > const &dft, bool useSMT, double solverTimeout)
std::shared_ptr< storm::jani::Model > transformToJani(storm::gspn::GSPN const &gspn, uint64_t toplevelFailedPlace)
Transform GSPN to Jani model.
void exportDFTToJsonFile(storm::dft::storage::DFT< ValueType > const &dft, std::string const &file)
Export DFT to JSON file.
void analyzeDFTBdd(std::shared_ptr< storm::dft::storage::DFT< double > > const &dft, bool const exportToDot, std::string const &filename, bool const calculateMttf, double const mttfPrecision, double const mttfStepsize, std::string const mttfAlgorithmName, bool const calculateMCS, bool const calculateProbability, bool const useModularisation, std::string const importanceMeasureName, std::vector< double > const &timepoints, std::vector< std::shared_ptr< storm::logic::Formula const > > const &properties, std::vector< std::string > const &additionalRelevantEventNames, size_t const chunksize)
std::shared_ptr< storm::dft::storage::DFT< ValueType > > prepareForMarkovAnalysis(storm::dft::storage::DFT< ValueType > const &dft)
Apply transformations to make DFT feasible for Markovian analysis.
std::pair< bool, std::string > isWellFormed(storm::dft::storage::DFT< ValueType > const &dft, bool validForMarkovianAnalysis=true)
Check whether the DFT is well-formed.
std::pair< std::shared_ptr< storm::gspn::GSPN >, uint64_t > transformToGSPN(storm::dft::storage::DFT< double > const &dft)
std::string exportDFTToJsonString(storm::dft::storage::DFT< ValueType > const &dft)
Export DFT to JSON string.
std::shared_ptr< storm::dft::storage::DFT< ValueType > > loadDFTGalileoFile(std::string const &file)
Load DFT from Galileo file.
std::shared_ptr< storm::dft::storage::DFT< ValueType > > loadDFTJsonFile(std::string const &file)
Load DFT from JSON file.
storm::dft::utility::RelevantEvents computeRelevantEvents(std::vector< std::shared_ptr< storm::logic::Formula const > > const &properties, std::vector< std::string > const &additionalRelevantEventNames)
Get relevant event ids from given relevant event names and labels in properties.
std::pair< bool, std::string > hasPotentialModelingIssues(storm::dft::storage::DFT< ValueType > const &dft)
Check whether the DFT has potential modeling issues.
void exportDFTToSMT(storm::dft::storage::DFT< double > const &dft, std::string const &file)
void analyzeDFTSMT(storm::dft::storage::DFT< double > const &dft, bool printOutput)
std::shared_ptr< storm::dft::storage::DFT< ValueType > > applyTransformations(storm::dft::storage::DFT< ValueType > const &dft, bool uniqueBE, bool binaryFDEP, bool exponentialDistributions)
Apply transformations for DFT.
std::shared_ptr< storm::dft::storage::DFT< ValueType > > loadDFTJsonString(std::string const &jsonString)
Load DFT from JSON string.
bool computeDependencyConflicts(storm::dft::storage::DFT< ValueType > &dft, bool useSMT, double solverTimeout)
ApproximationHeuristic
Enum representing the heuristic used for deciding which states to expand.