Storm 1.14.0.1
A Modern Probabilistic Model Checker
Loading...
Searching...
No Matches
SignatureRefiner.cpp
Go to the documentation of this file.
2
7
8namespace storm {
9namespace dd {
10namespace bisimulation {
11
12template<storm::dd::DdType DdType, typename ValueType>
14 std::set<storm::expressions::Variable> const& stateRowVariables,
15 std::set<storm::expressions::Variable> const& stateColumnVariables, bool shiftStateVariables,
16 std::set<storm::expressions::Variable> const& nondeterminismVariables,
17 BisimulationOptions const& bisimulationOptions)
18 : manager(&manager) {
19 storm::dd::Bdd<DdType> nonBlockVariablesCube = manager.getBddOne();
20 storm::dd::Bdd<DdType> nondeterminismVariablesCube = manager.getBddOne();
21 for (auto const& var : nondeterminismVariables) {
22 auto cube = manager.getMetaVariable(var).getCube();
23 nonBlockVariablesCube &= cube;
24 nondeterminismVariablesCube &= cube;
25 }
26 for (auto const& var : stateRowVariables) {
27 auto cube = manager.getMetaVariable(var).getCube();
28 nonBlockVariablesCube &= cube;
29 }
30
31 internalRefiner = std::make_unique<InternalSignatureRefiner<DdType, ValueType>>(
32 manager, blockVariable, shiftStateVariables ? stateColumnVariables : stateRowVariables, nondeterminismVariablesCube, nonBlockVariablesCube,
33 InternalSignatureRefinerOptions(shiftStateVariables, bisimulationOptions));
34}
35
36template<storm::dd::DdType DdType, typename ValueType>
38 Signature<DdType, ValueType> const& signature) {
39 Partition<DdType, ValueType> result = internalRefiner->refine(oldPartition, signature);
40 return result;
41}
42
44
48
49} // namespace bisimulation
50} // namespace dd
51} // namespace storm
SignatureRefiner(storm::dd::DdManager< DdType > const &manager, storm::expressions::Variable const &blockVariable, std::set< storm::expressions::Variable > const &stateRowVariables, std::set< storm::expressions::Variable > const &stateColumnVariables, bool shiftStateVariables, std::set< storm::expressions::Variable > const &nondeterminismVariables, BisimulationOptions const &bisimulationOptions)
Partition< DdType, ValueType > refine(Partition< DdType, ValueType > const &oldPartition, Signature< DdType, ValueType > const &signature)