| 284 | } |
| 285 | |
| 286 | void SMTLib2Commands::declareTuple( |
| 287 | std::string const& _name, |
| 288 | std::vector<std::string> const& _memberNames, |
| 289 | std::vector<std::string> const& _memberSorts |
| 290 | ) |
| 291 | { |
| 292 | auto quotedName = '|' + _name + '|'; |
| 293 | std::stringstream ss; |
| 294 | ss << "(declare-datatypes ((" << quotedName << " 0)) (((" << quotedName; |
| 295 | for (auto && [memberName, memberSort]: ranges::views::zip(_memberNames, _memberSorts)) |
| 296 | ss << " (|" << memberName << "| " << memberSort << ")"; |
| 297 | ss << "))))"; |
| 298 | auto declaration = ss.str(); |
| 299 | m_commands.push_back(ss.str()); |
| 300 | } |