You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
73 lines
3.1 KiB
73 lines
3.1 KiB
#ifndef STORM_MODELCHECKER_HYBRIDQUANTITATIVECHECKRESULT_H_
|
|
#define STORM_MODELCHECKER_HYBRIDQUANTITATIVECHECKRESULT_H_
|
|
|
|
#include "src/storage/dd/DdType.h"
|
|
#include "src/storage/dd/CuddAdd.h"
|
|
#include "src/storage/dd/CuddBdd.h"
|
|
#include "src/storage/dd/CuddOdd.h"
|
|
#include "src/modelchecker/results/QuantitativeCheckResult.h"
|
|
#include "src/utility/OsDetection.h"
|
|
|
|
namespace storm {
|
|
namespace modelchecker {
|
|
template<storm::dd::DdType Type>
|
|
class HybridQuantitativeCheckResult : public QuantitativeCheckResult {
|
|
public:
|
|
HybridQuantitativeCheckResult() = default;
|
|
HybridQuantitativeCheckResult(storm::dd::Bdd<Type> const& reachableStates, storm::dd::Bdd<Type> const& symbolicStates, storm::dd::Add<Type> const& symbolicValues, storm::dd::Bdd<Type> const& explicitStates, storm::dd::Odd<Type> const& odd, std::vector<double> const& explicitValues);
|
|
|
|
HybridQuantitativeCheckResult(HybridQuantitativeCheckResult const& other) = default;
|
|
HybridQuantitativeCheckResult& operator=(HybridQuantitativeCheckResult const& other) = default;
|
|
#ifndef WINDOWS
|
|
HybridQuantitativeCheckResult(HybridQuantitativeCheckResult&& other) = default;
|
|
HybridQuantitativeCheckResult& operator=(HybridQuantitativeCheckResult&& other) = default;
|
|
#endif
|
|
|
|
virtual std::unique_ptr<CheckResult> compareAgainstBound(storm::logic::ComparisonType comparisonType, double bound) const override;
|
|
|
|
virtual bool isHybrid() const override;
|
|
virtual bool isResultForAllStates() const override;
|
|
|
|
virtual bool isHybridQuantitativeCheckResult() const override;
|
|
|
|
storm::dd::Bdd<Type> const& getSymbolicStates() const;
|
|
|
|
storm::dd::Add<Type> const& getSymbolicValueVector() const;
|
|
|
|
storm::dd::Bdd<Type> const& getExplicitStates() const;
|
|
|
|
storm::dd::Odd<Type> const& getOdd() const;
|
|
|
|
std::vector<double> const& getExplicitValueVector() const;
|
|
|
|
virtual std::ostream& writeToStream(std::ostream& out) const override;
|
|
|
|
virtual void filter(QualitativeCheckResult const& filter) override;
|
|
|
|
virtual double getMin() const;
|
|
|
|
virtual double getMax() const;
|
|
|
|
private:
|
|
// The set of all reachable states.
|
|
storm::dd::Bdd<Type> reachableStates;
|
|
|
|
// The set of all states whose result is stored symbolically.
|
|
storm::dd::Bdd<Type> symbolicStates;
|
|
|
|
// The symbolic value vector.
|
|
storm::dd::Add<Type> symbolicValues;
|
|
|
|
// The set of all states whose result is stored explicitly.
|
|
storm::dd::Bdd<Type> explicitStates;
|
|
|
|
// The ODD that enables translation of the explicit values to a symbolic format.
|
|
storm::dd::Odd<Type> odd;
|
|
|
|
// The explicit value vector.
|
|
std::vector<double> explicitValues;
|
|
};
|
|
}
|
|
}
|
|
|
|
#endif /* STORM_MODELCHECKER_HYBRIDQUANTITATIVECHECKRESULT_H_ */
|