111 changed files with 802 additions and 414 deletions
-
4src/storm-cli-utilities/cli.cpp
-
2src/storm-cli-utilities/model-handling.h
-
6src/storm-cli-utilities/resources.h
-
2src/storm-conv/api/storm-conv.cpp
-
2src/storm-counterexamples/counterexamples/PathCounterexample.cpp
-
89src/storm-dft-cli/storm-dft.cpp
-
51src/storm-dft/api/storm-dft.h
-
50src/storm-dft/builder/DFTBuilder.cpp
-
8src/storm-dft/builder/DFTBuilder.h
-
31src/storm-dft/builder/ExplicitDFTModelBuilder.cpp
-
7src/storm-dft/generator/DftNextStateGenerator.cpp
-
66src/storm-dft/modelchecker/dft/DFTASFChecker.cpp
-
2src/storm-dft/modelchecker/dft/DFTModelChecker.cpp
-
2src/storm-dft/parser/DFTGalileoParser.cpp
-
2src/storm-dft/parser/DFTJsonParser.cpp
-
9src/storm-dft/settings/modules/FaultTreeSettings.cpp
-
8src/storm-dft/settings/modules/FaultTreeSettings.h
-
39src/storm-dft/storage/dft/DFT.cpp
-
30src/storm-dft/storage/dft/DFT.h
-
42src/storm-dft/storage/dft/DFTElementType.h
-
15src/storm-dft/storage/dft/DFTElements.h
-
52src/storm-dft/storage/dft/DFTIsomorphism.h
-
29src/storm-dft/storage/dft/DFTState.cpp
-
11src/storm-dft/storage/dft/DFTState.h
-
24src/storm-dft/storage/dft/DftJsonExporter.cpp
-
16src/storm-dft/storage/dft/elements/BEConst.cpp
-
8src/storm-dft/storage/dft/elements/BEConst.h
-
24src/storm-dft/storage/dft/elements/BEExponential.cpp
-
16src/storm-dft/storage/dft/elements/BEExponential.h
-
20src/storm-dft/storage/dft/elements/BESamples.cpp
-
74src/storm-dft/storage/dft/elements/BESamples.h
-
33src/storm-dft/storage/dft/elements/DFTBE.cpp
-
45src/storm-dft/storage/dft/elements/DFTBE.h
-
22src/storm-dft/transformations/DftToGspnTransformator.cpp
-
7src/storm-dft/transformations/DftToGspnTransformator.h
-
65src/storm-dft/transformations/DftTransformator.cpp
-
18src/storm-dft/utility/FDEPConflictFinder.cpp
-
8src/storm-dft/utility/FailureBoundFinder.cpp
-
69src/storm-dft/utility/RelevantEvents.h
-
2src/storm-gspn/api/storm-gspn.cpp
-
3src/storm-gspn/parser/GreatSpnEditorProjectParser.cpp
-
2src/storm-pars-cli/storm-pars.cpp
-
2src/storm-pars/api/export.h
-
2src/storm-pars/api/region.h
-
2src/storm-pars/parser/ParameterRegionParser.cpp
-
2src/storm-parsers/parser/AtomicPropositionLabelingParser.cpp
-
2src/storm-parsers/parser/AutoParser.cpp
-
2src/storm-parsers/parser/DeterministicSparseTransitionParser.cpp
-
2src/storm-parsers/parser/DirectEncodingParser.cpp
-
2src/storm-parsers/parser/FormulaParser.cpp
-
2src/storm-parsers/parser/ImcaMarkovAutomatonParser.cpp
-
2src/storm-parsers/parser/JaniParser.cpp
-
2src/storm-parsers/parser/MappedFile.cpp
-
2src/storm-parsers/parser/MarkovAutomatonSparseTransitionParser.cpp
-
2src/storm-parsers/parser/NondeterministicSparseTransitionParser.cpp
-
2src/storm-parsers/parser/PrismParser.cpp
-
2src/storm-parsers/parser/ReadValues.h
-
2src/storm-parsers/parser/SparseChoiceLabelingParser.cpp
-
2src/storm-parsers/parser/SparseItemLabelingParser.cpp
-
2src/storm-parsers/parser/SparseStateRewardParser.cpp
-
2src/storm-parsers/util/cstring.cpp
-
12src/storm-parsers/util/cstring.h
-
2src/storm-pgcl-cli/storm-pgcl.cpp
-
2src/storm-pgcl/parser/PgclParser.cpp
-
2src/storm-pomdp/analysis/IterativePolicySearch.cpp
-
2src/storm-pomdp/analysis/OneShotPolicySearch.cpp
-
2src/storm-pomdp/analysis/WinningRegion.cpp
-
2src/storm/abstraction/MenuGameAbstractor.cpp
-
2src/storm/adapters/EigenAdapter.h
-
2src/storm/adapters/GmmxxAdapter.h
-
0src/storm/adapters/eigen.h
-
0src/storm/adapters/gmm.h
-
2src/storm/adapters/sylvan.cpp
-
0src/storm/adapters/sylvan.h
-
6src/storm/api/export.h
-
4src/storm/io/DDEncodingExporter.cpp
-
0src/storm/io/DDEncodingExporter.h
-
2src/storm/io/DirectEncodingExporter.cpp
-
0src/storm/io/DirectEncodingExporter.h
-
2src/storm/io/export.h
-
0src/storm/io/file.h
-
2src/storm/modelchecker/multiobjective/deterministicScheds/DeterministicSchedsParetoExplorer.cpp
-
2src/storm/modelchecker/multiobjective/pcaa/RewardBoundedMdpPcaaWeightVectorChecker.cpp
-
2src/storm/modelchecker/multiobjective/pcaa/SparsePcaaQuery.cpp
-
2src/storm/modelchecker/prctl/helper/SparseDtmcPrctlHelper.cpp
-
2src/storm/modelchecker/prctl/helper/SparseMdpPrctlHelper.cpp
-
2src/storm/models/sparse/DeterministicModel.cpp
-
2src/storm/models/sparse/Model.cpp
-
2src/storm/models/sparse/NondeterministicModel.cpp
-
2src/storm/settings/SettingsManager.cpp
-
2src/storm/solver/EigenLinearEquationSolver.h
-
2src/storm/solver/GmmxxLinearEquationSolver.cpp
-
2src/storm/solver/GmmxxLinearEquationSolver.h
-
2src/storm/solver/SmtlibSmtSolver.cpp
-
2src/storm/solver/Z3LpSolver.cpp
-
2src/storm/storage/Qvbs.cpp
-
2src/storm/storage/dd/Odd.cpp
-
2src/storm/storage/dd/sylvan/InternalSylvanBdd.h
-
2src/storm/storage/dd/sylvan/InternalSylvanDdManager.cpp
-
2src/storm/storage/dd/sylvan/SylvanAddIterator.h
@ -1,13 +1,18 @@ |
|||||
#pragma once |
#pragma once |
||||
|
|
||||
#include "storm-dft/storage/dft/elements/BEExponential.h" |
|
||||
|
// BE types |
||||
#include "storm-dft/storage/dft/elements/BEConst.h" |
#include "storm-dft/storage/dft/elements/BEConst.h" |
||||
|
#include "storm-dft/storage/dft/elements/BEExponential.h" |
||||
|
#include "storm-dft/storage/dft/elements/BESamples.h" |
||||
|
|
||||
|
// Gates |
||||
#include "storm-dft/storage/dft/elements/DFTAnd.h" |
#include "storm-dft/storage/dft/elements/DFTAnd.h" |
||||
#include "storm-dft/storage/dft/elements/DFTDependency.h" |
|
||||
#include "storm-dft/storage/dft/elements/DFTMutex.h" |
|
||||
#include "storm-dft/storage/dft/elements/DFTOr.h" |
#include "storm-dft/storage/dft/elements/DFTOr.h" |
||||
|
#include "storm-dft/storage/dft/elements/DFTVot.h" |
||||
#include "storm-dft/storage/dft/elements/DFTPand.h" |
#include "storm-dft/storage/dft/elements/DFTPand.h" |
||||
#include "storm-dft/storage/dft/elements/DFTPor.h" |
#include "storm-dft/storage/dft/elements/DFTPor.h" |
||||
#include "storm-dft/storage/dft/elements/DFTSeq.h" |
|
||||
#include "storm-dft/storage/dft/elements/DFTSpare.h" |
#include "storm-dft/storage/dft/elements/DFTSpare.h" |
||||
#include "storm-dft/storage/dft/elements/DFTVot.h" |
|
||||
|
|
||||
|
#include "storm-dft/storage/dft/elements/DFTDependency.h" |
||||
|
#include "storm-dft/storage/dft/elements/DFTSeq.h" |
||||
|
#include "storm-dft/storage/dft/elements/DFTMutex.h" |
@ -0,0 +1,16 @@ |
|||||
|
#include "BEConst.h"
|
||||
|
|
||||
|
namespace storm { |
||||
|
namespace storage { |
||||
|
|
||||
|
template <typename ValueType> |
||||
|
ValueType BEConst<ValueType>::getUnreliability(ValueType time) const { |
||||
|
return failed() ? storm::utility::one<ValueType>() : storm::utility::zero<ValueType>(); |
||||
|
} |
||||
|
|
||||
|
// Explicitly instantiate the class.
|
||||
|
template class BEConst<double>; |
||||
|
template class BEConst<RationalFunction>; |
||||
|
|
||||
|
} // namespace storage
|
||||
|
} // namespace storm
|
@ -0,0 +1,24 @@ |
|||||
|
#include "BEExponential.h"
|
||||
|
|
||||
|
#include "storm/exceptions/NotSupportedException.h"
|
||||
|
|
||||
|
namespace storm { |
||||
|
namespace storage { |
||||
|
|
||||
|
template <> |
||||
|
double BEExponential<double>::getUnreliability(double time) const { |
||||
|
// 1 - e^(-lambda * t)
|
||||
|
return 1 - exp(-this->activeFailureRate() * time); |
||||
|
} |
||||
|
|
||||
|
template <typename ValueType> |
||||
|
ValueType BEExponential<ValueType>::getUnreliability(ValueType time) const { |
||||
|
STORM_LOG_THROW(false, storm::exceptions::NotSupportedException, "Computing cumulative failure probability not supported for this data type."); |
||||
|
} |
||||
|
|
||||
|
// Explicitly instantiate the class.
|
||||
|
template class BEExponential<double>; |
||||
|
template class BEExponential<RationalFunction>; |
||||
|
|
||||
|
} |
||||
|
} |
@ -0,0 +1,20 @@ |
|||||
|
#include "BESamples.h"
|
||||
|
|
||||
|
#include "storm/exceptions/InvalidArgumentException.h"
|
||||
|
|
||||
|
namespace storm { |
||||
|
namespace storage { |
||||
|
|
||||
|
template <typename ValueType> |
||||
|
ValueType BESamples<ValueType>::getUnreliability(ValueType time) const { |
||||
|
auto iter = mActiveSamples.find(time); |
||||
|
STORM_LOG_THROW(iter!= mActiveSamples.end(), storm::exceptions::InvalidArgumentException, "No sample for time point " << time << " given."); |
||||
|
return iter->second; |
||||
|
} |
||||
|
|
||||
|
// Explicitly instantiate the class.
|
||||
|
template class BESamples<double>; |
||||
|
template class BESamples<RationalFunction>; |
||||
|
|
||||
|
} |
||||
|
} |
@ -0,0 +1,74 @@ |
|||||
|
#pragma once |
||||
|
|
||||
|
#include "DFTBE.h" |
||||
|
|
||||
|
#include <map> |
||||
|
|
||||
|
namespace storm { |
||||
|
namespace storage { |
||||
|
|
||||
|
/*! |
||||
|
* BE where the failure distribution is defined by samples. |
||||
|
* A sample defines the unreliability at a time point (i.e. the cumulative distribution function F(x)). |
||||
|
*/ |
||||
|
template<typename ValueType> |
||||
|
class BESamples : public DFTBE<ValueType> { |
||||
|
|
||||
|
public: |
||||
|
/*! |
||||
|
* Constructor. |
||||
|
* @param id Id. |
||||
|
* @param name Name. |
||||
|
* @param activeSamples Samples defining unreliability in active state for certain time points. |
||||
|
*/ |
||||
|
BESamples(size_t id, std::string const& name, std::map<ValueType, ValueType> activeSamples) : |
||||
|
DFTBE<ValueType>(id, name), mActiveSamples(activeSamples) { |
||||
|
STORM_LOG_ASSERT(activeSamples.size() > 0, "At least one sample should be given."); |
||||
|
STORM_LOG_ASSERT(this->canFail(), "At least one sample should have a non-zero probability."); |
||||
|
} |
||||
|
|
||||
|
BEType beType() const override { |
||||
|
return BEType::SAMPLES; |
||||
|
} |
||||
|
|
||||
|
/*! |
||||
|
* Return samples defining unreliability in active state. |
||||
|
* @return Samples for active state. |
||||
|
*/ |
||||
|
std::map<ValueType, ValueType> const& activeSamples() const { |
||||
|
return mActiveSamples; |
||||
|
} |
||||
|
|
||||
|
ValueType getUnreliability(ValueType time) const override; |
||||
|
|
||||
|
bool canFail() const override { |
||||
|
// At least one sample is not zero |
||||
|
for (auto const& sample : mActiveSamples) { |
||||
|
if (!storm::utility::isZero(sample.second)) { |
||||
|
return true; |
||||
|
} |
||||
|
} |
||||
|
return true; |
||||
|
} |
||||
|
|
||||
|
bool isTypeEqualTo(DFTElement<ValueType> const& other) const override { |
||||
|
if (!DFTBE<ValueType>::isTypeEqualTo(other)) { |
||||
|
return false; |
||||
|
} |
||||
|
|
||||
|
auto& otherBE = static_cast<BESamples<ValueType> const&>(other); |
||||
|
return mActiveSamples.size() == otherBE.activeSamples().size() && std::equal(mActiveSamples.begin(), mActiveSamples.end(), otherBE.activeSamples().begin()); |
||||
|
} |
||||
|
|
||||
|
std::string toString() const override { |
||||
|
std::stringstream stream; |
||||
|
stream << "{" << this->name() << "} BE samples(" << this->activeSamples().size() << " samples)"; |
||||
|
return stream.str(); |
||||
|
} |
||||
|
|
||||
|
private: |
||||
|
std::map<ValueType, ValueType> mActiveSamples; |
||||
|
}; |
||||
|
|
||||
|
} |
||||
|
} |
@ -0,0 +1,33 @@ |
|||||
|
#include "DFTBE.h"
|
||||
|
|
||||
|
#include "storm-dft/storage/dft/elements/DFTGate.h"
|
||||
|
#include "storm-dft/storage/dft/elements/DFTDependency.h"
|
||||
|
|
||||
|
namespace storm { |
||||
|
namespace storage { |
||||
|
|
||||
|
template <typename ValueType> |
||||
|
void DFTBE<ValueType>::extendSubDft(std::set<size_t>& elemsInSubtree, std::vector<size_t> const& parentsOfSubRoot, bool blockParents, bool sparesAsLeaves) const { |
||||
|
if (elemsInSubtree.count(this->id())) { |
||||
|
return; |
||||
|
} |
||||
|
DFTElement<ValueType>::extendSubDft(elemsInSubtree, parentsOfSubRoot, blockParents, sparesAsLeaves); |
||||
|
if (elemsInSubtree.empty()) { |
||||
|
// Parent in the subDFT, i.e., it is *not* a subDFT
|
||||
|
return; |
||||
|
} |
||||
|
for (auto const& inDep : ingoingDependencies()) { |
||||
|
inDep->extendSubDft(elemsInSubtree, parentsOfSubRoot, blockParents, sparesAsLeaves); |
||||
|
if (elemsInSubtree.empty()) { |
||||
|
// Parent in the subDFT, i.e., it is *not* a subDFT
|
||||
|
return; |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
// Explicitly instantiate the class.
|
||||
|
template class DFTBE<double>; |
||||
|
template class DFTBE<RationalFunction>; |
||||
|
|
||||
|
} |
||||
|
} |
@ -0,0 +1,69 @@ |
|||||
|
#pragma once |
||||
|
|
||||
|
#include "storm-dft/storage/dft/DFT.h" |
||||
|
#include "storm-dft/settings/modules/FaultTreeSettings.h" |
||||
|
|
||||
|
namespace storm { |
||||
|
namespace utility { |
||||
|
|
||||
|
/*! |
||||
|
* Get relevant event names from labels in properties. |
||||
|
* |
||||
|
* @param dft DFT. |
||||
|
* @param properties List of properties. All events occurring in a property are relevant. |
||||
|
* @return List of relevant event names. |
||||
|
*/ |
||||
|
template <typename ValueType> |
||||
|
std::vector<std::string> getRelevantEventNames(storm::storage::DFT<ValueType> const& dft, std::vector<std::shared_ptr<storm::logic::Formula const>> const& properties) { |
||||
|
// Get necessary labels from properties |
||||
|
std::vector<std::shared_ptr<storm::logic::AtomicLabelFormula const>> atomicLabels; |
||||
|
for (auto property : properties) { |
||||
|
property->gatherAtomicLabelFormulas(atomicLabels); |
||||
|
} |
||||
|
// Add relevant event names from properties |
||||
|
std::vector<std::string> relevantEventNames; |
||||
|
for (auto atomic : atomicLabels) { |
||||
|
std::string label = atomic->getLabel(); |
||||
|
if (label == "failed" or label == "skipped") { |
||||
|
// Ignore as these label will always be added if necessary |
||||
|
} else { |
||||
|
// Get name of event |
||||
|
if (boost::ends_with(label, "_failed")) { |
||||
|
relevantEventNames.push_back(label.substr(0, label.size() - 7)); |
||||
|
} else if (boost::ends_with(label, "_dc")) { |
||||
|
relevantEventNames.push_back(label.substr(0, label.size() - 3)); |
||||
|
} else if (label.find("_claimed_") != std::string::npos) { |
||||
|
STORM_LOG_THROW(storm::settings::getModule<storm::settings::modules::FaultTreeSettings>().isAddLabelsClaiming(), storm::exceptions::InvalidArgumentException, "Claiming labels will not be exported but are required for label '" << label << "'. Try setting --labels-claiming."); |
||||
|
} else { |
||||
|
STORM_LOG_THROW(false, storm::exceptions::InvalidArgumentException, "Label '" << label << "' not known."); |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
return relevantEventNames; |
||||
|
} |
||||
|
|
||||
|
/*! |
||||
|
* Get relevant event id from relevant event name. |
||||
|
* |
||||
|
* @param dft DFT. |
||||
|
* @param relevantEventNames Names of relevant events. |
||||
|
* @return Set of relevant event ids. |
||||
|
*/ |
||||
|
template <typename ValueType> |
||||
|
std::set<size_t> getRelevantEvents(storm::storage::DFT<ValueType> const& dft, std::vector<std::string> const& relevantEventNames) { |
||||
|
// Set relevant elements |
||||
|
std::set<size_t> relevantEvents; // Per default no event (except the toplevel event) is relevant |
||||
|
for (std::string const& relevantName : relevantEventNames) { |
||||
|
if (relevantName == "all") { |
||||
|
// All events are relevant |
||||
|
return dft.getAllIds(); |
||||
|
} else { |
||||
|
// Find and add corresponding event id |
||||
|
relevantEvents.insert(dft.getIndex(relevantName)); |
||||
|
} |
||||
|
} |
||||
|
return relevantEvents; |
||||
|
} |
||||
|
|
||||
|
} // namespace utility |
||||
|
} // namespace storm |
@ -1,4 +1,4 @@ |
|||||
#include "storm/utility/cstring.h"
|
|
||||
|
#include "storm-parsers/util/cstring.h"
|
||||
|
|
||||
#include <cstring>
|
#include <cstring>
|
||||
|
|
@ -1,4 +1,4 @@ |
|||||
#include "storm/utility/sylvan.h"
|
|
||||
|
#include "storm/adapters/sylvan.h"
|
||||
|
|
||||
namespace storm { |
namespace storm { |
||||
namespace dd { |
namespace dd { |
@ -1,5 +1,5 @@ |
|||||
#include "storm/utility/DDEncodingExporter.h"
|
|
||||
#include "storm/utility/file.h"
|
|
||||
|
#include "storm/io/DDEncodingExporter.h"
|
||||
|
#include "storm/io/file.h"
|
||||
#include "storm/models/symbolic/StandardRewardModel.h"
|
#include "storm/models/symbolic/StandardRewardModel.h"
|
||||
|
|
||||
namespace storm { |
namespace storm { |
@ -1,5 +1,5 @@ |
|||||
#include <storm/exceptions/NotSupportedException.h>
|
#include <storm/exceptions/NotSupportedException.h>
|
||||
#include "DirectEncodingExporter.h"
|
|
||||
|
#include "storm/io/DirectEncodingExporter.h"
|
||||
|
|
||||
#include "storm/adapters/RationalFunctionAdapter.h"
|
#include "storm/adapters/RationalFunctionAdapter.h"
|
||||
#include "storm/utility/constants.h"
|
#include "storm/utility/constants.h"
|
Some files were not shown because too many files changed in this diff
Write
Preview
Loading…
Cancel
Save
Reference in new issue