17 size_t sizeA = ctmcA->getNumberOfStates();
18 size_t sizeB = ctmcB->getNumberOfStates();
19 size_t size = sizeA * sizeB;
25 for (
size_t stateA = 0; stateA < sizeA; ++stateA) {
26 for (
size_t stateB = 0; stateB < sizeB; ++stateB) {
27 STORM_LOG_ASSERT(rowIndex == stateA * sizeB + stateB,
"Row " << rowIndex <<
" is not correct");
29 auto rowA = matrixA.
getRow(stateA);
30 auto itA = rowA.
begin();
31 auto rowB = matrixB.
getRow(stateB);
32 auto itB = rowB.
begin();
35 while (itA != rowA.end() && itA->getColumn() < stateA) {
36 builder.addNextValue(rowIndex, itA->getColumn() * sizeB + stateB, itA->getValue());
41 while (itB != rowB.end()) {
42 builder.addNextValue(rowIndex, stateA * sizeB + itB->getColumn(), itB->getValue());
47 while (itA != rowA.end()) {
48 builder.addNextValue(rowIndex, itA->getColumn() * sizeB + stateB, itA->getValue());
64 for (std::string
const& label : labelingA.
getLabels()) {
68 for (uint64_t entryA : labelingA.
getStates(label)) {
69 for (uint64_t entryB : labelingB.
getStates(label)) {
70 labelStates.
set(entryA * sizeB + entryB);
73 labeling.
addLabel(label, labelStates);
78 for (std::string
const& label : labelingA.
getLabels()) {
79 if (label ==
"init") {
83 for (uint64_t entryA : labelingA.
getStates(label)) {
84 for (uint64_t entryB : labelingB.
getStates(label)) {
85 labelStates.
set(entryA * sizeB + entryB);
88 labeling.
addLabel(label, labelStates);
91 for (uint64_t entry : labelingA.
getStates(label)) {
92 for (
size_t index = entry * sizeB; index < entry * sizeB + sizeB; ++index) {
93 labelStates.
set(index,
true);
96 labeling.
addLabel(label, labelStates);
100 for (std::string
const& label : labelingB.
getLabels()) {
101 if (label ==
"init") {
106 for (uint64_t entry : labelingB.
getStates(label)) {
107 for (
size_t index = 0; index < sizeA; ++index) {
113 for (uint64_t entry : labelingB.
getStates(label)) {
114 for (
size_t index = 0; index < sizeA; ++index) {
115 labelStates.
set(index * sizeB + entry,
true);
118 labeling.
addLabel(label, labelStates);
124 std::shared_ptr<storm::models::sparse::Ctmc<ValueType>> composedCtmc = std::make_shared<storm::models::sparse::Ctmc<ValueType>>(matrixComposed, labeling);