6namespace modelchecker {
9 std::stringstream sstr;
12 for (
auto const &ovi : varIndices) {
13 sstr <<
"(>= " << varNames.at(varIndex) <<
" " << varNames.at(ovi) <<
") ";
17 for (
auto const &ovi : varIndices) {
18 sstr <<
"(= " << varNames.at(varIndex) <<
" " << varNames.at(ovi) <<
") ";
26 std::shared_ptr<storm::expressions::ExpressionManager> manager)
const {
27 std::vector<storm::expressions::Expression> outerAnd;
28 std::vector<storm::expressions::Expression> innerOr;
29 for (
auto const &ovi : varIndices) {
30 outerAnd.push_back((manager->getVariableExpression(varNames.at(varIndex)) >= manager->getVariableExpression(varNames.at(ovi))));
31 innerOr.push_back((manager->getVariableExpression(varNames.at(varIndex)) == manager->getVariableExpression(varNames.at(ovi))));
33 outerAnd.push_back(disjunction(innerOr));
34 return conjunction(outerAnd);
38 std::stringstream sstr;
41 for (
auto const &ovi : varIndices) {
42 sstr <<
"(<= " << varNames.at(varIndex) <<
" " << varNames.at(ovi) <<
") ";
46 for (
auto const &ovi : varIndices) {
47 sstr <<
"(= " << varNames.at(varIndex) <<
" " << varNames.at(ovi) <<
") ";
55 std::shared_ptr<storm::expressions::ExpressionManager> manager)
const {
56 std::vector<storm::expressions::Expression> outerAnd;
57 std::vector<storm::expressions::Expression> innerOr;
58 for (
auto const &ovi : varIndices) {
59 outerAnd.push_back((manager->getVariableExpression(varNames.at(varIndex)) <= manager->getVariableExpression(varNames.at(ovi))));
60 innerOr.push_back((manager->getVariableExpression(varNames.at(varIndex)) == manager->getVariableExpression(varNames.at(ovi))));
62 outerAnd.push_back(disjunction(innerOr));
63 return conjunction(outerAnd);
67 std::stringstream sstr;
69 sstr <<
"(>= " << varNames.at(varIndex) <<
" " << lowerBound <<
")";
70 sstr <<
"(<= " << varNames.at(varIndex) <<
" " << upperBound <<
")";
76 std::shared_ptr<storm::expressions::ExpressionManager> manager)
const {
77 return (manager->getVariableExpression(varNames.at(varIndex)) >= lowerBound) && (manager->getVariableExpression(varNames.at(varIndex)) <= upperBound);
81 std::stringstream sstr;
82 if (constraints.empty()) {
86 for (
auto const &c : constraints) {
87 sstr <<
" " << c->toSmtlib2(varNames);
95 std::shared_ptr<storm::expressions::ExpressionManager> manager)
const {
96 if (constraints.empty()) {
97 return manager->boolean(
true);
99 std::vector<storm::expressions::Expression> conjuncts;
100 for (
auto const &c : constraints) {
101 conjuncts.push_back(c->toExpression(varNames, manager));
103 return conjunction(conjuncts);
108 std::stringstream sstr;
109 if (constraints.empty()) {
113 for (
auto const &c : constraints) {
114 sstr <<
" " << c->toSmtlib2(varNames);
122 std::shared_ptr<storm::expressions::ExpressionManager> manager)
const {
123 if (constraints.empty()) {
124 return manager->boolean(
false);
126 std::vector<storm::expressions::Expression> disjuncts;
127 for (
auto const &c : constraints) {
128 disjuncts.push_back(c->toExpression(varNames, manager));
130 return disjunction(disjuncts);
135 std::stringstream sstr;
136 sstr <<
"(=> " << lhs->toSmtlib2(varNames) <<
" " << rhs->toSmtlib2(varNames) <<
")";
141 std::shared_ptr<storm::expressions::ExpressionManager> manager)
const {
142 return implies(lhs->toExpression(varNames, manager), rhs->toExpression(varNames, manager));
146 std::stringstream sstr;
147 sstr <<
"(= " << lhs->toSmtlib2(varNames) <<
" " << rhs->toSmtlib2(varNames) <<
")";
152 std::shared_ptr<storm::expressions::ExpressionManager> manager)
const {
153 return iff(lhs->toExpression(varNames, manager), rhs->toExpression(varNames, manager));
157 std::stringstream sstr;
158 sstr << (value ?
"true" :
"false");
163 std::shared_ptr<storm::expressions::ExpressionManager> manager)
const {
164 return manager->boolean(value);
168 std::stringstream sstr;
169 assert(varIndex < varNames.size());
171 sstr << varNames.at(varIndex);
173 sstr <<
"(not " << varNames.at(varIndex) <<
")";
179 std::shared_ptr<storm::expressions::ExpressionManager> manager)
const {
181 return manager->getVariableExpression(varNames.at(varIndex));
183 return !(manager->getVariableExpression(varNames.at(varIndex)));
188 std::stringstream sstr;
189 assert(varIndex < varNames.size());
190 sstr <<
"(= " << varNames.at(varIndex) <<
" " << value <<
")";
195 std::shared_ptr<storm::expressions::ExpressionManager> manager)
const {
196 return manager->getVariableExpression(varNames.at(varIndex)) == manager->integer(value);
200 std::stringstream sstr;
201 assert(varIndex < varNames.size());
202 sstr <<
"(distinct " << varNames.at(varIndex) <<
" " << value <<
")";
207 std::shared_ptr<storm::expressions::ExpressionManager> manager)
const {
208 return manager->getVariableExpression(varNames.at(varIndex)) != manager->integer(value);
212 std::stringstream sstr;
213 assert(varIndex < varNames.size());
214 sstr <<
"(< " << varNames.at(varIndex) <<
" " << value <<
")";
219 std::shared_ptr<storm::expressions::ExpressionManager> manager)
const {
220 return manager->getVariableExpression(varNames.at(varIndex)) < value;
224 std::stringstream sstr;
225 assert(varIndex < varNames.size());
226 sstr <<
"(<= " << varNames.at(varIndex) <<
" " << value <<
")";
231 std::shared_ptr<storm::expressions::ExpressionManager> manager)
const {
232 return manager->getVariableExpression(varNames.at(varIndex)) <= value;
236 return "(= " + varNames.at(var1Index) +
" " + varNames.at(var2Index) +
")";
240 std::shared_ptr<storm::expressions::ExpressionManager> manager)
const {
241 return manager->getVariableExpression(varNames.at(var1Index)) == manager->getVariableExpression(varNames.at(var2Index));
245 return "(distinct " + varNames.at(var1Index) +
" " + varNames.at(var2Index) +
")";
249 std::shared_ptr<storm::expressions::ExpressionManager> manager)
const {
250 return manager->getVariableExpression(varNames.at(var1Index)) != manager->getVariableExpression(varNames.at(var2Index));
254 return "(< " + varNames.at(var1Index) +
" " + varNames.at(var2Index) +
")";
258 std::shared_ptr<storm::expressions::ExpressionManager> manager)
const {
259 return manager->getVariableExpression(varNames.at(var1Index)) < manager->getVariableExpression(varNames.at(var2Index));
263 return "(<= " + varNames.at(var1Index) +
" " + varNames.at(var2Index) +
")";
267 std::shared_ptr<storm::expressions::ExpressionManager> manager)
const {
268 return manager->getVariableExpression(varNames.at(var1Index)) <= manager->getVariableExpression(varNames.at(var2Index));
272 std::stringstream sstr;
274 for (
auto const &varIndex : varIndices) {
275 sstr <<
" " << varNames.at(varIndex);
282 std::shared_ptr<storm::expressions::ExpressionManager> manager)
const {
283 std::vector<storm::expressions::Expression> conjuncts;
284 for (uint64_t i = 0; i < varIndices.size(); ++i) {
285 for (uint64_t j = i + 1; j < varIndices.size(); ++j) {
287 conjuncts.push_back(manager->getVariableExpression(varNames.at(varIndices.at(i))) != manager->getVariableExpression(varNames.at(varIndices.at(j))));
291 return conjunction(conjuncts);
295 std::stringstream sstr;
297 for (uint64_t i = 1; i < varIndices.size(); ++i) {
298 sstr <<
"(<= " << varNames.at(varIndices.at(i - 1)) <<
" " << varNames.at(varIndices.at(i)) <<
")";
305 std::shared_ptr<storm::expressions::ExpressionManager> manager)
const {
306 std::vector<storm::expressions::Expression> conjuncts;
307 for (uint64_t i = 1; i < varIndices.size(); ++i) {
308 conjuncts.push_back(manager->getVariableExpression(varNames.at(varIndices.at(i - 1))) <= manager->getVariableExpression(varNames.at(varIndices.at(i))));
311 return conjunction(conjuncts);
315 std::stringstream sstr;
316 sstr <<
"(ite " << ifConstraint->toSmtlib2(varNames) <<
" " << thenConstraint->toSmtlib2(varNames) <<
" " << elseConstraint->toSmtlib2(varNames) <<
")";
321 std::shared_ptr<storm::expressions::ExpressionManager> manager)
const {
322 return ite(ifConstraint->toExpression(varNames, manager), thenConstraint->toExpression(varNames, manager), elseConstraint->toExpression(varNames, manager));
326 std::stringstream sstr;
328 for (uint64_t i = 0; i < varIndices.size(); ++i) {
329 sstr <<
"(ite " << varNames.at(varIndices.at(i)) <<
" 0 1 )";
331 sstr <<
") " << value <<
" )";
336 std::shared_ptr<storm::expressions::ExpressionManager> manager)
const {
337 std::vector<storm::expressions::Expression> boolToInt;
338 for (uint64_t i = 0; i < varIndices.size(); ++i) {
339 boolToInt.push_back(ite(manager->getVariableExpression(varNames.at(varIndices.at(i))),
341 manager->integer(1)));
343 return sum(boolToInt) == manager->integer(value);
std::string toSmtlib2(std::vector< std::string > const &varNames) const override
Generate a string describing the constraint in Smtlib2 format.
storm::expressions::Expression toExpression(std::vector< std::string > const &varNames, std::shared_ptr< storm::expressions::ExpressionManager > manager) const override
Generate an expression describing the constraint in Storm format.
std::string toSmtlib2(std::vector< std::string > const &varNames) const override
Generate a string describing the constraint in Smtlib2 format.
storm::expressions::Expression toExpression(std::vector< std::string > const &varNames, std::shared_ptr< storm::expressions::ExpressionManager > manager) const override
Generate an expression describing the constraint in Storm format.
std::string toSmtlib2(std::vector< std::string > const &varNames) const override
Generate a string describing the constraint in Smtlib2 format.
storm::expressions::Expression toExpression(std::vector< std::string > const &varNames, std::shared_ptr< storm::expressions::ExpressionManager > manager) const override
Generate an expression describing the constraint in Storm format.
std::string toSmtlib2(std::vector< std::string > const &varNames) const override
Generate a string describing the constraint in Smtlib2 format.
storm::expressions::Expression toExpression(std::vector< std::string > const &varNames, std::shared_ptr< storm::expressions::ExpressionManager > manager) const override
Generate an expression describing the constraint in Storm format.
storm::expressions::Expression toExpression(std::vector< std::string > const &varNames, std::shared_ptr< storm::expressions::ExpressionManager > manager) const override
Generate an expression describing the constraint in Storm format.
std::string toSmtlib2(std::vector< std::string > const &varNames) const override
Generate a string describing the constraint in Smtlib2 format.
storm::expressions::Expression toExpression(std::vector< std::string > const &varNames, std::shared_ptr< storm::expressions::ExpressionManager > manager) const override
Generate an expression describing the constraint in Storm format.
std::string toSmtlib2(std::vector< std::string > const &varNames) const override
Generate a string describing the constraint in Smtlib2 format.
std::string toSmtlib2(std::vector< std::string > const &varNames) const override
Generate a string describing the constraint in Smtlib2 format.
storm::expressions::Expression toExpression(std::vector< std::string > const &varNames, std::shared_ptr< storm::expressions::ExpressionManager > manager) const override
Generate an expression describing the constraint in Storm format.
storm::expressions::Expression toExpression(std::vector< std::string > const &varNames, std::shared_ptr< storm::expressions::ExpressionManager > manager) const override
Generate an expression describing the constraint in Storm format.
std::string toSmtlib2(std::vector< std::string > const &varNames) const override
Generate a string describing the constraint in Smtlib2 format.
std::string toSmtlib2(std::vector< std::string > const &varNames) const override
Generate a string describing the constraint in Smtlib2 format.
storm::expressions::Expression toExpression(std::vector< std::string > const &varNames, std::shared_ptr< storm::expressions::ExpressionManager > manager) const override
Generate an expression describing the constraint in Storm format.
std::string toSmtlib2(std::vector< std::string > const &varNames) const override
Generate a string describing the constraint in Smtlib2 format.
storm::expressions::Expression toExpression(std::vector< std::string > const &varNames, std::shared_ptr< storm::expressions::ExpressionManager > manager) const override
Generate an expression describing the constraint in Storm format.
std::string toSmtlib2(std::vector< std::string > const &varNames) const override
Generate a string describing the constraint in Smtlib2 format.
storm::expressions::Expression toExpression(std::vector< std::string > const &varNames, std::shared_ptr< storm::expressions::ExpressionManager > manager) const override
Generate an expression describing the constraint in Storm format.
std::string toSmtlib2(std::vector< std::string > const &varNames) const override
Generate a string describing the constraint in Smtlib2 format.
storm::expressions::Expression toExpression(std::vector< std::string > const &varNames, std::shared_ptr< storm::expressions::ExpressionManager > manager) const override
Generate an expression describing the constraint in Storm format.
std::string toSmtlib2(std::vector< std::string > const &varNames) const override
Generate a string describing the constraint in Smtlib2 format.
storm::expressions::Expression toExpression(std::vector< std::string > const &varNames, std::shared_ptr< storm::expressions::ExpressionManager > manager) const override
Generate an expression describing the constraint in Storm format.
storm::expressions::Expression toExpression(std::vector< std::string > const &varNames, std::shared_ptr< storm::expressions::ExpressionManager > manager) const override
Generate an expression describing the constraint in Storm format.
std::string toSmtlib2(std::vector< std::string > const &varNames) const override
Generate a string describing the constraint in Smtlib2 format.
storm::expressions::Expression toExpression(std::vector< std::string > const &varNames, std::shared_ptr< storm::expressions::ExpressionManager > manager) const override
Generate an expression describing the constraint in Storm format.
std::string toSmtlib2(std::vector< std::string > const &varNames) const override
Generate a string describing the constraint in Smtlib2 format.
storm::expressions::Expression toExpression(std::vector< std::string > const &varNames, std::shared_ptr< storm::expressions::ExpressionManager > manager) const override
Generate an expression describing the constraint in Storm format.
std::string toSmtlib2(std::vector< std::string > const &varNames) const override
Generate a string describing the constraint in Smtlib2 format.
std::string toSmtlib2(std::vector< std::string > const &varNames) const override
Generate a string describing the constraint in Smtlib2 format.
storm::expressions::Expression toExpression(std::vector< std::string > const &varNames, std::shared_ptr< storm::expressions::ExpressionManager > manager) const override
Generate an expression describing the constraint in Storm format.
storm::expressions::Expression toExpression(std::vector< std::string > const &varNames, std::shared_ptr< storm::expressions::ExpressionManager > manager) const override
Generate an expression describing the constraint in Storm format.
std::string toSmtlib2(std::vector< std::string > const &varNames) const override
Generate a string describing the constraint in Smtlib2 format.
std::string toSmtlib2(std::vector< std::string > const &varNames) const override
Generate a string describing the constraint in Smtlib2 format.
storm::expressions::Expression toExpression(std::vector< std::string > const &varNames, std::shared_ptr< storm::expressions::ExpressionManager > manager) const override
Generate an expression describing the constraint in Storm format.
std::string toSmtlib2(std::vector< std::string > const &varNames) const override
Generate a string describing the constraint in Smtlib2 format.
storm::expressions::Expression toExpression(std::vector< std::string > const &varNames, std::shared_ptr< storm::expressions::ExpressionManager > manager) const override
Generate an expression describing the constraint in Storm format.
std::string toSmtlib2(std::vector< std::string > const &varNames) const override
Generate a string describing the constraint in Smtlib2 format.
storm::expressions::Expression toExpression(std::vector< std::string > const &varNames, std::shared_ptr< storm::expressions::ExpressionManager > manager) const override
Generate an expression describing the constraint in Storm format.