Browse Source

Merge remote-tracking branch 'origin/master' into environment

main
TimQu 8 years ago
parent
commit
15a3ad2c2b
  1. 20
      resources/3rdparty/CMakeLists.txt
  2. 2
      src/storm-dft/builder/DftExplorationHeuristic.h
  3. 2
      src/storm-pgcl/storage/pgcl/AbstractStatementVisitor.h
  4. 2
      src/storm-pgcl/storage/ppg/ProgramAction.h
  5. 2
      src/storm/abstraction/MenuGameAbstractor.h
  6. 2
      src/storm/abstraction/QualitativeResult.h
  7. 2
      src/storm/abstraction/QualitativeResultMinMax.h
  8. 2
      src/storm/abstraction/StateSet.h
  9. 2
      src/storm/counterexamples/Counterexample.h
  10. 7
      src/storm/exceptions/BaseException.cpp
  11. 4
      src/storm/exceptions/BaseException.h
  12. 2
      src/storm/logic/FormulaVisitor.h
  13. 1
      src/storm/modelchecker/hints/ModelCheckerHint.h
  14. 2
      src/storm/modelchecker/multiobjective/SparseMultiObjectivePreprocessorTask.h
  15. 2
      src/storm/modelchecker/prctl/helper/DsMpiUpperRewardBoundsComputer.h
  16. 1
      src/storm/models/sparse/ItemLabeling.h
  17. 2
      src/storm/models/sparse/StateAnnotation.h
  18. 1
      src/storm/permissivesched/PermissiveSchedulerComputation.h
  19. 2
      src/storm/settings/ArgumentBase.h
  20. 2
      src/storm/settings/ArgumentValidators.h
  21. 1
      src/storm/solver/GameSolver.h
  22. 2
      src/storm/solver/LinearEquationSolver.h
  23. 2
      src/storm/solver/LpSolver.h
  24. 1
      src/storm/solver/MinMaxLinearEquationSolver.h
  25. 1
      src/storm/solver/SmtSolver.h
  26. 1
      src/storm/solver/SymbolicEquationSolver.h
  27. 4
      src/storm/solver/SymbolicGameSolver.h
  28. 3
      src/storm/solver/SymbolicLinearEquationSolver.h
  29. 12
      src/storm/solver/SymbolicMinMaxLinearEquationSolver.cpp
  30. 3
      src/storm/solver/SymbolicMinMaxLinearEquationSolver.h
  31. 2
      src/storm/solver/TerminationCondition.h
  32. 1
      src/storm/solver/stateelimination/EliminatorBase.h
  33. 2
      src/storm/solver/stateelimination/StatePriorityQueue.h
  34. 4
      src/storm/storage/BitVector.cpp
  35. 2
      src/storm/storage/bisimulation/BisimulationDecomposition.h
  36. 2
      src/storm/storage/dd/bisimulation/QuotientExtractor.cpp
  37. 1
      src/storm/storage/dd/cudd/InternalCuddAdd.h
  38. 3
      src/storm/storage/dd/sylvan/InternalSylvanAdd.h
  39. 1
      src/storm/storage/expressions/CompiledExpression.h
  40. 1
      src/storm/storage/expressions/ExpressionEvaluatorBase.h
  41. 2
      src/storm/storage/expressions/ExpressionVisitor.h
  42. 1
      src/storm/storage/expressions/Type.h
  43. 5
      src/storm/storage/expressions/Variable.cpp
  44. 2
      src/storm/storage/expressions/Variable.h
  45. 2
      src/storm/storage/jani/Composition.h
  46. 2
      src/storm/storage/jani/CompositionVisitor.h
  47. 1
      src/storm/storage/prism/Composition.h
  48. 2
      src/storm/storage/prism/CompositionVisitor.h
  49. 1
      src/storm/storage/prism/Variable.h
  50. 4
      src/storm/utility/solver.h

20
resources/3rdparty/CMakeLists.txt

@ -208,9 +208,7 @@ include(${STORM_3RDPARTY_SOURCE_DIR}/include_cudd.cmake)
############################################################# #############################################################
set(STORM_HAVE_CARL OFF) set(STORM_HAVE_CARL OFF)
set(CARL_MINYEAR 17)
set(CARL_MINMONTH 08)
set(CARL_MINPATCH 0)
set(CARL_MINVERSION "17.08")
if (NOT STORM_FORCE_SHIPPED_CARL) if (NOT STORM_FORCE_SHIPPED_CARL)
if (NOT "${STORM_CARL_DIR_HINT}" STREQUAL "") if (NOT "${STORM_CARL_DIR_HINT}" STREQUAL "")
find_package(carl QUIET PATHS ${STORM_CARL_DIR_HINT} NO_DEFAULT_PATH) find_package(carl QUIET PATHS ${STORM_CARL_DIR_HINT} NO_DEFAULT_PATH)
@ -228,20 +226,8 @@ if(carl_FOUND AND NOT STORM_FORCE_SHIPPED_CARL)
else() else()
message(SEND_ERROR "File ${carlLOCATION} does not exist, did you build carl?") message(SEND_ERROR "File ${carlLOCATION} does not exist, did you build carl?")
endif() endif()
if("${carl_MINORYEARVERSION}" STREQUAL "" OR "${carl_MINORMONTHVERSION}" STREQUAL "" OR "${carl_MAINTENANCEVERSION}" STREQUAL "")
# don't have detailed version information, probably an old version of carl
message(FATAL_ERROR "Carl at ${carlLOCATION} outdated, require ${CARL_MINYEAR}.${CARL_MINMONTH}.${CARL_MINPATCH}, have ${carl_VERSION}")
endif()
if(${carl_MINORYEARVERSION} LESS ${CARL_MINYEAR})
message(SEND_ERROR "Carl outdated, require ${CARL_MINYEAR}.${CARL_MINMONTH}.${CARL_MINPATCH}, have ${carl_VERSION}")
elseif(${carl_MINORYEARVERSION} EQUAL ${CARL_MINYEAR})
if(${carl_MINORMONTHVERSION} LESS ${CARL_MINMONTH})
message(SEND_ERROR "Carl outdated, require ${CARL_MINYEAR}.${CARL_MINMONTH}.${CARL_MINPATCH}, have ${carl_VERSION}")
elseif(${carl_MINORMONTHVERSION} EQUAL ${CARL_MINMONTH})
if(${carl_MAINTENANCEVERSION} LESS ${CARL_MINPATCH})
message(SEND_ERROR "Carl outdated, require ${CARL_MINYEAR}.${CARL_MINMONTH}.${CARL_MINPATCH}, have ${carl_VERSION}")
endif()
endif()
if("${carl_VERSION}" VERSION_LESS "${CARL_MINVERSION}")
message(SEND_ERROR "Carl outdated, require ${CARL_MINVERSION}, have ${carl_VERSION}")
endif() endif()
set(STORM_SHIPPED_CARL OFF) set(STORM_SHIPPED_CARL OFF)

2
src/storm-dft/builder/DftExplorationHeuristic.h

@ -22,6 +22,8 @@ namespace storm {
DFTExplorationHeuristic(size_t id, DFTExplorationHeuristic const& predecessor, ValueType rate, ValueType exitRate); DFTExplorationHeuristic(size_t id, DFTExplorationHeuristic const& predecessor, ValueType rate, ValueType exitRate);
virtual ~DFTExplorationHeuristic() = default;
void setBounds(ValueType lowerBound, ValueType upperBound); void setBounds(ValueType lowerBound, ValueType upperBound);
virtual bool updateHeuristicValues(DFTExplorationHeuristic const& predecessor, ValueType rate, ValueType exitRate) = 0; virtual bool updateHeuristicValues(DFTExplorationHeuristic const& predecessor, ValueType rate, ValueType exitRate) = 0;

2
src/storm-pgcl/storage/pgcl/AbstractStatementVisitor.h

@ -13,6 +13,8 @@ namespace storm {
*/ */
class AbstractStatementVisitor { class AbstractStatementVisitor {
public: public:
virtual ~AbstractStatementVisitor() = default;
// Those functions need to be implemented for every possible // Those functions need to be implemented for every possible
// statement instantiation. // statement instantiation.
virtual void visit(class AssignmentStatement const&) = 0; virtual void visit(class AssignmentStatement const&) = 0;

2
src/storm-pgcl/storage/ppg/ProgramAction.h

@ -14,6 +14,8 @@ namespace storm {
} }
virtual ~ProgramAction() = default;
ProgramActionIdentifier id() const { ProgramActionIdentifier id() const {
return actId; return actId;
} }

2
src/storm/abstraction/MenuGameAbstractor.h

@ -24,6 +24,8 @@ namespace storm {
template <storm::dd::DdType DdType, typename ValueType> template <storm::dd::DdType DdType, typename ValueType>
class MenuGameAbstractor { class MenuGameAbstractor {
public: public:
virtual ~MenuGameAbstractor() = default;
/// Retrieves the abstraction. /// Retrieves the abstraction.
virtual MenuGame<DdType, ValueType> abstract() = 0; virtual MenuGame<DdType, ValueType> abstract() = 0;

2
src/storm/abstraction/QualitativeResult.h

@ -13,6 +13,8 @@ namespace storm {
template <storm::dd::DdType Type> template <storm::dd::DdType Type>
class QualitativeResult { class QualitativeResult {
public: public:
virtual ~QualitativeResult() = default;
virtual storm::dd::Bdd<Type> const& getStates() const = 0; virtual storm::dd::Bdd<Type> const& getStates() const = 0;
}; };

2
src/storm/abstraction/QualitativeResultMinMax.h

@ -10,6 +10,8 @@ namespace storm {
class QualitativeResultMinMax { class QualitativeResultMinMax {
public: public:
virtual ~QualitativeResultMinMax() = default;
virtual bool isSymbolic() const; virtual bool isSymbolic() const;
template<storm::dd::DdType Type> template<storm::dd::DdType Type>

2
src/storm/abstraction/StateSet.h

@ -10,6 +10,8 @@ namespace storm {
class StateSet { class StateSet {
public: public:
virtual ~StateSet() = default;
virtual bool isSymbolic() const; virtual bool isSymbolic() const;
template<storm::dd::DdType Type> template<storm::dd::DdType Type>

2
src/storm/counterexamples/Counterexample.h

@ -7,6 +7,8 @@ namespace storm {
class Counterexample { class Counterexample {
public: public:
virtual ~Counterexample() = default;
virtual void writeToStream(std::ostream& out) const = 0; virtual void writeToStream(std::ostream& out) const = 0;
}; };

7
src/storm/exceptions/BaseException.cpp

@ -19,11 +19,8 @@ namespace storm {
} }
const char* BaseException::what() const NOEXCEPT { const char* BaseException::what() const NOEXCEPT {
std::string errorString = this->stream.str();
char* result = new char[errorString.size() + 1];
result[errorString.size()] = '\0';
std::copy(errorString.begin(), errorString.end(), result);
return result;
errorString = this->stream.str();
return errorString.c_str();
} }
} }
} }

4
src/storm/exceptions/BaseException.h

@ -46,6 +46,10 @@ namespace storm {
protected: protected:
// This stream stores the message of this exception. // This stream stores the message of this exception.
std::stringstream stream; std::stringstream stream;
private:
// storage for the string backing the C string returned by what()
mutable std::string errorString;
}; };
} // namespace exceptions } // namespace exceptions

2
src/storm/logic/FormulaVisitor.h

@ -10,6 +10,8 @@ namespace storm {
class FormulaVisitor { class FormulaVisitor {
public: public:
virtual ~FormulaVisitor() = default;
virtual boost::any visit(AtomicExpressionFormula const& f, boost::any const& data) const = 0; virtual boost::any visit(AtomicExpressionFormula const& f, boost::any const& data) const = 0;
virtual boost::any visit(AtomicLabelFormula const& f, boost::any const& data) const = 0; virtual boost::any visit(AtomicLabelFormula const& f, boost::any const& data) const = 0;
virtual boost::any visit(BinaryBooleanStateFormula const& f, boost::any const& data) const = 0; virtual boost::any visit(BinaryBooleanStateFormula const& f, boost::any const& data) const = 0;

1
src/storm/modelchecker/hints/ModelCheckerHint.h

@ -15,6 +15,7 @@ namespace storm {
class ModelCheckerHint { class ModelCheckerHint {
public: public:
ModelCheckerHint() = default; ModelCheckerHint() = default;
virtual ~ModelCheckerHint() = default;
// Returns true iff this hint does not contain any information. // Returns true iff this hint does not contain any information.
virtual bool isEmpty() const; virtual bool isEmpty() const;

2
src/storm/modelchecker/multiobjective/SparseMultiObjectivePreprocessorTask.h

@ -25,6 +25,8 @@ namespace storm {
// intentionally left empty // intentionally left empty
} }
virtual ~SparseMultiObjectivePreprocessorTask() = default;
virtual void perform(SparseModelType& preprocessedModel) const = 0; virtual void perform(SparseModelType& preprocessedModel) const = 0;
virtual bool requiresEndComponentAnalysis() const { virtual bool requiresEndComponentAnalysis() const {

2
src/storm/modelchecker/prctl/helper/DsMpiUpperRewardBoundsComputer.h

@ -28,6 +28,8 @@ namespace storm {
*/ */
DsMpiDtmcUpperRewardBoundsComputer(storm::storage::SparseMatrix<ValueType> const& transitionMatrix, std::vector<ValueType> const& rewards, std::vector<ValueType> const& oneStepTargetProbabilities); DsMpiDtmcUpperRewardBoundsComputer(storm::storage::SparseMatrix<ValueType> const& transitionMatrix, std::vector<ValueType> const& rewards, std::vector<ValueType> const& oneStepTargetProbabilities);
virtual ~DsMpiDtmcUpperRewardBoundsComputer() = default;
/*! /*!
* Computes upper bounds on the expected rewards. * Computes upper bounds on the expected rewards.
*/ */

1
src/storm/models/sparse/ItemLabeling.h

@ -33,6 +33,7 @@ namespace storm {
ItemLabeling(ItemLabeling const& other) = default; ItemLabeling(ItemLabeling const& other) = default;
ItemLabeling& operator=(ItemLabeling const& other) = default; ItemLabeling& operator=(ItemLabeling const& other) = default;
virtual ~ItemLabeling() = default;
virtual bool isStateLabeling() const; virtual bool isStateLabeling() const;
virtual bool isChoiceLabeling() const; virtual bool isChoiceLabeling() const;

2
src/storm/models/sparse/StateAnnotation.h

@ -9,6 +9,8 @@ namespace storm {
class StateAnnotation { class StateAnnotation {
public: public:
virtual ~StateAnnotation() = default;
virtual std::string getStateInfo(storm::storage::sparse::state_type const& state) const = 0; virtual std::string getStateInfo(storm::storage::sparse::state_type const& state) const = 0;
}; };

1
src/storm/permissivesched/PermissiveSchedulerComputation.h

@ -27,6 +27,7 @@ namespace storm {
} }
virtual ~PermissiveSchedulerComputation() = default;
virtual void calculatePermissiveScheduler(bool lowerBound, double boundary) = 0; virtual void calculatePermissiveScheduler(bool lowerBound, double boundary) = 0;

2
src/storm/settings/ArgumentBase.h

@ -27,6 +27,8 @@ namespace storm {
// Intentionally left empty. // Intentionally left empty.
} }
virtual ~ArgumentBase() = default;
/*! /*!
* Retrieves the type of the argument. * Retrieves the type of the argument.
* *

2
src/storm/settings/ArgumentValidators.h

@ -12,6 +12,8 @@ namespace storm {
template <typename ValueType> template <typename ValueType>
class ArgumentValidator { class ArgumentValidator {
public: public:
virtual ~ArgumentValidator() = default;
/*! /*!
* Checks whether the argument passes the validation. * Checks whether the argument passes the validation.
*/ */

1
src/storm/solver/GameSolver.h

@ -137,6 +137,7 @@ namespace storm {
class GameSolverFactory { class GameSolverFactory {
public: public:
GameSolverFactory(); GameSolverFactory();
virtual ~GameSolverFactory() = default;
virtual std::unique_ptr<GameSolver<ValueType>> create(Environment const& env, storm::storage::SparseMatrix<storm::storage::sparse::state_type> const& player1Matrix, storm::storage::SparseMatrix<ValueType> const& player2Matrix) const; virtual std::unique_ptr<GameSolver<ValueType>> create(Environment const& env, storm::storage::SparseMatrix<storm::storage::sparse::state_type> const& player1Matrix, storm::storage::SparseMatrix<ValueType> const& player2Matrix) const;
virtual std::unique_ptr<GameSolver<ValueType>> create(Environment const& env, storm::storage::SparseMatrix<storm::storage::sparse::state_type>&& player1Matrix, storm::storage::SparseMatrix<ValueType>&& player2Matrix) const; virtual std::unique_ptr<GameSolver<ValueType>> create(Environment const& env, storm::storage::SparseMatrix<storm::storage::sparse::state_type>&& player1Matrix, storm::storage::SparseMatrix<ValueType>&& player2Matrix) const;

2
src/storm/solver/LinearEquationSolver.h

@ -182,6 +182,8 @@ namespace storm {
template<typename ValueType> template<typename ValueType>
class LinearEquationSolverFactory { class LinearEquationSolverFactory {
public: public:
virtual ~LinearEquationSolverFactory() = default;
/*! /*!
* Creates a new linear equation solver instance with the given matrix. * Creates a new linear equation solver instance with the given matrix.
* *

2
src/storm/solver/LpSolver.h

@ -36,6 +36,8 @@ namespace storm {
*/ */
LpSolver(OptimizationDirection const& optDir); LpSolver(OptimizationDirection const& optDir);
virtual ~LpSolver() = default;
/*! /*!
* Registers an upper- and lower-bounded continuous variable, i.e. a variable that may take all real values * Registers an upper- and lower-bounded continuous variable, i.e. a variable that may take all real values
* within its bounds. * within its bounds.

1
src/storm/solver/MinMaxLinearEquationSolver.h

@ -210,6 +210,7 @@ namespace storm {
class MinMaxLinearEquationSolverFactory { class MinMaxLinearEquationSolverFactory {
public: public:
MinMaxLinearEquationSolverFactory(); MinMaxLinearEquationSolverFactory();
virtual ~MinMaxLinearEquationSolverFactory() = default;
std::unique_ptr<MinMaxLinearEquationSolver<ValueType>> create(Environment const& env, storm::storage::SparseMatrix<ValueType> const& matrix) const; std::unique_ptr<MinMaxLinearEquationSolver<ValueType>> create(Environment const& env, storm::storage::SparseMatrix<ValueType> const& matrix) const;
std::unique_ptr<MinMaxLinearEquationSolver<ValueType>> create(Environment const& env, storm::storage::SparseMatrix<ValueType>&& matrix) const; std::unique_ptr<MinMaxLinearEquationSolver<ValueType>> create(Environment const& env, storm::storage::SparseMatrix<ValueType>&& matrix) const;

1
src/storm/solver/SmtSolver.h

@ -36,6 +36,7 @@ namespace storm {
* @param manager The manager responsible for the variables whose value can be requested. * @param manager The manager responsible for the variables whose value can be requested.
*/ */
ModelReference(storm::expressions::ExpressionManager const& manager); ModelReference(storm::expressions::ExpressionManager const& manager);
virtual ~ModelReference() = default;
virtual bool getBooleanValue(storm::expressions::Variable const& variable) const = 0; virtual bool getBooleanValue(storm::expressions::Variable const& variable) const = 0;
virtual int_fast64_t getIntegerValue(storm::expressions::Variable const& variable) const = 0; virtual int_fast64_t getIntegerValue(storm::expressions::Variable const& variable) const = 0;

1
src/storm/solver/SymbolicEquationSolver.h

@ -13,6 +13,7 @@ namespace storm {
public: public:
SymbolicEquationSolver() = default; SymbolicEquationSolver() = default;
SymbolicEquationSolver(storm::dd::Bdd<DdType> const& allRows); SymbolicEquationSolver(storm::dd::Bdd<DdType> const& allRows);
virtual ~SymbolicEquationSolver() = default;
virtual void setLowerBounds(storm::dd::Add<DdType, ValueType> const& lowerBounds); virtual void setLowerBounds(storm::dd::Add<DdType, ValueType> const& lowerBounds);
virtual void setLowerBound(ValueType const& lowerBound); virtual void setLowerBound(ValueType const& lowerBound);

4
src/storm/solver/SymbolicGameSolver.h

@ -38,6 +38,8 @@ namespace storm {
*/ */
SymbolicGameSolver(storm::dd::Add<Type, ValueType> const& A, storm::dd::Bdd<Type> const& allRows, storm::dd::Bdd<Type> const& illegalPlayer1Mask, storm::dd::Bdd<Type> const& illegalPlayer2Mask, std::set<storm::expressions::Variable> const& rowMetaVariables, std::set<storm::expressions::Variable> const& columnMetaVariables, std::vector<std::pair<storm::expressions::Variable, storm::expressions::Variable>> const& rowColumnMetaVariablePairs, std::set<storm::expressions::Variable> const& player1Variables, std::set<storm::expressions::Variable> const& player2Variables); SymbolicGameSolver(storm::dd::Add<Type, ValueType> const& A, storm::dd::Bdd<Type> const& allRows, storm::dd::Bdd<Type> const& illegalPlayer1Mask, storm::dd::Bdd<Type> const& illegalPlayer2Mask, std::set<storm::expressions::Variable> const& rowMetaVariables, std::set<storm::expressions::Variable> const& columnMetaVariables, std::vector<std::pair<storm::expressions::Variable, storm::expressions::Variable>> const& rowColumnMetaVariablePairs, std::set<storm::expressions::Variable> const& player1Variables, std::set<storm::expressions::Variable> const& player2Variables);
virtual ~SymbolicGameSolver() = default;
/*! /*!
* Solves the equation system defined by the game matrix. Note that the game matrix has to be given upon * Solves the equation system defined by the game matrix. Note that the game matrix has to be given upon
* construction time of the solver object. * construction time of the solver object.
@ -108,6 +110,8 @@ namespace storm {
template<storm::dd::DdType Type, typename ValueType> template<storm::dd::DdType Type, typename ValueType>
class SymbolicGameSolverFactory { class SymbolicGameSolverFactory {
public: public:
virtual ~SymbolicGameSolverFactory() = default;
virtual std::unique_ptr<storm::solver::SymbolicGameSolver<Type, ValueType>> create(storm::dd::Add<Type, ValueType> const& A, storm::dd::Bdd<Type> const& allRows, storm::dd::Bdd<Type> const& illegalPlayer1Mask, storm::dd::Bdd<Type> const& illegalPlayer2Mask, std::set<storm::expressions::Variable> const& rowMetaVariables, std::set<storm::expressions::Variable> const& columnMetaVariables, std::vector<std::pair<storm::expressions::Variable, storm::expressions::Variable>> const& rowColumnMetaVariablePairs, std::set<storm::expressions::Variable> const& player1Variables, std::set<storm::expressions::Variable> const& player2Variables) const; virtual std::unique_ptr<storm::solver::SymbolicGameSolver<Type, ValueType>> create(storm::dd::Add<Type, ValueType> const& A, storm::dd::Bdd<Type> const& allRows, storm::dd::Bdd<Type> const& illegalPlayer1Mask, storm::dd::Bdd<Type> const& illegalPlayer2Mask, std::set<storm::expressions::Variable> const& rowMetaVariables, std::set<storm::expressions::Variable> const& columnMetaVariables, std::vector<std::pair<storm::expressions::Variable, storm::expressions::Variable>> const& rowColumnMetaVariablePairs, std::set<storm::expressions::Variable> const& player1Variables, std::set<storm::expressions::Variable> const& player2Variables) const;
}; };

3
src/storm/solver/SymbolicLinearEquationSolver.h

@ -36,6 +36,7 @@ namespace storm {
class SymbolicLinearEquationSolver : public SymbolicEquationSolver<DdType, ValueType> { class SymbolicLinearEquationSolver : public SymbolicEquationSolver<DdType, ValueType> {
public: public:
SymbolicLinearEquationSolver(); SymbolicLinearEquationSolver();
virtual ~SymbolicLinearEquationSolver() = default;
/*! /*!
* Constructs a symbolic linear equation solver with the given meta variable sets and pairs. * Constructs a symbolic linear equation solver with the given meta variable sets and pairs.
@ -119,6 +120,8 @@ namespace storm {
template<storm::dd::DdType DdType, typename ValueType> template<storm::dd::DdType DdType, typename ValueType>
class SymbolicLinearEquationSolverFactory { class SymbolicLinearEquationSolverFactory {
public: public:
virtual ~SymbolicLinearEquationSolverFactory() = default;
std::unique_ptr<storm::solver::SymbolicLinearEquationSolver<DdType, ValueType>> create(Environment const& env, storm::dd::Bdd<DdType> const& allRows, std::set<storm::expressions::Variable> const& rowMetaVariables, std::set<storm::expressions::Variable> const& columnMetaVariables, std::vector<std::pair<storm::expressions::Variable, storm::expressions::Variable>> const& rowColumnMetaVariablePairs) const; std::unique_ptr<storm::solver::SymbolicLinearEquationSolver<DdType, ValueType>> create(Environment const& env, storm::dd::Bdd<DdType> const& allRows, std::set<storm::expressions::Variable> const& rowMetaVariables, std::set<storm::expressions::Variable> const& columnMetaVariables, std::vector<std::pair<storm::expressions::Variable, storm::expressions::Variable>> const& rowColumnMetaVariablePairs) const;
std::unique_ptr<storm::solver::SymbolicLinearEquationSolver<DdType, ValueType>> create(Environment const& env, storm::dd::Add<DdType, ValueType> const& A, storm::dd::Bdd<DdType> const& allRows, std::set<storm::expressions::Variable> const& rowMetaVariables, std::set<storm::expressions::Variable> const& columnMetaVariables, std::vector<std::pair<storm::expressions::Variable, storm::expressions::Variable>> const& rowColumnMetaVariablePairs) const; std::unique_ptr<storm::solver::SymbolicLinearEquationSolver<DdType, ValueType>> create(Environment const& env, storm::dd::Add<DdType, ValueType> const& A, storm::dd::Bdd<DdType> const& allRows, std::set<storm::expressions::Variable> const& rowMetaVariables, std::set<storm::expressions::Variable> const& columnMetaVariables, std::vector<std::pair<storm::expressions::Variable, storm::expressions::Variable>> const& rowColumnMetaVariablePairs) const;

12
src/storm/solver/SymbolicMinMaxLinearEquationSolver.cpp

@ -277,6 +277,7 @@ namespace storm {
if (solver.getEquationProblemFormat(env) == storm::solver::LinearEquationSolverProblemFormat::EquationSystem) { if (solver.getEquationProblemFormat(env) == storm::solver::LinearEquationSolverProblemFormat::EquationSystem) {
schedulerA = diagonal - schedulerA; schedulerA = diagonal - schedulerA;
} }
storm::dd::Add<DdType, ValueType> schedulerB = scheduler.ite(b, scheduler.getDdManager().template getAddZero<ValueType>()).sumAbstract(this->choiceVariables); storm::dd::Add<DdType, ValueType> schedulerB = scheduler.ite(b, scheduler.getDdManager().template getAddZero<ValueType>()).sumAbstract(this->choiceVariables);
// Set the matrix for the solver. // Set the matrix for the solver.
@ -314,9 +315,16 @@ namespace storm {
storm::dd::Bdd<DdType> nextScheduler; storm::dd::Bdd<DdType> nextScheduler;
if (dir == storm::solver::OptimizationDirection::Minimize) { if (dir == storm::solver::OptimizationDirection::Minimize) {
choiceValues += illegalMaskAdd; choiceValues += illegalMaskAdd;
nextScheduler = choiceValues.minAbstractRepresentative(this->choiceVariables);
storm::dd::Add<DdType, ValueType> newStateValues = choiceValues.minAbstract(this->choiceVariables);
storm::dd::Bdd<DdType> improvedStates = newStateValues.less(schedulerX);
nextScheduler = improvedStates.ite(choiceValues.minAbstractRepresentative(this->choiceVariables), scheduler);
} else { } else {
nextScheduler = choiceValues.maxAbstractRepresentative(this->choiceVariables);
storm::dd::Add<DdType, ValueType> newStateValues = choiceValues.maxAbstract(this->choiceVariables);
storm::dd::Bdd<DdType> improvedStates = newStateValues.greater(schedulerX);
nextScheduler = improvedStates.ite(choiceValues.maxAbstractRepresentative(this->choiceVariables), scheduler);
} }
// Check for convergence. // Check for convergence.

3
src/storm/solver/SymbolicMinMaxLinearEquationSolver.h

@ -40,6 +40,7 @@ namespace storm {
class SymbolicMinMaxLinearEquationSolver : public SymbolicEquationSolver<DdType, ValueType> { class SymbolicMinMaxLinearEquationSolver : public SymbolicEquationSolver<DdType, ValueType> {
public: public:
SymbolicMinMaxLinearEquationSolver(); SymbolicMinMaxLinearEquationSolver();
virtual ~SymbolicMinMaxLinearEquationSolver() = default;
/*! /*!
* Constructs a symbolic min/max linear equation solver with the given meta variable sets and pairs. * Constructs a symbolic min/max linear equation solver with the given meta variable sets and pairs.
@ -213,6 +214,8 @@ namespace storm {
template<storm::dd::DdType DdType, typename ValueType> template<storm::dd::DdType DdType, typename ValueType>
class SymbolicMinMaxLinearEquationSolverFactory { class SymbolicMinMaxLinearEquationSolverFactory {
public: public:
virtual ~SymbolicMinMaxLinearEquationSolverFactory() = default;
virtual std::unique_ptr<storm::solver::SymbolicMinMaxLinearEquationSolver<DdType, ValueType>> create(storm::dd::Add<DdType, ValueType> const& A, storm::dd::Bdd<DdType> const& allRows, storm::dd::Bdd<DdType> const& illegalMask, std::set<storm::expressions::Variable> const& rowMetaVariables, std::set<storm::expressions::Variable> const& columnMetaVariables, std::set<storm::expressions::Variable> const& choiceVariables, std::vector<std::pair<storm::expressions::Variable, storm::expressions::Variable>> const& rowColumnMetaVariablePairs) const = 0; virtual std::unique_ptr<storm::solver::SymbolicMinMaxLinearEquationSolver<DdType, ValueType>> create(storm::dd::Add<DdType, ValueType> const& A, storm::dd::Bdd<DdType> const& allRows, storm::dd::Bdd<DdType> const& illegalMask, std::set<storm::expressions::Variable> const& rowMetaVariables, std::set<storm::expressions::Variable> const& columnMetaVariables, std::set<storm::expressions::Variable> const& choiceVariables, std::vector<std::pair<storm::expressions::Variable, storm::expressions::Variable>> const& rowColumnMetaVariablePairs) const = 0;
/*! /*!

2
src/storm/solver/TerminationCondition.h

@ -10,6 +10,8 @@ namespace storm {
template<typename ValueType> template<typename ValueType>
class TerminationCondition { class TerminationCondition {
public: public:
virtual ~TerminationCondition() = default;
/*! /*!
* Retrieves whether the guarantee provided by the solver for the current result is sufficient to terminate. * Retrieves whether the guarantee provided by the solver for the current result is sufficient to terminate.
*/ */

1
src/storm/solver/stateelimination/EliminatorBase.h

@ -19,6 +19,7 @@ namespace storm {
typedef typename FlexibleRowType::iterator FlexibleRowIterator; typedef typename FlexibleRowType::iterator FlexibleRowIterator;
EliminatorBase(storm::storage::FlexibleSparseMatrix<ValueType>& matrix, storm::storage::FlexibleSparseMatrix<ValueType>& transposedMatrix); EliminatorBase(storm::storage::FlexibleSparseMatrix<ValueType>& matrix, storm::storage::FlexibleSparseMatrix<ValueType>& transposedMatrix);
virtual ~EliminatorBase() = default;
void eliminate(uint64_t row, uint64_t column, bool clearRow); void eliminate(uint64_t row, uint64_t column, bool clearRow);

2
src/storm/solver/stateelimination/StatePriorityQueue.h

@ -10,6 +10,8 @@ namespace storm {
class StatePriorityQueue { class StatePriorityQueue {
public: public:
virtual ~StatePriorityQueue() = default;
virtual bool hasNext() const = 0; virtual bool hasNext() const = 0;
virtual storm::storage::sparse::state_type pop() = 0; virtual storm::storage::sparse::state_type pop() = 0;
virtual void update(storm::storage::sparse::state_type state); virtual void update(storm::storage::sparse::state_type state);

4
src/storm/storage/BitVector.cpp

@ -118,6 +118,7 @@ namespace storm {
bitCount = other.bitCount; bitCount = other.bitCount;
if (buckets && bucketCount() != other.bucketCount()) { if (buckets && bucketCount() != other.bucketCount()) {
delete[] buckets; delete[] buckets;
buckets = nullptr;
} }
if (!buckets) { if (!buckets) {
buckets = new uint64_t[other.bucketCount()]; buckets = new uint64_t[other.bucketCount()];
@ -157,6 +158,9 @@ namespace storm {
// Only perform the assignment if the source and target are not identical. // Only perform the assignment if the source and target are not identical.
if (this != &other) { if (this != &other) {
bitCount = other.bitCount; bitCount = other.bitCount;
if (this->buckets) {
delete[] this->buckets;
}
this->buckets = other.buckets; this->buckets = other.buckets;
other.buckets = nullptr; other.buckets = nullptr;
} }

2
src/storm/storage/bisimulation/BisimulationDecomposition.h

@ -181,6 +181,8 @@ namespace storm {
*/ */
BisimulationDecomposition(ModelType const& model, Options const& options); BisimulationDecomposition(ModelType const& model, Options const& options);
virtual ~BisimulationDecomposition() = default;
/*! /*!
* Retrieves the quotient of the model under the computed bisimulation. * Retrieves the quotient of the model under the computed bisimulation.
* *

2
src/storm/storage/dd/bisimulation/QuotientExtractor.cpp

@ -255,6 +255,8 @@ namespace storm {
STORM_LOG_TRACE("Partition has " << partitionBdd.existsAbstract(model.getRowVariables()).getNonZeroCount() << " states in " << this->numberOfBlocks << " blocks."); STORM_LOG_TRACE("Partition has " << partitionBdd.existsAbstract(model.getRowVariables()).getNonZeroCount() << " states in " << this->numberOfBlocks << " blocks.");
} }
virtual ~InternalSparseQuotientExtractorBase() = default;
storm::storage::SparseMatrix<ValueType> extractTransitionMatrix(storm::dd::Add<DdType, ValueType> const& transitionMatrix) { storm::storage::SparseMatrix<ValueType> extractTransitionMatrix(storm::dd::Add<DdType, ValueType> const& transitionMatrix) {
return extractMatrixInternal(transitionMatrix); return extractMatrixInternal(transitionMatrix);
} }

1
src/storm/storage/dd/cudd/InternalCuddAdd.h

@ -67,6 +67,7 @@ namespace storm {
InternalAdd& operator=(InternalAdd<DdType::CUDD, ValueType> const& other) = default; InternalAdd& operator=(InternalAdd<DdType::CUDD, ValueType> const& other) = default;
InternalAdd(InternalAdd<DdType::CUDD, ValueType>&& other) = default; InternalAdd(InternalAdd<DdType::CUDD, ValueType>&& other) = default;
InternalAdd& operator=(InternalAdd<DdType::CUDD, ValueType>&& other) = default; InternalAdd& operator=(InternalAdd<DdType::CUDD, ValueType>&& other) = default;
virtual ~InternalAdd() = default;
/*! /*!
* Retrieves whether the two DDs represent the same function. * Retrieves whether the two DDs represent the same function.

3
src/storm/storage/dd/sylvan/InternalSylvanAdd.h

@ -60,6 +60,7 @@ namespace storm {
InternalAdd& operator=(InternalAdd<DdType::Sylvan, ValueType> const& other) = default; InternalAdd& operator=(InternalAdd<DdType::Sylvan, ValueType> const& other) = default;
InternalAdd(InternalAdd<DdType::Sylvan, ValueType>&& other) = default; InternalAdd(InternalAdd<DdType::Sylvan, ValueType>&& other) = default;
InternalAdd& operator=(InternalAdd<DdType::Sylvan, ValueType>&& other) = default; InternalAdd& operator=(InternalAdd<DdType::Sylvan, ValueType>&& other) = default;
virtual ~InternalAdd() = default;
/*! /*!
* Retrieves whether the two DDs represent the same function. * Retrieves whether the two DDs represent the same function.
@ -732,7 +733,7 @@ namespace storm {
static MTBDD getLeaf(uint_fast64_t value); static MTBDD getLeaf(uint_fast64_t value);
/*! /*!
* Retrieves the sylvan representation of the given storm::RatíonalNumber.
* Retrieves the sylvan representation of the given storm::Rat�onalNumber.
* *
* @return The sylvan node for the given value. * @return The sylvan node for the given value.
*/ */

1
src/storm/storage/expressions/CompiledExpression.h

@ -7,6 +7,7 @@ namespace storm {
class CompiledExpression { class CompiledExpression {
public: public:
virtual ~CompiledExpression() = default;
virtual bool isExprtkCompiledExpression() const; virtual bool isExprtkCompiledExpression() const;
ExprtkCompiledExpression& asExprtkCompiledExpression(); ExprtkCompiledExpression& asExprtkCompiledExpression();

1
src/storm/storage/expressions/ExpressionEvaluatorBase.h

@ -9,6 +9,7 @@ namespace storm {
class ExpressionEvaluatorBase { class ExpressionEvaluatorBase {
public: public:
ExpressionEvaluatorBase(storm::expressions::ExpressionManager const& manager); ExpressionEvaluatorBase(storm::expressions::ExpressionManager const& manager);
virtual ~ExpressionEvaluatorBase() = default;
virtual bool asBool(Expression const& expression) const = 0; virtual bool asBool(Expression const& expression) const = 0;
virtual int_fast64_t asInt(Expression const& expression) const = 0; virtual int_fast64_t asInt(Expression const& expression) const = 0;

2
src/storm/storage/expressions/ExpressionVisitor.h

@ -20,6 +20,8 @@ namespace storm {
class ExpressionVisitor { class ExpressionVisitor {
public: public:
virtual ~ExpressionVisitor() = default;
virtual boost::any visit(IfThenElseExpression const& expression, boost::any const& data) = 0; virtual boost::any visit(IfThenElseExpression const& expression, boost::any const& data) = 0;
virtual boost::any visit(BinaryBooleanFunctionExpression const& expression, boost::any const& data) = 0; virtual boost::any visit(BinaryBooleanFunctionExpression const& expression, boost::any const& data) = 0;
virtual boost::any visit(BinaryNumericalFunctionExpression const& expression, boost::any const& data) = 0; virtual boost::any visit(BinaryNumericalFunctionExpression const& expression, boost::any const& data) = 0;

1
src/storm/storage/expressions/Type.h

@ -15,6 +15,7 @@ namespace storm {
class BaseType { class BaseType {
public: public:
BaseType(); BaseType();
virtual ~BaseType() = default;
/*! /*!
* Retrieves the mask that is associated with this type. * Retrieves the mask that is associated with this type.

5
src/storm/storage/expressions/Variable.cpp

@ -16,7 +16,7 @@ namespace storm {
} }
bool Variable::operator==(Variable const& other) const { bool Variable::operator==(Variable const& other) const {
return manager == other.manager && index == other.index;
return &this->getManager() == &other.getManager() && index == other.index;
} }
bool Variable::operator!=(Variable const& other) const { bool Variable::operator!=(Variable const& other) const {
@ -48,8 +48,7 @@ namespace storm {
} }
ExpressionManager const& Variable::getManager() const { ExpressionManager const& Variable::getManager() const {
STORM_LOG_ASSERT(manager != nullptr, "Manager is null.");
return *manager;
return *manager.lock();
} }
bool Variable::hasBooleanType() const { bool Variable::hasBooleanType() const {

2
src/storm/storage/expressions/Variable.h

@ -138,7 +138,7 @@ namespace storm {
private: private:
// The manager that is responsible for this variable. // The manager that is responsible for this variable.
std::shared_ptr<ExpressionManager const> manager;
std::weak_ptr<ExpressionManager const> manager;
// The index of the variable. // The index of the variable.
uint_fast64_t index; uint_fast64_t index;

2
src/storm/storage/jani/Composition.h

@ -9,6 +9,8 @@ namespace storm {
class Composition { class Composition {
public: public:
virtual ~Composition() = default;
virtual boost::any accept(CompositionVisitor& visitor, boost::any const& data) const = 0; virtual boost::any accept(CompositionVisitor& visitor, boost::any const& data) const = 0;
virtual void write(std::ostream& stream) const = 0; virtual void write(std::ostream& stream) const = 0;

2
src/storm/storage/jani/CompositionVisitor.h

@ -11,6 +11,8 @@ namespace storm {
class CompositionVisitor { class CompositionVisitor {
public: public:
virtual ~CompositionVisitor() = default;
virtual boost::any visit(AutomatonComposition const& composition, boost::any const& data) = 0; virtual boost::any visit(AutomatonComposition const& composition, boost::any const& data) = 0;
virtual boost::any visit(ParallelComposition const& composition, boost::any const& data) = 0; virtual boost::any visit(ParallelComposition const& composition, boost::any const& data) = 0;
}; };

1
src/storm/storage/prism/Composition.h

@ -10,6 +10,7 @@ namespace storm {
class Composition { class Composition {
public: public:
Composition() = default; Composition() = default;
virtual ~Composition() = default;
friend std::ostream& operator<<(std::ostream& stream, Composition const& composition); friend std::ostream& operator<<(std::ostream& stream, Composition const& composition);

2
src/storm/storage/prism/CompositionVisitor.h

@ -15,6 +15,8 @@ namespace storm {
class CompositionVisitor { class CompositionVisitor {
public: public:
virtual ~CompositionVisitor() = default;
virtual boost::any visit(ModuleComposition const& composition, boost::any const& data) = 0; virtual boost::any visit(ModuleComposition const& composition, boost::any const& data) = 0;
virtual boost::any visit(RenamingComposition const& composition, boost::any const& data) = 0; virtual boost::any visit(RenamingComposition const& composition, boost::any const& data) = 0;
virtual boost::any visit(HidingComposition const& composition, boost::any const& data) = 0; virtual boost::any visit(HidingComposition const& composition, boost::any const& data) = 0;

1
src/storm/storage/prism/Variable.h

@ -17,6 +17,7 @@ namespace storm {
Variable& operator=(Variable const& otherVariable)= default; Variable& operator=(Variable const& otherVariable)= default;
Variable(Variable&& otherVariable) = default; Variable(Variable&& otherVariable) = default;
Variable& operator=(Variable&& otherVariable) = default; Variable& operator=(Variable&& otherVariable) = default;
virtual ~Variable() = default;
/*! /*!
* Retrieves the name of the variable. * Retrieves the name of the variable.

4
src/storm/utility/solver.h

@ -59,6 +59,8 @@ namespace storm {
template<typename ValueType> template<typename ValueType>
class LpSolverFactory { class LpSolverFactory {
public: public:
virtual ~LpSolverFactory() = default;
/*! /*!
* Creates a new linear equation solver instance with the given name. * Creates a new linear equation solver instance with the given name.
* *
@ -98,6 +100,8 @@ namespace storm {
class SmtSolverFactory { class SmtSolverFactory {
public: public:
virtual ~SmtSolverFactory() = default;
/*! /*!
* Creates a new SMT solver instance. * Creates a new SMT solver instance.
* *

Loading…
Cancel
Save