|
|
@ -28,30 +28,15 @@ namespace storm { |
|
|
|
if (critical1 == numberOfStates || critical2 == numberOfStates) { |
|
|
|
result.insert(std::pair<storm::analysis::Lattice*, std::set<std::shared_ptr<storm::expressions::BinaryRelationExpression>>>(lattice, emptySet)); |
|
|
|
} else { |
|
|
|
|
|
|
|
//TODO: opruimen
|
|
|
|
storm::expressions::Variable var1 = expressionManager->getVariable(std::to_string(critical1)); |
|
|
|
storm::expressions::Variable var2 = expressionManager->getVariable(std::to_string(critical2)); |
|
|
|
std::set<std::shared_ptr<storm::expressions::BinaryRelationExpression>> assumptions1; |
|
|
|
std::shared_ptr<storm::expressions::BinaryRelationExpression> assumption1 |
|
|
|
= std::make_shared<storm::expressions::BinaryRelationExpression>(storm::expressions::BinaryRelationExpression(*expressionManager, var1.getType(), |
|
|
|
var1.getExpression().getBaseExpressionPointer(), var2.getExpression().getBaseExpressionPointer(), |
|
|
|
storm::expressions::BinaryRelationExpression::RelationType::Greater)); |
|
|
|
assumptions1.insert(assumption1); |
|
|
|
auto lattice1 = new Lattice(lattice); |
|
|
|
auto myMap = (runRecursive(lattice1, assumptions1)); |
|
|
|
result.insert(myMap.begin(), myMap.end()); |
|
|
|
std::set<std::shared_ptr<storm::expressions::BinaryRelationExpression>> assumptions; |
|
|
|
|
|
|
|
std::set<std::shared_ptr<storm::expressions::BinaryRelationExpression>> assumptions2; |
|
|
|
std::shared_ptr<storm::expressions::BinaryRelationExpression> assumption2 |
|
|
|
= std::make_shared<storm::expressions::BinaryRelationExpression>(storm::expressions::BinaryRelationExpression(*expressionManager, var2.getType(), |
|
|
|
var2.getExpression().getBaseExpressionPointer(), var1.getExpression().getBaseExpressionPointer(), |
|
|
|
storm::expressions::BinaryRelationExpression::RelationType::Greater)); |
|
|
|
assumptions2.insert(assumption2); |
|
|
|
auto myMap = createAssumptions(var1, var2, lattice, assumptions); |
|
|
|
result.insert(myMap.begin(), myMap.end()); |
|
|
|
|
|
|
|
auto lattice2 = new Lattice(lattice); |
|
|
|
auto myMap2 = (runRecursive(lattice2, assumptions2)); |
|
|
|
result.insert(myMap2.begin(), myMap2.end()); |
|
|
|
myMap = createAssumptions(var2, var1, lattice, assumptions); |
|
|
|
result.insert(myMap.begin(), myMap.end()); |
|
|
|
} |
|
|
|
return result; |
|
|
|
} |
|
|
@ -67,29 +52,26 @@ namespace storm { |
|
|
|
storm::expressions::Variable var1 = expressionManager->getVariable(std::to_string(std::get<1>(criticalPair))); |
|
|
|
storm::expressions::Variable var2 = expressionManager->getVariable(std::to_string(std::get<2>(criticalPair))); |
|
|
|
|
|
|
|
std::set<std::shared_ptr<storm::expressions::BinaryRelationExpression>> assumptions1 = std::set<std::shared_ptr<storm::expressions::BinaryRelationExpression>>(assumptions); |
|
|
|
std::shared_ptr<storm::expressions::BinaryRelationExpression> assumption1 = std::make_shared<storm::expressions::BinaryRelationExpression>(storm::expressions::BinaryRelationExpression(*expressionManager, var1.getType(), |
|
|
|
var1.getExpression().getBaseExpressionPointer(), var2.getExpression().getBaseExpressionPointer(), |
|
|
|
storm::expressions::BinaryRelationExpression::RelationType::Greater)); |
|
|
|
assumptions1.insert(assumption1); |
|
|
|
auto lattice1 = new Lattice(lattice); |
|
|
|
auto myMap = (runRecursive(lattice1, assumptions1)); |
|
|
|
auto myMap = createAssumptions(var1, var2, lattice, assumptions); |
|
|
|
result.insert(myMap.begin(), myMap.end()); |
|
|
|
|
|
|
|
|
|
|
|
std::set<std::shared_ptr<storm::expressions::BinaryRelationExpression>> assumptions2 = assumptions; |
|
|
|
std::shared_ptr<storm::expressions::BinaryRelationExpression> assumption2 = std::make_shared<storm::expressions::BinaryRelationExpression>(storm::expressions::BinaryRelationExpression(*expressionManager, var1.getType(), |
|
|
|
var2.getExpression().getBaseExpressionPointer(), var1.getExpression().getBaseExpressionPointer(), |
|
|
|
storm::expressions::BinaryRelationExpression::RelationType::Greater)) ; |
|
|
|
assumptions2.insert(assumption2); |
|
|
|
auto lattice2 = new Lattice(lattice); |
|
|
|
myMap = (runRecursive(lattice2, assumptions2)); |
|
|
|
myMap = createAssumptions(var2, var1, lattice, assumptions); |
|
|
|
result.insert(myMap.begin(), myMap.end()); |
|
|
|
} |
|
|
|
|
|
|
|
return result; |
|
|
|
} |
|
|
|
|
|
|
|
template <typename ValueType> |
|
|
|
std::map<storm::analysis::Lattice*, std::set<std::shared_ptr<storm::expressions::BinaryRelationExpression>>> AssumptionMaker<ValueType>::createAssumptions(storm::expressions::Variable var1, storm::expressions::Variable var2, storm::analysis::Lattice* lattice, std::set<std::shared_ptr<storm::expressions::BinaryRelationExpression>> assumptions) { |
|
|
|
std::set<std::shared_ptr<storm::expressions::BinaryRelationExpression>> assumptions1 = std::set<std::shared_ptr<storm::expressions::BinaryRelationExpression>>(assumptions); |
|
|
|
std::shared_ptr<storm::expressions::BinaryRelationExpression> assumption1 |
|
|
|
= std::make_shared<storm::expressions::BinaryRelationExpression>(storm::expressions::BinaryRelationExpression(*expressionManager, var1.getType(), |
|
|
|
var1.getExpression().getBaseExpressionPointer(), var2.getExpression().getBaseExpressionPointer(), |
|
|
|
storm::expressions::BinaryRelationExpression::RelationType::Greater)); |
|
|
|
assumptions1.insert(assumption1); |
|
|
|
auto lattice1 = new Lattice(lattice); |
|
|
|
return (runRecursive(lattice1, assumptions1)); |
|
|
|
} |
|
|
|
|
|
|
|
template class AssumptionMaker<storm::RationalFunction>; |
|
|
|
} |
|
|
|