Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
62 commits
Select commit Hold shift + click to select a range
83d4b50
Add ValueType to ExplicitQualitativeCheckResult
lukovdm Nov 26, 2025
ee9f051
Remember scheduler from quantitative scheduler when applying bounds
lukovdm Nov 26, 2025
1868e44
Export schedulers for qualitative models in the cli
lukovdm Nov 26, 2025
0da7fd8
Fix test
lukovdm Dec 3, 2025
798d3e4
Format
lukovdm Dec 3, 2025
73e73d8
remove weird git thing
lukovdm Dec 3, 2025
f3f81e1
fix one ValueType
lukovdm Dec 3, 2025
2bf52e2
Merge branch 'master' into AddSchedulerToExplicitQualitativeCheckResult
lukovdm Mar 4, 2026
02350c2
Refactor ExplicitQualitativeCheckResult constructor to use std::optio…
lukovdm Mar 4, 2026
a82759a
fix some new location and swich to std::optional
lukovdm Mar 5, 2026
f07309c
format
lukovdm Mar 5, 2026
4be794c
Update ExplicitQualitativeCheckResult usage to use SolutionType and i…
lukovdm Mar 6, 2026
7e57f56
Fix other qualitative check result value types
lukovdm Mar 6, 2026
c726836
Add exact Intervals and bounded model checking of intervals
lukovdm Mar 10, 2026
73413d7
Add GenerateMonitorVerifier module and update ObservationTraceUnfolder
lukovdm Mar 10, 2026
1ba0f32
Add conditional model checking algs
lukovdm Mar 10, 2026
1e81ea3
Move conditional code for later commit.
lukovdm Mar 11, 2026
68a67f0
format
lukovdm Mar 11, 2026
981c965
Enhance support for RationalNumber in AddUncertainty transformer and …
lukovdm Mar 11, 2026
3b7de96
format
lukovdm Mar 11, 2026
0e00e3e
Merge branch 'exactIntervals' into monitor-verification
lukovdm Mar 11, 2026
b291640
Merge branch 'exactIntervals' into conditional-model-checking
lukovdm Mar 11, 2026
eb3fa03
add back condition code removed in exact inteval
lukovdm Mar 11, 2026
9e7d03e
write ration numbers using string for cln
lukovdm Mar 11, 2026
45f8e78
Merge branch 'exactIntervals' into monitor-verification
lukovdm Mar 11, 2026
2a68d76
Merge branch 'exactIntervals' into conditional-model-checking
lukovdm Mar 11, 2026
4adfc5f
Merge branch 'monitor-verification' into conditional-model-checking
lukovdm Mar 11, 2026
527eb2b
Merge remote-tracking branch 'origin/master' into exactIntervals
lukovdm Mar 19, 2026
c6f16e8
Merge branch 'master' into exactIntervals
lukovdm Mar 19, 2026
21411c7
Refactor AddUncertainty transformer to use ValueType for uncertainty …
lukovdm Mar 19, 2026
1b80a97
Fix logic in AddUncertainty transformer to handle maxSuccessors condi…
lukovdm Mar 19, 2026
82a0bfb
Fix default value of argument not convertable to rational numbers for…
lukovdm Mar 19, 2026
4580bd1
Fix conversion error in robust model checking test
lukovdm Mar 19, 2026
c8ae012
Update makeUncertainAndCheckRational to use storm::RationalNumber for…
lukovdm Mar 19, 2026
db5ae16
Fix test
lukovdm Mar 19, 2026
d2618bd
Use IntervalBaseType in SparseDtmcEliminationModelChecker and correct…
lukovdm Mar 24, 2026
8222dcf
Remove unused IntervalForward includes, interval setting, and adjust …
lukovdm Mar 24, 2026
e30a4ea
add uncertainty resolution mode to multipliers and enable next proper…
lukovdm Apr 1, 2026
d3ce761
Merge branch 'master' into exactIntervals
lukovdm Apr 2, 2026
35a217a
Merge branch 'exactIntervals' into conditional-model-checking
lukovdm Apr 8, 2026
1496050
Add support for RationalInterval in DirectEncodingExporter
lukovdm Apr 9, 2026
d25893d
Merge branch 'master' into conditional-model-checking
lukovdm Apr 17, 2026
9b6f4b3
Fix merge
lukovdm Apr 17, 2026
924c4bb
fix merge 2
lukovdm Apr 17, 2026
a19eb36
One morge change reverted
lukovdm Apr 17, 2026
9be608b
fixed scheduler extraction for trivial case where no target state is …
TheGreatfpmK Dec 5, 2025
2597907
formatting
lukovdm Apr 17, 2026
920a704
Fix bug in scheduler generation for models with initial states not as…
lukovdm Apr 20, 2026
9f193a5
Fix tests and add conditional sub env
lukovdm Apr 20, 2026
1d9839e
missed changes
lukovdm Apr 20, 2026
63f656d
Move conditional tolerance as general field to checktask
lukovdm Apr 21, 2026
c43c368
Remove commented-out code and clean up arbitrary choice comments in c…
lukovdm Apr 21, 2026
683f9f1
Mostly revert "Move conditional tolerance as general field to checktask"
lukovdm Apr 21, 2026
1aec1d3
Fix comments
lukovdm Apr 21, 2026
bb081d9
Change tolerance to precision, add relative flag, add default handlin…
lukovdm Apr 22, 2026
f7c0881
Forgot to commit these
lukovdm Apr 22, 2026
0f3dd99
Fix precision type bug for CLN
lukovdm Apr 22, 2026
513d095
Change type of precision in bisection
lukovdm Apr 22, 2026
acc57d5
Skip assertion for SparseDoubleBisectionAdvancedPtEnvironment in two_…
lukovdm Apr 22, 2026
7986499
Change conditional algorithm setting name
lukovdm Apr 22, 2026
5097e11
Use relative as default in conditional settings.
lukovdm Apr 23, 2026
586de69
Copy model in observation trace unfolder as I got garbage models.
lukovdm Apr 23, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion src/storm-pomdp/transformer/ObservationTraceUnfolder.h
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,7 @@ class ObservationTraceUnfolder {
bool isRestartSemanticsSet() const;

private:
storm::models::sparse::Pomdp<ValueType> const& model;
storm::models::sparse::Pomdp<ValueType> model;
std::vector<ValueType> risk; // TODO reconsider holding this as a reference, but there were some strange bugs
std::shared_ptr<storm::expressions::ExpressionManager>& exprManager;
std::vector<uint32_t> traceSoFar;
Expand Down
1 change: 1 addition & 0 deletions src/storm/environment/SubEnvironment.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -48,6 +48,7 @@ void SubEnvironment<EnvironmentType>::assertInitialized() const {

template class SubEnvironment<InternalEnvironment>;

template class SubEnvironment<ConditionalModelCheckerEnvironment>;
template class SubEnvironment<MultiObjectiveModelCheckerEnvironment>;
template class SubEnvironment<ModelCheckerEnvironment>;

Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
#pragma once

#include "storm/environment/modelchecker/ConditionalModelCheckerEnvironment.h"
#include "storm/environment/modelchecker/ModelCheckerEnvironment.h"
#include "storm/environment/modelchecker/MultiObjectiveModelCheckerEnvironment.h"
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
#include "storm/environment/modelchecker/ConditionalModelCheckerEnvironment.h"

#include "storm/adapters/RationalNumberForward.h"
#include "storm/settings/SettingsManager.h"
#include "storm/settings/modules/ConditionalSettings.h"
#include "storm/utility/constants.h"

namespace storm {

ConditionalModelCheckerEnvironment::ConditionalModelCheckerEnvironment() {
auto const& mcSettings = storm::settings::getModule<storm::settings::modules::ConditionalSettings>();
algorithm = mcSettings.getConditionalAlgorithmSetting();
precision = storm::utility::convertNumber<storm::RationalNumber>(mcSettings.getConditionalPrecision());
relative = !mcSettings.isConditionalPrecisionAbsolute();
precisionSetFromDefault = mcSettings.isConditionalPrecisionSetFromDefaultValue();
}

ConditionalModelCheckerEnvironment::~ConditionalModelCheckerEnvironment() {
// Intentionally left empty
}

ConditionalAlgorithmSetting ConditionalModelCheckerEnvironment::getAlgorithm() const {
return algorithm;
}

void ConditionalModelCheckerEnvironment::setAlgorithm(ConditionalAlgorithmSetting value) {
algorithm = value;
}

storm::RationalNumber ConditionalModelCheckerEnvironment::getPrecision() const {
return precision;
}

void ConditionalModelCheckerEnvironment::setPrecision(storm::RationalNumber const& value, bool setFromDefault) {
precision = value;
precisionSetFromDefault = setFromDefault;
}

bool ConditionalModelCheckerEnvironment::isPrecisionSetFromDefault() const {
return precisionSetFromDefault;
}

bool ConditionalModelCheckerEnvironment::isRelativePrecision() const {
return relative;
}

void ConditionalModelCheckerEnvironment::setRelativePrecision(bool value) {
relative = value;
}

} // namespace storm
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
#pragma once

#include "storm/adapters/RationalNumberAdapter.h"
#include "storm/modelchecker/helper/conditional/ConditionalAlgorithmSetting.h"

namespace storm {

class ConditionalModelCheckerEnvironment {
public:
ConditionalModelCheckerEnvironment();
~ConditionalModelCheckerEnvironment();

ConditionalAlgorithmSetting getAlgorithm() const;
void setAlgorithm(ConditionalAlgorithmSetting value);

storm::RationalNumber getPrecision() const;
bool isPrecisionSetFromDefault() const;
void setPrecision(storm::RationalNumber const& value, bool setFromDefault);

bool isRelativePrecision() const;
void setRelativePrecision(bool value);

private:
ConditionalAlgorithmSetting algorithm;
storm::RationalNumber precision;
bool precisionSetFromDefault;
bool relative;
};

} // namespace storm
19 changes: 9 additions & 10 deletions src/storm/environment/modelchecker/ModelCheckerEnvironment.cpp
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
#include "storm/environment/modelchecker/ModelCheckerEnvironment.h"

#include "storm/environment/modelchecker/ConditionalModelCheckerEnvironment.h"
#include "storm/environment/modelchecker/MultiObjectiveModelCheckerEnvironment.h"

#include "storm/settings/SettingsManager.h"
Expand All @@ -19,28 +20,26 @@ ModelCheckerEnvironment::ModelCheckerEnvironment() {
}
auto const& ioSettings = storm::settings::getModule<storm::settings::modules::IOSettings>();
steadyStateDistributionAlgorithm = ioSettings.getSteadyStateDistributionAlgorithm();

conditionalAlgorithmSetting = mcSettings.getConditionalAlgorithmSetting();
}

ModelCheckerEnvironment::~ModelCheckerEnvironment() {
// Intentionally left empty
}

SteadyStateDistributionAlgorithm ModelCheckerEnvironment::getSteadyStateDistributionAlgorithm() const {
return steadyStateDistributionAlgorithm;
ConditionalModelCheckerEnvironment& ModelCheckerEnvironment::conditional() {
return conditionalModelCheckerEnvironment.get();
}

void ModelCheckerEnvironment::setSteadyStateDistributionAlgorithm(SteadyStateDistributionAlgorithm value) {
steadyStateDistributionAlgorithm = value;
ConditionalModelCheckerEnvironment const& ModelCheckerEnvironment::conditional() const {
return conditionalModelCheckerEnvironment.get();
}

ConditionalAlgorithmSetting ModelCheckerEnvironment::getConditionalAlgorithmSetting() const {
return conditionalAlgorithmSetting;
SteadyStateDistributionAlgorithm ModelCheckerEnvironment::getSteadyStateDistributionAlgorithm() const {
return steadyStateDistributionAlgorithm;
}

void ModelCheckerEnvironment::setConditionalAlgorithmSetting(ConditionalAlgorithmSetting value) {
conditionalAlgorithmSetting = value;
void ModelCheckerEnvironment::setSteadyStateDistributionAlgorithm(SteadyStateDistributionAlgorithm value) {
steadyStateDistributionAlgorithm = value;
}

MultiObjectiveModelCheckerEnvironment& ModelCheckerEnvironment::multi() {
Expand Down
11 changes: 5 additions & 6 deletions src/storm/environment/modelchecker/ModelCheckerEnvironment.h
Original file line number Diff line number Diff line change
@@ -1,42 +1,41 @@
#pragma once

#include <boost/optional.hpp>
#include <memory>
#include <string>

#include "storm/environment/Environment.h"
#include "storm/environment/SubEnvironment.h"
#include "storm/modelchecker/helper/conditional/ConditionalAlgorithmSetting.h"
#include "storm/modelchecker/helper/infinitehorizon/SteadyStateDistributionAlgorithm.h"

namespace storm {

// Forward declare subenvironments
class ConditionalModelCheckerEnvironment;
class MultiObjectiveModelCheckerEnvironment;

class ModelCheckerEnvironment {
public:
ModelCheckerEnvironment();
~ModelCheckerEnvironment();

ConditionalModelCheckerEnvironment& conditional();
ConditionalModelCheckerEnvironment const& conditional() const;

MultiObjectiveModelCheckerEnvironment& multi();
MultiObjectiveModelCheckerEnvironment const& multi() const;

SteadyStateDistributionAlgorithm getSteadyStateDistributionAlgorithm() const;
void setSteadyStateDistributionAlgorithm(SteadyStateDistributionAlgorithm value);

ConditionalAlgorithmSetting getConditionalAlgorithmSetting() const;
void setConditionalAlgorithmSetting(ConditionalAlgorithmSetting value);

bool isLtl2daToolSet() const;
std::string const& getLtl2daTool() const;
void setLtl2daTool(std::string const& value);
void unsetLtl2daTool();

private:
SubEnvironment<ConditionalModelCheckerEnvironment> conditionalModelCheckerEnvironment;
SubEnvironment<MultiObjectiveModelCheckerEnvironment> multiObjectiveModelCheckerEnvironment;
boost::optional<std::string> ltl2daTool;
SteadyStateDistributionAlgorithm steadyStateDistributionAlgorithm;
ConditionalAlgorithmSetting conditionalAlgorithmSetting;
};
} // namespace storm
3 changes: 3 additions & 0 deletions src/storm/io/DirectEncodingExporter.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -329,6 +329,9 @@ template void explicitExportSparseModel<storm::RationalFunction>(std::filesystem
template void explicitExportSparseModel<storm::Interval>(std::filesystem::path const& os,
std::shared_ptr<storm::models::sparse::Model<storm::Interval>> sparseModel,
std::vector<std::string> const& parameters, DirectEncodingExporterOptions const& options);
template void explicitExportSparseModel<storm::RationalInterval>(std::filesystem::path const& os,
std::shared_ptr<storm::models::sparse::Model<storm::RationalInterval>> sparseModel,
std::vector<std::string> const& parameters, DirectEncodingExporterOptions const& options);

template void explicitExportSparseModel<double>(std::ostream& os, std::shared_ptr<storm::models::sparse::Model<double>> sparseModel,
std::vector<std::string> const& parameters, DirectEncodingExporterOptions const& options);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,10 @@ std::ostream& operator<<(std::ostream& stream, ConditionalAlgorithmSetting const
return stream << "bisection";
case ConditionalAlgorithmSetting::BisectionAdvanced:
return stream << "bisection-advanced";
case ConditionalAlgorithmSetting::BisectionPolicyTracking:
return stream << "bisection-pt";
case ConditionalAlgorithmSetting::BisectionAdvancedPolicyTracking:
return stream << "bisection-advanced-pt";
case ConditionalAlgorithmSetting::PolicyIteration:
return stream << "pi";
}
Expand All @@ -27,6 +31,10 @@ ConditionalAlgorithmSetting conditionalAlgorithmSettingFromString(std::string co
return ConditionalAlgorithmSetting::Bisection;
} else if (algorithm == "bisection-advanced") {
return ConditionalAlgorithmSetting::BisectionAdvanced;
} else if (algorithm == "bisection-pt") {
return ConditionalAlgorithmSetting::BisectionPolicyTracking;
} else if (algorithm == "bisection-advanced-pt") {
return ConditionalAlgorithmSetting::BisectionAdvancedPolicyTracking;
} else if (algorithm == "pi") {
return ConditionalAlgorithmSetting::PolicyIteration;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,15 @@
#include "storm/utility/macros.h"

namespace storm {
enum class ConditionalAlgorithmSetting { Default, Restart, Bisection, BisectionAdvanced, PolicyIteration };
enum class ConditionalAlgorithmSetting {
Default,
Restart,
Bisection,
BisectionAdvanced,
BisectionPolicyTracking,
BisectionAdvancedPolicyTracking,
PolicyIteration
};

std::ostream& operator<<(std::ostream& stream, ConditionalAlgorithmSetting const& algorithm);
ConditionalAlgorithmSetting conditionalAlgorithmSettingFromString(std::string const& algorithm);
Expand Down
Loading
Loading