|
|
@ -19,15 +19,21 @@ namespace storm { |
|
|
|
}; |
|
|
|
|
|
|
|
struct JaniProgramGraphBuilderSetting { |
|
|
|
/// Method how to obtain domain for the variables; currently only unrestricted is supported |
|
|
|
JaniProgramGraphVariableDomainMethod variableDomainMethod = JaniProgramGraphVariableDomainMethod::Unrestricted; |
|
|
|
/// If this is true, reward variables will be given special treatment, effectively removing them from the state space. |
|
|
|
/// Disable in order to obtain full state space. |
|
|
|
bool filterRewardVariables = true; |
|
|
|
}; |
|
|
|
|
|
|
|
class JaniProgramGraphBuilder { |
|
|
|
public: |
|
|
|
static unsigned janiVersion; |
|
|
|
|
|
|
|
JaniProgramGraphBuilder(storm::ppg::ProgramGraph const& pg) : programGraph(pg) { |
|
|
|
rewards = programGraph.rewardVariables(); |
|
|
|
JaniProgramGraphBuilder(storm::ppg::ProgramGraph const& pg, JaniProgramGraphBuilderSetting const& pgbs = JaniProgramGraphBuilderSetting()) : programGraph(pg), pgbs(pgbs) { |
|
|
|
if (pgbs.filterRewardVariables) { |
|
|
|
rewards = programGraph.rewardVariables(); |
|
|
|
} |
|
|
|
constants = programGraph.constants(); |
|
|
|
auto boundedVars = programGraph.constantAssigned(); |
|
|
|
for(auto const& v : boundedVars) { |
|
|
@ -41,10 +47,6 @@ namespace storm { |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
//void addVariableRestriction(storm::expressions::Variable const& var, storm::IntegerInterval const& interval ) { |
|
|
|
|
|
|
|
//} |
|
|
|
|
|
|
|
|
|
|
|
void restrictAllVariables(int64_t from, int64_t to) { |
|
|
|
restrictAllVariables(storm::storage::IntegerInterval(from, to)); |
|
|
@ -167,7 +169,7 @@ namespace storm { |
|
|
|
/// Restrictions on variables (provided by users) |
|
|
|
std::map<uint64_t, storm::storage::IntegerInterval> userVariableRestrictions; |
|
|
|
|
|
|
|
/// Locations for variables that would have gone ot o |
|
|
|
/// Locations for variables that would have gone out of bounds |
|
|
|
std::map<uint64_t, uint64_t> varOutOfBoundsLocations; |
|
|
|
std::map<storm::ppg::ProgramLocationIdentifier, uint64_t> janiLocId; |
|
|
|
std::map<storm::ppg::ProgramVariableIdentifier, storm::jani::Variable*> variables; |
|
|
@ -176,6 +178,8 @@ namespace storm { |
|
|
|
std::shared_ptr<storm::expressions::ExpressionManager> expManager; |
|
|
|
/// The program graph to be translated |
|
|
|
storm::ppg::ProgramGraph const& programGraph; |
|
|
|
/// Settings |
|
|
|
JaniProgramGraphBuilderSetting pgbs; |
|
|
|
|
|
|
|
|
|
|
|
}; |
|
|
|