|
@ -85,17 +85,13 @@ namespace storm { |
|
|
assert(!addedStates[state]); |
|
|
assert(!addedStates[state]); |
|
|
auto res = compare(above, below); |
|
|
auto res = compare(above, below); |
|
|
assert(res == ABOVE || res == UNKNOWN); |
|
|
assert(res == ABOVE || res == UNKNOWN); |
|
|
|
|
|
|
|
|
Node *newNode = new Node(); |
|
|
Node *newNode = new Node(); |
|
|
newNode->states = storm::storage::BitVector(numberOfStates); |
|
|
newNode->states = storm::storage::BitVector(numberOfStates); |
|
|
newNode->states.set(state); |
|
|
newNode->states.set(state); |
|
|
|
|
|
|
|
|
setStatesAbove(newNode, above->statesAbove | above->states, false); |
|
|
setStatesAbove(newNode, above->statesAbove | above->states, false); |
|
|
setStatesBelow(newNode, below->statesBelow | below->states, false); |
|
|
setStatesBelow(newNode, below->statesBelow | below->states, false); |
|
|
|
|
|
|
|
|
newNode->statesAbove = above->statesAbove | above->states; |
|
|
|
|
|
newNode->statesBelow = below->statesBelow | below->states; |
|
|
|
|
|
newNode->recentlyAddedAbove = storm::storage::BitVector(above->statesAbove | above->states); |
|
|
|
|
|
newNode->recentlyAddedBelow = storm::storage::BitVector(below->statesBelow | below->states); |
|
|
|
|
|
setStatesBelow(above, state); |
|
|
setStatesBelow(above, state); |
|
|
setStatesAbove(below, state); |
|
|
setStatesAbove(below, state); |
|
|
|
|
|
|
|
@ -134,8 +130,8 @@ namespace storm { |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
void Lattice::addRelationNodes(storm::analysis::Lattice::Node *above, storm::analysis::Lattice::Node * below) { |
|
|
void Lattice::addRelationNodes(storm::analysis::Lattice::Node *above, storm::analysis::Lattice::Node * below) { |
|
|
above->statesBelow |= below->states; |
|
|
|
|
|
below->statesAbove |= above->states; |
|
|
|
|
|
|
|
|
setStatesBelow(above, below->states, true); |
|
|
|
|
|
setStatesAbove(below, above->states, true); |
|
|
auto nodesBelow = getNodesBelow(below); |
|
|
auto nodesBelow = getNodesBelow(below); |
|
|
for (auto itr = nodesBelow.begin(); itr != nodesBelow.end(); ++itr) { |
|
|
for (auto itr = nodesBelow.begin(); itr != nodesBelow.end(); ++itr) { |
|
|
setStatesAbove((*itr), above->states, true); |
|
|
setStatesAbove((*itr), above->states, true); |
|
@ -208,8 +204,6 @@ namespace storm { |
|
|
return addedStates; |
|
|
return addedStates; |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
void Lattice::toString(std::ostream &out) { |
|
|
void Lattice::toString(std::ostream &out) { |
|
|
std::vector<Node*> printedNodes = std::vector<Node*>({}); |
|
|
std::vector<Node*> printedNodes = std::vector<Node*>({}); |
|
|
for (auto itr = nodes.begin(); itr != nodes.end(); ++itr) { |
|
|
for (auto itr = nodes.begin(); itr != nodes.end(); ++itr) { |
|
@ -342,9 +336,5 @@ namespace storm { |
|
|
node->recentlyAddedBelow = storm::storage::BitVector(states); |
|
|
node->recentlyAddedBelow = storm::storage::BitVector(states); |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
} |
|
|
} |
|
|
} |
|
|
} |