63 for (uint_fast64_t action = 0; action < model.
getTransitionMatrix().getRowCount(); ++action) {
64 ValueType sum = storm::utility::zero<ValueType>();
67 auto const& transition = *transitionIt;
68 sum += transition.getValue();
71 variableSet.insert(transitionVars.begin(), transitionVars.end());
73 if (transition.getValue().denominator().isConstant()) {
74 assert(transition.getValue().denominator().constantPart() != 0);
75 if (transition.getValue().denominator().constantPart() > 0) {
77 wellformedConstraintSet.emplace(
78 (transition.getValue().nominator() - transition.getValue().denominator()).polynomialWithCoefficient(),
79 storm::CompareRelation::LEQ);
81 wellformedConstraintSet.emplace(transition.getValue().nominator().polynomialWithCoefficient(), storm::CompareRelation::GEQ);
82 }
else if (transition.getValue().denominator().constantPart() < 0) {
84 wellformedConstraintSet.emplace(
85 (transition.getValue().nominator() - transition.getValue().denominator()).polynomialWithCoefficient(),
86 storm::CompareRelation::GEQ);
88 wellformedConstraintSet.emplace(transition.getValue().nominator().polynomialWithCoefficient(), storm::CompareRelation::LEQ);
94 wellformedConstraintSet.emplace(transition.getValue().denominator().polynomialWithCoefficient(), storm::CompareRelation::NEQ);
96 wellformedConstraintSet.emplace(
97 carl::FormulaType::ITE,
99 storm::CompareRelation::GREATER),
102 storm::CompareRelation::LEQ));
106 graphPreservingConstraintSet.emplace(transition.getValue().nominator().polynomialWithCoefficient(), storm::CompareRelation::NEQ);
112 wellformedConstraintSet.emplace((sum.nominator() - sum.denominator()).polynomialWithCoefficient(), storm::CompareRelation::EQ);
117 if (!transition.getValue().isConstant()) {
118 if (transition.getValue().denominator().isConstant()) {
119 assert(transition.getValue().denominator().constantPart() != 0);
120 if (transition.getValue().denominator().constantPart() > 0) {
121 wellformedConstraintSet.emplace(transition.getValue().nominator().polynomialWithCoefficient(), storm::CompareRelation::GEQ);
122 }
else if (transition.getValue().denominator().constantPart() < 0) {
123 wellformedConstraintSet.emplace(transition.getValue().nominator().polynomialWithCoefficient(), storm::CompareRelation::LEQ);
125 STORM_LOG_THROW(
false, storm::exceptions::UnexpectedException,
"Should have failed before.");
128 wellformedConstraintSet.emplace(transition.getValue().denominator().polynomialWithCoefficient(), storm::CompareRelation::NEQ);
129 wellformedConstraintSet.emplace(
130 carl::FormulaType::ITE,
132 storm::CompareRelation::GREATER),
136 graphPreservingConstraintSet.emplace(transition.getValue().nominator().polynomialWithCoefficient(), storm::CompareRelation::NEQ);
143 wellformedRequiresNonNegativeEntries(exitRateVector);
146 wellformedRequiresNonNegativeEntries(exitRateVector);
150 if (rewModelEntry.second.hasStateRewards()) {
151 wellformedRequiresNonNegativeEntries(rewModelEntry.second.getStateRewardVector());
153 if (rewModelEntry.second.hasStateActionRewards()) {
154 wellformedRequiresNonNegativeEntries(rewModelEntry.second.getStateActionRewardVector());
156 if (rewModelEntry.second.hasTransitionRewards()) {
157 for (
auto const& entry : rewModelEntry.second.getTransitionRewardMatrix()) {
158 if (!entry.getValue().isConstant()) {
159 if (entry.getValue().denominator().isConstant()) {
160 assert(entry.getValue().denominator().constantPart() != 0);
161 if (entry.getValue().denominator().constantPart() > 0) {
162 wellformedConstraintSet.emplace(entry.getValue().nominator().polynomialWithCoefficient(), storm::CompareRelation::GEQ);
163 }
else if (entry.getValue().denominator().constantPart() < 0) {
164 wellformedConstraintSet.emplace(entry.getValue().nominator().polynomialWithCoefficient(), storm::CompareRelation::LEQ);
166 STORM_LOG_THROW(
false, storm::exceptions::UnexpectedException,
"Should have failed before.");
169 wellformedConstraintSet.emplace(entry.getValue().denominator().polynomialWithCoefficient(), storm::CompareRelation::NEQ);
170 wellformedConstraintSet.emplace(
171 carl::FormulaType::ITE,
173 storm::CompareRelation::GREATER),