This commit removes the support for the CVC language and converts all *.cvc regression tests to SMT-LIBv2.
{
Solver slv;
slv.setOption("produce-models", "true"); // Produce Models
- slv.setOption("output-language", "cvc"); // Set the output-language to CVC's
slv.setOption("dag-thresh", "0"); // Disable dagifying the output
slv.setOption("output-language", "smt2"); // use smt-lib v2 as output language
slv.setLogic(string("QF_UFLIRA"));
if __name__ == "__main__":
slv = pycvc5.Solver()
slv.setOption("produce-models", "true") # Produce Models
- slv.setOption("output-language", "cvc") # Set the output-language to CVC's
slv.setOption("dag-thresh", "0") # Disable dagifying the output
slv.setOption("output-language", "smt2") # use smt-lib v2 as output language
slv.setLogic("QF_UFLIRA")
preprocessing/util/ite_utilities.h
printer/ast/ast_printer.cpp
printer/ast/ast_printer.h
- printer/cvc/cvc_printer.cpp
- printer/cvc/cvc_printer.h
printer/let_binding.cpp
printer/let_binding.h
printer/printer.cpp
std::ostream& operator<<(std::ostream& os, const DType& dt)
{
- // can only output datatypes in the cvc5 native language
- language::SetLanguage::Scope ls(os, Language::LANG_CVC);
dt.toStream(os);
return os;
}
std::ostream& operator<<(std::ostream& os, const DTypeConstructor& ctor)
{
- // can only output datatypes in the cvc5 native language
- language::SetLanguage::Scope ls(os, Language::LANG_CVC);
ctor.toStream(os);
return os;
}
std::ostream& operator<<(std::ostream& os, const DTypeSelector& arg)
{
- // can only output datatypes in the cvc5 native language
- language::SetLanguage::Scope ls(os, Language::LANG_CVC);
arg.toStream(os);
return os;
}
# Create target used as a dependency for libmain.
add_custom_target(gen-tokens
DEPENDS
- cvc_tokens.h
smt2_tokens.h
tptp_tokens.h
)
{
if( inputFromStdin ) {
// We can't do any fancy detection on stdin
- solver->setOption("input-language", "cvc");
+ solver->setOption("input-language", "smt2");
} else {
size_t len = filenameStr.size();
if(len >= 5 && !strcmp(".smt2", filename + len - 5)) {
} else if((len >= 2 && !strcmp(".p", filename + len - 2))
|| (len >= 5 && !strcmp(".tptp", filename + len - 5))) {
solver->setOption("input-language", "tptp");
- } else if(( len >= 4 && !strcmp(".cvc", filename + len - 4) )
- || ( len >= 5 && !strcmp(".cvc4", filename + len - 5) )) {
- solver->setOption("input-language", "cvc");
} else if((len >= 3 && !strcmp(".sy", filename + len - 3))
|| (len >= 3 && !strcmp(".sl", filename + len - 3))) {
// version 2 sygus is the default
char** commandCompletion(const char* text, int start, int end);
char* commandGenerator(const char* text, int state);
-static const std::string cvc_commands[] = {
-#include "main/cvc_tokens.h"
-};/* cvc_commands */
-
static const std::string smt2_commands[] = {
#include "main/smt2_tokens.h"
};/* smt2_commands */
::using_history();
std::string lang = solver->getOption("input-language");
- if (lang == "LANG_CVC")
- {
- d_historyFilename = string(getenv("HOME")) + "/.cvc5_history";
- commandsBegin = cvc_commands;
- commandsEnd = cvc_commands + sizeof(cvc_commands) / sizeof(*cvc_commands);
- }
- else if (lang == "LANG_TPTP")
+ if (lang == "LANG_TPTP")
{
d_historyFilename = string(getenv("HOME")) + "/.cvc5_history_tptp";
commandsBegin = tptp_commands;
case Language::LANG_AUTO: out << "LANG_AUTO"; break;
case Language::LANG_SMTLIB_V2_6: out << "LANG_SMTLIB_V2_6"; break;
case Language::LANG_TPTP: out << "LANG_TPTP"; break;
- case Language::LANG_CVC: out << "LANG_CVC"; break;
case Language::LANG_SYGUS_V2: out << "LANG_SYGUS_V2"; break;
default: out << "undefined_language";
}
Language toLanguage(const std::string& language)
{
- if (language == "cvc" || language == "pl" || language == "presentation"
- || language == "native" || language == "LANG_CVC")
- {
- return Language::LANG_CVC;
- }
- else if (language == "smtlib" || language == "smt" || language == "smtlib2"
- || language == "smt2" || language == "smtlib2.6"
- || language == "smt2.6" || language == "LANG_SMTLIB_V2_6"
- || language == "LANG_SMTLIB_V2")
+ if (language == "smtlib" || language == "smt" || language == "smtlib2"
+ || language == "smt2" || language == "smtlib2.6" || language == "smt2.6"
+ || language == "LANG_SMTLIB_V2_6" || language == "LANG_SMTLIB_V2")
{
return Language::LANG_SMTLIB_V2_6;
}
LANG_SMTLIB_V2_6 = 0,
/** The TPTP language */
LANG_TPTP,
- /** The cvc5 language */
- LANG_CVC,
/** The SyGuS language version 2.0 */
LANG_SYGUS_V2,
bounded_token_buffer.h
bounded_token_factory.cpp
bounded_token_factory.h
- cvc/cvc.cpp
- cvc/cvc.h
- cvc/cvc_input.cpp
- cvc/cvc_input.h
input.cpp
input.h
line_buffer.cpp
#-----------------------------------------------------------------------------#
# Generate parsers for all supported languages
-foreach(lang Cvc Smt2 Tptp)
+foreach(lang Smt2 Tptp)
string(TOLOWER ${lang} lang_dir)
file(MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/${lang_dir})
add_custom_command(
#include "parser/antlr_line_buffered_input.h"
#include "parser/bounded_token_buffer.h"
#include "parser/bounded_token_factory.h"
-#include "parser/cvc/cvc_input.h"
#include "parser/input.h"
#include "parser/memory_mapped_input_buffer.h"
#include "parser/parser.h"
AntlrInput* AntlrInput::newInput(const std::string& lang,
AntlrInputStream& inputStream)
{
- if (lang == "LANG_CVC")
- {
- return new CvcInput(inputStream);
- }
- else if (lang == "LANG_SYGUS_V2")
+ if (lang == "LANG_SYGUS_V2")
{
return new SygusInput(inputStream);
}
+++ /dev/null
-/* ****************************************************************************
- * Top contributors (to current version):
- * Morgan Deters, Andrew Reynolds, Aina Niemetz
- *
- * This file is part of the cvc5 project.
- *
- * Copyright (c) 2009-2021 by the authors listed in the file AUTHORS
- * in the top-level source directory and their institutional affiliations.
- * All rights reserved. See the file COPYING in the top-level source
- * directory for licensing information.
- * ****************************************************************************
- *
- * Parser for CVC presentation input language.
- */
-
-grammar Cvc;
-
-options {
- // C output for antlr
- language = 'C';
-
- // Skip the default error handling, just break with exceptions
- // defaultErrorHandler = false;
-
- // Only lookahead of <= k requested (disable for LL* parsing)
- // Note that cvc5's BoundedTokenBuffer requires a fixed k !
- // If you change this k, change it also in cvc_input.cpp !
- k = 3;
-}/* options */
-
-tokens {
- /* commands */
-
- ASSERT_TOK = 'ASSERT';
- QUERY_TOK = 'QUERY';
- CHECKSAT_TOK = 'CHECKSAT';
- OPTION_TOK = 'OPTION';
- PUSH_TOK = 'PUSH';
- POP_TOK = 'POP';
- POPTO_TOK = 'POPTO';
- PUSH_SCOPE_TOK = 'PUSH_SCOPE';
- POP_SCOPE_TOK = 'POP_SCOPE';
- POPTO_SCOPE_TOK = 'POPTO_SCOPE';
- RESET_TOK = 'RESET';
- DATATYPE_TOK = 'DATATYPE';
- END_TOK = 'END';
- CONTEXT_TOK = 'CONTEXT';
- FORGET_TOK = 'FORGET';
- GET_TYPE_TOK = 'GET_TYPE';
- CHECK_TYPE_TOK = 'CHECK_TYPE';
- GET_CHILD_TOK = 'GET_CHILD';
- GET_OP_TOK = 'GET_OP';
- GET_VALUE_TOK = 'GET_VALUE';
- SUBSTITUTE_TOK = 'SUBSTITUTE';
- DBG_TOK = 'DBG';
- TRACE_TOK = 'TRACE';
- UNTRACE_TOK = 'UNTRACE';
- HELP_TOK = 'HELP';
- TRANSFORM_TOK = 'TRANSFORM';
- PRINT_TOK = 'PRINT';
- PRINT_TYPE_TOK = 'PRINT_TYPE';
- CALL_TOK = 'CALL';
- ECHO_TOK = 'ECHO';
- EXIT_TOK = 'EXIT';
- INCLUDE_TOK = 'INCLUDE';
- DUMP_PROOF_TOK = 'DUMP_PROOF';
- DUMP_UNSAT_CORE_TOK = 'DUMP_UNSAT_CORE';
- DUMP_ASSUMPTIONS_TOK = 'DUMP_ASSUMPTIONS';
- DUMP_SIG_TOK = 'DUMP_SIG';
- DUMP_TCC_TOK = 'DUMP_TCC';
- DUMP_TCC_ASSUMPTIONS_TOK = 'DUMP_TCC_ASSUMPTIONS';
- DUMP_TCC_PROOF_TOK = 'DUMP_TCC_PROOF';
- DUMP_CLOSURE_TOK = 'DUMP_CLOSURE';
- DUMP_CLOSURE_PROOF_TOK = 'DUMP_CLOSURE_PROOF';
- WHERE_TOK = 'WHERE';
- ASSERTIONS_TOK = 'ASSERTIONS';
- ASSUMPTIONS_TOK = 'ASSUMPTIONS';
- COUNTEREXAMPLE_TOK = 'COUNTEREXAMPLE';
- COUNTERMODEL_TOK = 'COUNTERMODEL';
- ARITH_VAR_ORDER_TOK = 'ARITH_VAR_ORDER';
- CONTINUE_TOK = 'CONTINUE';
- RESTART_TOK = 'RESTART';
- RECURSIVE_FUNCTION_TOK = 'REC-FUN';
- /* operators */
-
- AND_TOK = 'AND';
- BOOLEAN_TOK = 'BOOLEAN';
- ELSEIF_TOK = 'ELSIF';
- ELSE_TOK = 'ELSE';
- ENDIF_TOK = 'ENDIF';
- FALSE_TOK = 'FALSE';
- IF_TOK = 'IF';
- IN_TOK = 'IN';
- INT_TOK = 'INT';
- LET_TOK = 'LET';
- MEMBER_TOK = 'IS_IN';
- NOT_TOK = 'NOT';
- OR_TOK = 'OR';
- REAL_TOK = 'REAL';
- THEN_TOK = 'THEN';
- TRUE_TOK = 'TRUE';
- TYPE_TOK = 'TYPE';
- XOR_TOK = 'XOR';
-
- ARRAY_TOK = 'ARRAY';
- OF_TOK = 'OF';
- WITH_TOK = 'WITH';
-
- SUBTYPE_TOK = 'SUBTYPE';
- SET_TOK = 'SET';
-
- TUPLE_TOK = 'TUPLE';
-
- FORALL_TOK = 'FORALL';
- EXISTS_TOK = 'EXISTS';
- PATTERN_TOK = 'PATTERN';
-
- LAMBDA_TOK = 'LAMBDA';
-
- // Symbols
-
- COLON = ':';
- COMMA = ',';
- LPAREN = '(';
- RPAREN = ')';
- LBRACE = '{';
- RBRACE = '}';
- LBRACKET = '[';
- RBRACKET = ']';
- SEMICOLON = ';';
- BAR = '|';
- UNDERSCORE = '_';
-
- SQHASH = '[#';
- HASHSQ = '#]';
- PARENHASH = '(#';
- HASHPAREN = '#)';
-
- // Operators
-
- ARROW_TOK = '->';
- DIV_TOK = '/';
- EQUAL_TOK = '=';
- DISEQUAL_TOK = '/=';
- EXP_TOK = '^';
- GT_TOK = '>';
- GEQ_TOK = '>=';
- IFF_TOK = '<=>';
- IMPLIES_TOK = '=>';
- LT_TOK = '<';
- LEQ_TOK = '<=';
- MINUS_TOK = '-';
- PLUS_TOK = '+';
- STAR_TOK = '*';
- ASSIGN_TOK = ':=';
- MOD_TOK = 'MOD';
- INTDIV_TOK = 'DIV';
- FLOOR_TOK = 'FLOOR';
- ABS_TOK = 'ABS';
- DIVISIBLE_TOK = 'DIVISIBLE';
- DISTINCT_TOK = 'DISTINCT';
-
- // Bitvectors
-
- BITVECTOR_TOK = 'BITVECTOR';
- LEFTSHIFT_TOK = '<<';
- RIGHTSHIFT_TOK = '>>';
- BVPLUS_TOK = 'BVPLUS';
- BVSUB_TOK = 'BVSUB';
- BVUDIV_TOK = 'BVUDIV';
- BVSDIV_TOK = 'BVSDIV';
- BVUREM_TOK = 'BVUREM';
- BVSREM_TOK = 'BVSREM';
- BVSMOD_TOK = 'BVSMOD';
- BVSHL_TOK = 'BVSHL';
- BVASHR_TOK = 'BVASHR';
- BVLSHR_TOK = 'BVLSHR';
- BVUMINUS_TOK = 'BVUMINUS';
- BVMULT_TOK = 'BVMULT';
- BVNEG_TOK = '~';
- BVAND_TOK = '&';
- BVXOR_TOK = 'BVXOR';
- BVNAND_TOK = 'BVNAND';
- BVNOR_TOK = 'BVNOR';
- BVCOMP_TOK = 'BVCOMP';
- BVXNOR_TOK = 'BVXNOR';
- CONCAT_TOK = '@';
- //BVTOINT_TOK = 'BVTOINT';
- //INTTOBV_TOK = 'INTTOBV';
- //BOOLEXTRACT_TOK = 'BOOLEXTRACT';
- IS_INTEGER_TOK = 'IS_INTEGER';
- BVLT_TOK = 'BVLT';
- BVGT_TOK = 'BVGT';
- BVLE_TOK = 'BVLE';
- BVGE_TOK = 'BVGE';
- SX_TOK = 'SX';
- BVZEROEXTEND_TOK = 'BVZEROEXTEND';
- BVREPEAT_TOK = 'BVREPEAT';
- BVROTL_TOK = 'BVROTL';
- BVROTR_TOK = 'BVROTR';
- BVSLT_TOK = 'BVSLT';
- BVSGT_TOK = 'BVSGT';
- BVSLE_TOK = 'BVSLE';
- BVSGE_TOK = 'BVSGE';
-
- // Sets
- SETS_CHOOSE_TOK = 'CHOOSE';
-
- // Relations
- JOIN_TOK = 'JOIN';
- TRANSPOSE_TOK = 'TRANSPOSE';
- PRODUCT_TOK = 'PRODUCT';
- TRANSCLOSURE_TOK = 'TCLOSURE';
- IDEN_TOK = 'IDEN';
- JOIN_IMAGE_TOK = 'JOIN_IMAGE';
-
- // Strings
- STRING_TOK = 'STRING';
- STRING_CONCAT_TOK = 'CONCAT';
- STRING_LENGTH_TOK = 'LENGTH';
- STRING_CONTAINS_TOK = 'CONTAINS';
- STRING_SUBSTR_TOK = 'SUBSTR';
- STRING_CHARAT_TOK = 'CHARAT';
- STRING_INDEXOF_TOK = 'INDEXOF';
- STRING_REPLACE_TOK = 'REPLACE';
- STRING_REPLACE_ALL_TOK = 'REPLACE_ALL';
- STRING_PREFIXOF_TOK = 'PREFIXOF';
- STRING_SUFFIXOF_TOK = 'SUFFIXOF';
- STRING_STOI_TOK = 'STRING_TO_INTEGER';
- STRING_ITOS_TOK = 'INTEGER_TO_STRING';
- STRING_TO_REGEXP_TOK = 'STRING_TO_REGEXP';
- STRING_TOLOWER_TOK = 'TOLOWER';
- STRING_TOUPPER_TOK = 'TOUPPER';
- STRING_REV_TOK = 'REVERSE';
- REGEXP_CONCAT_TOK = 'RE_CONCAT';
- REGEXP_UNION_TOK = 'RE_UNION';
- REGEXP_INTER_TOK = 'RE_INTER';
- REGEXP_STAR_TOK = 'RE_STAR';
- REGEXP_PLUS_TOK = 'RE_PLUS';
- REGEXP_OPT_TOK = 'RE_OPT';
- REGEXP_RANGE_TOK = 'RE_RANGE';
- REGEXP_LOOP_TOK = 'RE_LOOP';
- REGEXP_EMPTY_TOK = 'RE_EMPTY';
- REGEXP_SIGMA_TOK = 'RE_SIGMA';
- REGEXP_COMPLEMENT_TOK = 'RE_COMPLEMENT';
- SEQ_UNIT_TOK = 'SEQ_UNIT';
-
- SETS_CARD_TOK = 'CARD';
-
- FMF_CARD_TOK = 'HAS_CARD';
- UNIVSET_TOK = 'UNIVERSE';
-
- // these are parsed by special NUMBER_OR_RANGEOP rule, below
- DECIMAL_LITERAL;
- INTEGER_LITERAL;
- DOT;
- DOTDOT;
-}/* tokens */
-
-@parser::members {
-
-// Idea and code guidance from Sam Harwell,
-// http://www.antlr.org/wiki/display/ANTLR3/Operator+precedence+parser
-
-bool isRightToLeft(int type) {
- // return true here for any operators that are right-to-left associative
- switch(type) {
- case IMPLIES_TOK: return true;
- default: return false;
- }
-}/* isRightToLeft() */
-
-int getOperatorPrecedence(int type) {
- switch(type) {
- case BITVECTOR_TOK: return 1;
- //case DOT:
- case LPAREN:
- case LBRACE: return 2;
- case LBRACKET: return 3;
- case ARROW_TOK: return 4;
- case IS_INTEGER_TOK: return 5;
- case BVSLT_TOK:
- case BVSLE_TOK:
- case BVSGT_TOK:
- case BVSGE_TOK: return 6;
- case BVLT_TOK:
- case BVLE_TOK:
- case BVGT_TOK:
- case BVGE_TOK: return 7;
- case LEFTSHIFT_TOK:
- case RIGHTSHIFT_TOK: return 8;
- case SX_TOK:
- case BVZEROEXTEND_TOK:
- case BVREPEAT_TOK:
- case BVROTL_TOK:
- case BVROTR_TOK: return 9;
- case BVUDIV_TOK:
- case BVSDIV_TOK:
- case BVUREM_TOK:
- case BVSREM_TOK:
- case BVSMOD_TOK:
- case BVSHL_TOK:
- case BVASHR_TOK:
- case BVLSHR_TOK: return 10;
- case BVUMINUS_TOK:
- case BVPLUS_TOK:
- case BVSUB_TOK: return 11;
- case BVNEG_TOK: return 12;
- case BVXNOR_TOK: return 13;
- case BVNOR_TOK:
- case BVCOMP_TOK: return 14;
- case BVNAND_TOK: return 15;
- case BVXOR_TOK: return 16;
- case BVAND_TOK: return 17;
- case BAR: return 18;
- case CONCAT_TOK: return 19;
-//case UMINUS_TOK: return 20;
- case WITH_TOK: return 21;
- case EXP_TOK: return 22;
- case STAR_TOK:
- case INTDIV_TOK:
- case DIV_TOK:
- case TUPLE_TOK:
- case MOD_TOK: return 23;
- case PLUS_TOK:
- case MINUS_TOK:
- case JOIN_TOK:
- case TRANSPOSE_TOK:
- case PRODUCT_TOK:
- case IDEN_TOK:
- case JOIN_IMAGE_TOK:
- case TRANSCLOSURE_TOK:
- case SETS_CHOOSE_TOK: return 24;
- case LEQ_TOK:
- case LT_TOK:
- case GEQ_TOK:
- case GT_TOK:
- case MEMBER_TOK:
- case SETS_CARD_TOK:
- case FMF_CARD_TOK: return 25;
- case EQUAL_TOK:
- case DISEQUAL_TOK: return 26;
- case NOT_TOK: return 27;
- case AND_TOK: return 28;
- case OR_TOK:
- case XOR_TOK: return 29;
- case IMPLIES_TOK: return 30;// right-to-left
- case IFF_TOK: return 31;
- case FORALL_TOK:
- case EXISTS_TOK:return 32;
- case ASSIGN_TOK:
- case IN_TOK: return 33;
-
- default:
- std::stringstream ss;
- ss << "internal error: no entry in precedence table for operator " << CvcParserTokenNames[type];
- throw ParserException(ss.str());
- }
-}/* getOperatorPrecedence() */
-
-api::Kind getOperatorKind(int type, bool& negate) {
- negate = false;
-
- switch(type) {
- // booleanBinop
- case IFF_TOK: return api::EQUAL;
- case IMPLIES_TOK: return api::IMPLIES;
- case OR_TOK: return api::OR;
- case XOR_TOK: return api::XOR;
- case AND_TOK: return api::AND;
-
- case SETS_CHOOSE_TOK: return api::CHOOSE;
- case PRODUCT_TOK: return api::PRODUCT;
- case JOIN_TOK: return api::JOIN;
- case JOIN_IMAGE_TOK: return api::JOIN_IMAGE;
-
-
- // comparisonBinop
- case EQUAL_TOK: return api::EQUAL;
- case DISEQUAL_TOK: negate = true; return api::EQUAL;
- case GT_TOK: return api::GT;
- case GEQ_TOK: return api::GEQ;
- case LT_TOK: return api::LT;
- case LEQ_TOK: return api::LEQ;
- case MEMBER_TOK: return api::MEMBER;
- case SETS_CARD_TOK: return api::CARD;
- case FMF_CARD_TOK: return api::CARDINALITY_CONSTRAINT;
-
- // arithmeticBinop
- case PLUS_TOK: return api::PLUS;
- case MINUS_TOK: return api::MINUS;
- case STAR_TOK: return api::MULT;
- case INTDIV_TOK: return api::INTS_DIVISION;
- case MOD_TOK: return api::INTS_MODULUS;
- case DIV_TOK: return api::DIVISION;
- case EXP_TOK: return api::POW;
-
- // bvBinop
- case CONCAT_TOK: return api::BITVECTOR_CONCAT;
- case BAR: return api::BITVECTOR_OR;
- case BVAND_TOK: return api::BITVECTOR_AND;
-
- }
-
- std::stringstream ss;
- ss << "internal error: no entry in operator-kind table for operator " << CvcParserTokenNames[type];
- throw ParserException(ss.str());
-
-}/* getOperatorKind() */
-
-unsigned findPivot(const std::vector<unsigned>& operators,
- unsigned startIndex, unsigned stopIndex) {
- unsigned pivot = startIndex;
- unsigned pivotRank = getOperatorPrecedence(operators[pivot]);
- /*Debug("prec") << "initial pivot at " << pivot
- << "(" << CvcParserTokenNames[operators[pivot]] << ") "
- << "level " << pivotRank << std::endl;*/
- for(unsigned i = startIndex + 1; i <= stopIndex; ++i) {
- unsigned current = getOperatorPrecedence(operators[i]);
- bool rtl = isRightToLeft(operators[i]);
- if(current > pivotRank || (current == pivotRank && !rtl)) {
- /*Debug("prec") << "new pivot at " << i
- << "(" << CvcParserTokenNames[operators[i]] << ") "
- << "level " << current << " rtl == " << rtl << std::endl;*/
- pivot = i;
- pivotRank = current;
- }
- }
- return pivot;
-}/* findPivot() */
-
-cvc5::api::Term createPrecedenceTree(Parser* parser, api::Solver* solver,
- const std::vector<cvc5::api::Term>& expressions,
- const std::vector<unsigned>& operators,
- unsigned startIndex, unsigned stopIndex) {
- Assert(expressions.size() == operators.size() + 1);
- Assert(startIndex < expressions.size());
- Assert(stopIndex < expressions.size());
- Assert(startIndex <= stopIndex);
-
- if(stopIndex == startIndex) {
- return expressions[startIndex];
- }
-
- unsigned pivot = findPivot(operators, startIndex, stopIndex - 1);
- //Debug("prec") << "pivot[" << startIndex << "," << stopIndex - 1 << "] at " << pivot << std::endl;
- bool negate;
- api::Kind k = getOperatorKind(operators[pivot], negate);
- cvc5::api::Term lhs = createPrecedenceTree(
- parser, solver, expressions, operators, startIndex, pivot);
- cvc5::api::Term rhs = createPrecedenceTree(
- parser, solver, expressions, operators, pivot + 1, stopIndex);
-
- if (lhs.getSort().isSet())
- {
- switch (k)
- {
- case api::LEQ: k = api::SUBSET; break;
- case api::MINUS: k = api::SETMINUS; break;
- case api::BITVECTOR_AND: k = api::INTERSECTION; break;
- case api::BITVECTOR_OR: k = api::UNION; break;
- default: break;
- }
- }
- else if (lhs.getSort().isString())
- {
- switch (k)
- {
- case api::MEMBER: k = api::STRING_IN_REGEXP; break;
- default: break;
- }
- }
-
- api::Term e = solver->mkTerm(k, lhs, rhs);
- return negate ? e.notTerm() : e;
-}/* createPrecedenceTree() recursive variant */
-
-api::Term createPrecedenceTree(Parser* parser, api::Solver* s,
- const std::vector<cvc5::api::Term>& expressions,
- const std::vector<unsigned>& operators) {
- if(Debug.isOn("prec") && operators.size() > 1) {
- for(unsigned i = 0; i < expressions.size(); ++i) {
- Debug("prec") << expressions[i];
- if(operators.size() > i) {
- Debug("prec") << ' ' << CvcParserTokenNames[operators[i]] << ' ';
- }
- }
- Debug("prec") << std::endl;
- }
-
- api::Term e = createPrecedenceTree(
- parser, s, expressions, operators, 0, expressions.size() - 1);
- if(Debug.isOn("prec") && operators.size() > 1) {
- language::SetLanguage::Scope ls(Debug("prec"), Language::LANG_AST);
- Debug("prec") << "=> " << e << std::endl;
- }
- return e;
-}/* createPrecedenceTree() base variant */
-
-/** Add n NOTs to the front of e and return the result. */
-api::Term addNots(api::Solver* s, size_t n, api::Term e) {
- while(n-- > 0) {
- e = e.notTerm();
- }
- return e;
-}/* addNots() */
-
-}/* @parser::members */
-
-@header {
-/* ****************************************************************************
- * This file is part of the cvc5 project.
- *
- * Copyright (c) 2009-2021 by the authors listed in the file AUTHORS
- * in the top-level source directory and their institutional affiliations.
- * All rights reserved. See the file COPYING in the top-level source
- * directory for licensing information.
- * ****************************************************************************
- */
-}/* @header */
-
-@lexer::includes {
-
-/** This suppresses warnings about the redefinition of token symbols between different
- * parsers. The redefinitions should be harmless as long as no client: (a) #include's
- * the lexer headers for two grammars AND (b) uses the token symbol definitions. */
-#pragma GCC system_header
-
-#if defined(CVC5_COMPETITION_MODE) && !defined(CVC5_SMTCOMP_APPLICATION_TRACK)
-/* This improves performance by ~10 percent on big inputs.
- * This option is only valid if we know the input is ASCII (or some 8-bit encoding).
- * If we know the input is UTF-16, we can use ANTLR3_INLINE_INPUT_UTF16.
- * Otherwise, we have to let the lexer detect the encoding at runtime.
- */
-# define ANTLR3_INLINE_INPUT_ASCII
-# define ANTLR3_INLINE_INPUT_8BIT
-#endif /* CVC5_COMPETITION_MODE && !CVC5_SMTCOMP_APPLICATION_TRACK */
-
-#include "parser/antlr_input.h"
-#include "parser/antlr_tracing.h"
-#include "parser/parser.h"
-
-}/* @lexer::includes */
-
-@parser::includes {
-
-#include <memory>
-
-#include "base/check.h"
-#include "options/set_language.h"
-#include "parser/antlr_tracing.h"
-#include "parser/parser.h"
-#include "smt/command.h"
-
-namespace cvc5 {
- class Expr;
-}/* cvc5 namespace */
-
-}/* @parser::includes */
-
-@parser::postinclude {
-
-#include <sstream>
-#include <string>
-#include <vector>
-
-#include "base/output.h"
-#include "parser/antlr_input.h"
-#include "parser/parser.h"
-
-#define REPEAT_COMMAND(k, CommandCtor) \
- ({ \
- unsigned __k = (k); \
- (__k <= 1) \
- ? (Command*) new CommandCtor \
- : ({ \
- CommandSequence* __seq = new CommandSequence(); \
- while(__k-- > 0) { \
- __seq->addCommand(new CommandCtor); \
- } \
- (Command*) __seq; \
- }); \
- })
-
-using namespace cvc5;
-using namespace cvc5::parser;
-
-/* These need to be macros so they can refer to the PARSER macro, which will be defined
- * by ANTLR *after* this section. (If they were functions, PARSER would be undefined.) */
-#undef PARSER_STATE
-#define PARSER_STATE ((Parser*)PARSER->super)
-#undef SOLVER
-#define SOLVER PARSER_STATE->getSolver()
-#undef MK_TERM
-#define MK_TERM SOLVER->mkTerm
-#define UNSUPPORTED PARSER_STATE->unimplementedFeature
-
-#define ENSURE_BV_SIZE(k, f) \
-{ \
- unsigned size = f.getSort().getBVSize(); \
- if(k > size) { \
- f = SOLVER->mkTerm(SOLVER->mkOp(api::BITVECTOR_ZERO_EXTEND,k - size), f); \
- } else if (k < size) { \
- f = SOLVER->mkTerm(SOLVER->mkOp(api::BITVECTOR_EXTRACT, k - 1, 0), f); \
- } \
-}
-
-}/* @parser::postinclude */
-
-/**
- * Parses an expression.
- * @return the parsed expression
- */
-parseExpr returns [cvc5::api::Term expr = cvc5::api::Term()]
- : formula[expr]
- | EOF
- ;
-
-/**
- * Parses a command (the whole benchmark)
- * @return the command of the benchmark
- */
-parseCommand returns [cvc5::Command* cmd_return = NULL]
-@declarations {
- std::unique_ptr<cvc5::Command> cmd;
-}
-@after {
- cmd_return = cmd.release();
-}
- : c=command[&cmd]
- | LPAREN IDENTIFIER
- { std::string s = AntlrInput::tokenText($IDENTIFIER);
- if(s == "benchmark") {
- PARSER_STATE->parseError(
- "In cvc5 presentation language mode, but SMT-LIBv1 format "
- "detected, which is not supported anymore.");
- } else if(s == "set" || s == "get" || s == "declare" ||
- s == "define" || s == "assert") {
- PARSER_STATE->parseError(
- "In cvc5 presentation language mode, but SMT-LIB format detected. "
- "Use --lang smt for SMT-LIB support.");
- } else {
- PARSER_STATE->parseError(
- "A cvc5 presentation language command cannot begin with a "
- "parenthesis; expected command name.");
- }
- }
- | EOF
- ;
-
-/**
- * Matches a command of the input. If a declaration, it will return an empty
- * command.
- */
-command [std::unique_ptr<cvc5::Command>* cmd]
- : ( mainCommand[cmd] SEMICOLON
- | SEMICOLON
- | LET_TOK { PARSER_STATE->pushScope(); }
- typeOrVarLetDecl[CHECK_DECLARED] (
- COMMA typeOrVarLetDecl[CHECK_DECLARED] )*
- IN_TOK command[cmd]
- { PARSER_STATE->popScope(); }
- )
- { if(!(*cmd)) {
- cmd->reset(new EmptyCommand());
- }
- }
- | IDENTIFIER SEMICOLON
- { std::stringstream ss;
- ss << "Unrecognized command `"
- << AntlrInput::tokenText($IDENTIFIER)
- << "'";
- PARSER_STATE->parseError(ss.str());
- }
- ;
-
-typeOrVarLetDecl[cvc5::parser::DeclarationCheck check]
-options { backtrack = true; }
- : letDecl | typeLetDecl[check]
- ;
-
-mainCommand[std::unique_ptr<cvc5::Command>* cmd]
-@init {
- api::Term f;
- api::Term sexpr;
- std::string id;
- api::Sort t;
- std::vector<cvc5::api::DatatypeDecl> dts;
- Debug("parser-extra") << "command: " << AntlrInput::tokenText(LT(1)) << std::endl;
- std::string s;
- api::Term func;
- std::vector<api::Term> bvs;
- std::vector<api::Term> funcs;
- std::vector<api::Term> formulas;
- std::vector<std::vector<api::Term>> formals;
- std::vector<std::string> ids;
- std::vector<cvc5::api::Sort> types;
- bool idCommaFlag = true;
- bool formCommaFlag = true;
-}
- /* our bread & butter */
- : ASSERT_TOK formula[f] { cmd->reset(new AssertCommand(f)); }
-
- | QUERY_TOK formula[f] { cmd->reset(new QueryCommand(f)); }
- | CHECKSAT_TOK formula[f]?
- {
- cmd->reset(f.isNull() ? new CheckSatCommand() : new CheckSatCommand(f));
- }
- /* options */
- | OPTION_TOK
- ( str[s] | IDENTIFIER { s = AntlrInput::tokenText($IDENTIFIER); } )
- ( symbolicExpr[sexpr]
- { if(s == "logic") {
- cmd->reset(new SetBenchmarkLogicCommand(sexprToString(sexpr)));
- } else {
- cmd->reset(new SetOptionCommand(s, sexprToString(sexpr)));
- }
- }
- | TRUE_TOK { cmd->reset(new SetOptionCommand(s, "true")); }
- | FALSE_TOK { cmd->reset(new SetOptionCommand(s, "false")); }
- | { cmd->reset(new SetOptionCommand(s, "true")); }
- )
-
- /* push / pop */
- | PUSH_TOK ( k=numeral { cmd->reset(REPEAT_COMMAND(k, PushCommand())); }
- | { cmd->reset(new PushCommand()); } )
- | POP_TOK ( k=numeral { cmd->reset(REPEAT_COMMAND(k, PopCommand())); }
- | { cmd->reset(new PopCommand()); } )
- | POPTO_TOK k=numeral?
- { UNSUPPORTED("POPTO command"); }
-
- /* push / pop scopes */
- | PUSH_SCOPE_TOK k=numeral?
- { UNSUPPORTED("PUSH_SCOPE command"); }
- | POP_SCOPE_TOK k=numeral?
- { UNSUPPORTED("POP_SCOPE command"); }
- | POPTO_SCOPE_TOK k=numeral?
- { UNSUPPORTED("POPTO_SCOPE command"); }
-
- | RESET_TOK
- {
- cmd->reset(new ResetCommand());
- // reset the state of the parser, which is independent of the symbol
- // manager
- PARSER_STATE->reset();
- }
-
- | RESET_TOK ASSERTIONS_TOK
- { cmd->reset(new ResetAssertionsCommand());
- }
-
- // Datatypes can be mututally-recursive if they're in the same
- // definition block, separated by a comma. So we parse everything
- // and then ask the ExprManager to resolve everything in one go.
- | DATATYPE_TOK
- { /* open a scope to keep the UnresolvedTypes contained */
- PARSER_STATE->pushScope(); }
- datatypeDef[dts]
- ( COMMA datatypeDef[dts] )*
- END_TOK
- { PARSER_STATE->popScope();
- cmd->reset(new DatatypeDeclarationCommand(
- PARSER_STATE->bindMutualDatatypeTypes(dts)));
- }
-
- | CONTEXT_TOK
- ( ( str[s] | IDENTIFIER { s = AntlrInput::tokenText($IDENTIFIER); } )
- { UNSUPPORTED("CONTEXT command"); }
- | { UNSUPPORTED("CONTEXT command"); }
- )
-
- | FORGET_TOK identifier[id,CHECK_NONE,SYM_VARIABLE]
- { UNSUPPORTED("FORGET command"); }
-
- | GET_TYPE_TOK formula[f]
- { UNSUPPORTED("GET_TYPE command"); }
-
- | CHECK_TYPE_TOK formula[f] COLON type[t,CHECK_DECLARED]
- { UNSUPPORTED("CHECK_TYPE command"); }
-
- | GET_CHILD_TOK formula[f] k=numeral
- { UNSUPPORTED("GET_CHILD command"); }
-
- | GET_OP_TOK formula[f]
- { UNSUPPORTED("GET_OP command"); }
-
- | GET_VALUE_TOK formula[f]
- { cmd->reset(new GetValueCommand(f)); }
-
- | SUBSTITUTE_TOK identifier[id,CHECK_NONE,SYM_VARIABLE] COLON
- type[t,CHECK_DECLARED] EQUAL_TOK formula[f] LBRACKET
- identifier[id,CHECK_NONE,SYM_VARIABLE] ASSIGN_TOK formula[f] RBRACKET
- { UNSUPPORTED("SUBSTITUTE command"); }
-
- /* Like the --debug command line option, DBG turns on both tracing
- * and debugging. */
- | DBG_TOK
- ( ( str[s] | IDENTIFIER { s = AntlrInput::tokenText($IDENTIFIER); } )
- { Debug.on(s); Trace.on(s); }
- | { CVC5Message() << "Please specify what to debug." << std::endl; }
- )
-
- | TRACE_TOK
- ( ( str[s] | IDENTIFIER { s = AntlrInput::tokenText($IDENTIFIER); } )
- { Trace.on(s); }
- | { CVC5Message() << "Please specify something to trace." << std::endl; }
- )
- | UNTRACE_TOK
- ( ( str[s] | IDENTIFIER { s = AntlrInput::tokenText($IDENTIFIER); } )
- { Trace.off(s); }
- | { CVC5Message() << "Please specify something to untrace." << std::endl; }
- )
-
- | HELP_TOK
- ( ( str[s] | IDENTIFIER { s = AntlrInput::tokenText($IDENTIFIER); } )
- { CVC5Message() << "No help available for `" << s << "'." << std::endl; }
- | { CVC5Message() << "Please use --help at the command line for help."
- << std::endl; }
- )
-
- | TRANSFORM_TOK formula[f]
- { cmd->reset(new SimplifyCommand(f)); }
-
- | PRINT_TOK formula[f]
- { UNSUPPORTED("PRINT command"); }
- | PRINT_TYPE_TOK type[t,CHECK_DECLARED]
- { UNSUPPORTED("PRINT_TYPE command"); }
-
- | CALL_TOK identifier[id,CHECK_NONE,SYM_VARIABLE] formula[f]
- { UNSUPPORTED("CALL command"); }
-
- | ECHO_TOK
- ( simpleSymbolicExpr[s]
- { cmd->reset(new EchoCommand(s)); }
- | { cmd->reset(new EchoCommand()); }
- )
-
- | EXIT_TOK
- { cmd->reset(new QuitCommand()); }
-
- | INCLUDE_TOK
- ( ( str[s] | IDENTIFIER { s = AntlrInput::tokenText($IDENTIFIER); } )
- { UNSUPPORTED("INCLUDE command"); }
- | { PARSER_STATE->parseError("No filename given to INCLUDE command"); }
- )
-
- | DUMP_PROOF_TOK
- { cmd->reset(new GetProofCommand()); }
-
- | DUMP_UNSAT_CORE_TOK
- { cmd->reset(new GetUnsatCoreCommand()); }
-
- | ( DUMP_ASSUMPTIONS_TOK
- | DUMP_SIG_TOK
- | DUMP_TCC_TOK
- | DUMP_TCC_ASSUMPTIONS_TOK
- | DUMP_TCC_PROOF_TOK
- | DUMP_CLOSURE_TOK
- | DUMP_CLOSURE_PROOF_TOK
- ) { UNSUPPORTED("DUMP* command"); }
-
- /* these are all synonyms */
- | ( WHERE_TOK | ASSERTIONS_TOK | ASSUMPTIONS_TOK )
- { cmd->reset(new GetAssertionsCommand()); }
-
- | COUNTEREXAMPLE_TOK
- { cmd->reset(new GetModelCommand); }
- | COUNTERMODEL_TOK
- { cmd->reset(new GetModelCommand); }
-
- | ARITH_VAR_ORDER_TOK LPAREN formula[f] ( COMMA formula[f] )* RPAREN
- { UNSUPPORTED("ARITH_VAR_ORDER command"); }
-
- | CONTINUE_TOK
- { UNSUPPORTED("CONTINUE command"); }
- | RESTART_TOK formula[f] { UNSUPPORTED("RESTART command"); }
- | RECURSIVE_FUNCTION_TOK (identifier[id,CHECK_NONE,SYM_VARIABLE]
- {
- if(idCommaFlag){
- idCommaFlag=false;
- }
- else{
- PARSER_STATE->parseError("Identifiers need to be comma separated");
- }
- }
- COLON type[t,CHECK_DECLARED] (COMMA {
- idCommaFlag=true;
- })?
- {
- func = PARSER_STATE->bindVar(id, t, false, true);
- ids.push_back(id);
- types.push_back(t);
- funcs.push_back(func);
- })+
- EQUAL_TOK (formula[f]
- {
- if(formCommaFlag){
- formCommaFlag=false;
- }
- else{
- PARSER_STATE->parseError("Function definitions need to be comma separated");
- }
- }
- (COMMA{
- formCommaFlag=true;
- })?
- {
- if( f.getKind()==api::LAMBDA ){
- bvs.insert(bvs.end(), f[0].begin(), f[0].end());
- formals.push_back(bvs);
- bvs.clear();
- f = f[1];
- formulas.push_back(f);
- }
- else {
- formals.push_back(bvs);
- formulas.push_back(f);
- }
- })+
- {
- if(idCommaFlag){
- PARSER_STATE->parseError("Cannot end function list with comma");
- }
- if(formCommaFlag){
- PARSER_STATE->parseError("Cannot end function definition list with comma");
- }
- if(funcs.size()!=formulas.size()){
- PARSER_STATE->parseError("Number of functions doesn't match number of function definitions");
- }
- for(unsigned int i = 0, size = funcs.size(); i < size; i++){
- if(!funcs[i].getSort().isSubsortOf(types[i])){
- PARSER_STATE->parseError("Type mismatch in definition");
- }
- }
- cmd->reset(new DefineFunctionRecCommand(funcs, formals, formulas, true));
- }
- | toplevelDeclaration[cmd]
- ;
-
-simpleSymbolicExpr[std::string& s]
- : INTEGER_LITERAL
- { s = AntlrInput::tokenText($INTEGER_LITERAL); }
- | MINUS_TOK INTEGER_LITERAL
- { s = std::to_string(MINUS_TOK) + AntlrInput::tokenText($INTEGER_LITERAL); }
- | DECIMAL_LITERAL
- { s = AntlrInput::tokenText($DECIMAL_LITERAL); }
- | HEX_LITERAL
- { s = AntlrInput::tokenText($HEX_LITERAL); }
- | BINARY_LITERAL
- { s = AntlrInput::tokenText($BINARY_LITERAL); }
- | str[s]
- | IDENTIFIER
- { s = AntlrInput::tokenText($IDENTIFIER); }
- ;
-
-symbolicExpr[cvc5::api::Term& sexpr]
-@declarations {
- std::string s;
- std::vector<api::Term> children;
-}
- : simpleSymbolicExpr[s]
- { sexpr = SOLVER->mkString(PARSER_STATE->processAdHocStringEsc(s)); }
- | LPAREN (symbolicExpr[sexpr] { children.push_back(sexpr); } )* RPAREN
- { sexpr = SOLVER->mkTerm(cvc5::api::SEXPR, children); }
- ;
-
-/**
- * Match a top-level declaration.
- */
-toplevelDeclaration[std::unique_ptr<cvc5::Command>* cmd]
-@init {
- std::vector<std::string> ids;
- api::Sort t;
- Debug("parser-extra") << "declaration: " << AntlrInput::tokenText(LT(1))
- << std::endl;
-}
- : identifierList[ids,CHECK_NONE,SYM_VARIABLE] COLON
- ( declareVariables[cmd,t,ids,true]
- | declareTypes[cmd,ids] )
- ;
-
-/**
- * A bound variable declaration.
- */
-boundVarDecl[std::vector<std::string>& ids, cvc5::api::Sort& t]
-@init {
- std::unique_ptr<Command> local_cmd;
-}
- : identifierList[ids,CHECK_NONE,SYM_VARIABLE] COLON
- declareVariables[&local_cmd,t,ids,false]
- ;
-
-/**
- * A series of bound variable declarations.
- */
-boundVarDecls
-@init {
- std::vector<std::string> ids;
- api::Sort t;
-}
- : boundVarDecl[ids,t] ( COMMA boundVarDecl[ids,t] )*
- ;
-
-boundVarDeclsReturn[std::vector<cvc5::api::Term>& terms,
- std::vector<cvc5::api::Sort>& types]
-@init {
- std::vector<std::string> ids;
- api::Sort t;
- terms.clear();
- types.clear();
-}
- : boundVarDeclReturn[terms,types] ( COMMA boundVarDeclReturn[terms,types] )*
- ;
-
-boundVarDeclReturn[std::vector<cvc5::api::Term>& terms,
- std::vector<cvc5::api::Sort>& types]
-@init {
- std::vector<std::string> ids;
- api::Sort t;
- // NOTE: do not clear the vectors here!
-}
- : identifierList[ids,CHECK_NONE,SYM_VARIABLE] COLON type[t,CHECK_DECLARED]
- { const std::vector<api::Term>& vars = PARSER_STATE->bindBoundVars(ids, t);
- terms.insert(terms.end(), vars.begin(), vars.end());
- for(unsigned i = 0; i < vars.size(); ++i) {
- types.push_back(t);
- }
- }
- ;
-
-/**
- * Match the right-hand-side of a type declaration. Unlike
- * declareVariables[] below, don't need to return the Type, since it's
- * always the KindType (the type of types). Also don't need toplevel
- * because type declarations are always top-level, except for
- * type-lets, which don't use this rule.
- */
-declareTypes[std::unique_ptr<cvc5::Command>* cmd,
- const std::vector<std::string>& idList]
-@init {
- api::Sort t;
-}
- /* A sort declaration (e.g., "T : TYPE") */
- : TYPE_TOK
- { std::unique_ptr<DeclarationSequence> seq(new DeclarationSequence());
- for(std::vector<std::string>::const_iterator i = idList.begin();
- i != idList.end(); ++i) {
- // Don't allow a type variable to clash with a previously
- // declared type variable, however a type variable and a
- // non-type variable can clash unambiguously. Break from CVC3
- // behavior here.
- PARSER_STATE->checkDeclaration(*i, CHECK_UNDECLARED, SYM_SORT);
- api::Sort sort = PARSER_STATE->mkSort(*i);
- Command* decl = new DeclareSortCommand(*i, 0, sort);
- seq->addCommand(decl);
- }
- cmd->reset(seq.release());
- }
-
- /* A type alias "T : TYPE = foo..." */
- | TYPE_TOK EQUAL_TOK type[t,CHECK_DECLARED]
- { for(std::vector<std::string>::const_iterator i = idList.begin();
- i != idList.end();
- ++i) {
- PARSER_STATE->checkDeclaration(*i, CHECK_UNDECLARED, SYM_SORT);
- PARSER_STATE->defineType(*i, t);
- }
- }
- ;
-
-/**
- * Match the right-hand side of a variable declaration. Returns the
- * type. Some IDs might have been declared previously, and are not
- * re-declared if topLevel is true (CVC allows re-declaration if the
- * types are compatible---if they aren't compatible, an error is
- * thrown). Also if topLevel is true, variable definitions are
- * permitted and "cmd" is output. If topLevel is false, bound vars
- * are created
- */
-declareVariables[std::unique_ptr<cvc5::Command>* cmd, cvc5::api::Sort& t,
- const std::vector<std::string>& idList, bool topLevel]
-@init {
- api::Term f;
- Debug("parser-extra") << "declType: " << AntlrInput::tokenText(LT(1)) << std::endl;
-}
- /* A variable declaration (or definition) */
- : type[t,CHECK_DECLARED] ( EQUAL_TOK formula[f] )?
- { std::unique_ptr<DeclarationSequence> seq;
- if(topLevel) {
- seq.reset(new DeclarationSequence());
- }
- if(f.isNull()) {
- Debug("parser") << "working on " << idList.front() << " : " << t
- << std::endl;
- // CVC language allows redeclaration of variables if types are the same
- for(std::vector<std::string>::const_iterator i = idList.begin(),
- i_end = idList.end();
- i != i_end;
- ++i) {
- if(PARSER_STATE->isDeclared(*i, SYM_VARIABLE)) {
- api::Sort oldType = PARSER_STATE->getVariable(*i).getSort();
- Debug("parser") << " " << *i << " was declared previously "
- << "with type " << oldType << std::endl;
- if(oldType != t) {
- std::stringstream ss;
- ss << language::SetLanguage(Language::LANG_CVC)
- << "incompatible type for `" << *i << "':" << std::endl
- << " old type: " << oldType << std::endl
- << " new type: " << t << std::endl;
- PARSER_STATE->parseError(ss.str());
- } else {
- Debug("parser") << " types " << t << " and " << oldType
- << " are compatible" << std::endl;
- }
- } else {
- Debug("parser") << " " << *i << " not declared" << std::endl;
- if(topLevel) {
- api::Term func = PARSER_STATE->bindVar(*i, t);
- Command* decl = new DeclareFunctionCommand(*i, func, t);
- seq->addCommand(decl);
- } else {
- PARSER_STATE->bindBoundVar(*i, t);
- }
- }
- }
- } else {
- // f is not null-- meaning this is a definition not a declaration
- //Check if the formula f has the correct type, declared as t.
- if(!f.getSort().isSubsortOf(t)){
- PARSER_STATE->parseError("Type mismatch in definition");
- }
- if(!topLevel) {
- // must be top-level; doesn't make sense to write something
- // like e.g. FORALL(x:INT = 4): [...]
- PARSER_STATE->parseError("cannot construct a definition here; maybe you want a LET");
- }
- Assert(!idList.empty());
- api::Term fterm = f;
- std::vector<api::Term> formals;
- if (f.getKind()==api::LAMBDA)
- {
- formals.insert(formals.end(), f[0].begin(), f[0].end());
- f = f[1];
- }
- for(std::vector<std::string>::const_iterator i = idList.begin(),
- i_end = idList.end();
- i != i_end;
- ++i) {
- Debug("parser") << "making " << *i << " : " << t << " = " << f << std::endl;
- PARSER_STATE->checkDeclaration(*i, CHECK_UNDECLARED, SYM_VARIABLE);
- api::Term func = SOLVER->mkConst(t, *i);
- PARSER_STATE->defineVar(*i, fterm);
- Command* decl = new DefineFunctionCommand(*i, func, formals, f, true);
- seq->addCommand(decl);
- }
- }
- if(topLevel) {
- cmd->reset(seq.release());
- }
- }
- ;
-
-/**
- * Matches a list of identifiers separated by a comma and puts them in the
- * given list.
- * @param idList the list to fill with identifiers.
- * @param check what kinds of check to perform on the symbols
- */
-identifierList[std::vector<std::string>& idList,
- cvc5::parser::DeclarationCheck check,
- cvc5::parser::SymbolType type]
-@init {
- std::string id;
- idList.clear();
-}
- : identifier[id,check,type] { idList.push_back(id); }
- ( COMMA identifier[id,check,type] { idList.push_back(id); } )*
- ;
-
-/**
- * Matches an identifier and returns a string.
- */
-identifier[std::string& id,
- cvc5::parser::DeclarationCheck check,
- cvc5::parser::SymbolType type]
- : IDENTIFIER
- { id = AntlrInput::tokenText($IDENTIFIER);
- PARSER_STATE->checkDeclaration(id, check, type); }
- ;
-
-/**
- * Match the type in a declaration and do the declaration binding. If
- * "check" is CHECK_NONE, then identifiers occurring in the type need
- * not exist! They are created as "unresolved" types and linked up in
- * a type-substitution pass. Right now, only datatype definitions are
- * supported in this way (since type names can occur without any
- * forward-declaration in CVC language datatype definitions, we have
- * to create types for them on-the-fly). Before passing CHECK_NONE
- * you really should have a clear idea of WHY you need to parse that
- * way; then you should trace through Parser::bindMutualDatatypeType()
- * to figure out just what you're in for.
- */
-type[cvc5::api::Sort& t,
- cvc5::parser::DeclarationCheck check]
-@init {
- api::Sort t2;
- bool lhs;
- std::vector<api::Sort> args;
-}
- /* a type, possibly a function */
- : restrictedTypePossiblyFunctionLHS[t,check,lhs]
- { if(lhs) {
- Assert(t.isTuple());
- args = t.getTupleSorts();
- } else {
- args.push_back(t);
- }
- }
- ( ARROW_TOK type[t2,check] )?
- { if(t2.isNull()) {
- if(lhs) {
- PARSER_STATE->parseError("improperly-placed type list; expected `->' after to define a function; or else maybe these parentheses were meant to be square brackets, to define a tuple type?");
- }
- } else {
- t = SOLVER->mkFunctionSort(args, t2);
- }
- }
-
- /* type-lets: typeLetDecl defines the types, we just manage the
- * scopes here. NOTE that LET in the CVC language is always
- * sequential! */
- | LET_TOK { PARSER_STATE->pushScope(); }
- typeLetDecl[check] ( COMMA typeLetDecl[check] )* IN_TOK type[t,check]
- { PARSER_STATE->popScope(); }
- ;
-
-// A restrictedType is one that is not a "bare" function type (it can
-// be enclosed in parentheses) and is not a type list. To support the
-// syntax
-//
-// f : (nat, nat) -> nat;
-//
-// we have to permit restrictedTypes to be type lists (as on the LHS
-// there). The "type" rule above uses restictedTypePossiblyFunctionLHS
-// directly in order to implement that; this rule allows a type list to
-// parse but then issues an error.
-restrictedType[cvc5::api::Sort& t,
- cvc5::parser::DeclarationCheck check]
-@init {
- bool lhs;
-}
- : restrictedTypePossiblyFunctionLHS[t,check,lhs]
- { if(lhs) { PARSER_STATE->parseError("improperly-placed type list; maybe these parentheses were meant to be square brackets, to define a tuple type?"); } }
- ;
-
-/**
- * lhs is set to "true" on output if we have a list of types, so an
- * ARROW must follow. An ARROW can always follow; lhs means it MUST.
- */
-restrictedTypePossiblyFunctionLHS[cvc5::api::Sort& t,
- cvc5::parser::DeclarationCheck check,
- bool& lhs]
-@init {
- api::Sort t2;
- api::Term f, f2;
- std::string id;
- std::vector<api::Sort> types;
- std::vector< std::pair<std::string, api::Sort> > typeIds;
- //SymbolTable* symtab;
- Parser* parser;
- lhs = false;
-}
- /* named types */
- : identifier[id,check,SYM_SORT]
- parameterization[check,types]?
- {
- if(check == CHECK_DECLARED ||
- PARSER_STATE->isDeclared(id, SYM_SORT)) {
- Debug("parser-param") << "param: getSort " << id << " " << types.size() << " " << PARSER_STATE->getArity( id )
- << " " << PARSER_STATE->isDeclared(id, SYM_SORT) << std::endl;
- if(types.size() != PARSER_STATE->getArity(id)) {
- std::stringstream ss;
- ss << "incorrect arity for symbol `" << id << "': expected "
- << PARSER_STATE->getArity( id ) << " type arguments, got "
- << types.size();
- PARSER_STATE->parseError(ss.str());
- }
- if(types.size() > 0) {
- t = PARSER_STATE->getSort(id, types);
- }else{
- t = PARSER_STATE->getSort(id);
- }
- } else {
- if(types.empty()) {
- t = PARSER_STATE->mkUnresolvedType(id);
- Debug("parser-param") << "param: make unres type " << id << std::endl;
- }else{
- t = PARSER_STATE->mkUnresolvedTypeConstructor(id,types);
- t = t.instantiate( types );
- Debug("parser-param") << "param: make unres param type " << id << " " << types.size() << " "
- << PARSER_STATE->getArity( id ) << std::endl;
- }
- }
- }
-
- /* array types */
- | ARRAY_TOK restrictedType[t,check] OF_TOK restrictedType[t2,check]
- { t = SOLVER->mkArraySort(t, t2); }
- | SET_TOK OF_TOK restrictedType[t,check]
- { t = SOLVER->mkSetSort(t); }
-
- /* subtypes */
- | SUBTYPE_TOK LPAREN
- /* A bit tricky: this LAMBDA expression cannot refer to constants
- * declared in the outer context. What follows isn't quite right,
- * though, since type aliases and function definitions should be
- * retained in the set of current declarations. */
- formula[f] ( COMMA formula[f2] )? RPAREN
- {
- PARSER_STATE->unimplementedFeature("predicate subtyping not supported in this release");
- }
-
- /* tuple types / old-style function types */
- | LBRACKET ( type[t,check] { types.push_back(t); }
- ( COMMA type[t,check] { types.push_back(t); } )* )? RBRACKET
- { if(types.size() == 1 && types.front().isFunction()) {
- // old style function syntax [ T -> U ]
- PARSER_STATE->parseError("old-style function type syntax not supported anymore; please use the new syntax");
- } else {
- // tuple type [ T, U, V... ]
- t = SOLVER->mkTupleSort(types);
- }
- }
-
- /* record types */
- | SQHASH ( identifier[id,CHECK_NONE,SYM_SORT] COLON type[t,check] { typeIds.push_back(std::make_pair(id, t)); }
- ( COMMA identifier[id,CHECK_NONE,SYM_SORT] COLON type[t,check] { typeIds.push_back(std::make_pair(id, t)); } )* )? HASHSQ
- { t = SOLVER->mkRecordSort(typeIds); }
-
- /* bitvector types */
- | BITVECTOR_TOK LPAREN k=numeral RPAREN
- { if(k == 0) {
- PARSER_STATE->parseError("Illegal bitvector size: 0");
- }
- t = SOLVER->mkBitVectorSort(k);
- }
-
- /* string type */
- | STRING_TOK { t = SOLVER->getStringSort(); }
-
- /* basic types */
- | BOOLEAN_TOK { t = SOLVER->getBooleanSort(); }
- | REAL_TOK { t = SOLVER->getRealSort(); }
- | INT_TOK { t = SOLVER->getIntegerSort(); }
-
- /* Parenthesized general type, or the lhs of an ARROW (a list of
- * types). These two things are combined to avoid conflicts in
- * parsing. */
- | LPAREN type[t,check] { types.push_back(t); }
- ( COMMA type[t,check] { lhs = true; types.push_back(t); } )* RPAREN
- { if(lhs) { t = SOLVER->mkTupleSort(types); }
- // if !lhs, t is already set up correctly, nothing to do..
- }
- ;
-
-parameterization[cvc5::parser::DeclarationCheck check,
- std::vector<cvc5::api::Sort>& params]
-@init {
- api::Sort t;
-}
- : LBRACKET restrictedType[t,check] { Debug("parser-param") << "t = " << t << std::endl; params.push_back( t ); }
- ( COMMA restrictedType[t,check] { Debug("parser-param") << "t = " << t << std::endl; params.push_back( t ); } )* RBRACKET
- ;
-
-typeLetDecl[cvc5::parser::DeclarationCheck check]
-@init {
- api::Sort t;
- std::string id;
-}
- : identifier[id,CHECK_NONE,SYM_SORT] (COLON TYPE_TOK)? EQUAL_TOK restrictedType[t,check]
- { PARSER_STATE->defineType(id, t); }
- ;
-
-/**
- * Matches a cvc5 expression. Formulas and terms are not really
- * distinguished during parsing; please ignore the naming of the
- * grammar rules.
- *
- * @return the expression representing the formula/term
- */
-formula[cvc5::api::Term& f]
-@init {
- Debug("parser-extra") << "formula: " << AntlrInput::tokenText(LT(1)) << std::endl;
- api::Term f2;
- std::vector<cvc5::api::Term> expressions;
- std::vector<unsigned> operators;
- unsigned op;
-}
- : n=nots
- ( prefixFormula[f]
- { f = addNots(SOLVER, n, f); }
- | comparison[f]
- { f = addNots(SOLVER, n, f);
- expressions.push_back(f);
- }
- morecomparisons[expressions,operators]?
- {
- f = createPrecedenceTree(PARSER_STATE, SOLVER, expressions, operators);
- }
- )
- ;
-
-morecomparisons[std::vector<cvc5::api::Term>& expressions,
- std::vector<unsigned>& operators] returns [size_t i = 0]
-@init {
- unsigned op;
- api::Term f;
- $i = expressions.size();
-}
- : booleanBinop[op] { operators.push_back(op); }
- n=nots
- ( prefixFormula[f]
- { expressions.push_back(addNots(SOLVER, n, f)); }
- | comparison[f]
- { f = addNots(SOLVER, n, f);
- expressions.push_back(f);
- }
- morecomparisons[expressions,operators]?
- )
- ;
-
-/** Matches 0 or more NOTs. */
-nots returns [size_t n = 0]
- : ( NOT_TOK { ++$n; } )*
- ;
-
-prefixFormula[cvc5::api::Term& f]
-@init {
- std::vector<std::string> ids;
- std::vector<api::Term> terms;
- std::vector<api::Sort> types;
- std::vector<api::Term> bvs;
- api::Sort t;
- api::Kind k;
- api::Term ipl;
-}
- /* quantifiers */
- : ( FORALL_TOK { k = api::FORALL; } | EXISTS_TOK { k = api::EXISTS; } )
- { PARSER_STATE->pushScope(); } LPAREN
- boundVarDecl[ids,t]
- { for(std::vector<std::string>::const_iterator i = ids.begin(); i != ids.end(); ++i) {
- bvs.push_back(PARSER_STATE->bindBoundVar(*i, t));
- }
- ids.clear();
- }
- ( COMMA boundVarDecl[ids,t]
- {
- for(std::vector<std::string>::const_iterator i = ids.begin(); i != ids.end(); ++i) {
- bvs.push_back(PARSER_STATE->bindBoundVar(*i, t));
- }
- ids.clear();
- }
- )* RPAREN {
- terms.push_back( MK_TERM( api::BOUND_VAR_LIST, bvs ) ); }
- COLON instantiationPatterns[ipl]? formula[f]
- { PARSER_STATE->popScope();
- terms.push_back(f);
- if(! ipl.isNull()) {
- terms.push_back(ipl);
- }
- f = MK_TERM(k, terms);
- }
-
- /* lets: letDecl defines the variables and functionss, we just
- * manage the scopes here. NOTE that LET in the CVC language is
- * always sequential! */
- | LET_TOK { PARSER_STATE->pushScope(); }
- letDecl ( COMMA letDecl )*
- IN_TOK formula[f] { PARSER_STATE->popScope(); }
-
- /* lambda */
- | LAMBDA_TOK { PARSER_STATE->pushScope(); } LPAREN
- boundVarDeclsReturn[terms,types]
- RPAREN COLON formula[f]
- { PARSER_STATE->popScope();
- api::Term bvl = MK_TERM( api::BOUND_VAR_LIST, terms );
- f = MK_TERM( api::LAMBDA, bvl, f );
- }
- ;
-
-instantiationPatterns[ cvc5::api::Term& expr ]
-@init {
- std::vector<api::Term> args;
- api::Term f;
- std::vector<api::Term> patterns;
-}
- : ( PATTERN_TOK LPAREN formula[f] { args.push_back( f ); } (COMMA formula[f] { args.push_back( f ); } )* RPAREN COLON
- { patterns.push_back( MK_TERM( api::INST_PATTERN, args ) );
- args.clear();
- } )+
- { if(! patterns.empty()) {
- expr = MK_TERM( api::INST_PATTERN_LIST, patterns );
- }
- }
- ;
-
-/**
- * Matches (and defines) a single LET declaration.
- */
-letDecl
-@init {
- api::Term e;
- std::string name;
-}
- : identifier[name,CHECK_NONE,SYM_VARIABLE] EQUAL_TOK formula[e]
- {
- Debug("parser") << language::SetLanguage(Language::LANG_CVC)
- << e.getSort() << std::endl;
- PARSER_STATE->defineVar(name, e);
- Debug("parser") << "LET[" << PARSER_STATE->scopeLevel() << "]: "
- << name << std::endl
- << " ==>" << " " << e << std::endl;
- }
- ;
-
-booleanBinop[unsigned& op]
-@init {
- op = LT(1)->getType(LT(1));
-}
- : IFF_TOK
- | IMPLIES_TOK
- | OR_TOK
- | XOR_TOK
- | AND_TOK
- ;
-
-comparison[cvc5::api::Term& f]
-@init {
- std::vector<cvc5::api::Term> expressions;
- std::vector<unsigned> operators;
- unsigned op;
-}
- : term[f] { expressions.push_back(f); }
- ( comparisonBinop[op] term[f]
- { operators.push_back(op); expressions.push_back(f); } )*
- { f = createPrecedenceTree(PARSER_STATE, SOLVER, expressions, operators); }
- ;
-
-comparisonBinop[unsigned& op]
-@init {
- op = LT(1)->getType(LT(1));
-}
- : EQUAL_TOK
- | DISEQUAL_TOK
- | GT_TOK
- | GEQ_TOK
- | LT_TOK
- | LEQ_TOK
- | MEMBER_TOK
- | FMF_CARD_TOK
- ;
-
-arithmeticBinop[unsigned& op]
-@init {
- op = LT(1)->getType(LT(1));
-}
- : PLUS_TOK
- | MINUS_TOK
- | STAR_TOK
- | INTDIV_TOK
- | MOD_TOK
- | DIV_TOK
- | EXP_TOK
- ;
-
-/** Parses an array/tuple/record assignment term. */
-term[cvc5::api::Term& f]
-@init {
- std::vector<cvc5::api::Term> expressions;
- std::vector<unsigned> operators;
- unsigned op;
- api::Sort t;
-}
- : uminusTerm[f]
- ( WITH_TOK
- ( arrayStore[f] ( COMMA arrayStore[f] )*
- | DOT ( tupleStore[f] ( COMMA DOT tupleStore[f] )*
- | recordStore[f] ( COMMA DOT recordStore[f] )* ) )
- | { expressions.push_back(f); }
- ( arithmeticBinop[op] uminusTerm[f] { operators.push_back(op); expressions.push_back(f); } )*
- { f = createPrecedenceTree(PARSER_STATE, SOLVER, expressions, operators); }
- )
- ;
-
-/**
- * Parses just part of the array assignment (and constructs
- * the store terms).
- */
-arrayStore[cvc5::api::Term& f]
-@init {
- api::Term f2, k;
-}
- : LBRACKET formula[k] RBRACKET
- { f2 = MK_TERM(cvc5::api::SELECT, f, k); }
- ( ( arrayStore[f2]
- | DOT ( tupleStore[f2]
- | recordStore[f2] ) )
- | ASSIGN_TOK term[f2] )
- { f = MK_TERM(cvc5::api::STORE, f, k, f2); }
- ;
-
-/**
- * Parses just part of the tuple assignment (and constructs
- * the store terms).
- */
-tupleStore[cvc5::api::Term& f]
-@init {
- api::Term f2;
-}
- : k=numeral
- { api::Sort t = f.getSort();
- if(! t.isTuple()) {
- PARSER_STATE->parseError("tuple-update applied to non-tuple");
- }
- size_t length = t.getTupleLength();
- if(k >= length) {
- std::stringstream ss;
- ss << "tuple is of length " << length << "; cannot update index " << k;
- PARSER_STATE->parseError(ss.str());
- }
- const api::Datatype& dt = t.getDatatype();
- f2 = SOLVER->mkTerm(
- api::APPLY_SELECTOR, dt[0][k].getSelectorTerm(), f);
- }
- ( ( arrayStore[f2]
- | DOT ( tupleStore[f2]
- | recordStore[f2] ) )
- | ASSIGN_TOK term[f2] )
- {
- const api::Datatype& dt = f.getSort().getDatatype();
- f = SOLVER->mkTerm(
- api::APPLY_UPDATER, dt[0][k].getUpdaterTerm(), f, f2);
- }
- ;
-
-/**
- * Parses just part of the record assignment (and constructs
- * the store terms).
- */
-recordStore[cvc5::api::Term& f]
-@init {
- std::string id;
- api::Term f2;
-}
- : identifier[id,CHECK_NONE,SYM_VARIABLE]
- { api::Sort t = f.getSort();
- if(! t.isRecord()) {
- std::stringstream ss;
- ss << "record-update applied to non-record term" << std::endl
- << "the term: " << f << std::endl
- << "its type: " << t;
- PARSER_STATE->parseError(ss.str());
- }
- const api::Datatype& dt = t.getDatatype();
- f2 = SOLVER->mkTerm(
- api::APPLY_SELECTOR, dt[0][id].getSelectorTerm(), f);
- }
- ( ( arrayStore[f2]
- | DOT ( tupleStore[f2]
- | recordStore[f2] ) )
- | ASSIGN_TOK term[f2] )
- {
- const api::Datatype& dt = f.getSort().getDatatype();
- f = SOLVER->mkTerm(
- api::APPLY_UPDATER, dt[0][id].getUpdaterTerm(), f, f2);
- }
- ;
-
-/** Parses a unary minus term. */
-uminusTerm[cvc5::api::Term& f]
-@init {
- unsigned minusCount = 0;
-}
- /* Unary minus */
- : (MINUS_TOK { ++minusCount; })* bvBinaryOpTerm[f]
- {
- while (minusCount > 0)
- {
- --minusCount;
- f = MK_TERM(cvc5::api::UMINUS, f);
- }
- };
-
-/** Parses bitvectors. Starts with binary operators @, &, and |. */
-bvBinaryOpTerm[cvc5::api::Term& f]
-@init {
- std::vector<cvc5::api::Term> expressions;
- std::vector<unsigned> operators;
- unsigned op;
-}
- : bvNegTerm[f] { expressions.push_back(f); }
- ( bvBinop[op] bvNegTerm[f] { operators.push_back(op); expressions.push_back(f); } )*
- { f = createPrecedenceTree(PARSER_STATE, SOLVER, expressions, operators); }
- ;
-bvBinop[unsigned& op]
-@init {
- op = LT(1)->getType(LT(1));
-}
- : CONCAT_TOK
- | BAR // bitwise OR
- | BVAND_TOK
- ;
-
-bvNegTerm[cvc5::api::Term& f]
- /* BV neg */
- : BVNEG_TOK bvNegTerm[f]
- {
- f = f.getSort().isSet() ? MK_TERM(cvc5::api::COMPLEMENT, f)
- : MK_TERM(cvc5::api::BITVECTOR_NOT, f);
- }
- | relationBinopTerm[f]
- ;
-
-relationBinop[unsigned& op]
-@init {
- op = LT(1)->getType(LT(1));
-}
- : JOIN_TOK
- | PRODUCT_TOK
- | JOIN_IMAGE_TOK
- ;
-
-relationBinopTerm[cvc5::api::Term& f]
-@init {
- std::vector<cvc5::api::Term> expressions;
- std::vector<unsigned> operators;
- unsigned op;
-}
- : postfixTerm[f] { expressions.push_back(f); }
- ( relationBinop[op] postfixTerm[f] { operators.push_back(op); expressions.push_back(f); } )*
- { f = createPrecedenceTree(PARSER_STATE, SOLVER, expressions, operators); }
- ;
-
-/**
- * Parses an array select / bitvector extract / bitvector shift /
- * function or constructor application. These are all parsed the same
- * way because they are all effectively post-fix operators and can
- * continue piling onto an expression. Array selects and bitvector
- * extracts even share similar syntax with their use of [ square
- * brackets ], so we left-factor as much out as possible to make ANTLR
- * happy.
- */
-postfixTerm[cvc5::api::Term& f]
-@init {
- api::Term f2;
- bool extract = false, left = false;
- std::vector<api::Term> args;
- std::string id;
- api::Sort t;
-}
- : ( relationTerm[f]
- ( /* array select / bitvector extract */
- LBRACKET
- ( formula[f2] { extract = false; }
- | k1=numeral COLON k2=numeral { extract = true; } )
- RBRACKET
- { if(extract) {
- /* bitvector extract */
- f = SOLVER->mkTerm(SOLVER->mkOp(api::BITVECTOR_EXTRACT,k1,k2), f);
- } else {
- /* array select */
- f = MK_TERM(cvc5::api::SELECT, f, f2);
- }
- }
- /* left- or right-shift */
- | ( LEFTSHIFT_TOK { left = true; }
- | RIGHTSHIFT_TOK { left = false; } ) k=numeral
- {
- if(left) {
- f = MK_TERM(api::BITVECTOR_CONCAT, f, SOLVER->mkBitVector(k));
- } else {
- unsigned bv_size = f.getSort().getBVSize();
- f = MK_TERM(api::BITVECTOR_CONCAT,
- SOLVER->mkBitVector(k),
- SOLVER->mkTerm(
- SOLVER->mkOp(api::BITVECTOR_EXTRACT, bv_size - 1, k), f));
- }
- }
-
- /* function/constructor application */
- | LPAREN { args.push_back(f); }
- formula[f] { args.push_back(f); }
- ( COMMA formula[f] { args.push_back(f); } )* RPAREN
- {
- PARSER_STATE->checkFunctionLike(args.front());
- api::Kind kind = PARSER_STATE->getKindForFunction(args.front());
- Debug("parser") << "expr is " << args.front() << std::endl;
- Debug("parser") << "kind is " << kind << std::endl;
- f = SOLVER->mkTerm(kind,args);
- }
-
- /* record / tuple select */
- | DOT
- ( identifier[id,CHECK_NONE,SYM_VARIABLE]
- { api::Sort type = f.getSort();
- if(! type.isRecord()) {
- PARSER_STATE->parseError("record-select applied to non-record");
- }
- const api::Datatype& dt = type.getDatatype();
- f = SOLVER->mkTerm(api::APPLY_SELECTOR,
- dt[0][id].getSelectorTerm(),
- f);
- }
- | k=numeral
- {
- api::Sort type = f.getSort();
- if(! type.isTuple()) {
- PARSER_STATE->parseError("tuple-select applied to non-tuple");
- }
- size_t length = type.getTupleLength();
- if(k >= length) {
- std::stringstream ss;
- ss << "tuple is of length " << length << "; cannot access index " << k;
- PARSER_STATE->parseError(ss.str());
- }
- const api::Datatype& dt = type.getDatatype();
- f = SOLVER->mkTerm(api::APPLY_SELECTOR,
- dt[0][k].getSelectorTerm(),
- f);
- }
- )
- )*
- | FLOOR_TOK LPAREN formula[f] RPAREN
- { f = MK_TERM(cvc5::api::TO_INTEGER, f); }
- | IS_INTEGER_TOK LPAREN formula[f] RPAREN
- { f = MK_TERM(cvc5::api::IS_INTEGER, f); }
- | ABS_TOK LPAREN formula[f] RPAREN
- { f = MK_TERM(cvc5::api::ABS, f); }
- | DIVISIBLE_TOK LPAREN formula[f] COMMA n=numeral RPAREN
- { f = MK_TERM(SOLVER->mkOp(cvc5::api::DIVISIBLE, n), f); }
- | DISTINCT_TOK LPAREN
- formula[f] { args.push_back(f); }
- ( COMMA formula[f] { args.push_back(f); } )* RPAREN
- {
- f = (args.size() == 1) ? SOLVER->mkTrue()
- : MK_TERM(cvc5::api::DISTINCT, args);
- }
- )
- ( typeAscription[f, t]
- {
- f = PARSER_STATE->applyTypeAscription(f,t);
- }
- )?
- ;
-
-relationTerm[cvc5::api::Term& f]
- /* relation terms */
- : TRANSPOSE_TOK LPAREN formula[f] RPAREN
- { f = MK_TERM(cvc5::api::TRANSPOSE, f); }
- | TRANSCLOSURE_TOK LPAREN formula[f] RPAREN
- { f = MK_TERM(cvc5::api::TCLOSURE, f); }
- | TUPLE_TOK LPAREN formula[f] RPAREN
- { std::vector<api::Sort> types;
- std::vector<api::Term> args;
- args.push_back(f);
- types.push_back(f.getSort());
- api::Sort t = SOLVER->mkTupleSort(types);
- const api::Datatype& dt = t.getDatatype();
- args.insert(args.begin(), dt[0].getConstructorTerm());
- f = MK_TERM(api::APPLY_CONSTRUCTOR, args);
- }
- | IDEN_TOK LPAREN formula[f] RPAREN
- { f = MK_TERM(cvc5::api::IDEN, f); }
- | bvTerm[f]
- ;
-
-bvTerm[cvc5::api::Term& f]
-@init {
- api::Term f2;
- std::vector<api::Term> args;
-}
- /* BV xor */
- : BVXOR_TOK LPAREN formula[f] COMMA formula[f2] RPAREN
- { f = MK_TERM(cvc5::api::BITVECTOR_XOR, f, f2); }
- | BVNAND_TOK LPAREN formula[f] COMMA formula[f2] RPAREN
- { f = MK_TERM(cvc5::api::BITVECTOR_NAND, f, f2); }
- | BVNOR_TOK LPAREN formula[f] COMMA formula[f2] RPAREN
- { f = MK_TERM(cvc5::api::BITVECTOR_NOR, f, f2); }
- | BVCOMP_TOK LPAREN formula[f] COMMA formula[f2] RPAREN
- { f = MK_TERM(cvc5::api::BITVECTOR_COMP, f, f2); }
- | BVXNOR_TOK LPAREN formula[f] COMMA formula[f2] RPAREN
- { f = MK_TERM(cvc5::api::BITVECTOR_XNOR, f, f2); }
-
- /* BV unary minus */
- | BVUMINUS_TOK LPAREN formula[f] RPAREN
- { f = MK_TERM(cvc5::api::BITVECTOR_NEG, f); }
- /* BV addition */
- | BVPLUS_TOK LPAREN k=numeral COMMA formula[f] { args.push_back(f); }
- ( COMMA formula[f2] { args.push_back(f2); } )+ RPAREN
- {
- if (k <= 0) {
- PARSER_STATE->parseError("BVPLUS(k,_,_) must have k > 0");
- }
- for (unsigned i = 0; i < args.size(); ++ i) {
- ENSURE_BV_SIZE(k, args[i]);
- }
- f = MK_TERM(cvc5::api::BITVECTOR_ADD, args);
- }
- /* BV subtraction */
- | BVSUB_TOK LPAREN k=numeral COMMA formula[f] COMMA formula[f2] RPAREN
- {
- if (k <= 0) {
- PARSER_STATE->parseError("BVSUB(k,_,_) must have k > 0");
- }
- ENSURE_BV_SIZE(k, f);
- ENSURE_BV_SIZE(k, f2);
- f = MK_TERM(cvc5::api::BITVECTOR_SUB, f, f2);
- }
- /* BV multiplication */
- | BVMULT_TOK LPAREN k=numeral COMMA formula[f] COMMA formula[f2] RPAREN
- {
- if (k <= 0) {
- PARSER_STATE->parseError("BVMULT(k,_,_) must have k > 0");
- }
- ENSURE_BV_SIZE(k, f);
- ENSURE_BV_SIZE(k, f2);
- f = MK_TERM(cvc5::api::BITVECTOR_MULT, f, f2);
- }
- /* BV unsigned division */
- | BVUDIV_TOK LPAREN formula[f] COMMA formula[f2] RPAREN
- { f = MK_TERM(cvc5::api::BITVECTOR_UDIV, f, f2); }
- /* BV signed division */
- | BVSDIV_TOK LPAREN formula[f] COMMA formula[f2] RPAREN
- { f = MK_TERM(cvc5::api::BITVECTOR_SDIV, f, f2); }
- /* BV unsigned remainder */
- | BVUREM_TOK LPAREN formula[f] COMMA formula[f2] RPAREN
- { f = MK_TERM(cvc5::api::BITVECTOR_UREM, f, f2); }
- /* BV signed remainder */
- | BVSREM_TOK LPAREN formula[f] COMMA formula[f2] RPAREN
- { f = MK_TERM(cvc5::api::BITVECTOR_SREM, f, f2); }
- /* BV signed modulo */
- | BVSMOD_TOK LPAREN formula[f] COMMA formula[f2] RPAREN
- { f = MK_TERM(cvc5::api::BITVECTOR_SMOD, f, f2); }
- /* BV left shift */
- | BVSHL_TOK LPAREN formula[f] COMMA formula[f2] RPAREN
- { f = MK_TERM(cvc5::api::BITVECTOR_SHL, f, f2); }
- /* BV arithmetic right shift */
- | BVASHR_TOK LPAREN formula[f] COMMA formula[f2] RPAREN
- { f = MK_TERM(cvc5::api::BITVECTOR_ASHR, f, f2); }
- /* BV logical left shift */
- | BVLSHR_TOK LPAREN formula[f] COMMA formula[f2] RPAREN
- { f = MK_TERM(cvc5::api::BITVECTOR_LSHR, f, f2); }
- /* BV sign extension */
- | SX_TOK LPAREN formula[f] COMMA k=numeral RPAREN
- { unsigned n = f.getSort().getBVSize();
- // Sign extension in TheoryBitVector is defined as in SMT-LIB
- // which is different than in the CVC language
- // SX(BITVECTOR(k), n) in CVC language extends to n bits
- // In SMT-LIB, such a thing expands to k + n bits
- f = SOLVER->mkTerm(SOLVER->mkOp(api::BITVECTOR_SIGN_EXTEND,k-n), f);
- }
- /* BV zero extension */
- | BVZEROEXTEND_TOK LPAREN formula[f] COMMA k=numeral RPAREN
- { unsigned n = f.getSort().getBVSize();
- // Zero extension in TheoryBitVector is defined as in SMT-LIB
- // which is the same as in CVC3, but different than SX!
- // SX(BITVECTOR(k), n) in CVC language extends to n bits
- // BVZEROEXTEND(BITVECTOR(k), n) in CVC language extends to k + n bits
- f = SOLVER->mkTerm(SOLVER->mkOp(api::BITVECTOR_ZERO_EXTEND,k), f);
- }
- /* BV repeat operation */
- | BVREPEAT_TOK LPAREN formula[f] COMMA k=numeral RPAREN
- { f = SOLVER->mkTerm(SOLVER->mkOp(api::BITVECTOR_REPEAT,k), f); }
- /* BV rotate right */
- | BVROTR_TOK LPAREN formula[f] COMMA k=numeral RPAREN
- { f = SOLVER->mkTerm(SOLVER->mkOp(api::BITVECTOR_ROTATE_RIGHT,k), f); }
- /* BV rotate left */
- | BVROTL_TOK LPAREN formula[f] COMMA k=numeral RPAREN
- { f = SOLVER->mkTerm(SOLVER->mkOp(api::BITVECTOR_ROTATE_LEFT,k), f); }
-
- /* BV comparisons */
- | BVLT_TOK LPAREN formula[f] COMMA formula[f2] RPAREN
- { f = MK_TERM(cvc5::api::BITVECTOR_ULT, f, f2); }
- | BVLE_TOK LPAREN formula[f] COMMA formula[f2] RPAREN
- { f = MK_TERM(cvc5::api::BITVECTOR_ULE, f, f2); }
- | BVGT_TOK LPAREN formula[f] COMMA formula[f2] RPAREN
- { f = MK_TERM(cvc5::api::BITVECTOR_UGT, f, f2); }
- | BVGE_TOK LPAREN formula[f] COMMA formula[f2] RPAREN
- { f = MK_TERM(cvc5::api::BITVECTOR_UGE, f, f2); }
- | BVSLT_TOK LPAREN formula[f] COMMA formula[f2] RPAREN
- { f = MK_TERM(cvc5::api::BITVECTOR_SLT, f, f2); }
- | BVSLE_TOK LPAREN formula[f] COMMA formula[f2] RPAREN
- { f = MK_TERM(cvc5::api::BITVECTOR_SLE, f, f2); }
- | BVSGT_TOK LPAREN formula[f] COMMA formula[f2] RPAREN
- { f = MK_TERM(cvc5::api::BITVECTOR_SGT, f, f2); }
- | BVSGE_TOK LPAREN formula[f] COMMA formula[f2] RPAREN
- { f = MK_TERM(cvc5::api::BITVECTOR_SGE, f, f2); }
- | stringTerm[f]
- ;
-
-stringTerm[cvc5::api::Term& f]
-@init {
- api::Term f2;
- api::Term f3;
- std::string s;
- std::vector<api::Term> args;
-}
- /* String prefix operators */
- : STRING_CONCAT_TOK LPAREN formula[f] { args.push_back(f); }
- ( COMMA formula[f2] { args.push_back(f2); } )+ RPAREN
- { f = MK_TERM(cvc5::api::STRING_CONCAT, args); }
- | STRING_LENGTH_TOK LPAREN formula[f] RPAREN
- { f = MK_TERM(cvc5::api::STRING_LENGTH, f); }
- | STRING_CONTAINS_TOK LPAREN formula[f] COMMA formula[f2] RPAREN
- { f = MK_TERM(cvc5::api::STRING_CONTAINS, f, f2); }
- | STRING_SUBSTR_TOK LPAREN formula[f] COMMA formula[f2] COMMA formula[f3] RPAREN
- { f = MK_TERM(cvc5::api::STRING_SUBSTR, f, f2, f3); }
- | STRING_CHARAT_TOK LPAREN formula[f] COMMA formula[f2] RPAREN
- { f = MK_TERM(cvc5::api::STRING_CHARAT, f, f2); }
- | STRING_INDEXOF_TOK LPAREN formula[f] COMMA formula[f2] COMMA formula[f3] RPAREN
- { f = MK_TERM(cvc5::api::STRING_INDEXOF, f, f2, f3); }
- | STRING_REPLACE_TOK LPAREN formula[f] COMMA formula[f2] COMMA formula[f3] RPAREN
- { f = MK_TERM(cvc5::api::STRING_REPLACE, f, f2, f3); }
- | STRING_REPLACE_ALL_TOK LPAREN formula[f] COMMA formula[f2] COMMA formula[f3] RPAREN
- { f = MK_TERM(cvc5::api::STRING_REPLACE_ALL, f, f2, f3); }
- | STRING_PREFIXOF_TOK LPAREN formula[f] COMMA formula[f2] RPAREN
- { f = MK_TERM(cvc5::api::STRING_PREFIX, f, f2); }
- | STRING_SUFFIXOF_TOK LPAREN formula[f] COMMA formula[f2] RPAREN
- { f = MK_TERM(cvc5::api::STRING_SUFFIX, f, f2); }
- | STRING_STOI_TOK LPAREN formula[f] RPAREN
- { f = MK_TERM(cvc5::api::STRING_TO_INT, f); }
- | STRING_ITOS_TOK LPAREN formula[f] RPAREN
- { f = MK_TERM(cvc5::api::STRING_FROM_INT, f); }
- | STRING_TO_REGEXP_TOK LPAREN formula[f] RPAREN
- { f = MK_TERM(cvc5::api::STRING_TO_REGEXP, f); }
- | STRING_TOLOWER_TOK LPAREN formula[f] RPAREN
- { f = MK_TERM(cvc5::api::STRING_TOLOWER, f); }
- | STRING_TOUPPER_TOK LPAREN formula[f] RPAREN
- { f = MK_TERM(cvc5::api::STRING_TOUPPER, f); }
- | STRING_REV_TOK LPAREN formula[f] RPAREN
- { f = MK_TERM(cvc5::api::STRING_REV, f); }
- | REGEXP_CONCAT_TOK LPAREN formula[f] { args.push_back(f); }
- ( COMMA formula[f2] { args.push_back(f2); } )+ RPAREN
- { f = MK_TERM(cvc5::api::REGEXP_CONCAT, args); }
- | REGEXP_UNION_TOK LPAREN formula[f] { args.push_back(f); }
- ( COMMA formula[f2] { args.push_back(f2); } )+ RPAREN
- { f = MK_TERM(cvc5::api::REGEXP_UNION, args); }
- | REGEXP_INTER_TOK LPAREN formula[f] { args.push_back(f); }
- ( COMMA formula[f2] { args.push_back(f2); } )+ RPAREN
- { f = MK_TERM(cvc5::api::REGEXP_INTER, args); }
- | REGEXP_STAR_TOK LPAREN formula[f] RPAREN
- { f = MK_TERM(cvc5::api::REGEXP_STAR, f); }
- | REGEXP_PLUS_TOK LPAREN formula[f] RPAREN
- { f = MK_TERM(cvc5::api::REGEXP_PLUS, f); }
- | REGEXP_OPT_TOK LPAREN formula[f] RPAREN
- { f = MK_TERM(cvc5::api::REGEXP_OPT, f); }
- | REGEXP_RANGE_TOK LPAREN formula[f] COMMA formula[f2] RPAREN
- { f = MK_TERM(cvc5::api::REGEXP_RANGE, f, f2); }
- | REGEXP_LOOP_TOK LPAREN formula[f] COMMA lo=numeral COMMA hi=numeral RPAREN
- {
- api::Op lop = SOLVER->mkOp(cvc5::api::REGEXP_LOOP, lo, hi);
- f = MK_TERM(lop, f);
- }
- | REGEXP_COMPLEMENT_TOK LPAREN formula[f] RPAREN
- { f = MK_TERM(cvc5::api::REGEXP_COMPLEMENT, f); }
- | SEQ_UNIT_TOK LPAREN formula[f] RPAREN
- { f = MK_TERM(cvc5::api::SEQ_UNIT, f); }
- | REGEXP_EMPTY_TOK
- { f = MK_TERM(cvc5::api::REGEXP_EMPTY, std::vector<api::Term>()); }
- | REGEXP_SIGMA_TOK
- { f = MK_TERM(cvc5::api::REGEXP_SIGMA, std::vector<api::Term>()); }
-
- /* string literal */
- | str[s]
- { f = PARSER_STATE->mkStringConstant(s); }
-
- | setsTerm[f]
- ;
-
-setsTerm[cvc5::api::Term& f]
-@init {
-}
- /* Sets prefix operators */
- : SETS_CARD_TOK LPAREN formula[f] RPAREN
- { f = MK_TERM(cvc5::api::CARD, f); }
- | SETS_CHOOSE_TOK LPAREN formula[f] RPAREN
- { f = MK_TERM(cvc5::api::CHOOSE, f); }
- | simpleTerm[f]
- ;
-
-
-/** Parses a simple term. */
-simpleTerm[cvc5::api::Term& f]
-@init {
- std::string name;
- std::vector<api::Term> args;
- std::vector<std::string> names;
- api::Term e;
- Debug("parser-extra") << "term: " << AntlrInput::tokenText(LT(1)) << std::endl;
- api::Sort t, t2;
-}
- /* if-then-else */
- : iteTerm[f]
-
- /* parenthesized sub-formula / tuple literals */
- | LPAREN formula[f] { args.push_back(f); }
- ( COMMA formula[f] { args.push_back(f); } )* RPAREN
- { if(args.size() > 1) {
- /* If args has elements, we must be a tuple literal.
- * Otherwise, f is already the sub-formula, and
- * there's nothing to do */
- std::vector<api::Sort> types;
- for (std::vector<api::Term>::const_iterator i = args.begin();
- i != args.end();
- ++i)
- {
- types.push_back((*i).getSort());
- }
- api::Sort dtype = SOLVER->mkTupleSort(types);
- const api::Datatype& dt = dtype.getDatatype();
- args.insert(args.begin(), dt[0].getConstructorTerm());
- f = MK_TERM(api::APPLY_CONSTRUCTOR, args);
- }
- }
-
- /* empty tuple literal */
- | LPAREN RPAREN
- { std::vector<api::Sort> types;
- api::Sort dtype = SOLVER->mkTupleSort(types);
- const api::Datatype& dt = dtype.getDatatype();
- f = MK_TERM(api::APPLY_CONSTRUCTOR, dt[0].getConstructorTerm());
- }
-
- /* empty record literal */
- | PARENHASH HASHPAREN
- {
- api::Sort dtype = SOLVER->mkRecordSort(
- std::vector<std::pair<std::string, api::Sort>>());
- const api::Datatype& dt = dtype.getDatatype();
- f = MK_TERM(api::APPLY_CONSTRUCTOR, dt[0].getConstructorTerm());
- }
- /* empty set literal */
- | LBRACE RBRACE
- { //boolean is placeholder
- f = SOLVER->mkEmptySet(SOLVER->mkSetSort(SOLVER->getBooleanSort()));
- }
- | UNIVSET_TOK
- { //boolean is placeholder
- f = SOLVER->mkUniverseSet(SOLVER->mkSetSort(SOLVER->getBooleanSort()));
- }
-
- /* finite set literal */
- | LBRACE formula[f] { args.push_back(f); }
- ( COMMA formula[f] { args.push_back(f); } )* RBRACE
- { f = MK_TERM(api::SINGLETON, args[0]);
- for(size_t i = 1; i < args.size(); ++i) {
- f = MK_TERM(api::UNION, f, MK_TERM(api::SINGLETON, args[i]));
- }
- }
-
- /* set cardinality literal */
- | BAR BAR formula[f] { args.push_back(f); } BAR BAR
- { f = MK_TERM(api::CARD, args[0]);
- }
-
- /* array literals */
- | ARRAY_TOK LPAREN
- restrictedType[t, CHECK_DECLARED] OF_TOK restrictedType[t2, CHECK_DECLARED]
- RPAREN COLON simpleTerm[f]
- { t = SOLVER->mkArraySort(t, t2);
- if(!t2.isComparableTo(f.getSort())) {
- std::stringstream ss;
- ss << "type mismatch inside array constant term:" << std::endl
- << "array type: " << t << std::endl
- << "expected const type: " << t2 << std::endl
- << "computed const type: " << f.getSort();
- PARSER_STATE->parseError(ss.str());
- }
- f = SOLVER->mkConstArray(t, f);
- }
-
- /* boolean literals */
- | TRUE_TOK { f = SOLVER->mkTrue(); }
- | FALSE_TOK { f = SOLVER->mkFalse(); }
- /* arithmetic literals */
- /* syntactic predicate: never match INTEGER.DIGIT as an integer and a dot!
- * This is a rational constant! Otherwise the parser interprets it as a tuple
- * selector! */
- | DECIMAL_LITERAL {
- f = SOLVER->mkReal(AntlrInput::tokenText($DECIMAL_LITERAL));
- }
- | INTEGER_LITERAL {
- f = SOLVER->mkInteger(AntlrInput::tokenText($INTEGER_LITERAL));
- }
- /* bitvector literals */
- | HEX_LITERAL
- { Assert( AntlrInput::tokenText($HEX_LITERAL).find("0hex") == 0 );
- std::string hexString = AntlrInput::tokenTextSubstr($HEX_LITERAL, 4);
- f = SOLVER->mkBitVector(hexString.size() * 4, hexString, 16);
- }
- | BINARY_LITERAL
- { Assert( AntlrInput::tokenText($BINARY_LITERAL).find("0bin") == 0 );
- std::string binString = AntlrInput::tokenTextSubstr($BINARY_LITERAL, 4);
- f = SOLVER->mkBitVector(binString.size(), binString, 2);
- }
- /* record literals */
- | PARENHASH recordEntry[name,e] { names.push_back(name); args.push_back(e); }
- ( COMMA recordEntry[name,e] { names.push_back(name); args.push_back(e); } )* HASHPAREN
- { std::vector< std::pair<std::string, api::Sort> > typeIds;
- Assert(names.size() == args.size());
- for(unsigned i = 0; i < names.size(); ++i) {
- typeIds.push_back(std::make_pair(names[i], args[i].getSort()));
- }
- api::Sort dtype = SOLVER->mkRecordSort(typeIds);
- const api::Datatype& dt = dtype.getDatatype();
- args.insert(args.begin(), dt[0].getConstructorTerm());
- f = MK_TERM(api::APPLY_CONSTRUCTOR, args);
- }
-
- /* variable / zero-ary constructor application */
- | identifier[name,CHECK_DECLARED,SYM_VARIABLE]
- /* ascriptions will be required for parameterized zero-ary constructors */
- { f = PARSER_STATE->getVariable(name);
- // datatypes: zero-ary constructors
- api::Sort dtype = f.getSort();
- if(dtype.isConstructor() && dtype.getConstructorArity() == 0) {
- // don't require parentheses, immediately turn it into an apply
- f = MK_TERM(cvc5::api::APPLY_CONSTRUCTOR, f);
- }
- }
- ;
-
-/**
- * Matches a type ascription.
- * The f arg is the term to check (it is an input-only argument).
- */
-typeAscription[const cvc5::api::Term& f, cvc5::api::Sort& t]
-@init {
-}
- : COLON COLON type[t,CHECK_DECLARED]
- ;
-
-/**
- * Matches an entry in a record literal.
- */
-recordEntry[std::string& name, cvc5::api::Term& ex]
- : identifier[name,CHECK_NONE,SYM_VARIABLE] ASSIGN_TOK formula[ex]
- ;
-
-/**
- * Parses an ITE term.
- */
-iteTerm[cvc5::api::Term& f]
-@init {
- std::vector<api::Term> args;
- Debug("parser-extra") << "ite: " << AntlrInput::tokenText(LT(1)) << std::endl;
-}
- : IF_TOK formula[f] { args.push_back(f); }
- THEN_TOK formula[f] { args.push_back(f); }
- iteElseTerm[f] { args.push_back(f); }
- ENDIF_TOK
- { f = MK_TERM(cvc5::api::ITE, args); }
- ;
-
-/**
- * Parses the else part of the ITE, i.e. ELSE f, or ELSIF b THEN f1 ...
- */
-iteElseTerm[cvc5::api::Term& f]
-@init {
- std::vector<api::Term> args;
- Debug("parser-extra") << "else: " << AntlrInput::tokenText(LT(1)) << std::endl;
-}
- : ELSE_TOK formula[f]
- | ELSEIF_TOK iteCondition = formula[f] { args.push_back(f); }
- THEN_TOK iteThen = formula[f] { args.push_back(f); }
- iteElse = iteElseTerm[f] { args.push_back(f); }
- { f = MK_TERM(cvc5::api::ITE, args); }
- ;
-
-/**
- * Parses a datatype definition
- */
-datatypeDef[std::vector<cvc5::api::DatatypeDecl>& datatypes]
-@init {
- std::string id, id2;
- api::Sort t;
- std::vector< api::Sort > params;
-}
- /* This really needs to be CHECK_NONE, or mutually-recursive
- * datatypes won't work, because this type will already be
- * "defined" as an unresolved type; don't worry, we check
- * below. */
- : identifier[id,CHECK_NONE,SYM_SORT] { PARSER_STATE->pushScope(); }
- ( LBRACKET identifier[id2,CHECK_UNDECLARED,SYM_SORT] {
- t = PARSER_STATE->mkSort(id2);
- params.push_back( t );
- }
- ( COMMA identifier[id2,CHECK_UNDECLARED,SYM_SORT] {
- t = PARSER_STATE->mkSort(id2);
- params.push_back( t ); }
- )* RBRACKET
- )?
- {
- datatypes.push_back(SOLVER->mkDatatypeDecl(id, params, false));
- if(!PARSER_STATE->isUnresolvedType(id)) {
- // if not unresolved, must be undeclared
- PARSER_STATE->checkDeclaration(id, CHECK_UNDECLARED, SYM_SORT);
- }
- }
- EQUAL_TOK constructorDef[datatypes.back()]
- ( BAR constructorDef[datatypes.back()] )*
- { PARSER_STATE->popScope(); }
- ;
-
-/**
- * Parses a constructor defintion for type
- */
-constructorDef[cvc5::api::DatatypeDecl& type]
-@init {
- std::string id;
- std::unique_ptr<cvc5::api::DatatypeConstructorDecl> ctor;
-}
- : identifier[id,CHECK_UNDECLARED,SYM_SORT]
- {
- ctor.reset(new cvc5::api::DatatypeConstructorDecl(
- SOLVER->mkDatatypeConstructorDecl(id)));
- }
- ( LPAREN
- selector[&ctor]
- ( COMMA selector[&ctor] )*
- RPAREN
- )?
- { // make the constructor
- type.addConstructor(*ctor.get());
- Debug("parser-idt") << "constructor: " << id.c_str() << std::endl;
- }
- ;
-
-selector[std::unique_ptr<cvc5::api::DatatypeConstructorDecl>* ctor]
-@init {
- std::string id;
- api::Sort t, t2;
-}
- : identifier[id,CHECK_UNDECLARED,SYM_SORT] COLON type[t,CHECK_NONE]
- {
- (*ctor)->addSelector(id, t);
- Debug("parser-idt") << "selector: " << id.c_str() << std::endl;
- }
- ;
-
-/**
- * Matches an identifier from the input. An identifier is a sequence of letters,
- * digits and "_", "'", "." symbols, starting with a letter.
- */
-IDENTIFIER : (ALPHA | '_') (ALPHA | DIGIT | '_' | '\'' | '\\' | '?' | '$' | '~')*;
-
-/**
- * Same as an integer literal converted to an unsigned int, but
- * slightly more convenient AND works around a strange ANTLR bug (?)
- * in the BVPLUS/BVMINUS/BVMULT rules where $INTEGER_LITERAL was
- * returning a reference to the wrong token?!
- */
-numeral returns [unsigned k = 0]
- : INTEGER_LITERAL
- { $k = AntlrInput::tokenToUnsigned($INTEGER_LITERAL); }
- ;
-
-/**
- * Similar to numeral but for strings.
- */
-str[std::string& s]
- : STRING_LITERAL
- { s = AntlrInput::tokenText($STRING_LITERAL);
- /* strip off the quotes */
- s = s.substr(1, s.size() - 2);
- }
- ;
-
-/**
- * Matches a hexadecimal constant.
- */
-HEX_LITERAL
- : '0hex' HEX_DIGIT+
- ;
-
-/**
- * Matches a binary constant.
- */
-BINARY_LITERAL
- : '0bin' ('0' | '1')+
- ;
-
-/**
- * Matches a double quoted string literal. Escaping is supported, and
- * escape character '\' has to be escaped.
- */
-STRING_LITERAL: '"' (ESCAPE | ~('"'|'\\'))* '"';
-
-/**
- * Matches any letter ('a'-'z' and 'A'-'Z').
- */
-fragment ALPHA : 'a'..'z' | 'A'..'Z';
-
-/**
- * Matches the decimal digits (0-9)
- */
-fragment DIGIT : '0'..'9';
-
-// This rule adapted from http://www.antlr.org/wiki/pages/viewpage.action?pageId=13828121
-// which reportedly comes from Tapestry (http://tapestry.apache.org/tapestry5/)
-//
-// Special rule that uses parsing tricks to identify numbers and ranges; it's all about
-// the dot ('.').
-// Recognizes:
-// '.' as DOT
-// '..' as DOTDOT
-// INTEGER_LITERAL (digit+)
-// DECIMAL_LITERAL (digit* . digit+)
-// Has to watch out for embedded rangeop (i.e. "1..10" is not "1." and ".10").
-//
-// This doesn't ever generate the NUMBER_OR_RANGEOP token, it
-// manipulates the $type inside to return the right token.
-NUMBER_OR_RANGEOP
- : DIGIT+
- (
- { LA(2) != '.' }? => '.' DIGIT* { $type = DECIMAL_LITERAL; }
- | { $type = INTEGER_LITERAL; }
- )
- | '.'
- ( '.' {$type = DOTDOT; }
- | {$type = DOT; }
- )
- ;
-
-// these empty fragments remove "no lexer rule corresponding to token" warnings
-fragment INTEGER_LITERAL:;
-fragment DECIMAL_LITERAL:;
-fragment DOT:;
-fragment DOTDOT:;
-
-/**
- * Matches the hexadecimal digits (0-9, a-f, A-F)
- */
-fragment HEX_DIGIT : DIGIT | 'a'..'f' | 'A'..'F';
-
-/**
- * Matches and skips whitespace in the input and ignores it.
- */
-WHITESPACE : (' ' | '\t' | '\f' | '\r' | '\n')+ { SKIP(); };
-
-/**
- * Matches the comments and ignores them
- */
-COMMENT : '%' (~('\n' | '\r'))* { SKIP(); };
-
-/**
- * Matches an allowed escaped character.
- */
-fragment ESCAPE : '\\' ('"' | '\\' | 'n' | 't' | 'r');
+++ /dev/null
-Notes on cvc5's CVC language parser.
-
-This language parser attempts to maintain some backward compatibility
-with previous versions of the language. However, as the language
-evolves, new features need to be supported, and deprecated,
-difficult-to-maintain, or grammar-conflicting syntax and features
-need to be removed.
-
-In order to support our users, we have tried to parse what CVC3 could
-and (at least) offer an error when a feature is unavailable or
-unimplemented. But this is not always possible. Please report a
-bug if a particular discrepancy between CVC3 and cvc5 handling of
-the CVC language is a concern to you; we may be able to add a
-compatibility mode, or at least offer better warnings or errors.
-
-Below is a list of the known differences between CVC3's and cvc5's
-version of the CVC language. This is the list of differences in
-language design and parsing ONLY. The featureset of cvc5 is
-rapidly expanding, but does not match CVC3's breadth yet. However,
-cvc5 should tell you of an unimplemented feature if you try to use
-it (rather than giving a cryptic parse or assertion error).
-
-* cvc5 does not add the current assumptions to the scope after
- SAT/INVALID responses like CVC3 did.
-
-* cvc5 no longer supports the "old" function syntax:
-
- f : [INT -> INT];
-
- This syntax was deprecated in CVC3, and will no longer be
- supported. Functions are now written as follows:
-
- unary : INT -> INT;
- binary : (INT, INT) -> INT;
- ternary : (INT, INT, INT) -> INT;
-
-* QUERY and CHECKSAT do not add their argument to the current
- list of assertions like CVC3 did.
-
-* cvc5 allows datatypes to hold complex types that contain self-
- or mutual references. For example,
-
- DATATYPE tree = node(children:ARRAY INT OF tree) | leaf(data:INT) END;
-
- is permissible in cvc5 but not in CVC3.
-
-* cvc5 supports parameterized types in datatype definitions, e.g.
-
- DATATYPE list[T] = cons(car:T) | nil END;
-
- You can then declare "x : list[INT];" or "x : list[list[INT]];",
- for example.
-
-* cvc5 supports type ascriptions, e.g.
-
- U : TYPE;
- f : INT -> U;
- QUERY f(5) : U = f(6);
- QUERY f(5) : U = f(6) : U;
- QUERY ( f(5) = f(6) ) : BOOLEAN;
- QUERY f(5) : U = f(6) : U : BOOLEAN;
-
- You probably won't need it that much, but it can be handy for
- debugging. If a term (or formula) isn't the same type as its
- ascription, and it cannot be "up-casted" safely, an error is
- immediately generated at parse time. Sometimes this up-cast is
- necessary; consider the "nil" constructor of list[T] above.
- To use "nil," you must cast it to something:
-
- DATATYPE Item = Carrots | Butter | Milk | Bread END;
- groceries : list[Item] = cons(Butter, cons(Bread, nil:list[INT]));
-
-* cvc5 supports stronger distinction between type and variable names.
- This means that cvc5 may allow you to declare things that CVC3 does
- not:
-
- a : TYPE;
- a : INT; % CVC3 complains
- a : a; % cvc5 complains, `a' cannot both be INT and `a'
- b : a; % No problem, `a' is both the type of `b', and an INT
-
-* cvc5 supports a command-level LET syntax, e.g.:
-
- LET double = LAMBDA(x:INT) : 2*x IN
- QUERY double(5) = 10;
-
- It works for types also, and mixes of the two:
-
- LET x = INT, y = 5, z = x IN
- w : x = y;
- QUERY y = 5; % error: y undefined
- QUERY w = 5; % valid
-
- The scope of such a LET is exactly one command (until a semicolon).
- (It would conflict with POP_SCOPE if it lasted longer.)
-
--- Morgan Deters <mdeters@cs.nyu.edu> Wed, 20 Apr 2011 18:32:32 -0400
-
+++ /dev/null
-/******************************************************************************
- * Top contributors (to current version):
- * Andrew Reynolds, Andres Noetzli
- *
- * This file is part of the cvc5 project.
- *
- * Copyright (c) 2009-2021 by the authors listed in the file AUTHORS
- * in the top-level source directory and their institutional affiliations.
- * All rights reserved. See the file COPYING in the top-level source
- * directory for licensing information.
- * ****************************************************************************
- *
- * The parser class for the CVC language.
- */
-
-#include "parser/cvc/cvc.h"
-#include "smt/command.h"
-
-namespace cvc5 {
-namespace parser {
-
-void Cvc::forceLogic(const std::string& logic)
-{
- Parser::forceLogic(logic);
- preemptCommand(new SetBenchmarkLogicCommand(logic));
-}
-
-bool Cvc::getTesterName(api::Term cons, std::string& name)
-{
- std::stringstream ss;
- ss << "is_" << cons;
- name = ss.str();
- return true;
-}
-
-} // namespace parser
-} // namespace cvc5
+++ /dev/null
-/******************************************************************************
- * Top contributors (to current version):
- * Andres Noetzli, Andrew Reynolds
- *
- * This file is part of the cvc5 project.
- *
- * Copyright (c) 2009-2021 by the authors listed in the file AUTHORS
- * in the top-level source directory and their institutional affiliations.
- * All rights reserved. See the file COPYING in the top-level source
- * directory for licensing information.
- * ****************************************************************************
- *
- * The parser class for the CVC language.
- */
-
-#include "cvc5parser_private.h"
-
-#ifndef CVC5__PARSER__CVC_H
-#define CVC5__PARSER__CVC_H
-
-#include "api/cpp/cvc5.h"
-#include "parser/parser.h"
-
-namespace cvc5 {
-
-namespace parser {
-
-class Cvc : public Parser
-{
- friend class ParserBuilder;
-
- public:
- void forceLogic(const std::string& logic) override;
-
- /** Updates name to the tester name of cons, e.g. "is_cons" */
- bool getTesterName(api::Term cons, std::string& name) override;
-
- protected:
- Cvc(api::Solver* solver,
- SymbolManager* sm,
- bool strictMode = false,
- bool parseOnly = false)
- : Parser(solver, sm, strictMode, parseOnly)
- {
- }
-};
-
-} // namespace parser
-} // namespace cvc5
-
-#endif /* CVC5__PARSER__CVC_H */
+++ /dev/null
-/******************************************************************************
- * Top contributors (to current version):
- * Christopher L. Conway, Morgan Deters, Andrew Reynolds
- *
- * This file is part of the cvc5 project.
- *
- * Copyright (c) 2009-2021 by the authors listed in the file AUTHORS
- * in the top-level source directory and their institutional affiliations.
- * All rights reserved. See the file COPYING in the top-level source
- * directory for licensing information.
- * ****************************************************************************
- *
- * [[ Add one-line brief description here ]]
- *
- * [[ Add lengthier description here ]]
- */
-
-#include "parser/cvc/cvc_input.h"
-
-#include <antlr3.h>
-
-#include "base/check.h"
-#include "parser/antlr_input.h"
-#include "parser/cvc/CvcLexer.h"
-#include "parser/cvc/CvcParser.h"
-#include "parser/parser_exception.h"
-
-namespace cvc5 {
-namespace parser {
-
-/* Use lookahead=3 */
-CvcInput::CvcInput(AntlrInputStream& inputStream) :
- AntlrInput(inputStream,6) {
- pANTLR3_INPUT_STREAM input = inputStream.getAntlr3InputStream();
- Assert(input != NULL);
-
- d_pCvcLexer = CvcLexerNew(input);
- if( d_pCvcLexer == NULL ) {
- throw ParserException("Failed to create CVC lexer.");
- }
-
- setAntlr3Lexer( d_pCvcLexer->pLexer );
-
- pANTLR3_COMMON_TOKEN_STREAM tokenStream = getTokenStream();
- Assert(tokenStream != NULL);
-
- d_pCvcParser = CvcParserNew(tokenStream);
- if( d_pCvcParser == NULL ) {
- throw ParserException("Failed to create CVC parser.");
- }
-
- setAntlr3Parser(d_pCvcParser->pParser);
-}
-
-
-CvcInput::~CvcInput() {
- d_pCvcLexer->free(d_pCvcLexer);
- d_pCvcParser->free(d_pCvcParser);
-}
-
-Command* CvcInput::parseCommand() {
- return d_pCvcParser->parseCommand(d_pCvcParser);
-}
-
-api::Term CvcInput::parseExpr()
-{
- return d_pCvcParser->parseExpr(d_pCvcParser);
-}
-
-/*
-pANTLR3_LEXER CvcInput::getLexer() {
- return d_pCvcLexer->pLexer;
-}
-*/
-
-} // namespace parser
-} // namespace cvc5
+++ /dev/null
-/******************************************************************************
- * Top contributors (to current version):
- * Christopher L. Conway, Mathias Preiner, Andrew Reynolds
- *
- * This file is part of the cvc5 project.
- *
- * Copyright (c) 2009-2021 by the authors listed in the file AUTHORS
- * in the top-level source directory and their institutional affiliations.
- * All rights reserved. See the file COPYING in the top-level source
- * directory for licensing information.
- * ****************************************************************************
- *
- * [[ Add one-line brief description here ]]
- *
- * [[ Add lengthier description here ]]
- */
-
-#include "cvc5parser_private.h"
-
-#ifndef CVC5__PARSER__CVC_INPUT_H
-#define CVC5__PARSER__CVC_INPUT_H
-
-#include "parser/antlr_input.h"
-#include "parser/cvc/CvcLexer.h"
-#include "parser/cvc/CvcParser.h"
-
-// extern void CvcParserSetAntlrParser(cvc5::parser::AntlrParser*
-// newAntlrParser);
-
-namespace cvc5 {
-
-class Command;
-class Expr;
-
-namespace parser {
-
-class CvcInput : public AntlrInput {
- /** The ANTLR3 CVC lexer for the input. */
- pCvcLexer d_pCvcLexer;
-
- /** The ANTLR3 CVC parser for the input. */
- pCvcParser d_pCvcParser;
-
- public:
- /** Create an input.
- *
- * @param inputStream the input to parse
- */
- CvcInput(AntlrInputStream& inputStream);
-
- /** Destructor. Frees the lexer and the parser. */
- virtual ~CvcInput();
-
- protected:
- /** Parse a command from the input. Returns <code>NULL</code> if there is
- * no command there to parse.
- *
- * @throws ParserException if an error is encountered during parsing.
- */
- Command* parseCommand() override;
-
- /** Parse an expression from the input. Returns a null <code>api::Term</code>
- * if there is no expression there to parse.
- *
- * @throws ParserException if an error is encountered during parsing.
- */
- api::Term parseExpr() override;
-
- private:
- /** Initialize the class. Called from the constructors once the input stream
- * is initialized. */
- void init();
-
-}; // class CvcInput
-
-} // namespace parser
-} // namespace cvc5
-
-#endif /* CVC5__PARSER__CVC_INPUT_H */
#include "api/cpp/cvc5.h"
#include "base/check.h"
-#include "cvc/cvc.h"
#include "parser/antlr_input.h"
#include "parser/input.h"
#include "parser/parser.h"
Parser* ParserBuilder::build()
{
Parser* parser = NULL;
- if (d_lang == "LANG_SYGUS_V2" || d_lang == "LANG_SMTLIB_V2_6")
- {
- parser = new Smt2(d_solver, d_symman, d_strictMode, d_parseOnly);
- }
- else if (d_lang == "LANG_TPTP")
+ if (d_lang == "LANG_TPTP")
{
parser = new Tptp(d_solver, d_symman, d_strictMode, d_parseOnly);
}
else
{
- parser = new Cvc(d_solver, d_symman, d_strictMode, d_parseOnly);
+ Assert(d_lang == "LANG_SYGUS_V2" || d_lang == "LANG_SMTLIB_V2_6");
+ parser = new Smt2(d_solver, d_symman, d_strictMode, d_parseOnly);
}
if( d_checksEnabled ) {
addOperator(api::PRODUCT, "product");
addOperator(api::TRANSPOSE, "transpose");
addOperator(api::TCLOSURE, "tclosure");
+ addOperator(api::JOIN_IMAGE, "join_image");
+ addOperator(api::IDEN, "iden");
}
if (d_logic.isTheoryEnabled(theory::THEORY_BAGS))
+++ /dev/null
-/******************************************************************************
- * Top contributors (to current version):
- * Andrew Reynolds, Morgan Deters, Dejan Jovanovic
- *
- * This file is part of the cvc5 project.
- *
- * Copyright (c) 2009-2021 by the authors listed in the file AUTHORS
- * in the top-level source directory and their institutional affiliations.
- * All rights reserved. See the file COPYING in the top-level source
- * directory for licensing information.
- * ****************************************************************************
- *
- * The pretty-printer interface for the CVC output language.
- */
-
-#include "printer/cvc/cvc_printer.h"
-
-#include <algorithm>
-#include <iostream>
-#include <iterator>
-#include <stack>
-#include <string>
-#include <typeinfo>
-#include <vector>
-
-#include "expr/array_store_all.h"
-#include "expr/ascription_type.h"
-#include "expr/datatype_index.h"
-#include "expr/dtype.h"
-#include "expr/dtype_cons.h"
-#include "expr/dtype_selector.h"
-#include "expr/emptyset.h"
-#include "expr/node_manager_attributes.h" // for VarNameAttr
-#include "expr/node_visitor.h"
-#include "expr/sequence.h"
-#include "options/language.h" // for LANG_AST
-#include "options/smt_options.h"
-#include "printer/let_binding.h"
-#include "smt/command.h"
-#include "smt/node_command.h"
-#include "smt/smt_engine.h"
-#include "theory/arrays/theory_arrays_rewriter.h"
-#include "theory/substitutions.h"
-#include "theory/theory_model.h"
-#include "util/bitvector.h"
-#include "util/divisible.h"
-#include "util/rational.h"
-#include "util/string.h"
-
-using namespace std;
-
-namespace cvc5 {
-namespace printer {
-namespace cvc {
-
-void CvcPrinter::toStream(std::ostream& out,
- TNode n,
- int toDepth,
- size_t dag) const
-{
- if(dag != 0) {
- LetBinding lbind(dag + 1);
- toStreamNodeWithLetify(out, n, toDepth, false, &lbind);
- } else {
- toStreamNode(out, n, toDepth, false, nullptr);
- }
-}
-
-void toStreamRational(std::ostream& out, Node n, bool forceRational)
-{
- Assert(n.getKind() == kind::CONST_RATIONAL);
- const Rational& rat = n.getConst<Rational>();
- if (rat.isIntegral() && !forceRational)
- {
- out << rat.getNumerator();
- }
- else
- {
- out << '(' << rat.getNumerator() << '/' << rat.getDenominator() << ')';
- }
-}
-
-void CvcPrinter::toStreamNode(std::ostream& out,
- TNode n,
- int depth,
- bool bracket,
- LetBinding* lbind) const
-{
- if (depth == 0) {
- out << "(...)";
- } else {
- --depth;
- }
-
- // null
- if(n.getKind() == kind::NULL_EXPR) {
- out << "null";
- return;
- }
-
- // variables
- if(n.isVar()) {
- string s;
- if(n.getAttribute(expr::VarNameAttr(), s)) {
- out << s;
- } else {
- if(n.getKind() == kind::VARIABLE) {
- out << "var_";
- } else {
- out << n.getKind() << '_';
- }
- out << n.getId();
- }
- return;
- }
- if(n.isNullaryOp()) {
- if( n.getKind() == kind::UNIVERSE_SET ){
- out << "UNIVERSE :: " << n.getType();
- }else{
- //unknown printer
- out << n.getKind();
- }
- return;
- }
-
- // constants
- if(n.getMetaKind() == kind::metakind::CONSTANT) {
- switch(n.getKind()) {
- case kind::BITVECTOR_TYPE:
- out << "BITVECTOR(" << n.getConst<BitVectorSize>().d_size << ")";
- break;
- case kind::CONST_BITVECTOR: {
- const BitVector& bv = n.getConst<BitVector>();
- const Integer& x = bv.getValue();
- out << "0bin";
- unsigned size = bv.getSize();
- while (size-- > 0)
- {
- out << (x.testBit(size) ? '1' : '0');
- }
- break;
- }
- case kind::CONST_BOOLEAN:
- // the default would print "1" or "0" for bool, that's not correct
- // for our purposes
- out << (n.getConst<bool>() ? "TRUE" : "FALSE");
- break;
- case kind::CONST_RATIONAL: {
- toStreamRational(out, n, false);
- break;
- }
- case kind::CONST_STRING:
- {
- out << '"' << n.getConst<String>().toString() << '"';
- break;
- }
- case kind::CONST_SEQUENCE:
- {
- const Sequence& sn = n.getConst<Sequence>();
- const std::vector<Node>& snvec = sn.getVec();
- if (snvec.size() > 1)
- {
- out << "CONCAT(";
- }
- bool first = true;
- for (const Node& snvc : snvec)
- {
- if (!first)
- {
- out << ", ";
- }
- out << "SEQ_UNIT(" << snvc << ")";
- first = false;
- }
- if (snvec.size() > 1)
- {
- out << ")";
- }
- break;
- }
- case kind::TYPE_CONSTANT:
- switch(TypeConstant tc = n.getConst<TypeConstant>()) {
- case REAL_TYPE:
- out << "REAL";
- break;
- case INTEGER_TYPE:
- out << "INT";
- break;
- case BOOLEAN_TYPE:
- out << "BOOLEAN";
- break;
- case STRING_TYPE:
- out << "STRING";
- break;
- default:
- out << tc;
- break;
- }
- break;
-
- case kind::DATATYPE_TYPE: {
- const DType& dt = NodeManager::currentNM()->getDTypeForIndex(
- n.getConst<DatatypeIndexConstant>().getIndex());
- if( dt.isTuple() ){
- out << '[';
- for (unsigned i = 0; i < dt[0].getNumArgs(); ++ i) {
- if (i > 0) {
- out << ", ";
- }
- TypeNode t = dt[0][i].getRangeType();
- out << t;
- }
- out << ']';
- }
- else if (dt.isRecord())
- {
- out << "[# ";
- for (unsigned i = 0; i < dt[0].getNumArgs(); ++ i) {
- if (i > 0) {
- out << ", ";
- }
- TypeNode t = dt[0][i].getRangeType();
- out << dt[0][i].getSelector() << ":" << t;
- }
- out << " #]";
- }else{
- out << dt.getName();
- }
- }
- break;
-
- case kind::EMPTYSET:
- out << "{} :: " << n.getConst<EmptySet>().getType();
- break;
-
- case kind::STORE_ALL: {
- const ArrayStoreAll& asa = n.getConst<ArrayStoreAll>();
- out << "ARRAY(" << asa.getType().getArrayIndexType() << " OF "
- << asa.getType().getArrayConstituentType()
- << ") : " << asa.getValue();
- break;
- }
-
- default:
- // Fall back to whatever operator<< does on underlying type; we
- // might luck out and print something reasonable.
- kind::metakind::NodeValueConstPrinter::toStream(out, n);
- }
-
- return;
- }
-
- enum OpType {
- PREFIX,
- INFIX,
- POSTFIX
- } opType;
-
- //The default operation type is PREFIX
- opType = PREFIX;
-
- stringstream op; // operation (such as '+')
-
- switch(n.getKind()) {
-
- // BUILTIN
- case kind::EQUAL:
- if( n[0].getType().isBoolean() ){
- op << "<=>";
- }else{
- op << '=';
- }
- opType = INFIX;
- break;
- case kind::ITE:
- out << "IF ";
- toStreamNode(out, n[0], depth, true, lbind);
- out << " THEN ";
- toStreamNode(out, n[1], depth, true, lbind);
- out << " ELSE ";
- toStreamNode(out, n[2], depth, true, lbind);
- out << " ENDIF";
- return;
- break;
- case kind::SEXPR:
- // no-op
- break;
- case kind::LAMBDA:
- out << "(LAMBDA";
- toStreamNode(out, n[0], depth, true, lbind);
- out << ": ";
- toStreamNodeWithLetify(out, n[1], depth, true, lbind);
- out << ")";
- return;
- break;
- case kind::WITNESS:
- out << "(WITNESS";
- toStreamNode(out, n[0], depth, true, lbind);
- out << " : ";
- toStreamNodeWithLetify(out, n[1], depth, true, lbind);
- out << ')';
- return;
- case kind::DISTINCT:
- // distinct not supported directly, blast it away with the rewriter
- toStreamNode(out, theory::Rewriter::rewrite(n), depth, true, lbind);
- return;
- case kind::SORT_TYPE:
- {
- string name;
- if(n.getAttribute(expr::VarNameAttr(), name)) {
- out << name;
- return;
- }
- }
- break;
-
- // BOOL
- case kind::AND:
- op << "AND";
- opType = INFIX;
- break;
- case kind::OR:
- op << "OR";
- opType = INFIX;
- break;
- case kind::NOT:
- op << "NOT";
- opType = PREFIX;
- break;
- case kind::XOR:
- op << "XOR";
- opType = INFIX;
- break;
- case kind::IMPLIES:
- op << "=>";
- opType = INFIX;
- break;
-
- // UF
- case kind::APPLY_UF:
- toStreamNode(op, n.getOperator(), depth, false, lbind);
- break;
- case kind::CARDINALITY_CONSTRAINT:
- case kind::COMBINED_CARDINALITY_CONSTRAINT:
- out << "CARDINALITY_CONSTRAINT";
- break;
-
- case kind::FUNCTION_TYPE:
- if (n.getNumChildren() > 1) {
- if (n.getNumChildren() > 2) {
- out << '(';
- }
- for (unsigned i = 1; i < n.getNumChildren(); ++i) {
- if (i > 1) {
- out << ", ";
- }
- toStreamNode(out, n[i - 1], depth, false, lbind);
- }
- if (n.getNumChildren() > 2) {
- out << ')';
- }
- }
- out << " -> ";
- toStreamNode(out, n[n.getNumChildren() - 1], depth, false, lbind);
- return;
- break;
-
- // DATATYPES
- case kind::PARAMETRIC_DATATYPE: {
- const DType& dt = NodeManager::currentNM()->getDTypeForIndex(
- n[0].getConst<DatatypeIndexConstant>().getIndex());
- out << dt.getName() << '[';
- for (unsigned i = 1; i < n.getNumChildren(); ++i)
- {
- if (i > 1)
- {
- out << ',';
- }
- out << n[i];
- }
- out << ']';
- }
- return;
- break;
- case kind::APPLY_TYPE_ASCRIPTION: {
- toStreamNode(out, n[0], depth, false, lbind);
- out << "::";
- TypeNode t = n.getOperator().getConst<AscriptionType>().getType();
- out << (t.isFunctionLike() ? t.getRangeType() : t);
- }
- return;
- break;
- case kind::APPLY_CONSTRUCTOR: {
- TypeNode t = n.getType();
- if( t.isTuple() ){
- if( n.getNumChildren()==1 ){
- out << "TUPLE";
- }
- }
- else if (t.isRecord())
- {
- const DType& dt = t.getDType();
- const DTypeConstructor& recCons = dt[0];
- out << "(# ";
- for (size_t i = 0, nargs = recCons.getNumArgs(); i < nargs; i++)
- {
- if (i != 0)
- {
- out << ", ";
- }
- out << recCons[i].getName() << " := ";
- toStreamNode(out, n[i], depth, false, lbind);
- }
- out << " #)";
- return;
- }
- else
- {
- toStreamNode(op, n.getOperator(), depth, false, lbind);
- if (n.getNumChildren() == 0)
- {
- // for datatype constants d, we print "d" and not "d()"
- out << op.str();
- return;
- }
- }
- }
- break;
- case kind::APPLY_SELECTOR:
- case kind::APPLY_SELECTOR_TOTAL: {
- TypeNode t = n[0].getType();
- Node opn = n.getOperator();
- if (!t.isDatatype())
- {
- toStreamNode(op, opn, depth, false, lbind);
- }
- else if (t.isTuple() || t.isRecord())
- {
- toStreamNode(out, n[0], depth, true, lbind);
- out << '.';
- const DType& dt = t.getDType();
- if (t.isTuple())
- {
- int sindex;
- if (n.getKind() == kind::APPLY_SELECTOR)
- {
- sindex = DType::indexOf(opn);
- }
- else
- {
- sindex = dt[0].getSelectorIndexInternal(opn);
- }
- Assert(sindex >= 0);
- out << sindex;
- }
- else
- {
- toStreamNode(out, opn, depth, false, lbind);
- }
- return;
- }else{
- toStreamNode(op, opn, depth, false, lbind);
- }
- }
- break;
- case kind::APPLY_TESTER: {
- Assert(!n.getType().isTuple() && !n.getType().isRecord());
- op << "is_";
- unsigned cindex = DType::indexOf(n.getOperator());
- const DType& dt = DType::datatypeOf(n.getOperator());
- toStreamNode(op, dt[cindex].getConstructor(), depth, false, lbind);
- }
- break;
- case kind::CONSTRUCTOR_TYPE:
- case kind::SELECTOR_TYPE:
- if(n.getNumChildren() > 1) {
- if(n.getNumChildren() > 2) {
- out << '(';
- }
- for(unsigned i = 0; i < n.getNumChildren() - 1; ++i) {
- if(i > 0) {
- out << ", ";
- }
- toStreamNode(out, n[i], depth, false, lbind);
- }
- if(n.getNumChildren() > 2) {
- out << ')';
- }
- out << " -> ";
- }
- toStreamNode(out, n[n.getNumChildren() - 1], depth, false, lbind);
- return;
- case kind::TESTER_TYPE:
- toStreamNode(out, n[0], depth, false, lbind);
- out << " -> BOOLEAN";
- return;
- break;
-
- // ARRAYS
- case kind::ARRAY_TYPE:
- out << "ARRAY ";
- toStreamNode(out, n[0], depth, false, lbind);
- out << " OF ";
- toStreamNode(out, n[1], depth, false, lbind);
- return;
- break;
- case kind::SELECT:
- toStreamNode(out, n[0], depth, true, lbind);
- out << '[';
- toStreamNode(out, n[1], depth, false, lbind);
- out << ']';
- return;
- break;
- case kind::STORE: {
- stack<TNode> stk;
- stk.push(n);
- while(stk.top()[0].getKind() == kind::STORE) {
- stk.push(stk.top()[0]);
- }
- if (bracket) {
- out << '(';
- }
- TNode x = stk.top();
- toStreamNode(out, x[0], depth, false, lbind);
- out << " WITH [";
- toStreamNode(out, x[1], depth, false, lbind);
- out << "] := ";
- toStreamNode(out, x[2], depth, false, lbind);
- stk.pop();
- while(!stk.empty()) {
- x = stk.top();
- out << ", [";
- toStreamNode(out, x[1], depth, false, lbind);
- out << "] := ";
- toStreamNode(out, x[2], depth, false, lbind);
- stk.pop();
- }
- if (bracket) {
- out << ')';
- }
- return;
- break;
- }
-
- // ARITHMETIC
- case kind::PLUS:
- op << '+';
- opType = INFIX;
- break;
- case kind::MULT:
- case kind::NONLINEAR_MULT:
- op << '*';
- opType = INFIX;
- break;
- case kind::MINUS:
- op << '-';
- opType = INFIX;
- break;
- case kind::UMINUS:
- op << '-';
- opType = PREFIX;
- break;
- case kind::DIVISION:
- case kind::DIVISION_TOTAL:
- op << '/';
- opType = INFIX;
- break;
- case kind::INTS_DIVISION:
- case kind::INTS_DIVISION_TOTAL:
- op << "DIV";
- opType = INFIX;
- break;
- case kind::INTS_MODULUS:
- case kind::INTS_MODULUS_TOTAL:
- op << "MOD";
- opType = INFIX;
- break;
- case kind::LT:
- op << '<';
- opType = INFIX;
- break;
- case kind::LEQ:
- op << "<=";
- opType = INFIX;
- break;
- case kind::GT:
- op << '>';
- opType = INFIX;
- break;
- case kind::GEQ:
- op << ">=";
- opType = INFIX;
- break;
- case kind::POW:
- op << '^';
- opType = INFIX;
- break;
- case kind::ABS:
- op << "ABS";
- opType = PREFIX;
- break;
- case kind::IS_INTEGER:
- op << "IS_INTEGER";
- opType = PREFIX;
- break;
- case kind::TO_INTEGER:
- op << "FLOOR";
- opType = PREFIX;
- break;
- case kind::TO_REAL:
- case kind::CAST_TO_REAL:
- {
- if (n[0].getKind() == kind::CONST_RATIONAL)
- {
- // print the constant as a rational
- toStreamRational(out, n[0], true);
- }
- else
- {
- // ignore, there is no to-real in CVC language
- toStreamNode(out, n[0], depth, false, lbind);
- }
- return;
- }
- case kind::DIVISIBLE:
- out << "DIVISIBLE(";
- toStreamNode(out, n[0], depth, false, lbind);
- out << ", " << n.getOperator().getConst<Divisible>().k << ")";
- return;
-
- // BITVECTORS
- case kind::BITVECTOR_XOR:
- op << "BVXOR";
- break;
- case kind::BITVECTOR_NAND:
- op << "BVNAND";
- break;
- case kind::BITVECTOR_NOR:
- op << "BVNOR";
- break;
- case kind::BITVECTOR_XNOR:
- op << "BVXNOR";
- break;
- case kind::BITVECTOR_COMP:
- op << "BVCOMP";
- break;
- case kind::BITVECTOR_UDIV:
- op << "BVUDIV";
- break;
- case kind::BITVECTOR_UREM:
- op << "BVUREM";
- break;
- case kind::BITVECTOR_SDIV:
- op << "BVSDIV";
- break;
- case kind::BITVECTOR_SREM:
- op << "BVSREM";
- break;
- case kind::BITVECTOR_SMOD:
- op << "BVSMOD";
- break;
- case kind::BITVECTOR_SHL:
- op << "BVSHL";
- break;
- case kind::BITVECTOR_LSHR:
- op << "BVLSHR";
- break;
- case kind::BITVECTOR_ASHR:
- op << "BVASHR";
- break;
- case kind::BITVECTOR_ULT:
- op << "BVLT";
- break;
- case kind::BITVECTOR_ULE:
- op << "BVLE";
- break;
- case kind::BITVECTOR_UGT:
- op << "BVGT";
- break;
- case kind::BITVECTOR_UGE:
- op << "BVGE";
- break;
- case kind::BITVECTOR_SLT:
- op << "BVSLT";
- break;
- case kind::BITVECTOR_SLE:
- op << "BVSLE";
- break;
- case kind::BITVECTOR_SGT:
- op << "BVSGT";
- break;
- case kind::BITVECTOR_SGE:
- op << "BVSGE";
- break;
- case kind::BITVECTOR_NEG:
- op << "BVUMINUS";
- break;
- case kind::BITVECTOR_NOT:
- op << "~";
- break;
- case kind::BITVECTOR_AND:
- op << "&";
- opType = INFIX;
- break;
- case kind::BITVECTOR_OR:
- op << "|";
- opType = INFIX;
- break;
- case kind::BITVECTOR_CONCAT:
- op << "@";
- opType = INFIX;
- break;
- case kind::BITVECTOR_ADD:
- {
- // This interprets a BITVECTOR_ADD as a bvadd in SMT-LIB
- Assert(n.getType().isBitVector());
- unsigned numc = n.getNumChildren()-2;
- unsigned child = 0;
- while (child < numc) {
- out << "BVPLUS(";
- out << n.getType().getBitVectorSize();
- out << ',';
- toStreamNode(out, n[child], depth, false, lbind);
- out << ',';
- ++child;
- }
- out << "BVPLUS(";
- out << n.getType().getBitVectorSize();
- out << ',';
- toStreamNode(out, n[child], depth, false, lbind);
- out << ',';
- toStreamNode(out, n[child + 1], depth, false, lbind);
- while (child > 0) {
- out << ')';
- --child;
- }
- out << ')';
- return;
- break;
- }
- case kind::BITVECTOR_SUB:
- out << "BVSUB(";
- Assert(n.getType().isBitVector());
- out << n.getType().getBitVectorSize();
- out << ',';
- toStreamNode(out, n[0], depth, false, lbind);
- out << ',';
- toStreamNode(out, n[1], depth, false, lbind);
- out << ')';
- return;
- break;
- case kind::BITVECTOR_MULT: {
- Assert(n.getType().isBitVector());
- unsigned numc = n.getNumChildren()-2;
- unsigned child = 0;
- while (child < numc) {
- out << "BVMULT(";
- out << n.getType().getBitVectorSize();
- out << ',';
- toStreamNode(out, n[child], depth, false, lbind);
- out << ',';
- ++child;
- }
- out << "BVMULT(";
- out << n.getType().getBitVectorSize();
- out << ',';
- toStreamNode(out, n[child], depth, false, lbind);
- out << ',';
- toStreamNode(out, n[child + 1], depth, false, lbind);
- while (child > 0) {
- out << ')';
- --child;
- }
- out << ')';
- return;
- break;
- }
- case kind::BITVECTOR_EXTRACT:
- op << n.getOperator().getConst<BitVectorExtract>();
- opType = POSTFIX;
- break;
- case kind::BITVECTOR_BITOF:
- op << n.getOperator().getConst<BitVectorBitOf>();
- opType = POSTFIX;
- break;
- case kind::BITVECTOR_REPEAT:
- out << "BVREPEAT(";
- toStreamNode(out, n[0], depth, false, lbind);
- out << ", " << n.getOperator().getConst<BitVectorRepeat>() << ')';
- return;
- break;
- case kind::BITVECTOR_ZERO_EXTEND:
- out << "BVZEROEXTEND(";
- toStreamNode(out, n[0], depth, false, lbind);
- out << ", " << n.getOperator().getConst<BitVectorZeroExtend>() << ')';
- return;
- break;
- case kind::BITVECTOR_SIGN_EXTEND:
- out << "SX(";
- toStreamNode(out, n[0], depth, false, lbind);
- out << ", " << n.getType().getBitVectorSize() << ')';
- return;
- break;
- case kind::BITVECTOR_ROTATE_LEFT:
- out << "BVROTL(";
- toStreamNode(out, n[0], depth, false, lbind);
- out << ", " << n.getOperator().getConst<BitVectorRotateLeft>() << ')';
- return;
- break;
- case kind::BITVECTOR_ROTATE_RIGHT:
- out << "BVROTR(";
- toStreamNode(out, n[0], depth, false, lbind);
- out << ", " << n.getOperator().getConst<BitVectorRotateRight>() << ')';
- return;
- break;
-
- // SETS
- case kind::SET_TYPE:
- out << "SET OF ";
- toStreamNode(out, n[0], depth, false, lbind);
- return;
- break;
- case kind::UNION:
- op << '|';
- opType = INFIX;
- break;
- case kind::INTERSECTION:
- op << '&';
- opType = INFIX;
- break;
- case kind::SETMINUS:
- op << '-';
- opType = INFIX;
- break;
- case kind::SUBSET:
- op << "<=";
- opType = INFIX;
- break;
- case kind::MEMBER:
- op << "IS_IN";
- opType = INFIX;
- break;
- case kind::COMPLEMENT:
- op << "~";
- opType = PREFIX;
- break;
- case kind::PRODUCT:
- op << "PRODUCT";
- opType = INFIX;
- break;
- case kind::JOIN:
- op << "JOIN";
- opType = INFIX;
- break;
- case kind::TRANSPOSE:
- op << "TRANSPOSE";
- opType = PREFIX;
- break;
- case kind::TCLOSURE:
- op << "TCLOSURE";
- opType = PREFIX;
- break;
- case kind::IDEN:
- op << "IDEN";
- opType = PREFIX;
- break;
- case kind::JOIN_IMAGE:
- op << "JOIN_IMAGE";
- opType = INFIX;
- break;
- case kind::SINGLETON:
- out << "{";
- toStreamNode(out, n[0], depth, false, lbind);
- out << "}";
- return;
- break;
- case kind::INSERT: {
- if(bracket) {
- out << '(';
- }
- out << '{';
- size_t i = 0;
- toStreamNode(out, n[i++], depth, false, lbind);
- for(;i+1 < n.getNumChildren(); ++i) {
- out << ", ";
- toStreamNode(out, n[i], depth, false, lbind);
- }
- out << "} | ";
- toStreamNode(out, n[i], depth, true, lbind);
- if(bracket) {
- out << ')';
- }
- return;
- break;
- }
- case kind::CARD: {
- out << "CARD(";
- toStreamNode(out, n[0], depth, false, lbind);
- out << ")";
- return;
- break;
- }
-
- // Quantifiers
- case kind::FORALL:
- out << "(FORALL";
- toStreamNode(out, n[0], depth, true, lbind);
- out << " : ";
- toStreamNodeWithLetify(out, n[1], depth, true, lbind);
- out << ')';
- // TODO: user patterns?
- return;
- case kind::EXISTS:
- out << "(EXISTS";
- toStreamNode(out, n[0], depth, true, lbind);
- out << " : ";
- toStreamNodeWithLetify(out, n[1], depth, true, lbind);
- out << ')';
- // TODO: user patterns?
- return;
- case kind::INST_CONSTANT:
- out << "INST_CONSTANT";
- break;
- case kind::BOUND_VAR_LIST:
- out << '(';
- for(size_t i = 0; i < n.getNumChildren(); ++i) {
- if(i > 0) {
- out << ", ";
- }
- toStreamNode(out, n[i], -1, false, lbind);
- out << ":";
- n[i].getType().toStream(out, Language::LANG_CVC);
- }
- out << ')';
- return;
- case kind::INST_PATTERN:
- out << "INST_PATTERN";
- break;
- case kind::INST_PATTERN_LIST:
- out << "INST_PATTERN_LIST";
- break;
-
- // string operators
- case kind::STRING_CONCAT:
- out << "CONCAT";
- break;
- case kind::STRING_CHARAT:
- out << "CHARAT";
- break;
- case kind::STRING_LENGTH:
- out << "LENGTH";
- break;
- case kind::STRING_SUBSTR: out << "SUBSTR"; break;
-
- default:
- Warning() << "Kind printing not implemented for the case of " << n.getKind() << endl;
- break;
- }
-
- switch (opType) {
- case PREFIX:
- out << op.str();
- if (n.getNumChildren() > 0)
- {
- out << '(';
- }
- break;
- case INFIX:
- if (bracket) {
- out << '(';
- }
- break;
- case POSTFIX:
- out << '(';
- break;
- }
-
- for (unsigned i = 0; i < n.getNumChildren(); ++ i) {
- if (i > 0) {
- if (opType == INFIX) {
- out << ' ' << op.str() << ' ';
- } else {
- out << ", ";
- }
- }
- toStreamNode(out, n[i], depth, opType == INFIX, lbind);
- }
-
- switch (opType) {
- case PREFIX:
- if (n.getNumChildren() > 0)
- {
- out << ')';
- }
- break;
- case INFIX:
- if (bracket) {
- out << ')';
- }
- break;
- case POSTFIX:
- out << ')' << op.str();
- break;
- }
-}
-
-template <class T>
-static bool tryToStream(std::ostream& out, const Command* c, bool cvc3Mode);
-
-template <class T>
-static bool tryToStream(std::ostream& out,
- const CommandStatus* s,
- bool cvc3Mode);
-
-void CvcPrinter::toStream(std::ostream& out, const CommandStatus* s) const
-{
- if (tryToStream<CommandSuccess>(out, s, d_cvc3Mode)
- || tryToStream<CommandFailure>(out, s, d_cvc3Mode)
- || tryToStream<CommandRecoverableFailure>(out, s, d_cvc3Mode)
- || tryToStream<CommandUnsupported>(out, s, d_cvc3Mode)
- || tryToStream<CommandInterrupted>(out, s, d_cvc3Mode))
- {
- return;
- }
-
- out << "ERROR: don't know how to print a CommandStatus of class: "
- << typeid(*s).name() << endl;
-
-}/* CvcPrinter::toStream(CommandStatus*) */
-
-void CvcPrinter::toStreamModelSort(std::ostream& out,
- TypeNode tn,
- const std::vector<Node>& elements) const
-{
- if (!tn.isSort())
- {
- out << "ERROR: don't know how to print a non uninterpreted sort in model: "
- << tn << std::endl;
- return;
- }
- out << "% cardinality of " << tn << " is " << elements.size() << std::endl;
- toStreamCmdDeclareType(out, tn);
- for (const Node& type_rep : elements)
- {
- if (type_rep.isVar())
- {
- out << type_rep << " : " << tn << ";" << std::endl;
- }
- else
- {
- out << "% rep: " << type_rep << std::endl;
- }
- }
-}
-
-void CvcPrinter::toStreamModelTerm(std::ostream& out,
- const Node& n,
- const Node& value) const
-{
- TypeNode tn = n.getType();
- out << n << " : ";
- if (tn.isFunction() || tn.isPredicate())
- {
- out << "(";
- for (size_t i = 0; i < tn.getNumChildren() - 1; i++)
- {
- if (i > 0)
- {
- out << ", ";
- }
- out << tn[i];
- }
- out << ") -> " << tn.getRangeType();
- }
- else
- {
- out << tn;
- }
- out << " = " << value << ";" << std::endl;
-}
-
-void CvcPrinter::toStream(std::ostream& out, const smt::Model& m) const
-{
- // print the model
- out << "MODEL BEGIN" << std::endl;
- this->Printer::toStream(out, m);
- out << "MODEL END;" << std::endl;
-}
-
-void CvcPrinter::toStreamCmdAssert(std::ostream& out, Node n) const
-{
- out << "ASSERT " << n << ';' << std::endl;
-}
-
-void CvcPrinter::toStreamCmdPush(std::ostream& out) const
-{
- out << "PUSH;" << std::endl;
-}
-
-void CvcPrinter::toStreamCmdPop(std::ostream& out) const
-{
- out << "POP;" << std::endl;
-}
-
-void CvcPrinter::toStreamCmdCheckSat(std::ostream& out, Node n) const
-{
- if (d_cvc3Mode)
- {
- out << "PUSH; ";
- }
- if (!n.isNull())
- {
- out << "CHECKSAT " << n << ';';
- }
- else
- {
- out << "CHECKSAT;";
- }
- if (d_cvc3Mode)
- {
- out << " POP;";
- }
- out << std::endl;
-}
-
-void CvcPrinter::toStreamCmdCheckSatAssuming(
- std::ostream& out, const std::vector<Node>& nodes) const
-{
- if (d_cvc3Mode)
- {
- out << "PUSH; ";
- }
- out << "CHECKSAT";
- if (nodes.size() > 0)
- {
- out << ' ' << nodes[0];
- for (size_t i = 1, n = nodes.size(); i < n; ++i)
- {
- out << " AND " << nodes[i];
- }
- }
- out << ';';
- if (d_cvc3Mode)
- {
- out << " POP;";
- }
- out << std::endl;
-}
-
-void CvcPrinter::toStreamCmdQuery(std::ostream& out, Node n) const
-{
- if (d_cvc3Mode)
- {
- out << "PUSH; ";
- }
- if (!n.isNull())
- {
- out << "QUERY " << n << ';';
- }
- else
- {
- out << "QUERY TRUE;";
- }
- if (d_cvc3Mode)
- {
- out << " POP;";
- }
- out << std::endl;
-}
-
-void CvcPrinter::toStreamCmdReset(std::ostream& out) const
-{
- out << "RESET;" << std::endl;
-}
-
-void CvcPrinter::toStreamCmdResetAssertions(std::ostream& out) const
-{
- out << "RESET ASSERTIONS;" << std::endl;
-}
-
-void CvcPrinter::toStreamCmdQuit(std::ostream& out) const
-{
- // out << "EXIT;" << std::endl;
-}
-
-void CvcPrinter::toStreamCmdCommandSequence(
- std::ostream& out, const std::vector<Command*>& sequence) const
-{
- for (CommandSequence::const_iterator i = sequence.cbegin();
- i != sequence.cend();
- ++i)
- {
- out << *i;
- }
-}
-
-void CvcPrinter::toStreamCmdDeclarationSequence(
- std::ostream& out, const std::vector<Command*>& sequence) const
-{
- DeclarationSequence::const_iterator i = sequence.cbegin();
- for (;;)
- {
- DeclarationDefinitionCommand* dd =
- static_cast<DeclarationDefinitionCommand*>(*i++);
- Assert(dd != nullptr);
- if (i != sequence.cend())
- {
- out << dd->getSymbol() << ", ";
- }
- else
- {
- out << *dd;
- break;
- }
- }
- out << std::endl;
-}
-
-void CvcPrinter::toStreamCmdDeclareFunction(std::ostream& out,
- const std::string& id,
- TypeNode type) const
-{
- out << id << " : " << type << ';' << std::endl;
-}
-
-void CvcPrinter::toStreamCmdDefineFunction(std::ostream& out,
- const std::string& id,
- const std::vector<Node>& formals,
- TypeNode range,
- Node formula) const
-{
- std::vector<TypeNode> sorts;
- sorts.reserve(formals.size() + 1);
- for (const Node& n : formals)
- {
- sorts.push_back(n.getType());
- }
- sorts.push_back(range);
-
- out << id << " : " << NodeManager::currentNM()->mkFunctionType(sorts)
- << " = ";
- if (formals.size() > 0)
- {
- out << "LAMBDA(";
- vector<Node>::const_iterator i = formals.cbegin();
- while (i != formals.end())
- {
- out << (*i) << ":" << (*i).getType();
- if (++i != formals.end())
- {
- out << ", ";
- }
- }
- out << "): ";
- }
- out << formula << ';' << std::endl;
-}
-
-void CvcPrinter::toStreamCmdDeclareType(std::ostream& out,
- TypeNode type) const
-{
- size_t arity = type.isSortConstructor() ? type.getSortConstructorArity() : 0;
- if (arity > 0)
- {
- out << "ERROR: Don't know how to print parameterized type declaration "
- "in CVC language."
- << std::endl;
- }
- else
- {
- out << type << " : TYPE;" << std::endl;
- }
-}
-
-void CvcPrinter::toStreamCmdDefineType(std::ostream& out,
- const std::string& id,
- const std::vector<TypeNode>& params,
- TypeNode t) const
-{
- if (params.size() > 0)
- {
- out << "ERROR: Don't know how to print parameterized type definition "
- "in CVC language:"
- << std::endl;
- }
- else
- {
- out << id << " : TYPE = " << t << ';' << std::endl;
- }
-}
-
-void CvcPrinter::toStreamCmdSimplify(std::ostream& out, Node n) const
-{
- out << "TRANSFORM " << n << ';' << std::endl;
-}
-
-void CvcPrinter::toStreamCmdGetValue(std::ostream& out,
- const std::vector<Node>& nodes) const
-{
- Assert(!nodes.empty());
- out << "GET_VALUE ";
- copy(nodes.begin(),
- nodes.end() - 1,
- ostream_iterator<Node>(out, ";\nGET_VALUE "));
- out << nodes.back() << ';' << std::endl;
-}
-
-void CvcPrinter::toStreamCmdGetModel(std::ostream& out) const
-{
- out << "COUNTERMODEL;" << std::endl;
-}
-
-void CvcPrinter::toStreamCmdGetAssignment(std::ostream& out) const
-{
- out << "% (get-assignment)" << std::endl;
-}
-
-void CvcPrinter::toStreamCmdGetAssertions(std::ostream& out) const
-{
- out << "WHERE;" << std::endl;
-}
-
-void CvcPrinter::toStreamCmdGetProof(std::ostream& out) const
-{
- out << "DUMP_PROOF;" << std::endl;
-}
-
-void CvcPrinter::toStreamCmdGetUnsatCore(std::ostream& out) const
-{
- out << "DUMP_UNSAT_CORE;" << std::endl;
-}
-
-void CvcPrinter::toStreamCmdSetBenchmarkStatus(std::ostream& out,
- Result::Sat status) const
-{
- out << "% (set-info :status " << status << ')' << std::endl;
-}
-
-void CvcPrinter::toStreamCmdSetBenchmarkLogic(std::ostream& out,
- const std::string& logic) const
-{
- out << "OPTION \"logic\" \"" << logic << "\";" << std::endl;
-}
-
-void CvcPrinter::toStreamCmdSetInfo(std::ostream& out,
- const std::string& flag,
- const std::string& value) const
-{
- out << "% (set-info " << flag << ' ' << value << ')' << std::endl;
-}
-
-void CvcPrinter::toStreamCmdGetInfo(std::ostream& out,
- const std::string& flag) const
-{
- out << "% (get-info " << flag << ')' << std::endl;
-}
-
-void CvcPrinter::toStreamCmdSetOption(std::ostream& out,
- const std::string& flag,
- const std::string& value) const
-{
- out << "OPTION \"" << flag << "\" " << value << ';' << std::endl;
-}
-
-void CvcPrinter::toStreamCmdGetOption(std::ostream& out,
- const std::string& flag) const
-{
- out << "% (get-option " << flag << ')' << std::endl;
-}
-
-void CvcPrinter::toStreamCmdDatatypeDeclaration(
- std::ostream& out, const std::vector<TypeNode>& datatypes) const
-{
- Assert(!datatypes.empty() && datatypes[0].isDatatype());
- const DType& dt0 = datatypes[0].getDType();
- // do not print tuple/datatype internal declarations
- if (datatypes.size() != 1 || (!dt0.isTuple() && !dt0.isRecord()))
- {
- out << "DATATYPE" << endl;
- bool firstDatatype = true;
- for (const TypeNode& t : datatypes)
- {
- if (!firstDatatype)
- {
- out << ',' << endl;
- }
- const DType& dt = t.getDType();
- out << " " << dt.getName();
- if (dt.isParametric())
- {
- out << '[';
- for (size_t j = 0; j < dt.getNumParameters(); ++j)
- {
- if (j > 0)
- {
- out << ',';
- }
- out << dt.getParameter(j);
- }
- out << ']';
- }
- out << " = ";
- for (size_t j = 0, ncons = dt.getNumConstructors(); j < ncons; j++)
- {
- const DTypeConstructor& cons = dt[j];
- if (j != 0)
- {
- out << " | ";
- }
- out << cons.getName();
- if (cons.getNumArgs() > 0)
- {
- out << '(';
- for (size_t k = 0, nargs = cons.getNumArgs(); k < nargs; k++)
- {
- if (k != 0)
- {
- out << ", ";
- }
- const DTypeSelector& selector = cons[k];
- TypeNode tr = selector.getRangeType();
- if (tr.isDatatype())
- {
- const DType& sdt = tr.getDType();
- out << selector.getName() << ": " << sdt.getName();
- }
- else
- {
- out << selector.getName() << ": " << tr;
- }
- }
- out << ')';
- }
- }
- firstDatatype = false;
- }
- out << endl << "END;" << std::endl;
- }
-}
-
-void CvcPrinter::toStreamCmdComment(std::ostream& out,
- const std::string& comment) const
-{
- out << "% " << comment << std::endl;
-}
-
-void CvcPrinter::toStreamCmdEmpty(std::ostream& out,
- const std::string& name) const
-{
- out << std::endl;
-}
-
-void CvcPrinter::toStreamCmdEcho(std::ostream& out,
- const std::string& output) const
-{
- out << "ECHO \"" << output << "\";" << std::endl;
-}
-
-template <class T>
-static bool tryToStream(std::ostream& out, const Command* c, bool cvc3Mode)
-{
- if(typeid(*c) == typeid(T)) {
- toStream(out, dynamic_cast<const T*>(c), cvc3Mode);
- return true;
- }
- return false;
-}
-
-static void toStream(std::ostream& out, const CommandSuccess* s, bool cvc3Mode)
-{
- if(Command::printsuccess::getPrintSuccess(out)) {
- out << "OK" << endl;
- }
-}
-
-static void toStream(std::ostream& out,
- const CommandUnsupported* s,
- bool cvc3Mode)
-{
- out << "UNSUPPORTED" << endl;
-}
-
-static void toStream(std::ostream& out,
- const CommandInterrupted* s,
- bool cvc3Mode)
-{
- out << "INTERRUPTED" << endl;
-}
-
-static void toStream(std::ostream& out, const CommandFailure* s, bool cvc3Mode)
-{
- out << s->getMessage() << endl;
-}
-
-static void toStream(std::ostream& out,
- const CommandRecoverableFailure* s,
- bool cvc3Mode)
-{
- out << s->getMessage() << endl;
-}
-
-template <class T>
-static bool tryToStream(std::ostream& out,
- const CommandStatus* s,
- bool cvc3Mode)
-{
- if(typeid(*s) == typeid(T)) {
- toStream(out, dynamic_cast<const T*>(s), cvc3Mode);
- return true;
- }
- return false;
-}
-
-void CvcPrinter::toStreamNodeWithLetify(std::ostream& out,
- Node n,
- int toDepth,
- bool bracket,
- LetBinding* lbind) const
-{
- if (lbind == nullptr)
- {
- toStreamNode(out, n, toDepth, bracket, nullptr);
- return;
- }
- std::vector<Node> letList;
- lbind->letify(n, letList);
- if (!letList.empty())
- {
- std::map<Node, uint32_t>::const_iterator it;
- out << "LET ";
- bool first = true;
- for (size_t i = 0, nlets = letList.size(); i < nlets; i++)
- {
- if (!first)
- {
- out << ", ";
- }
- else
- {
- first = false;
- }
- Node nl = letList[i];
- uint32_t id = lbind->getId(nl);
- out << "_let_" << id << " = ";
- Node nlc = lbind->convert(nl, "_let_", false);
- toStreamNode(out, nlc, toDepth, true, lbind);
- }
- out << " IN ";
- }
- Node nc = lbind->convert(n, "_let_");
- // print the body, passing the lbind object
- toStreamNode(out, nc, toDepth, bracket, lbind);
- lbind->popScope();
-}
-
-} // namespace cvc
-} // namespace printer
-} // namespace cvc5
+++ /dev/null
-/******************************************************************************
- * Top contributors (to current version):
- * Abdalrhman Mohamed, Andrew Reynolds, Tim King
- *
- * This file is part of the cvc5 project.
- *
- * Copyright (c) 2009-2021 by the authors listed in the file AUTHORS
- * in the top-level source directory and their institutional affiliations.
- * All rights reserved. See the file COPYING in the top-level source
- * directory for licensing information.
- * ****************************************************************************
- *
- * The pretty-printer interface for the CVC output language.
- */
-
-#include "cvc5_private.h"
-
-#ifndef CVC5__PRINTER__CVC_PRINTER_H
-#define CVC5__PRINTER__CVC_PRINTER_H
-
-#include <iostream>
-
-#include "printer/printer.h"
-
-namespace cvc5 {
-
-class LetBinding;
-
-namespace printer {
-namespace cvc {
-
-class CvcPrinter : public cvc5::Printer
-{
- public:
- using cvc5::Printer::toStream;
- CvcPrinter(bool cvc3Mode = false) : d_cvc3Mode(cvc3Mode) {}
- void toStream(std::ostream& out,
- TNode n,
- int toDepth,
- size_t dag) const override;
- void toStream(std::ostream& out, const CommandStatus* s) const override;
- void toStream(std::ostream& out, const smt::Model& m) const override;
-
- /** Print empty command */
- void toStreamCmdEmpty(std::ostream& out,
- const std::string& name) const override;
-
- /** Print echo command */
- void toStreamCmdEcho(std::ostream& out,
- const std::string& output) const override;
-
- /** Print assert command */
- void toStreamCmdAssert(std::ostream& out, Node n) const override;
-
- /** Print push command */
- void toStreamCmdPush(std::ostream& out) const override;
-
- /** Print pop command */
- void toStreamCmdPop(std::ostream& out) const override;
-
- /** Print declare-fun command */
- void toStreamCmdDeclareFunction(std::ostream& out,
- const std::string& id,
- TypeNode type) const override;
-
- /** Print declare-sort command */
- void toStreamCmdDeclareType(std::ostream& out,
- TypeNode type) const override;
-
- /** Print define-sort command */
- void toStreamCmdDefineType(std::ostream& out,
- const std::string& id,
- const std::vector<TypeNode>& params,
- TypeNode t) const override;
-
- /** Print define-fun command */
- void toStreamCmdDefineFunction(std::ostream& out,
- const std::string& id,
- const std::vector<Node>& formals,
- TypeNode range,
- Node formula) const override;
-
- /** Print check-sat command */
- void toStreamCmdCheckSat(std::ostream& out,
- Node n = Node::null()) const override;
-
- /** Print check-sat-assuming command */
- void toStreamCmdCheckSatAssuming(
- std::ostream& out, const std::vector<Node>& nodes) const override;
-
- /** Print query command */
- void toStreamCmdQuery(std::ostream& out, Node n) const override;
-
- /** Print simplify command */
- void toStreamCmdSimplify(std::ostream& out, Node nodes) const override;
-
- /** Print get-value command */
- void toStreamCmdGetValue(std::ostream& out,
- const std::vector<Node>& n) const override;
-
- /** Print get-assignment command */
- void toStreamCmdGetAssignment(std::ostream& out) const override;
-
- /** Print get-model command */
- void toStreamCmdGetModel(std::ostream& out) const override;
-
- /** Print get-proof command */
- void toStreamCmdGetProof(std::ostream& out) const override;
-
- /** Print get-unsat-core command */
- void toStreamCmdGetUnsatCore(std::ostream& out) const override;
-
- /** Print get-assertions command */
- void toStreamCmdGetAssertions(std::ostream& out) const override;
-
- /** Print set-info :status command */
- void toStreamCmdSetBenchmarkStatus(std::ostream& out,
- Result::Sat status) const override;
-
- /** Print set-logic command */
- void toStreamCmdSetBenchmarkLogic(std::ostream& out,
- const std::string& logic) const override;
-
- /** Print set-info command */
- void toStreamCmdSetInfo(std::ostream& out,
- const std::string& flag,
- const std::string& value) const override;
-
- /** Print get-info command */
- void toStreamCmdGetInfo(std::ostream& out,
- const std::string& flag) const override;
-
- /** Print set-option command */
- void toStreamCmdSetOption(std::ostream& out,
- const std::string& flag,
- const std::string& value) const override;
-
- /** Print get-option command */
- void toStreamCmdGetOption(std::ostream& out,
- const std::string& flag) const override;
-
- /** Print declare-datatype(s) command */
- void toStreamCmdDatatypeDeclaration(
- std::ostream& out, const std::vector<TypeNode>& datatypes) const override;
-
- /** Print reset command */
- void toStreamCmdReset(std::ostream& out) const override;
-
- /** Print reset-assertions command */
- void toStreamCmdResetAssertions(std::ostream& out) const override;
-
- /** Print quit command */
- void toStreamCmdQuit(std::ostream& out) const override;
-
- /** Print comment command */
- void toStreamCmdComment(std::ostream& out,
- const std::string& comment) const override;
-
- /** Print command sequence command */
- void toStreamCmdCommandSequence(
- std::ostream& out, const std::vector<Command*>& sequence) const override;
-
- /** Print declaration sequence command */
- void toStreamCmdDeclarationSequence(
- std::ostream& out, const std::vector<Command*>& sequence) const override;
-
- private:
- /**
- * The main method for printing Nodes.
- */
- void toStreamNode(std::ostream& out,
- TNode n,
- int toDepth,
- bool bracket,
- LetBinding* lbind) const;
- /**
- * To stream model sort. This prints the appropriate output for type
- * tn declared via declare-sort.
- */
- void toStreamModelSort(std::ostream& out,
- TypeNode tn,
- const std::vector<Node>& elements) const override;
-
- /**
- * To stream model term. This prints the appropriate output for term
- * n declared via declare-fun.
- */
- void toStreamModelTerm(std::ostream& out,
- const Node& n,
- const Node& value) const override;
- /**
- * To stream with let binding. This prints n, possibly in the scope
- * of letification generated by this method based on lbind.
- */
- void toStreamNodeWithLetify(std::ostream& out,
- Node n,
- int toDepth,
- bool bracket,
- LetBinding* lbind) const;
-
- bool d_cvc3Mode;
-}; /* class CvcPrinter */
-
-} // namespace cvc
-} // namespace printer
-} // namespace cvc5
-
-#endif /* CVC5__PRINTER__CVC_PRINTER_H */
#include "options/base_options.h"
#include "options/language.h"
#include "printer/ast/ast_printer.h"
-#include "printer/cvc/cvc_printer.h"
#include "printer/smt2/smt2_printer.h"
#include "printer/tptp/tptp_printer.h"
#include "proof/unsat_core.h"
case Language::LANG_TPTP:
return unique_ptr<Printer>(new printer::tptp::TptpPrinter());
- case Language::LANG_CVC:
- return unique_ptr<Printer>(new printer::cvc::CvcPrinter());
-
case Language::LANG_SYGUS_V2:
// sygus version 2.0 does not have discrepancies with smt2, hence we use
// a normal smt2 variant here.
child.expect("cvc5>")
# If we send a line with just 'BOOLE' ...
- child.sendline("BOOLE")
+ child.sendline("(set-log")
# ... then we get an error
- child.expect("Parse Error: <shell>:...: Unexpected token: 'BOOLE'")
+ child.expect("Parse Error: <shell>:1.7: expected SMT-LIBv2 command, got `set-log\'")
# Start sending 'BOOL' (without an E)
- child.send("BOOL")
+ child.send("(declare-data")
# Send tab twice
child.sendcontrol("i")
child.sendcontrol("i")
# We expect to see the completion
- child.expect("BOOL.*BOOLEAN.*BOOLEXTRACT")
+ child.expect("declare-datatype.*declare-datatypes")
- # NOTE: the double tab has completed our 'BOOL' to 'BOOLE'!
+ # NOTE: the double tab has completed our '(declare-data' to '(declare-datatype'!
- # Now send enter (which submits 'BOOLE')
+ # Now send enter (which submits '(declare-datatype')
+ child.send(")")
child.sendcontrol("m")
# So we expect to see an error for 'BOOLE'
- child.expect("Parse Error: <shell>:...: Unexpected token: 'BOOLE'")
+ child.expect("Parse Error: <shell>:1.17: Unexpected token: '\)'.")
# Send enter
child.sendcontrol("m")
# Send enter
child.sendcontrol("m")
- # We expect to see an error on 'BOOLE' again
- child.expect("Parse Error: <shell>:...: Unexpected token: 'BOOLE'")
+ # We expect to see the previous error again
+ child.expect("Parse Error: <shell>:1.17: Unexpected token: '\)'.")
return 0
std::string input_language,
std::string output_language)
{
- assert(input_language == "smt2" || input_language == "cvc");
- assert(output_language == "smt2" || output_language == "cvc");
+ assert(input_language == "smt2");
+ assert(output_language == "smt2");
std::string declarations;
- if (input_language == "smt2")
- {
declarations =
"\
(declare-sort U 0)\n\
(assert (= (f x) x))\n\
(declare-fun a () (Array U (Array U U)))\n\
";
- }
- else
- {
- declarations =
- "\
- U: TYPE;\n\
- f: U -> U;\n\
- x,y: U;\n\
- a: ARRAY U OF (ARRAY U OF U);\n\
- ASSERT f(x) = x;\n\
- ";
- }
api::Solver solver;
- std::string ilang =
- input_language == "smt2" ? "LANG_SMTLIB_V2_6" : "LANG_CVC";
+ std::string ilang = "LANG_SMTLIB_V2_6";
solver.setOption("input-language", input_language);
solver.setOption("output-language", output_language);
std::string input_language,
std::string output_language)
{
- assert(input_language == "smt2" || input_language == "cvc");
- assert(output_language == "smt2" || output_language == "cvc");
+ assert(input_language == "smt2");
+ assert(output_language == "smt2");
std::cout << "==============================================" << std::endl
- << "translating from "
- << (input_language == "smt2" ? Language::LANG_SMTLIB_V2_6
- : Language::LANG_CVC)
- << " to "
- << (output_language == "smt2" ? Language::LANG_SMTLIB_V2_6
- : Language::LANG_CVC)
- << " this string:" << std::endl
+ << "translating from " << Language::LANG_SMTLIB_V2_6 << " to "
+ << Language::LANG_SMTLIB_V2_6 << " this string:" << std::endl
<< instr << std::endl;
std::string outstr = parse(instr, input_language, output_language);
std::cout << "got this:" << std::endl
<< outstr << std::endl
- << "reparsing as "
- << (output_language == "smt2" ? Language::LANG_SMTLIB_V2_6
- : Language::LANG_CVC)
- << std::endl;
+ << "reparsing as " << Language::LANG_SMTLIB_V2_6 << std::endl;
std::string poutstr = parse(outstr, output_language, output_language);
assert(outstr == poutstr);
std::cout << "got same expressions " << outstr << " and " << poutstr
<< " in language " << Language::LANG_SMTLIB_V2_6 << std::endl;
std::string smt2str = translate(instr, instr_language, "smt2");
std::cout << "in SMT2 : " << smt2str << std::endl;
- std::string cvcstr = translate(smt2str, "smt2", "cvc");
- std::cout << "in CVC : " << cvcstr << std::endl;
- std::string outstr = translate(cvcstr, "cvc", "smt2");
- std::cout << "back to SMT2 : " << outstr << std::endl << std::endl;
+ std::string outstr = translate(smt2str, "smt2", "smt2");
+ std::cout << "to SMT2 : " << outstr << std::endl << std::endl;
assert(outstr == smt2str); // differences in output
}
int32_t runTest()
{
runTestString("(= (f (f y)) x)", "smt2");
- runTestString("~BVPLUS(3, 0bin00, 0bin11)[2:1] = 0bin10", "cvc");
- runTestString("~BVPLUS(3, BVMULT(2, 0bin01, 0bin11), 0bin11)[2:0]", "cvc");
- runTestString("a[x][y] = a[y][x]", "cvc");
+ runTestString("(= ((_ extract 2 1) (bvnot (bvadd #b000 #b011))) #b10)",
+ "smt2");
+ runTestString("((_ extract 2 0) (bvnot (bvadd (bvmul #b001 #b011) #b011)))",
+ "smt2");
return 0;
}
regress0/arith/arith-strict.smt2
regress0/arith/arith-tighten-1.smt2
regress0/arith/arith-tighten-2.smt2
- regress0/arith/arith.01.cvc
- regress0/arith/arith.02.cvc
- regress0/arith/arith.03.cvc
+ regress0/arith/arith.01.cvc.smt2
+ regress0/arith/arith.02.cvc.smt2
+ regress0/arith/arith.03.cvc.smt2
regress0/arith/bug443.delta01.smtv1.smt2
regress0/arith/bug547.2.smt2
- regress0/arith/bug549.cvc
+ regress0/arith/bug549.cvc.smt2
regress0/arith/bug569.smt2
regress0/arith/delta-minimized-row-vector-bug.smtv1.smt2
regress0/arith/div-chainable.smt2
regress0/arith/integers/ackermann4.smt2
regress0/arith/integers/ackermann5.smt2
regress0/arith/integers/ackermann6.smt2
- regress0/arith/integers/arith-int-014.cvc
- regress0/arith/integers/arith-int-015.cvc
- regress0/arith/integers/arith-int-021.cvc
- regress0/arith/integers/arith-int-023.cvc
- regress0/arith/integers/arith-int-025.cvc
- regress0/arith/integers/arith-int-042.cvc
- regress0/arith/integers/arith-int-042.min.cvc
- regress0/arith/integers/arith-int-079.cvc
- regress0/arith/integers/arith-interval.cvc
+ regress0/arith/integers/arith-int-014.cvc.smt2
+ regress0/arith/integers/arith-int-015.cvc.smt2
+ regress0/arith/integers/arith-int-021.cvc.smt2
+ regress0/arith/integers/arith-int-023.cvc.smt2
+ regress0/arith/integers/arith-int-025.cvc.smt2
+ regress0/arith/integers/arith-int-042.cvc.smt2
+ regress0/arith/integers/arith-int-042.min.cvc.smt2
+ regress0/arith/integers/arith-int-079.cvc.smt2
+ regress0/arith/integers/arith-interval.cvc.smt2
regress0/arith/integers/issue6146-stale-vars.smt2
regress0/arith/issue1399.smt2
regress0/arith/issue3412.smt2
regress0/arith/issue5761-ppr.smt2
regress0/arith/ite-lift.smt2
regress0/arith/leq.01.smtv1.smt2
- regress0/arith/miplib.cvc
- regress0/arith/miplib2.cvc
- regress0/arith/miplib4.cvc
+ regress0/arith/miplib.cvc.smt2
+ regress0/arith/miplib2.cvc.smt2
+ regress0/arith/miplib4.cvc.smt2
regress0/arith/miplibtrick.smtv1.smt2
regress0/arith/mod-simp.smt2
regress0/arith/mod.01.smt2
regress0/arrays/bug3020.smt2
regress0/arrays/bug4957.smt2
regress0/arrays/bug637.delta.smt2
- regress0/arrays/constarr.cvc
+ regress0/arrays/constarr.cvc.smt2
regress0/arrays/constarr.smt2
- regress0/arrays/constarr2.cvc
+ regress0/arrays/constarr2.cvc.smt2
regress0/arrays/constarr2.smt2
regress0/arrays/incorrect1.smtv1.smt2
regress0/arrays/incorrect10.smtv1.smt2
regress0/auflia/x2.smtv1.smt2
regress0/bool/issue1978.smt2
regress0/bool/issue6717-ite-rewrite.smt2
- regress0/boolean-prec.cvc
+ regress0/boolean-prec.cvc.smt2
regress0/boolean-terms-bug-array.smt2
regress0/boolean-terms-kernel1.smt2
- regress0/boolean-terms.cvc
+ regress0/boolean-terms.cvc.smt2
regress0/bt-test-00.smt2
regress0/bt-test-01.smt2
regress0/bug1247.smt2
regress0/bug217.smt2
regress0/bug220.smt2
regress0/bug239.smtv1.smt2
- regress0/bug274.cvc
+ regress0/bug274.cvc.smt2
regress0/bug288.smtv1.smt2
regress0/bug288b.smtv1.smt2
regress0/bug288c.smtv1.smt2
regress0/bug303.smt2
- regress0/bug310.cvc
- regress0/bug32.cvc
- regress0/bug322.cvc
- regress0/bug322b.cvc
+ regress0/bug310.cvc.smt2
+ regress0/bug32.cvc.smt2
+ regress0/bug322.cvc.smt2
+ regress0/bug322b.cvc.smt2
regress0/bug339.smt2
regress0/bug365.smt2
regress0/bug382.smt2
regress0/bug421b.smt2
regress0/bug480.smt2
regress0/bug484.smt2
- regress0/bug486.cvc
+ regress0/bug486.cvc.smt2
regress0/bug49.smtv1.smt2
regress0/bug512.minimized.smt2
regress0/bug521.minimized.smt2
regress0/bug576.smt2
regress0/bug576a.smt2
regress0/bug578.smt2
- regress0/bug586.cvc
- regress0/bug595.cvc
- regress0/bug596.cvc
- regress0/bug596b.cvc
- regress0/bug605.cvc
+ regress0/bug586.cvc.smt2
+ regress0/bug595.cvc.smt2
+ regress0/bug596.cvc.smt2
+ regress0/bug596b.cvc.smt2
+ regress0/bug605.cvc.smt2
regress0/bug639.smt2
regress0/buggy-ite.smt2
regress0/bv/ackermann1.smt2
regress0/bv/bv_to_int_bvuf_to_intuf_sorts.smt2
regress0/bv/bv_to_int_elim_err.smt2
regress0/bv/bv_to_int_zext.smt2
- regress0/bv/bvcomp.cvc
+ regress0/bv/bvcomp.cvc.smt2
regress0/bv/bvmul-pow2-only.smt2
regress0/bv/bvproof1.smt2
regress0/bv/bvproof2.smt2
regress0/bv/bvproof3.smt2
- regress0/bv/bvsimple.cvc
+ regress0/bv/bvsimple.cvc.smt2
regress0/bv/bvsmod.smt2
regress0/bv/calc2_sec2_shifter_mult_bmc15.atlas.delta01.smtv1.smt2
regress0/bv/core/a78test0002.smtv1.smt2
regress0/bv/core/slice-18.smtv1.smt2
regress0/bv/core/slice-19.smtv1.smt2
regress0/bv/core/slice-20.smtv1.smt2
- regress0/bv/div_mod.cvc
+ regress0/bv/div_mod.cvc.smt2
regress0/bv/divtest_2_5.smt2
regress0/bv/divtest_2_6.smt2
regress0/bv/eager-force-logic.smt2
regress0/bv/pr4993-bvugt-bvurem-a.smt2
regress0/bv/pr4993-bvugt-bvurem-b.smt2
regress0/bv/reset-assertions-assert-input.smt2
- regress0/bv/sizecheck.cvc
+ regress0/bv/sizecheck.cvc.smt2
regress0/bv/smtcompbug.smtv1.smt2
regress0/bv/test-bv_intro_pow2.smt2
regress0/bv/unsound1-reduced.smt2
regress0/cores/issue5238.smt2
regress0/cores/issue5902.smt2
regress0/cores/issue5908.smt2
- regress0/cvc-rerror-print.cvc
- regress0/cvc3-bug15.cvc
- regress0/cvc3.userdoc.01.cvc
- regress0/cvc3.userdoc.02.cvc
- regress0/cvc3.userdoc.03.cvc
- regress0/cvc3.userdoc.04.cvc
- regress0/cvc3.userdoc.05.cvc
- regress0/cvc3.userdoc.06.cvc
+ regress0/cvc-rerror-print.cvc.smt2
+ regress0/cvc3-bug15.cvc.smt2
+ regress0/cvc3.userdoc.01.cvc.smt2
+ regress0/cvc3.userdoc.02.cvc.smt2
+ regress0/cvc3.userdoc.03.cvc.smt2
+ regress0/cvc3.userdoc.04.cvc.smt2
+ regress0/cvc3.userdoc.05.cvc.smt2
+ regress0/cvc3.userdoc.06.cvc.smt2
regress0/datatypes/4482-unc-simp-one.smt2
- regress0/datatypes/boolean-equality.cvc
- regress0/datatypes/boolean-terms-datatype.cvc
- regress0/datatypes/boolean-terms-parametric-datatype-1.cvc
- regress0/datatypes/boolean-terms-record.cvc
- regress0/datatypes/boolean-terms-rewrite.cvc
- regress0/datatypes/boolean-terms-tuple.cvc
- regress0/datatypes/bug286.cvc
- regress0/datatypes/bug438.cvc
- regress0/datatypes/bug438b.cvc
+ regress0/datatypes/boolean-equality.cvc.smt2
+ regress0/datatypes/boolean-terms-datatype.cvc.smt2
+ regress0/datatypes/boolean-terms-parametric-datatype-1.cvc.smt2
+ regress0/datatypes/boolean-terms-record.cvc.smt2
+ regress0/datatypes/boolean-terms-rewrite.cvc.smt2
+ regress0/datatypes/boolean-terms-tuple.cvc.smt2
+ regress0/datatypes/bug286.cvc.smt2
+ regress0/datatypes/bug438.cvc.smt2
+ regress0/datatypes/bug438b.cvc.smt2
regress0/datatypes/bug597-rbt.smt2
regress0/datatypes/bug604.smt2
regress0/datatypes/bug625.smt2
regress0/datatypes/coda_simp_model.smt2
regress0/datatypes/conqueue-dt-enum-iloop.smt2
regress0/datatypes/data-nested-codata.smt2
- regress0/datatypes/datatype.cvc
- regress0/datatypes/datatype0.cvc
- regress0/datatypes/datatype1.cvc
- regress0/datatypes/datatype13.cvc
- regress0/datatypes/datatype2.cvc
- regress0/datatypes/datatype3.cvc
- regress0/datatypes/datatype4.cvc
+ regress0/datatypes/datatype.cvc.smt2
+ regress0/datatypes/datatype0.cvc.smt2
+ regress0/datatypes/datatype1.cvc.smt2
+ regress0/datatypes/datatype13.cvc.smt2
+ regress0/datatypes/datatype2.cvc.smt2
+ regress0/datatypes/datatype3.cvc.smt2
+ regress0/datatypes/datatype4.cvc.smt2
regress0/datatypes/dt-2.6.smt2
regress0/datatypes/dt-different-params.smt2
regress0/datatypes/dt-match-pat-param-2.6.smt2
regress0/datatypes/dt-param-2.6.smt2
regress0/datatypes/dt-param-card4-bool-sat.smt2
regress0/datatypes/dt-sel-2.6.smt2
- regress0/datatypes/empty_tuprec.cvc
+ regress0/datatypes/empty_tuprec.cvc.smt2
regress0/datatypes/example-dailler-min.smt2
regress0/datatypes/is_test.smt2
regress0/datatypes/issue1433.smt2
- regress0/datatypes/issue2838.cvc
+ regress0/datatypes/issue2838.cvc.smt2
regress0/datatypes/issue5280-no-nrec.smt2
regress0/datatypes/jsat-2.6.smt2
regress0/datatypes/list-bool.smt2
regress0/datatypes/list-update.smt2
regress0/datatypes/list-update-sat.smt2
regress0/datatypes/model-subterms-min.smt2
- regress0/datatypes/mutually-recursive.cvc
- regress0/datatypes/pair-bool-bool.cvc
+ regress0/datatypes/mutually-recursive.cvc.smt2
+ regress0/datatypes/pair-bool-bool.cvc.smt2
regress0/datatypes/pair-real-bool.smt2
- regress0/datatypes/parametric-alt-list.cvc
- regress0/datatypes/rec1.cvc
- regress0/datatypes/rec2.cvc
- regress0/datatypes/rec4.cvc
- regress0/datatypes/rewriter.cvc
+ regress0/datatypes/parametric-alt-list.cvc.smt2
+ regress0/datatypes/rec1.cvc.smt2
+ regress0/datatypes/rec2.cvc.smt2
+ regress0/datatypes/rec4.cvc.smt2
+ regress0/datatypes/rewriter.cvc.smt2
regress0/datatypes/sc-cdt1.smt2
- regress0/datatypes/some-boolean-tests.cvc
+ regress0/datatypes/some-boolean-tests.cvc.smt2
regress0/datatypes/stream-singleton.smt2
regress0/datatypes/tenum-bug.smt2
- regress0/datatypes/Test1-tup-mp.cvc
- regress0/datatypes/tree-get-value.cvc
- regress0/datatypes/tuple-model.cvc
- regress0/datatypes/tuple-no-clash.cvc
- regress0/datatypes/tuple-record-bug.cvc
- regress0/datatypes/tuple.cvc
+ regress0/datatypes/Test1-tup-mp.cvc.smt2
+ regress0/datatypes/tree-get-value.cvc.smt2
+ regress0/datatypes/tuple-model.cvc.smt2
+ regress0/datatypes/tuple-no-clash.cvc.smt2
+ regress0/datatypes/tuple-record-bug.cvc.smt2
+ regress0/datatypes/tuple.cvc.smt2
regress0/datatypes/tuple_update.smt2
regress0/datatypes/tuples-empty.smt2
regress0/datatypes/tuples-multitype.smt2
- regress0/datatypes/typed_v10l30054.cvc
- regress0/datatypes/typed_v1l80005.cvc
- regress0/datatypes/typed_v2l30079.cvc
- regress0/datatypes/typed_v3l20092.cvc
- regress0/datatypes/typed_v5l30069.cvc
- regress0/datatypes/v10l40099.cvc
- regress0/datatypes/v2l40025.cvc
- regress0/datatypes/v3l60006.cvc
- regress0/datatypes/v5l30058.cvc
- regress0/datatypes/wrong-sel-simp.cvc
+ regress0/datatypes/typed_v10l30054.cvc.smt2
+ regress0/datatypes/typed_v1l80005.cvc.smt2
+ regress0/datatypes/typed_v2l30079.cvc.smt2
+ regress0/datatypes/typed_v3l20092.cvc.smt2
+ regress0/datatypes/typed_v5l30069.cvc.smt2
+ regress0/datatypes/v10l40099.cvc.smt2
+ regress0/datatypes/v2l40025.cvc.smt2
+ regress0/datatypes/v3l60006.cvc.smt2
+ regress0/datatypes/v5l30058.cvc.smt2
+ regress0/datatypes/wrong-sel-simp.cvc.smt2
regress0/decision/aufbv-fuzz01.smtv1.smt2
regress0/decision/bitvec0.delta01.smtv1.smt2
regress0/decision/bitvec0.smtv1.smt2
regress0/eqrange3.smt2
regress0/expect/scrub.01.smtv1.smt2
regress0/expect/scrub.03.smt2
- regress0/expect/scrub.06.cvc
+ regress0/expect/scrub.06.cvc.smt2
regress0/expect/scrub.08.sy
regress0/expect/scrub.09.p
regress0/flet.smtv1.smt2
regress0/fmf/array_card.smt2
regress0/fmf/Arrow_Order-smtlib.778341.smtv1.smt2
regress0/fmf/bounded_sets.smt2
- regress0/fmf/bug-041417-set-options.cvc
+ regress0/fmf/bug-041417-set-options.cvc.smt2
regress0/fmf/bug782.smt2
regress0/fmf/cruanes-no-minimal-unk.smt2
regress0/fmf/fc-simple.smt2
regress0/fmf/krs-sat.smt2
regress0/fmf/no-minimal-sat.smt2
regress0/fmf/QEpres-uf.855035.smtv1.smt2
- regress0/fmf/quant_real_univ.cvc
+ regress0/fmf/quant_real_univ.cvc.smt2
regress0/fmf/sat-logic.smt2
regress0/fmf/sc_bad_model_1221.smt2
regress0/fmf/sort-infer-typed-082718.smt2
regress0/ite_arith.smt2
regress0/ite_real_int_type.smtv1.smt2
regress0/ite_real_valid.smtv1.smt2
- regress0/ite.cvc
+ regress0/ite.cvc.smt2
regress0/ite.smt2
regress0/ite2.smt2
regress0/ite3.smt2
regress0/lemmas/fs_not_sc_seen.induction.smtv1.smt2
regress0/lemmas/mode_cntrl.induction.smtv1.smt2
regress0/lemmas/sc_init_frame_gap.induction.smtv1.smt2
- regress0/let.cvc
+ regress0/let.cvc.smt2
regress0/let.smtv1.smt2
regress0/let2.smtv1.smt2
- regress0/logops.01.cvc
- regress0/logops.02.cvc
- regress0/logops.03.cvc
- regress0/logops.04.cvc
- regress0/logops.05.cvc
+ regress0/logops.01.cvc.smt2
+ regress0/logops.02.cvc.smt2
+ regress0/logops.03.cvc.smt2
+ regress0/logops.04.cvc.smt2
+ regress0/logops.05.cvc.smt2
regress0/model-core.smt2
regress0/models-print-1.smt2
regress0/models-print-2.smt2
regress0/parser/strings20.smt2
regress0/parser/strings25.smt2
regress0/parser/to_fp.smt2
- regress0/precedence/and-not.cvc
- regress0/precedence/and-xor.cvc
- regress0/precedence/bool-cmp.cvc
- regress0/precedence/cmp-plus.cvc
- regress0/precedence/eq-fun.cvc
- regress0/precedence/iff-assoc.cvc
- regress0/precedence/iff-implies.cvc
- regress0/precedence/implies-assoc.cvc
- regress0/precedence/implies-iff.cvc
- regress0/precedence/implies-or.cvc
- regress0/precedence/not-and.cvc
- regress0/precedence/not-eq.cvc
- regress0/precedence/or-implies.cvc
- regress0/precedence/or-xor.cvc
- regress0/precedence/plus-mult.cvc
- regress0/precedence/xor-and.cvc
- regress0/precedence/xor-assoc.cvc
- regress0/precedence/xor-or.cvc
+ regress0/precedence/and-not.cvc.smt2
+ regress0/precedence/and-xor.cvc.smt2
+ regress0/precedence/bool-cmp.cvc.smt2
+ regress0/precedence/cmp-plus.cvc.smt2
+ regress0/precedence/eq-fun.cvc.smt2
+ regress0/precedence/iff-assoc.cvc.smt2
+ regress0/precedence/iff-implies.cvc.smt2
+ regress0/precedence/implies-assoc.cvc.smt2
+ regress0/precedence/implies-iff.cvc.smt2
+ regress0/precedence/implies-or.cvc.smt2
+ regress0/precedence/not-and.cvc.smt2
+ regress0/precedence/not-eq.cvc.smt2
+ regress0/precedence/or-implies.cvc.smt2
+ regress0/precedence/or-xor.cvc.smt2
+ regress0/precedence/plus-mult.cvc.smt2
+ regress0/precedence/xor-and.cvc.smt2
+ regress0/precedence/xor-assoc.cvc.smt2
+ regress0/precedence/xor-or.cvc.smt2
regress0/preprocess/circuit-prop.smt2
regress0/preprocess/issue5729-rewritten-assertions.smt2
regress0/preprocess/issue5943-non-clausal-simp.smt2
regress0/preprocess/issue6754-tpp.smt2
- regress0/preprocess/preprocess_00.cvc
- regress0/preprocess/preprocess_01.cvc
- regress0/preprocess/preprocess_02.cvc
- regress0/preprocess/preprocess_03.cvc
- regress0/preprocess/preprocess_04.cvc
- regress0/preprocess/preprocess_05.cvc
- regress0/preprocess/preprocess_06.cvc
- regress0/preprocess/preprocess_07.cvc
- regress0/preprocess/preprocess_08.cvc
- regress0/preprocess/preprocess_09.cvc
- regress0/preprocess/preprocess_10.cvc
- regress0/preprocess/preprocess_11.cvc
- regress0/preprocess/preprocess_12.cvc
- regress0/preprocess/preprocess_13.cvc
- regress0/preprocess/preprocess_14.cvc
- regress0/preprocess/preprocess_15.cvc
+ regress0/preprocess/preprocess_00.cvc.smt2
+ regress0/preprocess/preprocess_01.cvc.smt2
+ regress0/preprocess/preprocess_02.cvc.smt2
+ regress0/preprocess/preprocess_03.cvc.smt2
+ regress0/preprocess/preprocess_04.cvc.smt2
+ regress0/preprocess/preprocess_05.cvc.smt2
+ regress0/preprocess/preprocess_06.cvc.smt2
+ regress0/preprocess/preprocess_07.cvc.smt2
+ regress0/preprocess/preprocess_08.cvc.smt2
+ regress0/preprocess/preprocess_09.cvc.smt2
+ regress0/preprocess/preprocess_10.cvc.smt2
+ regress0/preprocess/preprocess_11.cvc.smt2
+ regress0/preprocess/preprocess_12.cvc.smt2
+ regress0/preprocess/preprocess_13.cvc.smt2
+ regress0/preprocess/preprocess_14.cvc.smt2
+ regress0/preprocess/preprocess_15.cvc.smt2
regress0/print_define_fun_internal.smt2
- regress0/print_lambda.cvc
- regress0/print_model.cvc
+ regress0/print_lambda.cvc.smt2
+ regress0/print_model.cvc.smt2
regress0/printer/bv_consts_bin.smt2
regress0/printer/bv_consts_dec.smt2
regress0/printer/empty_sort.smt2
regress0/printer/empty_symbol_name.smt2
regress0/printer/let_shadowing.smt2
regress0/printer/symbol_starting_w_digit.smt2
- regress0/printer/tuples_and_records.cvc
+ regress0/printer/tuples_and_records.cvc.smt2
regress0/proofs/cyclic-ucp.smt2
regress0/proofs/issue277-circuit-propagator.smt2
regress0/proofs/open-pf-datatypes.smt2
regress0/push-pop/boolean/fuzz_49.smt2
regress0/push-pop/boolean/fuzz_50.smt2
regress0/push-pop/bug1990.smt2
- regress0/push-pop/bug233.cvc
+ regress0/push-pop/bug233.cvc.smt2
regress0/push-pop/bug654-dd.smt2
regress0/push-pop/bug691.smt2
regress0/push-pop/bug821-check_sat_assuming.smt2
regress0/push-pop/bug821.smt2
regress0/push-pop/inc-define.smt2
regress0/push-pop/inc-double-u.smt2
- regress0/push-pop/incremental-subst-bug.cvc
+ regress0/push-pop/incremental-subst-bug.cvc.smt2
regress0/push-pop/issue1986.smt2
regress0/push-pop/issue2137.min.smt2
regress0/push-pop/quant-fun-proc-unfd.smt2
regress0/push-pop/real-as-int-incremental.smt2
regress0/push-pop/simple_unsat_cores.smt2
- regress0/push-pop/test.00.cvc
- regress0/push-pop/test.01.cvc
+ regress0/push-pop/test.00.cvc.smt2
+ regress0/push-pop/test.01.cvc.smt2
regress0/push-pop/tiny_bug.smt2
- regress0/push-pop/units.cvc
+ regress0/push-pop/units.cvc.smt2
regress0/quantifiers/agg-rew-test-cf.smt2
regress0/quantifiers/agg-rew-test.smt2
regress0/quantifiers/ari056.smt2
regress0/quantifiers/bug749-rounding.smt2
regress0/quantifiers/cbqi-lia-dt-simp.smt2
regress0/quantifiers/cegqi-needs-justify.smt2
- regress0/quantifiers/cegqi-nl-simp.cvc
+ regress0/quantifiers/cegqi-nl-simp.cvc.smt2
regress0/quantifiers/cegqi-nl-sq.smt2
regress0/quantifiers/cegqi-par-dt-simple.smt2
regress0/quantifiers/clock-10.smt2
regress0/quantifiers/simp-typ-test.smt2
regress0/quantifiers/ufnia-fv-delta.smt2
regress0/rec-fun-const-parse-bug.smt2
- regress0/rels/addr_book_0.cvc
- regress0/rels/atom_univ2.cvc
- regress0/rels/card_transpose.cvc
- regress0/rels/iden_0.cvc
- regress0/rels/iden_1.cvc
- regress0/rels/join-eq-u-sat.cvc
- regress0/rels/join-eq-u.cvc
- regress0/rels/joinImg_0.cvc
- regress0/rels/oneLoc_no_quant-int_0_1.cvc
- regress0/rels/rel_1tup_0.cvc
- regress0/rels/rel_complex_0.cvc
- regress0/rels/rel_complex_1.cvc
- regress0/rels/rel_conflict_0.cvc
- regress0/rels/rel_join_0_1.cvc
- regress0/rels/rel_join_0.cvc
- regress0/rels/rel_join_1_1.cvc
- regress0/rels/rel_join_1.cvc
- regress0/rels/rel_join_2_1.cvc
- regress0/rels/rel_join_2.cvc
- regress0/rels/rel_join_3_1.cvc
- regress0/rels/rel_join_3.cvc
- regress0/rels/rel_join_4.cvc
- regress0/rels/rel_join_5.cvc
- regress0/rels/rel_join_6.cvc
- regress0/rels/rel_join_7.cvc
- regress0/rels/rel_product_0_1.cvc
- regress0/rels/rel_product_0.cvc
- regress0/rels/rel_product_1_1.cvc
- regress0/rels/rel_product_1.cvc
- regress0/rels/rel_symbolic_1_1.cvc
- regress0/rels/rel_symbolic_1.cvc
- regress0/rels/rel_symbolic_2_1.cvc
- regress0/rels/rel_symbolic_3_1.cvc
- regress0/rels/rel_tc_11.cvc
- regress0/rels/rel_tc_2_1.cvc
- regress0/rels/rel_tc_3_1.cvc
- regress0/rels/rel_tc_3.cvc
- regress0/rels/rel_tc_7.cvc
- regress0/rels/rel_tc_8.cvc
- regress0/rels/rel_tp_3_1.cvc
- regress0/rels/rel_tp_join_0.cvc
- regress0/rels/rel_tp_join_1.cvc
- regress0/rels/rel_tp_join_2.cvc
- regress0/rels/rel_tp_join_3.cvc
- regress0/rels/rel_tp_join_eq_0.cvc
- regress0/rels/rel_tp_join_int_0.cvc
- regress0/rels/rel_tp_join_pro_0.cvc
- regress0/rels/rel_tp_join_var_0.cvc
- regress0/rels/rel_transpose_0.cvc
- regress0/rels/rel_transpose_1_1.cvc
- regress0/rels/rel_transpose_1.cvc
- regress0/rels/rel_transpose_3.cvc
- regress0/rels/rel_transpose_4.cvc
- regress0/rels/rel_transpose_5.cvc
- regress0/rels/rel_transpose_6.cvc
- regress0/rels/rel_transpose_7.cvc
+ regress0/rels/addr_book_0.cvc.smt2
+ regress0/rels/atom_univ2.cvc.smt2
+ regress0/rels/card_transpose.cvc.smt2
+ regress0/rels/iden_0.cvc.smt2
+ regress0/rels/iden_1.cvc.smt2
+ regress0/rels/join-eq-u-sat.cvc.smt2
+ regress0/rels/join-eq-u.cvc.smt2
+ regress0/rels/joinImg_0.cvc.smt2
+ regress0/rels/oneLoc_no_quant-int_0_1.cvc.smt2
+ regress0/rels/rel_1tup_0.cvc.smt2
+ regress0/rels/rel_complex_0.cvc.smt2
+ regress0/rels/rel_complex_1.cvc.smt2
+ regress0/rels/rel_conflict_0.cvc.smt2
+ regress0/rels/rel_join_0_1.cvc.smt2
+ regress0/rels/rel_join_0.cvc.smt2
+ regress0/rels/rel_join_1_1.cvc.smt2
+ regress0/rels/rel_join_1.cvc.smt2
+ regress0/rels/rel_join_2_1.cvc.smt2
+ regress0/rels/rel_join_2.cvc.smt2
+ regress0/rels/rel_join_3_1.cvc.smt2
+ regress0/rels/rel_join_3.cvc.smt2
+ regress0/rels/rel_join_4.cvc.smt2
+ regress0/rels/rel_join_5.cvc.smt2
+ regress0/rels/rel_join_6.cvc.smt2
+ regress0/rels/rel_join_7.cvc.smt2
+ regress0/rels/rel_product_0_1.cvc.smt2
+ regress0/rels/rel_product_0.cvc.smt2
+ regress0/rels/rel_product_1_1.cvc.smt2
+ regress0/rels/rel_product_1.cvc.smt2
+ regress0/rels/rel_symbolic_1_1.cvc.smt2
+ regress0/rels/rel_symbolic_1.cvc.smt2
+ regress0/rels/rel_symbolic_2_1.cvc.smt2
+ regress0/rels/rel_symbolic_3_1.cvc.smt2
+ regress0/rels/rel_tc_11.cvc.smt2
+ regress0/rels/rel_tc_2_1.cvc.smt2
+ regress0/rels/rel_tc_3_1.cvc.smt2
+ regress0/rels/rel_tc_3.cvc.smt2
+ regress0/rels/rel_tc_7.cvc.smt2
+ regress0/rels/rel_tc_8.cvc.smt2
+ regress0/rels/rel_tp_3_1.cvc.smt2
+ regress0/rels/rel_tp_join_0.cvc.smt2
+ regress0/rels/rel_tp_join_1.cvc.smt2
+ regress0/rels/rel_tp_join_2.cvc.smt2
+ regress0/rels/rel_tp_join_3.cvc.smt2
+ regress0/rels/rel_tp_join_eq_0.cvc.smt2
+ regress0/rels/rel_tp_join_int_0.cvc.smt2
+ regress0/rels/rel_tp_join_pro_0.cvc.smt2
+ regress0/rels/rel_tp_join_var_0.cvc.smt2
+ regress0/rels/rel_transpose_0.cvc.smt2
+ regress0/rels/rel_transpose_1_1.cvc.smt2
+ regress0/rels/rel_transpose_1.cvc.smt2
+ regress0/rels/rel_transpose_3.cvc.smt2
+ regress0/rels/rel_transpose_4.cvc.smt2
+ regress0/rels/rel_transpose_5.cvc.smt2
+ regress0/rels/rel_transpose_6.cvc.smt2
+ regress0/rels/rel_transpose_7.cvc.smt2
regress0/rels/relations-ops.smt2
- regress0/rels/rels-sharing-simp.cvc
+ regress0/rels/rels-sharing-simp.cvc.smt2
regress0/sep/dispose-1.smt2
regress0/sep/dup-nemp.smt2
regress0/sep/issue3720-check-model.smt2
regress0/sets/abt-te-exh.smt2
regress0/sets/abt-te-exh2.smt2
regress0/sets/card-2.smt2
- regress0/sets/card-3sets.cvc
+ regress0/sets/card-3sets.cvc.smt2
regress0/sets/card.smt2
regress0/sets/card3-ground.smt2
regress0/sets/comp-qf-error.smt2
- regress0/sets/complement.cvc
- regress0/sets/complement2.cvc
- regress0/sets/complement3.cvc
- regress0/sets/cvc-sample.cvc
+ regress0/sets/complement.cvc.smt2
+ regress0/sets/complement2.cvc.smt2
+ regress0/sets/complement3.cvc.smt2
+ regress0/sets/cvc-sample.cvc.smt2
regress0/sets/dt-simp-mem.smt2
regress0/sets/emptyset.smt2
regress0/sets/eqtest.smt2
regress0/simple-rdl.smtv1.smt2
regress0/simple-uf.smt2
regress0/simple-uf.smtv1.smt2
- regress0/simple.cvc
+ regress0/simple.cvc.smt2
regress0/simple.smtv1.smt2
regress0/simple2.smtv1.smt2
regress0/simplification_bug.smtv1.smt2
regress0/simplification_bug2.smtv1.smt2
- regress0/smallcnf.cvc
+ regress0/smallcnf.cvc.smt2
regress0/smt2output.smt2
regress0/smtlib/define-fun-rec-logic.smt2
regress0/smtlib/get-unsat-assumptions.smt2
regress0/strings/ncontrib-rewrites.smt2
regress0/strings/norn-31.smt2
regress0/strings/norn-simp-rew.smt2
- regress0/strings/parser-syms.cvc
+ regress0/strings/parser-syms.cvc.smt2
regress0/strings/re_diff.smt2
regress0/strings/re-in-rewrite.smt2
regress0/strings/re-syntax.smt2
regress0/strings/re.all.smt2
regress0/strings/regexp_inclusion_reduction.smt2
regress0/strings/regexp_inclusion.smt2
- regress0/strings/regexp-native-simple.cvc
+ regress0/strings/regexp-native-simple.cvc.smt2
regress0/strings/repl-rewrites2.smt2
regress0/strings/replace-const.smt2
regress0/strings/replaceall-eval.smt2
regress0/strings/str003.smt2
regress0/strings/str004.smt2
regress0/strings/str005.smt2
- regress0/strings/strings-charat.cvc
- regress0/strings/strings-native-simple.cvc
+ regress0/strings/strings-charat.cvc.smt2
+ regress0/strings/strings-native-simple.cvc.smt2
regress0/strings/strip-endpoint-itos.smt2
regress0/strings/substr-rewrites.smt2
regress0/strings/tolower-rrs.smt2
regress0/sygus/uminus_one.sy
regress0/sygus/univ_3-long-repeat-conflict.sy
regress0/symmetric.smtv1.smt2
- regress0/test11.cvc
- regress0/test9.cvc
+ regress0/test11.cvc.smt2
+ regress0/test9.cvc.smt2
regress0/tptp/ARI086=1.p
regress0/tptp/DAT001=1.p
regress0/tptp/is_rat_simple.p
regress0/uf/NEQ016_size5_reduced2b.smtv1.smt2
regress0/uf/pred.smtv1.smt2
regress0/uf/SEQ032_size2.smtv1.smt2
- regress0/uf/simple.01.cvc
- regress0/uf/simple.02.cvc
- regress0/uf/simple.03.cvc
- regress0/uf/simple.04.cvc
- regress0/uf20-03.cvc
+ regress0/uf/simple.01.cvc.smt2
+ regress0/uf/simple.02.cvc.smt2
+ regress0/uf/simple.03.cvc.smt2
+ regress0/uf/simple.04.cvc.smt2
+ regress0/uf20-03.cvc.smt2
regress0/uflia/check01.smt2
regress0/uflia/check02.smt2
regress0/uflia/check03.smt2
regress0/uflia/xs-09-16-3-4-1-5.delta03.smtv1.smt2
regress0/uflia/xs-09-16-3-4-1-5.delta04.smtv1.smt2
regress0/uflia/xs-09-16-3-4-1-5.delta05.smtv1.smt2
- regress0/uflra/bug293.cvc
+ regress0/uflra/bug293.cvc.smt2
regress0/uflra/bug449.smtv1.smt2
regress0/uflra/constants0.smtv1.smt2
regress0/uflra/fuzz01.smtv1.smt2
regress0/uflra/pb_real_10_0200_10_26.smtv1.smt2
regress0/uflra/pb_real_10_0200_10_27.smtv1.smt2
regress0/uflra/pb_real_10_0200_10_29.smtv1.smt2
- regress0/uflra/simple.01.cvc
- regress0/uflra/simple.02.cvc
- regress0/uflra/simple.03.cvc
- regress0/uflra/simple.04.cvc
+ regress0/uflra/simple.01.cvc.smt2
+ regress0/uflra/simple.02.cvc.smt2
+ regress0/uflra/simple.03.cvc.smt2
+ regress0/uflra/simple.04.cvc.smt2
regress0/unconstrained/4481.smt2
regress0/unconstrained/arith.smt2
regress0/unconstrained/arith2.smt2
regress0/use_approx/issue4714_approx.smt2
regress0/use_approx/siegel-nl-bases_approx.smt2
regress0/use_approx/specsharp-WindowsCard.15.RTE.Terminate_System.Int32_approx.smt2
- regress0/wiki.01.cvc
- regress0/wiki.02.cvc
- regress0/wiki.03.cvc
- regress0/wiki.04.cvc
- regress0/wiki.05.cvc
- regress0/wiki.06.cvc
- regress0/wiki.07.cvc
- regress0/wiki.08.cvc
- regress0/wiki.09.cvc
- regress0/wiki.10.cvc
- regress0/wiki.11.cvc
- regress0/wiki.12.cvc
- regress0/wiki.13.cvc
- regress0/wiki.14.cvc
- regress0/wiki.15.cvc
- regress0/wiki.16.cvc
- regress0/wiki.17.cvc
- regress0/wiki.18.cvc
- regress0/wiki.19.cvc
- regress0/wiki.20.cvc
- regress0/wiki.21.cvc
+ regress0/wiki.01.cvc.smt2
+ regress0/wiki.02.cvc.smt2
+ regress0/wiki.03.cvc.smt2
+ regress0/wiki.04.cvc.smt2
+ regress0/wiki.05.cvc.smt2
+ regress0/wiki.06.cvc.smt2
+ regress0/wiki.07.cvc.smt2
+ regress0/wiki.08.cvc.smt2
+ regress0/wiki.09.cvc.smt2
+ regress0/wiki.10.cvc.smt2
+ regress0/wiki.11.cvc.smt2
+ regress0/wiki.12.cvc.smt2
+ regress0/wiki.13.cvc.smt2
+ regress0/wiki.14.cvc.smt2
+ regress0/wiki.15.cvc.smt2
+ regress0/wiki.16.cvc.smt2
+ regress0/wiki.17.cvc.smt2
+ regress0/wiki.18.cvc.smt2
+ regress0/wiki.19.cvc.smt2
+ regress0/wiki.20.cvc.smt2
+ regress0/wiki.21.cvc.smt2
)
#-----------------------------------------------------------------------------#
set(regress_1_tests
regress1/abduct-dt.smt2
regress1/arith/arith-brab-test.smt2
- regress1/arith/arith-int-004.cvc
- regress1/arith/arith-int-011.cvc
- regress1/arith/arith-int-012.cvc
- regress1/arith/arith-int-013.cvc
- regress1/arith/arith-int-022.cvc
- regress1/arith/arith-int-024.cvc
- regress1/arith/arith-int-047.cvc
- regress1/arith/arith-int-048.cvc
- regress1/arith/arith-int-050.cvc
- regress1/arith/arith-int-084.cvc
- regress1/arith/arith-int-085.cvc
- regress1/arith/arith-int-097.cvc
+ regress1/arith/arith-int-004.cvc.smt2
+ regress1/arith/arith-int-011.cvc.smt2
+ regress1/arith/arith-int-012.cvc.smt2
+ regress1/arith/arith-int-013.cvc.smt2
+ regress1/arith/arith-int-022.cvc.smt2
+ regress1/arith/arith-int-024.cvc.smt2
+ regress1/arith/arith-int-047.cvc.smt2
+ regress1/arith/arith-int-048.cvc.smt2
+ regress1/arith/arith-int-050.cvc.smt2
+ regress1/arith/arith-int-084.cvc.smt2
+ regress1/arith/arith-int-085.cvc.smt2
+ regress1/arith/arith-int-097.cvc.smt2
regress1/arith/bug547.1.smt2
regress1/arith/bug716.0.smt2
- regress1/arith/bug716.1.cvc
- regress1/arith/bug716.2.cvc
+ regress1/arith/bug716.1.cvc.smt2
+ regress1/arith/bug716.2.cvc.smt2
regress1/arith/div.03.smt2
regress1/arith/div.06.smt2
regress1/arith/div.08.smt2
regress1/arith/issue4985-model-success.smt2
regress1/arith/issue4985b-model-success.smt2
regress1/arith/issue789.smt2
- regress1/arith/miplib3.cvc
+ regress1/arith/miplib3.cvc.smt2
regress1/arith/mod.02.smt2
regress1/arith/mod.03.smt2
regress1/arith/mult.02.smt2
regress1/aufbv/fuzz10.smtv1.smt2
regress1/auflia/bug330.smt2
regress1/boolean-terms-kernel2.smt2
- regress1/boolean.cvc
+ regress1/boolean.cvc.smt2
regress1/bug296.smt2
- regress1/bug425.cvc
+ regress1/bug425.cvc.smt2
regress1/bug507.smt2
regress1/bug512.smt2
regress1/bug516.smt2
regress1/bv/unsound1.smt2
regress1/bvdiv2.smt2
regress1/cee-bug0909-dd-scope.smt2
- regress1/constarr3.cvc
+ regress1/constarr3.cvc.smt2
regress1/constarr3.smt2
regress1/cores/issue5604.smt2
regress1/datatypes/acyclicity-sr-ground096.smt2
regress1/datatypes/cee-prs-small-dd2.smt2
regress1/datatypes/dt-color-2.6.smt2
regress1/datatypes/dt-param-card4-unsat.smt2
- regress1/datatypes/error.cvc
regress1/datatypes/issue3266-small.smt2
regress1/datatypes/issue-variant-dt-zero.smt2
regress1/datatypes/manos-model.smt2
regress1/decision/wishue149-2.smt2
regress1/decision/wishue149-3.smt2
regress1/decision/wishue160.smt2
- regress1/error.cvc
regress1/errorcrash.smt2
regress1/fp/fp_to_real.smt2
regress1/fp/rti_3_5_bug_report.smt2
regress1/fmf/agree466.smt2
regress1/fmf/agree467.smt2
regress1/fmf/alg202+1.smt2
- regress1/fmf/am-bad-model.cvc
+ regress1/fmf/am-bad-model.cvc.smt2
regress1/fmf/bound-int-alt.smt2
regress1/fmf/bug0909.smt2
regress1/fmf/bug651.smt2
regress1/fmf/jasmin-cdt-crash.smt2
regress1/fmf/loopy_coda.smt2
regress1/fmf/lst-no-self-rev-exp.smt2
- regress1/fmf/memory_model-R_cpp-dd.cvc
+ regress1/fmf/memory_model-R_cpp-dd.cvc.smt2
regress1/fmf/nlp042+1.smt2
regress1/fmf/nun-0208-to.smt2
regress1/fmf/pow2-bool.smt2
regress1/ho/NUM925^1.p
regress1/ho/soundness_fmf_SYO362^5-delta.p
regress1/ho/store-ax-min.p
- regress1/hole6.cvc
+ regress1/hole6.cvc.smt2
regress1/ite5.smt2
regress1/issue3970-nl-ext-purify.smt2
regress1/issue3990-sort-inference.smt2
regress1/nl/tan-rewrite2.smt2
regress1/nl/zero-subset.smt2
regress1/non-fatal-errors.smt2
- regress1/parsing_ringer.cvc
regress1/proof00.smt2
regress1/proofs/issue6625-unsat-core-proofs.smt2
regress1/proofs/macro-res-exp-crowding-lit-inside-unit.smt2
regress1/quantifiers/cee-npnt-dd.smt2
regress1/quantifiers/cee-os-delta.smt2
regress1/quantifiers/cdt-0208-to.smt2
- regress1/quantifiers/const.cvc
- regress1/quantifiers/constfunc.cvc
+ regress1/quantifiers/const.cvc.smt2
+ regress1/quantifiers/constfunc.cvc.smt2
regress1/quantifiers/ddatv-delta2.smt2
regress1/quantifiers/dt-tc-opt-small.smt2
regress1/quantifiers/dump-inst-i.smt2
regress1/quantifiers/min-ppgt-em-incomplete.smt2
regress1/quantifiers/min-ppgt-em-incomplete2.smt2
regress1/quantifiers/mix-coeff.smt2
- regress1/quantifiers/mutualrec2.cvc
+ regress1/quantifiers/mutualrec2.cvc.smt2
regress1/quantifiers/nested9_true-unreach-call.i_575.smt2
regress1/quantifiers/nl-pow-trick.smt2
regress1/quantifiers/nra-interleave-inst.smt2
regress1/quantifiers/quant-wf-int-ind.smt2
regress1/quantifiers/quaternion_ds1_symm_0428.fof.smt2
regress1/quantifiers/qs-has-term.smt2
- regress1/quantifiers/recfact.cvc
+ regress1/quantifiers/recfact.cvc.smt2
regress1/quantifiers/repair-const-nterm.smt2
regress1/quantifiers/rew-to-0211-dd.smt2
regress1/quantifiers/ricart-agrawala6.smt2
- regress1/quantifiers/set-choice-koikonomou.cvc
+ regress1/quantifiers/set-choice-koikonomou.cvc.smt2
regress1/quantifiers/set8.smt2
regress1/quantifiers/seu169+1.smt2
regress1/quantifiers/seq-solved-enum.smt2
regress1/quantifiers/var-eq-trigger.smt2
regress1/quantifiers/var-eq-trigger-simple.smt2
regress1/quantifiers/z3.620661-no-fv-trigger.smt2
- regress1/rels/addr_book_1.cvc
- regress1/rels/addr_book_1_1.cvc
- regress1/rels/bv1-unit.cvc
- regress1/rels/bv1-unitb.cvc
- regress1/rels/bv1.cvc
- regress1/rels/bv1p-sat.cvc
- regress1/rels/bv1p.cvc
- regress1/rels/bv2.cvc
- regress1/rels/iden_1_1.cvc
- regress1/rels/join-eq-structure-and.cvc
- regress1/rels/join-eq-structure.cvc
- regress1/rels/joinImg_0_1.cvc
- regress1/rels/joinImg_0_2.cvc
- regress1/rels/joinImg_1.cvc
- regress1/rels/joinImg_1_1.cvc
- regress1/rels/joinImg_2.cvc
- regress1/rels/joinImg_2_1.cvc
- regress1/rels/prod-mod-eq.cvc
- regress1/rels/prod-mod-eq2.cvc
- regress1/rels/rel_complex_3.cvc
- regress1/rels/rel_complex_4.cvc
- regress1/rels/rel_complex_5.cvc
- regress1/rels/rel_mix_0_1.cvc
- regress1/rels/rel_pressure_0.cvc
- regress1/rels/rel_tc_10_1.cvc
- regress1/rels/rel_tc_4.cvc
- regress1/rels/rel_tc_4_1.cvc
- regress1/rels/rel_tc_5_1.cvc
- regress1/rels/rel_tc_6.cvc
- regress1/rels/rel_tc_9_1.cvc
- regress1/rels/rel_tp_2.cvc
- regress1/rels/rel_tp_join_2_1.cvc
- regress1/rels/set-strat.cvc
- regress1/rels/strat.cvc
+ regress1/rels/addr_book_1.cvc.smt2
+ regress1/rels/addr_book_1_1.cvc.smt2
+ regress1/rels/bv1-unit.cvc.smt2
+ regress1/rels/bv1-unitb.cvc.smt2
+ regress1/rels/bv1.cvc.smt2
+ regress1/rels/bv1p-sat.cvc.smt2
+ regress1/rels/bv1p.cvc.smt2
+ regress1/rels/bv2.cvc.smt2
+ regress1/rels/iden_1_1.cvc.smt2
+ regress1/rels/join-eq-structure-and.cvc.smt2
+ regress1/rels/join-eq-structure.cvc.smt2
+ regress1/rels/joinImg_0_1.cvc.smt2
+ regress1/rels/joinImg_0_2.cvc.smt2
+ regress1/rels/joinImg_1.cvc.smt2
+ regress1/rels/joinImg_1_1.cvc.smt2
+ regress1/rels/joinImg_2.cvc.smt2
+ regress1/rels/joinImg_2_1.cvc.smt2
+ regress1/rels/prod-mod-eq.cvc.smt2
+ regress1/rels/prod-mod-eq2.cvc.smt2
+ regress1/rels/rel_complex_3.cvc.smt2
+ regress1/rels/rel_complex_4.cvc.smt2
+ regress1/rels/rel_complex_5.cvc.smt2
+ regress1/rels/rel_mix_0_1.cvc.smt2
+ regress1/rels/rel_pressure_0.cvc.smt2
+ regress1/rels/rel_tc_10_1.cvc.smt2
+ regress1/rels/rel_tc_4.cvc.smt2
+ regress1/rels/rel_tc_4_1.cvc.smt2
+ regress1/rels/rel_tc_5_1.cvc.smt2
+ regress1/rels/rel_tc_6.cvc.smt2
+ regress1/rels/rel_tc_9_1.cvc.smt2
+ regress1/rels/rel_tp_2.cvc.smt2
+ regress1/rels/rel_tp_join_2_1.cvc.smt2
+ regress1/rels/set-strat.cvc.smt2
+ regress1/rels/strat.cvc.smt2
regress1/rr-verify/bool-crci.sy
regress1/rr-verify/bv-term-32.sy
regress1/rr-verify/bv-term.sy
regress1/sep/wand-simp-sat.smt2
regress1/sep/wand-simp-sat2.smt2
regress1/sep/wand-simp-unsat.smt2
- regress1/sets/choose.cvc
+ regress1/sets/choose.cvc.smt2
regress1/sets/choose1.smt2
regress1/sets/choose2.smt2
regress1/sets/choose3.smt2
regress1/sets/UniqueZipper.hs.1030minimized2.cvc4.smt2
regress1/sets/UniqueZipper.hs.fqout.cvc4.10.smt2
regress1/sets/UniqueZipper.hs.fqout.cvc4.1832.smt2
- regress1/sets/arjun-set-univ.cvc
+ regress1/sets/arjun-set-univ.cvc.smt2
regress1/sets/card-3.smt2
regress1/sets/card-4.smt2
regress1/sets/card-5.smt2
regress1/sets/lemmabug-ListElts317minimized.smt2
regress1/sets/remove_check_free_31_6.smt2
regress1/sets/sets-disequal.smt2
- regress1/sets/sets-tuple-poly.cvc
+ regress1/sets/sets-tuple-poly.cvc.smt2
regress1/sets/sets-uc-wrong.smt2
regress1/sets/set-comp-sat.smt2
regress1/sets/sharingbug.smt2
regress1/sym/sym5.smt2
regress1/sym/sym6.smt2
regress1/sym/sym7-uf.smt2
- regress1/test12.cvc
- regress1/trim.cvc
+ regress1/test12.cvc.smt2
+ regress1/trim.cvc.smt2
regress1/uf2.smt2
regress1/uflia/DRAGON_11_e1_2450.ec.minimized.smt2
regress1/uflia/FIREFLY_3_e2_2236_e7_3681.ec.core.smt2
regress2/DTP_k2_n35_c175_s15.smt2
regress2/FIREFLY_3_e2_2236_e7_3681.ec.minimized.smt2
regress2/GEO123+1.minimized.smt2
- regress2/arith/arith-int-098.cvc
+ regress2/arith/arith-int-098.cvc.smt2
regress2/arith/pursuit-safety-11.smtv1.smt2
regress2/arith/pursuit-safety-12.smtv1.smt2
regress2/arith/real2int-test.smt2
regress2/ho/fta0409.smt2
regress2/ho/involved_parsing_ALG248^3.p
regress2/ho/partial_app_interpreted_SWW474^2.p
- regress2/hole7.cvc
- regress2/hole8.cvc
+ regress2/hole7.cvc.smt2
+ regress2/hole8.cvc.smt2
regress2/instance_1444.smtv1.smt2
regress2/issue3687-check-models.smt2
regress2/issue4707-bv-to-bool-large.smt2
regress2/sygus/sumn_recur_synth.sy
regress2/sygus/strings-no-syntax-len.sy
regress2/sygus/three.sy
- regress2/typed_v1l50016-simp.cvc
+ regress2/typed_v1l50016-simp.cvc.smt2
regress2/uflia-error0.smt2
regress2/xs-09-16-3-4-1-5.smtv1.smt2
)
regress3/friedman_n4_i5.smtv1.smt2
regress3/friedman_n6_i4.smtv1.smt2
regress3/ho/SYO362^5.p
- regress3/hole9.cvc
- regress3/hole10.cvc
+ regress3/hole9.cvc.smt2
+ regress3/hole10.cvc.smt2
regress3/incorrect1.smtv1.smt2
regress3/interpol2.smt2
regress3/inv_gen_n_c11.sy
# timeout after changes to equality rewriting policy in strings
regress0/strings/quad-028-2-2-unsat.smt2
# FIXME #1649
- regress0/datatypes/datatype-dump.cvc
+ regress0/datatypes/datatype-dump.cvc.smt2
# no longer support overloaded symbols across multiple parametric datatypes
regress0/datatypes/repeated-selectors-2769.smt2
# need finite model finding command line in tptp regression
regress1/bug472.smt2
regress1/datatypes/non-simple-rec-set.smt2
# TODO: fix models (projects #276)
- regress1/fmf/ko-bound-set.cvc
+ regress1/fmf/ko-bound-set.cvc.smt2
# results in an assertion failure (see issue #1650).
regress1/ho/hoa0102.smt2
# after disallowing solving for terms with quantifiers
regress1/quantifiers/subtype-param-unk.smt2
regress1/quantifiers/subtype-param.smt2
###
- regress1/rels/garbage_collect.cvc
+ regress1/rels/garbage_collect.cvc.smt2
regress1/sets/setofsets-disequal.smt2
regress1/sets/finite-type/sets-card-neg-mem-union-2.smt2
# no longer support quant-epr + sep
+++ /dev/null
-% EXPECT: entailed
-x : REAL;
-y : REAL;
-
-QUERY (x * y ) = (y * x);
--- /dev/null
+; EXPECT: unsat
+(set-logic ALL)
+(set-option :incremental false)
+(declare-fun x () Real)
+(declare-fun y () Real)
+(check-sat-assuming ( (not (= (* x y) (* y x))) ))
+++ /dev/null
-% EXPECT: entailed
-x : REAL;
-y : REAL;
-z : REAL;
-
-QUERY x*(y*z) = (x*y)*z;
--- /dev/null
+; EXPECT: unsat
+(set-logic ALL)
+(set-option :incremental false)
+(declare-fun x () Real)
+(declare-fun y () Real)
+(declare-fun z () Real)
+(check-sat-assuming ( (not (= (* x (* y z)) (* (* x y) z))) ))
+++ /dev/null
-% EXPECT: entailed
-x : REAL;
-y : REAL;
-
-QUERY (x + y)*(x + y) = x*x + 2*x*y + y*y;
--- /dev/null
+; EXPECT: unsat
+(set-logic ALL)
+(set-option :incremental false)
+(declare-fun x () Real)
+(declare-fun y () Real)
+(check-sat-assuming ( (not (let ((_let_1 (+ x y))) (= (* _let_1 _let_1) (+ (+ (* x x) (* (* 2 x) y)) (* y y))))) ))
+++ /dev/null
-% EXPECT: entailed
-a, b : REAL;
-QUERY (a*b)^5 = b*a*a*a*a*b*b*b*b*a;
--- /dev/null
+; EXPECT: unsat
+(set-logic ALL)
+(set-option :incremental false)
+(declare-fun a () Real)
+(declare-fun b () Real)
+(check-sat-assuming ( (not (= (^ (* a b) 5) (* (* (* (* (* (* (* (* (* b a) a) a) a) b) b) b) b) a))) ))
+++ /dev/null
-% EXPECT: not_entailed
-x0, x1, x2, x3 : INT;
-ASSERT (10 * x0) + (25 * x1) + (10 * x2) + (-28 * x3) <= 20 ;
-ASSERT (24 * x0) + (-9 * x1) + (-12 * x2) + (15 * x3) <= 3;
-QUERY FALSE;
--- /dev/null
+; EXPECT: sat
+(set-logic ALL)
+(set-option :incremental false)
+(declare-fun x0 () Int)
+(declare-fun x1 () Int)
+(declare-fun x2 () Int)
+(declare-fun x3 () Int)
+(assert (<= (+ (+ (+ (* 10 x0) (* 25 x1)) (* 10 x2)) (* (- 28) x3)) 20))
+(assert (<= (+ (+ (+ (* 24 x0) (* (- 9) x1)) (* (- 12) x2)) (* 15 x3)) 3))
+(check-sat)
+++ /dev/null
-% EXPECT: not_entailed
-x0, x1, x2, x3 : INT;
-ASSERT (-22 * x0) + (-3 * x1) + (9 * x2) + (-13 * x3) > -31 ;
-ASSERT (31 * x0) + (-17 * x1) + (28 * x2) + (-16 * x3) > -28;
-QUERY FALSE;
--- /dev/null
+; EXPECT: sat
+(set-logic ALL)
+(set-option :incremental false)
+(declare-fun x0 () Int)
+(declare-fun x1 () Int)
+(declare-fun x2 () Int)
+(declare-fun x3 () Int)
+(assert (> (+ (+ (+ (* (- 22) x0) (* (- 3) x1)) (* 9 x2)) (* (- 13) x3)) (- 31)))
+(assert (> (+ (+ (+ (* 31 x0) (* (- 17) x1)) (* 28 x2)) (* (- 16) x3)) (- 28)))
+(check-sat)
+++ /dev/null
-% EXPECT: not_entailed
-x0, x1, x2, x3 : INT;
-ASSERT (8 * x0) + (-27 * x1) + (29 * x2) + (-13 * x3) < 12;
-QUERY FALSE;
--- /dev/null
+; EXPECT: sat
+(set-logic ALL)
+(set-option :incremental false)
+(declare-fun x0 () Int)
+(declare-fun x1 () Int)
+(declare-fun x2 () Int)
+(declare-fun x3 () Int)
+(assert (< (+ (+ (+ (* 8 x0) (* (- 27) x1)) (* 29 x2)) (* (- 13) x3)) 12))
+(check-sat)
+++ /dev/null
-% EXPECT: not_entailed
-x0, x1, x2, x3 : INT;
-ASSERT (29 * x0) + (-19 * x1) + (23 * x2) + (15 * x3) <= 9;
-QUERY FALSE;
--- /dev/null
+; EXPECT: sat
+(set-logic ALL)
+(set-option :incremental false)
+(declare-fun x0 () Int)
+(declare-fun x1 () Int)
+(declare-fun x2 () Int)
+(declare-fun x3 () Int)
+(assert (<= (+ (+ (+ (* 29 x0) (* (- 19) x1)) (* 23 x2)) (* 15 x3)) 9))
+(check-sat)
+++ /dev/null
-% EXPECT: not_entailed
-x0, x1, x2, x3 : INT;
-ASSERT (-19 * x0) + (-29 * x1) + (2 * x2) + (26 * x3) >= 3;
-QUERY FALSE;
--- /dev/null
+; EXPECT: sat
+(set-logic ALL)
+(set-option :incremental false)
+(declare-fun x0 () Int)
+(declare-fun x1 () Int)
+(declare-fun x2 () Int)
+(declare-fun x3 () Int)
+(assert (>= (+ (+ (+ (* (- 19) x0) (* (- 29) x1)) (* 2 x2)) (* 26 x3)) 3))
+(check-sat)
+++ /dev/null
-% EXPECT: entailed
-x0, x1, x2, x3 : INT;
-ASSERT (-9 * x0) + (25 * x1) + (0 * x2) + (13 * x3) = 17 ;
-ASSERT (-6 * x0) + (32 * x1) + (2 * x2) + (-32 * x3) = -5 ;
-ASSERT (19 * x0) + (25 * x1) + (-32 * x2) + (-29 * x3) <= 14 ;
-ASSERT (6 * x0) + (22 * x1) + (-24 * x2) + (-6 * x3) < -21 ;
-ASSERT (-18 * x0) + (-21 * x1) + (-29 * x2) + (12 * x3) > 17 ;
-ASSERT (-25 * x0) + (-5 * x1) + (-22 * x2) + (-7 * x3) > -21;
-QUERY FALSE;
--- /dev/null
+; EXPECT: unsat
+(set-logic ALL)
+(set-option :incremental false)
+(declare-fun x0 () Int)
+(declare-fun x1 () Int)
+(declare-fun x2 () Int)
+(declare-fun x3 () Int)
+(assert (= (+ (+ (+ (* (- 9) x0) (* 25 x1)) (* 0 x2)) (* 13 x3)) 17))
+(assert (= (+ (+ (+ (* (- 6) x0) (* 32 x1)) (* 2 x2)) (* (- 32) x3)) (- 5)))
+(assert (<= (+ (+ (+ (* 19 x0) (* 25 x1)) (* (- 32) x2)) (* (- 29) x3)) 14))
+(assert (< (+ (+ (+ (* 6 x0) (* 22 x1)) (* (- 24) x2)) (* (- 6) x3)) (- 21)))
+(assert (> (+ (+ (+ (* (- 18) x0) (* (- 21) x1)) (* (- 29) x2)) (* 12 x3)) 17))
+(assert (> (+ (+ (+ (* (- 25) x0) (* (- 5) x1)) (* (- 22) x2)) (* (- 7) x3)) (- 21)))
+(check-sat)
+++ /dev/null
-% EXPECT: entailed
-x1: INT;
-x0: INT;
-QUERY NOT (((x0 * 6) + (x1 * 32)) = 1);
--- /dev/null
+; EXPECT: unsat
+(set-logic ALL)
+(set-option :incremental false)
+(declare-fun x1 () Int)
+(declare-fun x0 () Int)
+(check-sat-assuming ( (= (+ (* x0 6) (* x1 32)) 1) ))
+++ /dev/null
-% EXPECT: entailed
-x0, x1, x2, x3 : INT;
-ASSERT (6 * x0) + (2 * x1) + (22 * x2) + (-18 * x3) = -15 ;
-ASSERT (-8 * x0) + (-25 * x1) + (-25 * x2) + (7 * x3) > 10 ;
-ASSERT (8 * x0) + (25 * x1) + (-7 * x2) + (-29 * x3) < -25 ;
-ASSERT (27 * x0) + (17 * x1) + (-24 * x2) + (-5 * x3) <= 13 ;
-ASSERT (5 * x0) + (-3 * x1) + (0 * x2) + (4 * x3) < -26 ;
-ASSERT (25 * x0) + (7 * x1) + (27 * x2) + (-14 * x3) < 30 ;
-ASSERT (-22 * x0) + (-17 * x1) + (9 * x2) + (-20 * x3) < -19 ;
-ASSERT (31 * x0) + (-16 * x1) + (0 * x2) + (6 * x3) >= 18;
-QUERY FALSE;
--- /dev/null
+; EXPECT: unsat
+(set-logic ALL)
+(set-option :incremental false)
+(declare-fun x0 () Int)
+(declare-fun x1 () Int)
+(declare-fun x2 () Int)
+(declare-fun x3 () Int)
+(assert (= (+ (+ (+ (* 6 x0) (* 2 x1)) (* 22 x2)) (* (- 18) x3)) (- 15)))
+(assert (let ((_let_1 (- 25))) (> (+ (+ (+ (* (- 8) x0) (* _let_1 x1)) (* _let_1 x2)) (* 7 x3)) 10)))
+(assert (< (+ (+ (+ (* 8 x0) (* 25 x1)) (* (- 7) x2)) (* (- 29) x3)) (- 25)))
+(assert (<= (+ (+ (+ (* 27 x0) (* 17 x1)) (* (- 24) x2)) (* (- 5) x3)) 13))
+(assert (< (+ (+ (+ (* 5 x0) (* (- 3) x1)) (* 0 x2)) (* 4 x3)) (- 26)))
+(assert (< (+ (+ (+ (* 25 x0) (* 7 x1)) (* 27 x2)) (* (- 14) x3)) 30))
+(assert (< (+ (+ (+ (* (- 22) x0) (* (- 17) x1)) (* 9 x2)) (* (- 20) x3)) (- 19)))
+(assert (>= (+ (+ (+ (* 31 x0) (* (- 16) x1)) (* 0 x2)) (* 6 x3)) 18))
+(check-sat)
+++ /dev/null
-% EXPECT: entailed
-x: INT;
-P: INT -> BOOLEAN;
-
-ASSERT 1 <= x AND x <= 2;
-ASSERT P(1) AND P(2);
-QUERY P(x);
--- /dev/null
+; EXPECT: unsat
+(set-logic ALL)
+(set-option :incremental false)
+(declare-fun x () Int)
+(declare-fun P (Int) Bool)
+(assert (and (<= 1 x) (<= x 2)))
+(assert (and (P 1) (P 2)))
+(check-sat-assuming ( (not (P x)) ))
+++ /dev/null
-% COMMAND-LINE: --miplib-trick
-% EXPECT: sat
-
-tmp1, tmp2, tmp3 : INT;
-x, y, z : BOOLEAN;
-
-% x = {0, 1}, (NOT x) = 1 - x
-% i*Nx + j*Ny + k = 0
-% i*x + j*Ny + k = 4
-% i*Nx + j*y + k = 6
-% i*x + j*y + k = 10
-
-ASSERT NOT x AND (NOT y AND TRUE) => tmp1 = 0;
-ASSERT x AND (NOT y AND TRUE) => tmp1 = 4;
-ASSERT NOT x AND ( y AND TRUE) => tmp1 = 6;
-ASSERT x AND ( y AND TRUE) => tmp1 = 10;
-
-ASSERT NOT x AND (NOT z AND TRUE) => tmp2 = 0;
-ASSERT x AND (NOT z AND TRUE) => tmp2 = 2;
-ASSERT NOT x AND ( z AND TRUE) => tmp2 = 9;
-ASSERT x AND ( z AND TRUE) => tmp2 = 11;
-
-ASSERT NOT y AND (NOT z AND TRUE) => tmp3 = 0;
-ASSERT y AND (NOT z AND TRUE) => tmp3 = 5;
-ASSERT NOT y AND ( z AND TRUE) => tmp3 = 16;
-ASSERT y AND ( z AND TRUE) => tmp3 = 21;
-
-CHECKSAT;
--- /dev/null
+; COMMAND-LINE: --miplib-trick
+; EXPECT: sat
+(set-logic ALL)
+(set-option :incremental false)
+(declare-fun tmp1 () Int)
+(declare-fun tmp2 () Int)
+(declare-fun tmp3 () Int)
+(declare-fun x () Bool)
+(declare-fun y () Bool)
+(declare-fun z () Bool)
+(assert (=> (and (not x) (and (not y) true)) (= tmp1 0)))
+(assert (=> (and x (and (not y) true)) (= tmp1 4)))
+(assert (=> (and (not x) (and y true)) (= tmp1 6)))
+(assert (=> (and x (and y true)) (= tmp1 10)))
+(assert (=> (and (not x) (and (not z) true)) (= tmp2 0)))
+(assert (=> (and x (and (not z) true)) (= tmp2 2)))
+(assert (=> (and (not x) (and z true)) (= tmp2 9)))
+(assert (=> (and x (and z true)) (= tmp2 11)))
+(assert (=> (and (not y) (and (not z) true)) (= tmp3 0)))
+(assert (=> (and y (and (not z) true)) (= tmp3 5)))
+(assert (=> (and (not y) (and z true)) (= tmp3 16)))
+(assert (=> (and y (and z true)) (= tmp3 21)))
+(check-sat)
+++ /dev/null
-% COMMAND-LINE: --miplib-trick
-% EXPECT: sat
-
-tmp1, tmp2, tmp3 : INT;
-x, y, z : BOOLEAN;
-
-% x = {0, 1}, (NOT x) = 1 - x
-% i*Nx + j*Ny + k = 0
-% i*x + j*Ny + k = 4
-% i*Nx + j*y + k = 6
-% i*x + j*y + k = 10
-
-ASSERT NOT x AND (NOT y AND TRUE) => tmp1 = 0;
-ASSERT x AND (NOT y AND TRUE) => tmp1 = 4;
-ASSERT NOT x AND ( y AND TRUE) => tmp1 = 6;
-ASSERT x AND ( y AND TRUE) => tmp1 = 10;
-
-ASSERT NOT x AND (NOT z AND TRUE) => tmp2 = 0;
-ASSERT x AND (NOT z AND TRUE) => tmp2 = 2;
-ASSERT NOT x AND ( z AND TRUE) => tmp2 = 9;
-ASSERT x AND ( z AND TRUE) => tmp2 = 11;
-
-ASSERT NOT y AND (NOT z AND TRUE) => tmp3 = 0;
-ASSERT y AND (NOT z AND TRUE) => tmp3 = 5;
-ASSERT NOT y AND ( z AND TRUE) => tmp3 = 16;
-ASSERT y AND ( z AND TRUE) => tmp3 = 21;
-
-% miplib trick does not apply to blocks 1 and 2, x occurs outside
-% of the tmp definitions
-ASSERT x;
-
-CHECKSAT;
--- /dev/null
+; COMMAND-LINE: --miplib-trick
+; EXPECT: sat
+(set-logic ALL)
+(set-option :incremental false)
+(declare-fun tmp1 () Int)
+(declare-fun tmp2 () Int)
+(declare-fun tmp3 () Int)
+(declare-fun x () Bool)
+(declare-fun y () Bool)
+(declare-fun z () Bool)
+(assert (=> (and (not x) (and (not y) true)) (= tmp1 0)))
+(assert (=> (and x (and (not y) true)) (= tmp1 4)))
+(assert (=> (and (not x) (and y true)) (= tmp1 6)))
+(assert (=> (and x (and y true)) (= tmp1 10)))
+(assert (=> (and (not x) (and (not z) true)) (= tmp2 0)))
+(assert (=> (and x (and (not z) true)) (= tmp2 2)))
+(assert (=> (and (not x) (and z true)) (= tmp2 9)))
+(assert (=> (and x (and z true)) (= tmp2 11)))
+(assert (=> (and (not y) (and (not z) true)) (= tmp3 0)))
+(assert (=> (and y (and (not z) true)) (= tmp3 5)))
+(assert (=> (and (not y) (and z true)) (= tmp3 16)))
+(assert (=> (and y (and z true)) (= tmp3 21)))
+(assert x)
+(check-sat)
+++ /dev/null
-% COMMAND-LINE: --miplib-trick
-% EXPECT: sat
-
-tmp1 : INT;
-x, y : BOOLEAN;
-
-% nonlinear combination, not eligible for miplib trick replacement
-ASSERT NOT x AND (NOT y AND TRUE) => tmp1 = 0;
-ASSERT x AND (NOT y AND TRUE) => tmp1 = 4;
-ASSERT NOT x AND ( y AND TRUE) => tmp1 = 6;
-ASSERT x AND ( y AND TRUE) => tmp1 = 12;
-
-ASSERT tmp1 > 10;
-
-CHECKSAT;
--- /dev/null
+; COMMAND-LINE: --miplib-trick
+; EXPECT: sat
+(set-logic ALL)
+(set-option :incremental false)
+(declare-fun tmp1 () Int)
+(declare-fun x () Bool)
+(declare-fun y () Bool)
+(assert (=> (and (not x) (and (not y) true)) (= tmp1 0)))
+(assert (=> (and x (and (not y) true)) (= tmp1 4)))
+(assert (=> (and (not x) (and y true)) (= tmp1 6)))
+(assert (=> (and x (and y true)) (= tmp1 12)))
+(assert (> tmp1 10))
+(check-sat)
+++ /dev/null
-% EXPECT: unsat
-all1 : ARRAY INT OF INT;
-a, i : INT;
-ASSERT all1 = ARRAY(INT OF INT) : 1;
-ASSERT a = all1[i];
-ASSERT a /= 1;
-CHECKSAT TRUE;
--- /dev/null
+; EXPECT: unsat
+(set-logic ALL)
+(set-option :incremental true)
+(declare-fun all1 () (Array Int Int))
+(declare-fun a () Int)
+(declare-fun i () Int)
+(assert (= all1 ((as const (Array Int Int)) 1)))
+(assert (= a (select all1 i)))
+(assert (not (= a 1)))
+(push 1)
+
+(assert true)
+
+(check-sat)
+
+(pop 1)
+
+++ /dev/null
-% EXPECT: unsat
-all1, all2 : ARRAY INT OF INT;
-a, i : INT;
-ASSERT all1 = ARRAY(INT OF INT) : 1;
-ASSERT all2 = ARRAY(INT OF INT) : 2;
-ASSERT all1 = all2;
-CHECKSAT;
--- /dev/null
+; EXPECT: unsat
+(set-logic ALL)
+(set-option :incremental false)
+(declare-fun all1 () (Array Int Int))
+(declare-fun all2 () (Array Int Int))
+(declare-fun a () Int)
+(declare-fun i () Int)
+(assert (= all1 ((as const (Array Int Int)) 1)))
+(assert (= all2 ((as const (Array Int Int)) 2)))
+(assert (= all1 all2))
+(check-sat)
+++ /dev/null
-% EXPECT: entailed
-% Simple test for right precedence of AND, <=>, NOT.
-
-A, B, C: BOOLEAN;
-
-QUERY (NOT A AND NOT B <=> C) <=> (((NOT A) AND (NOT B)) <=> C);
--- /dev/null
+; EXPECT: unsat
+(set-logic ALL)
+(set-option :incremental false)
+(declare-fun A () Bool)
+(declare-fun B () Bool)
+(declare-fun C () Bool)
+(check-sat-assuming ( (not (let ((_let_1 (= (and (not A) (not B)) C))) (= _let_1 _let_1))) ))
+++ /dev/null
-% EXPECT: sat
-%OPTION "produce-models";
-
-f : BOOLEAN -> INT;
-x : INT;
-p : BOOLEAN -> BOOLEAN;
-
-ASSERT f(p(TRUE)) = x;
-ASSERT f(p(FALSE)) = x + 1;
-
-CHECKSAT;
-%GET_VALUE f(p(TRUE));
-%GET_VALUE f(p(TRUE)) = x;
-%GET_VALUE f(p(FALSE)) = x + 1;
-%COUNTERMODEL;
--- /dev/null
+; EXPECT: sat
+(set-logic ALL)
+(set-option :incremental false)
+(declare-fun f (Bool) Int)
+(declare-fun x () Int)
+(declare-fun p (Bool) Bool)
+(assert (= (f (p true)) x))
+(assert (= (f (p false)) (+ x 1)))
+(check-sat)
+++ /dev/null
-% EXPECT: unsat
-DATATYPE DT1 =
- DT1_a |
- DT1_b |
- DT1_c |
- DT1_d |
- DT1_e |
- DT1_f |
- DT1_g |
- DT1_h |
- DT1_i |
- DT1_j |
- DT1_k |
- DT1_l |
- DT1_m |
- DT1_n |
- DT1_o |
- DT1_p |
- DT1_q |
- DT1_r |
- DT1_s |
- DT1_t |
- DT1_u |
- DT1_v |
- DT1_w |
- DT1_x |
- DT1_y |
- DT1_z
-END;
-DATATYPE DT2 =
- DT2_a |
- DT2_b |
- DT2_c |
- DT2_d
-END;
-DATATYPE DT3 =
- DT3_a |
- DT3_b
-END;
-var1 : DT3;
-var2 : DT3;
-var3 : DT1;
-var4 : DT3;
-var5 : DT3;
-var6 : DT3;
-var7 : DT3;
-var8 : DT3;
-var9 : DT3;
-var10 : DT3;
-var11 : DT2;
-var12 : DT3;
-var13 : DT3;
-var14 : DT3;
-var16 : DT3;
-var17 : DT3;
-var18 : DT3;
-var20 : DT3;
-var21 : DT3;
-CHECKSAT
-(
- (((NOT(var13 = DT3_a)) AND (NOT(var10 = DT3_b))) AND (NOT((((((var7 = DT3_b) AND (var4 = DT3_b)) AND (var1 = DT3_a)) OR ((((var5 = DT3_a) AND (var17 = DT3_b)) OR ((var21 = DT3_b) AND ((var3 = DT1_f) OR (var3 = DT1_g)))) <=> (DT3_b = DT3_b))) OR (((var14 = DT3_a) AND (var2 = DT3_a)) AND (((((var8 = DT3_a) AND (var18 = DT3_b)) OR ((var6 = DT3_a) AND (var11 /= DT2_a))) OR (var20 = DT3_b)) OR (var9 = DT3_b)))) OR ((NOT(((((var7 = DT3_b) AND (var4 = DT3_b)) AND (var1 = DT3_a)) OR ((((var5 = DT3_a) AND (var17 = DT3_b)) OR ((var21 = DT3_b) AND ((var3 = DT1_f) OR (var3 = DT1_g)))) <=> (DT3_b = DT3_b))) OR (((var14 = DT3_a) AND (var2 = DT3_a)) AND (((((var8 = DT3_a) AND (var18 = DT3_b)) OR ((var6 = DT3_a) AND (var11 /= DT2_a))) OR (var20 = DT3_b)) OR (var9 = DT3_b))))) AND ((var14 = DT3_b) AND (TRUE))))))
- AND
- (NOT((var12 = DT3_a) OR ((var12 = DT3_b) AND ((var16 = DT3_b) OR (TRUE)))))
-);
--- /dev/null
+; EXPECT: unsat
+(set-logic ALL)
+(set-option :incremental true)
+(declare-datatypes ((DT1 0)) (((DT1_a) (DT1_b) (DT1_c) (DT1_d) (DT1_e) (DT1_f) (DT1_g) (DT1_h) (DT1_i) (DT1_j) (DT1_k) (DT1_l) (DT1_m) (DT1_n) (DT1_o) (DT1_p) (DT1_q) (DT1_r) (DT1_s) (DT1_t) (DT1_u) (DT1_v) (DT1_w) (DT1_x) (DT1_y) (DT1_z))))
+(declare-datatypes ((DT2 0)) (((DT2_a) (DT2_b) (DT2_c) (DT2_d))))
+(declare-datatypes ((DT3 0)) (((DT3_a) (DT3_b))))
+(declare-fun var1 () DT3)
+(declare-fun var2 () DT3)
+(declare-fun var3 () DT1)
+(declare-fun var4 () DT3)
+(declare-fun var5 () DT3)
+(declare-fun var6 () DT3)
+(declare-fun var7 () DT3)
+(declare-fun var8 () DT3)
+(declare-fun var9 () DT3)
+(declare-fun var10 () DT3)
+(declare-fun var11 () DT2)
+(declare-fun var12 () DT3)
+(declare-fun var13 () DT3)
+(declare-fun var14 () DT3)
+(declare-fun var16 () DT3)
+(declare-fun var17 () DT3)
+(declare-fun var18 () DT3)
+(declare-fun var20 () DT3)
+(declare-fun var21 () DT3)
+(push 1)
+
+(assert (let ((_let_1 (or (or (and (and (= var7 DT3_b) (= var4 DT3_b)) (= var1 DT3_a)) (= (or (and (= var5 DT3_a) (= var17 DT3_b)) (and (= var21 DT3_b) (or (= var3 DT1_f) (= var3 DT1_g)))) (= DT3_b DT3_b))) (and (and (= var14 DT3_a) (= var2 DT3_a)) (or (or (or (and (= var8 DT3_a) (= var18 DT3_b)) (and (= var6 DT3_a) (not (= var11 DT2_a)))) (= var20 DT3_b)) (= var9 DT3_b)))))) (and (and (and (not (= var13 DT3_a)) (not (= var10 DT3_b))) (not (or _let_1 (and (not _let_1) (and (= var14 DT3_b) true))))) (not (or (= var12 DT3_a) (and (= var12 DT3_b) (or (= var16 DT3_b) true)))))))
+
+(check-sat)
+
+(pop 1)
+
+++ /dev/null
-% EXPECT: entailed
-b : BOOLEAN;
-DATATYPE D = c(s:INT) END;
-QUERY c(IF b THEN 1 ELSE 0 ENDIF) = IF b THEN c(1) ELSE c(0) ENDIF;
--- /dev/null
+; EXPECT: unsat
+(set-logic ALL)
+(set-option :incremental false)
+(declare-fun b () Bool)
+(declare-datatypes ((D 0)) (((c (s Int)))))
+(check-sat-assuming ( (not (= (c (ite b 1 0)) (ite b (c 1) (c 0)))) ))
+++ /dev/null
-% EXPECT: entailed
-a:BOOLEAN;
-b:BOOLEAN;
-ASSERT(a);
-QUERY(a OR b);
-
--- /dev/null
+; EXPECT: unsat
+(set-logic ALL)
+(set-option :incremental false)
+(declare-fun a () Bool)
+(declare-fun b () Bool)
+(assert a)
+(check-sat-assuming ( (not (or a b)) ))
+++ /dev/null
-% EXPECT: sat
-% Preamble --------------
-DATATYPE UNIT = Unit END;
-DATATYPE BOOL = Truth | Falsity END;
-
-% Decls --------------
-node$type: TYPE;
-value$type: TYPE;
-Nodes$elem$type: TYPE = node$type;
-Nodes$t$type: TYPE;
-node_pair_set$type: TYPE = ARRAY node$type OF ARRAY node$type OF BOOL;
-failure_pattern$type: TYPE = node_pair_set$type;
-is_faulty:(node$type, failure_pattern$type) -> BOOL = (LAMBDA (p: node$type,
- deliver: failure_pattern$type):
- (IF (EXISTS (q: node$type):
- (NOT ((((deliver)[
- (p)])[
- (q)]) =
- (Truth)))) THEN
- (Truth) ELSE (Falsity) ENDIF));
-
-CHECKSAT;
--- /dev/null
+; EXPECT: sat
+(set-logic ALL)
+(set-option :incremental false)
+(declare-datatypes ((UNIT 0)) (((Unit))))
+(declare-datatypes ((BOOL 0)) (((Truth) (Falsity))))
+(declare-sort node$type 0)
+(declare-sort value$type 0)
+
+(declare-sort Nodes$t$type 0)
+
+
+(define-fun is_faulty ((p node$type) (deliver (Array node$type (Array node$type BOOL)))) BOOL (ite (exists ((q node$type)) (not (= (select (select deliver p) q) Truth))) Truth Falsity))
+(check-sat)
+++ /dev/null
-% COMMAND-LINE: --incremental
-% EXPECT: entailed
-% EXPECT: entailed
-% EXPECT: entailed
-x : INT;
-y : INT = x + 1;
-z : INT = -10;
-identity : INT -> INT = LAMBDA(x:INT) : x;
-QUERY identity(x) = x;
-QUERY identity(y) > x;
-QUERY identity(z) = -10;
--- /dev/null
+; COMMAND-LINE: --incremental
+; EXPECT: unsat
+; EXPECT: unsat
+; EXPECT: unsat
+(set-logic ALL)
+(declare-fun x () Int)
+(define-fun y () Int (+ x 1))
+(define-fun z () Int (- 10))
+(define-fun identity ((x Int)) Int x)
+(check-sat-assuming ( (not (= (identity x) x)) ))
+(check-sat-assuming ( (not (> (identity (+ x 1)) x)) ))
+(check-sat-assuming ( (not (let ((_let_1 (- 10))) (= (identity _let_1) _let_1))) ))
+++ /dev/null
-% COMMAND-LINE: --finite-model-find -i
-% EXPECT: not_entailed
-% EXPECT: entailed
-prin:TYPE;
-form:TYPE;
-
-signed:(prin,form)->BOOLEAN;
-says:(prin,form)->BOOLEAN;
-
-speaksfor:(prin,prin)->form;
-signedE:BOOLEAN = FORALL(x:prin,y:form) : signed(x,y) => says(x,y);
-saysE:BOOLEAN = FORALL(x,y:prin,z:form) : says(x,speaksfor(y,x)) AND says(y,z) => says(x,z);
-
-ASSERT(signedE);
-ASSERT(saysE);
-
-julie:prin;
-dave:prin;
-alice:prin;
-openfile:form;
-
-x2:BOOLEAN = signed(alice,openfile);
-ASSERT(x2);
-x3:BOOLEAN = signed(dave,speaksfor(alice,dave));
-ASSERT(x3);
-
-QUERY NOT says(dave,openfile); % this is invalid
-QUERY says(dave,openfile); % this is valid
--- /dev/null
+; COMMAND-LINE: --finite-model-find -i
+; EXPECT: sat
+; EXPECT: unsat
+(set-logic ALL)
+(set-option :incremental true)
+(declare-sort prin 0)
+(declare-sort form 0)
+(declare-fun signed (prin form) Bool)
+(declare-fun says (prin form) Bool)
+(declare-fun speaksfor (prin prin) form)
+(define-fun signedE () Bool (forall ((x prin) (y form)) (=> (signed x y) (says x y))))
+(define-fun saysE () Bool (forall ((x prin) (y prin) (z form)) (=> (and (says x (speaksfor y x)) (says y z)) (says x z))))
+(assert (forall ((x prin) (y form)) (=> (signed x y) (says x y))))
+(assert (forall ((x prin) (y prin) (z form)) (=> (and (says x (speaksfor y x)) (says y z)) (says x z))))
+(declare-fun julie () prin)
+(declare-fun dave () prin)
+(declare-fun alice () prin)
+(declare-fun openfile () form)
+(define-fun x2 () Bool (signed alice openfile))
+(assert (signed alice openfile))
+(define-fun x3 () Bool (signed dave (speaksfor alice dave)))
+(assert (signed dave (speaksfor alice dave)))
+(check-sat-assuming ( (not (not (says dave openfile))) ))
+(check-sat-assuming ( (not (says dave openfile)) ))
+++ /dev/null
-% EXPECT: sat
-%%%
-%%% DATA TYPES DEFINITIONS
-%%%
-
-%%% the roles
-DATATYPE
- role = r1 | r2 | r3
- %%% adding two more roles ( | r4 | r5 ) to the type, but never referring to them make things work
-END;
-
-%%% structured datatypes
-roleSet: TYPE = SET OF role;
-roleGammaSet: TYPE = [# pos: roleSet, neg: roleSet #];
-delta: TYPE = ARRAY role OF roleGammaSet;
-
-emptyRoleSet : roleSet;
-ASSERT emptyRoleSet = {} :: SET OF role;
-
-d: delta;
-ASSERT d[r3].pos = {r1};
-ASSERT d[r2].pos = {r2,r3};
-ASSERT d[r2].neg = {r1};
-
-CHECKSAT;
-%COUNTEREXAMPLE;
--- /dev/null
+; EXPECT: sat
+(set-logic ALL)
+(set-option :incremental false)
+(declare-datatypes ((role 0)) (((r1) (r2) (r3))))
+
+(declare-datatypes ((|__cvc5_record_pos_(Set role)_neg_(Set role)| 0)) (((|__cvc5_record_pos_(Set role)_neg_(Set role)_ctor| (pos (Set role)) (neg (Set role))))))
+
+
+(declare-fun emptyRoleSet () (Set role))
+(assert (= emptyRoleSet (as emptyset (Set role))))
+(declare-fun d () (Array role |__cvc5_record_pos_(Set role)_neg_(Set role)|))
+(assert (= (pos (select d r3)) (singleton r1)))
+(assert (= (pos (select d r2)) (union (singleton r2) (singleton r3))))
+(assert (= (neg (select d r2)) (singleton r1)))
+(check-sat)
+++ /dev/null
-% EXPECT: sat
-
-f : INT -> [# i:INT, b:INT #];
-a : INT;
-ASSERT f(a) /= (# i := 0, b := 0 #);
-
-CHECKSAT;
--- /dev/null
+; EXPECT: sat
+(set-logic ALL)
+(set-option :incremental false)
+(declare-datatypes ((__cvc5_record_i_Int_b_Int 0)) (((__cvc5_record_i_Int_b_Int_ctor (i Int) (b Int)))))
+(declare-fun f (Int) __cvc5_record_i_Int_b_Int)
+(declare-fun a () Int)
+(assert (not (= (f a) (__cvc5_record_i_Int_b_Int_ctor 0 0))))
+(check-sat)
+++ /dev/null
-% EXPECT: sat
-
-f : INT -> [# i:INT, b:BOOLEAN #];
-a : INT;
-ASSERT f(a) /= (# i := 0, b := FALSE #);
-
-CHECKSAT;
--- /dev/null
+; EXPECT: sat
+(set-logic ALL)
+(set-option :incremental false)
+(declare-datatypes ((__cvc5_record_i_Int_b_Bool 0)) (((__cvc5_record_i_Int_b_Bool_ctor (i Int) (b Bool)))))
+(declare-fun f (Int) __cvc5_record_i_Int_b_Bool)
+(declare-fun a () Int)
+(assert (not (= (f a) (__cvc5_record_i_Int_b_Bool_ctor 0 false))))
+(check-sat)
+++ /dev/null
-% EXPECT: sat
-
-f : INT -> [ INT, BOOLEAN ];
-a : INT;
-ASSERT f(a) /= ( 0, FALSE );
-
-CHECKSAT;
--- /dev/null
+; EXPECT: sat
+(set-logic ALL)
+(set-option :incremental false)
+(declare-fun f (Int) (Tuple Int Bool))
+(declare-fun a () Int)
+(assert (not (= (f a) (mkTuple 0 false))))
+(check-sat)
+++ /dev/null
-% EXPECT: sat
-OPTION "produce-models";
-
-% GeoLocation
-GeoLocation: TYPE = [# longitude: INT, latitude: INT #];
-
-% Stationary object
-StationaryObject: TYPE = [# geoLoc: SET OF GeoLocation #];
-Facet: TYPE = [# base: StationaryObject #];
-
-Segment: TYPE = [# s_f: Facet #];
-A : TYPE = ARRAY INT OF Segment;
-a : A;
-
-p1: GeoLocation = (# longitude := 0, latitude := 0 #);
-
-s1: StationaryObject = (# geoLoc := {p1} #);
-
-
-f0: Facet = (# base := s1 #);
-
-
-init: (A, INT, Facet) -> BOOLEAN
- = LAMBDA (v: A, i: INT, f: Facet):
- v[0].s_f = f;
-
-
-ASSERT (init(a, 2, f0));
-
-CHECKSAT TRUE;
--- /dev/null
+; EXPECT: sat
+(set-logic ALL)
+(set-option :incremental true)
+(set-option :produce-models true)
+(declare-datatypes ((__cvc5_record_longitude_Int_latitude_Int 0)) (((__cvc5_record_longitude_Int_latitude_Int_ctor (longitude Int) (latitude Int)))))
+
+(declare-datatypes ((|__cvc5_record_geoLoc_(Set __cvc5_record_longitude_Int_latitude_Int)| 0)) (((|__cvc5_record_geoLoc_(Set __cvc5_record_longitude_Int_latitude_Int)_ctor| (geoLoc (Set __cvc5_record_longitude_Int_latitude_Int))))))
+
+(declare-datatypes ((|__cvc5_record_base____cvc5_record_geoLoc_(Set __cvc5_record_longitude_Int_latitude_Int)_| 0)) (((|__cvc5_record_base____cvc5_record_geoLoc_(Set __cvc5_record_longitude_Int_latitude_Int)__ctor| (base |__cvc5_record_geoLoc_(Set __cvc5_record_longitude_Int_latitude_Int)|)))))
+
+(declare-datatypes ((|__cvc5_record_s_f____cvc5_record_base____cvc5_record_geoLoc_(Set __cvc5_record_longitude_Int_latitude_Int)__| 0)) (((|__cvc5_record_s_f____cvc5_record_base____cvc5_record_geoLoc_(Set __cvc5_record_longitude_Int_latitude_Int)___ctor| (s_f |__cvc5_record_base____cvc5_record_geoLoc_(Set __cvc5_record_longitude_Int_latitude_Int)_|)))))
+
+
+(declare-fun a () (Array Int |__cvc5_record_s_f____cvc5_record_base____cvc5_record_geoLoc_(Set __cvc5_record_longitude_Int_latitude_Int)__|))
+(define-fun p1 () __cvc5_record_longitude_Int_latitude_Int (__cvc5_record_longitude_Int_latitude_Int_ctor 0 0))
+(define-fun s1 () |__cvc5_record_geoLoc_(Set __cvc5_record_longitude_Int_latitude_Int)| (|__cvc5_record_geoLoc_(Set __cvc5_record_longitude_Int_latitude_Int)_ctor| (singleton (__cvc5_record_longitude_Int_latitude_Int_ctor 0 0))))
+(define-fun f0 () |__cvc5_record_base____cvc5_record_geoLoc_(Set __cvc5_record_longitude_Int_latitude_Int)_| (|__cvc5_record_base____cvc5_record_geoLoc_(Set __cvc5_record_longitude_Int_latitude_Int)__ctor| (|__cvc5_record_geoLoc_(Set __cvc5_record_longitude_Int_latitude_Int)_ctor| (singleton (__cvc5_record_longitude_Int_latitude_Int_ctor 0 0)))))
+(define-fun init ((v (Array Int |__cvc5_record_s_f____cvc5_record_base____cvc5_record_geoLoc_(Set __cvc5_record_longitude_Int_latitude_Int)__|)) (i Int) (f |__cvc5_record_base____cvc5_record_geoLoc_(Set __cvc5_record_longitude_Int_latitude_Int)_|)) Bool (= (s_f (select v 0)) f))
+(assert (init a 2 (|__cvc5_record_base____cvc5_record_geoLoc_(Set __cvc5_record_longitude_Int_latitude_Int)__ctor| (|__cvc5_record_geoLoc_(Set __cvc5_record_longitude_Int_latitude_Int)_ctor| (singleton (__cvc5_record_longitude_Int_latitude_Int_ctor 0 0))))))
+(push 1)
+
+(assert true)
+
+(check-sat)
+
+(pop 1)
+
+++ /dev/null
-% EXPECT: entailed
-
-x : BITVECTOR(10);
-
-QUERY x /= ~x;
--- /dev/null
+; EXPECT: unsat
+(set-logic ALL)
+(set-option :incremental false)
+(declare-fun x () (_ BitVec 10))
+(check-sat-assuming ( (= x (bvnot x)) ))
+++ /dev/null
-% EXPECT: entailed
-
-% Some tests from the CVC3 user manual.
-% http://www.cs.nyu.edu/acsys/cvc3/doc/user_doc.html
-
-x : BITVECTOR(5);
-y : BITVECTOR(4);
-yy : BITVECTOR(3);
-
-bv : BITVECTOR(10);
-a : BOOLEAN;
-
-xx : BITVECTOR(8);
-zz : BITVECTOR(12);
-
-x4, y4 : BITVECTOR(4);
-
-QUERY
-( 0bin0000111101010000 = 0hex0f50 ) AND
-( 0bin01@0bin0 = 0bin010 ) AND
-( 0bin1000 >> 3 = 0bin0001 ) AND
-( 0bin0011 << 3 = 0bin0011000 ) AND
-( 0bin1000 >> 3 = 0bin0001 ) AND
-
-( BVZEROEXTEND(0bin100, 2) = 0bin00100 ) AND
-( SX(0bin100, 5) = 0bin11100 ) AND
-
-( BVZEROEXTEND(0bin100, 0) = 0bin100 ) AND
-( SX(0bin100, 3) = 0bin100 ) AND
-
-( (BVPLUS(9, x@0bin0000, (0bin000@(~y)@0bin11)))[8:4] = BVPLUS(5, x, ~(y[3:2])) ) AND
-
-( x4 = 0hex5 AND y4 = 0bin0101 ) =>
-( ( BVMULT(8,x4,y4)=BVMULT(8,y4,x4) ) AND
- ( NOT(BVLT(x4,y4)) ) AND
- ( BVLE(BVSUB(8,x4,y4), BVPLUS(8, x4, BVUMINUS(x4))) ) AND
- ( x4 = BVSUB(4, BVUMINUS(x4), BVPLUS(4, x4,0hex1)) ) ) AND
-
-( 0bin01100000[5:3]=(0bin1111001@bv[0:0])[4:2] ) AND
-( 0bin1@(IF a THEN 0bin0 ELSE 0bin1 ENDIF) = (IF a THEN 0bin110 ELSE 0bin011 ENDIF)[1:0] ) AND
-
-( xx = 0hexff AND zz = 0hexff0 =>
- ( zz = xx << 4 ) AND
- ( (zz >> 4)[7:0] = xx ) ) AND
-
-TRUE;
--- /dev/null
+; EXPECT: unsat
+(set-logic ALL)
+(set-option :incremental false)
+(declare-fun x () (_ BitVec 5))
+(declare-fun y () (_ BitVec 4))
+(declare-fun yy () (_ BitVec 3))
+(declare-fun bv () (_ BitVec 10))
+(declare-fun a () Bool)
+(declare-fun xx () (_ BitVec 8))
+(declare-fun zz () (_ BitVec 12))
+(declare-fun x4 () (_ BitVec 4))
+(declare-fun y4 () (_ BitVec 4))
+(check-sat-assuming ( (not (let ((_let_1 (bvneg x4))) (let ((_let_2 ((_ zero_extend 4) x4))) (let ((_let_3 ((_ zero_extend 4) y4))) (let ((_let_4 (= (concat #b000 ((_ extract 3 3) #b1000)) #b0001))) (=> (and (and (and (and (and (and (and (and (and (and (= #b0000111101010000 #b0000111101010000) (= (concat #b01 #b0) #b010)) _let_4) (= (concat #b0011 #b000) #b0011000)) _let_4) (= ((_ zero_extend 2) #b100) #b00100)) (= ((_ sign_extend 2) #b100) #b11100)) (= ((_ zero_extend 0) #b100) #b100)) (= ((_ sign_extend 0) #b100) #b100)) (= ((_ extract 8 4) (bvadd (concat x #b0000) (concat (concat #b000 (bvnot y)) #b11))) (bvadd x ((_ zero_extend 3) (bvnot ((_ extract 3 2) y)))))) (and (= x4 #b0101) (= y4 #b0101))) (and (and (and (and (and (and (and (= (bvmul _let_2 _let_3) (bvmul _let_3 _let_2)) (not (bvult x4 y4))) (bvule (bvsub _let_2 _let_3) (bvadd _let_2 ((_ zero_extend 4) _let_1)))) (= x4 (bvsub _let_1 (bvadd x4 #b0001)))) (= ((_ extract 5 3) #b01100000) ((_ extract 4 2) (concat #b1111001 ((_ extract 0 0) bv))))) (= (concat #b1 (ite a #b0 #b1)) ((_ extract 1 0) (ite a #b110 #b011)))) (=> (and (= xx #b11111111) (= zz #b111111110000)) (and (= zz (concat xx #b0000)) (= ((_ extract 7 0) (concat #b0000 ((_ extract 11 4) zz))) xx)))) true))))))) ))
+++ /dev/null
-% EXPECT: entailed
-
-x : BITVECTOR(4);
-
-QUERY
-( BVUDIV(x, 0bin0000) = 0bin1111 ) AND
-( BVUREM(x, 0bin0000) = x ) AND
-( BVSDIV(x, 0bin0000) = 0bin1111 OR BVSDIV(x, 0bin0000) = 0bin0001 ) AND
-( BVSREM(x, 0bin0000) = x ) AND
-( BVSMOD(x, 0bin0000) = x );
--- /dev/null
+; EXPECT: unsat
+(set-logic ALL)
+(set-option :incremental false)
+(declare-fun x () (_ BitVec 4))
+(check-sat-assuming ( (not (let ((_let_1 (bvsdiv x #b0000))) (and (and (and (and (= (bvudiv x #b0000) #b1111) (= (bvurem x #b0000) x)) (or (= _let_1 #b1111) (= _let_1 #b0001))) (= (bvsrem x #b0000) x)) (= (bvsmod x #b0000) x)))) ))
+++ /dev/null
-x : BITVECTOR(10);
-y : BITVECTOR(12);
-
-ASSERT (0bin0001000000000000 = BVPLUS(16, x, y));
-CHECKSAT;
-% EXPECT: sat
--- /dev/null
+; EXPECT: sat
+(set-logic ALL)
+(set-option :incremental false)
+(declare-fun x () (_ BitVec 10))
+(declare-fun y () (_ BitVec 12))
+(assert (= #b0001000000000000 (bvadd ((_ zero_extend 6) x) ((_ zero_extend 4) y))))
+(check-sat)
+++ /dev/null
-% EXPECT: entailed
-% EXPECT: Cannot get model unless after a SAT or unknown response.
-OPTION "logic" "ALL";
-OPTION "produce-models" true;
-x : INT;
-QUERY x = x;
-COUNTEREXAMPLE;
--- /dev/null
+; EXPECT: unsat
+; EXPECT: (error "Cannot get model unless after a SAT or unknown response.")
+(set-option :incremental false)
+(set-logic ALL)
+(set-option :produce-models true)
+(declare-fun x () Int)
+(check-sat-assuming ( (not (= x x)) ))
+(get-model)
+++ /dev/null
-%% This test borrowed from CVC3 regressions, bug15.cvc
-% EXPECT: entailed
-x : REAL;
-y : REAL;
-f : REAL -> REAL;
-ASSERT ((x > y) => f(x) > f (y));
-ASSERT (x = 3);
-ASSERT (y = 2);
-QUERY(f(x) > f (y));
--- /dev/null
+; EXPECT: unsat
+(set-logic ALL)
+(set-option :incremental false)
+(declare-fun x () Real)
+(declare-fun y () Real)
+(declare-fun f (Real) Real)
+(assert (=> (> x y) (> (f x) (f y))))
+(assert (= x 3))
+(assert (= y 2))
+(check-sat-assuming ( (not (> (f x) (f y))) ))
+++ /dev/null
-% COMMAND-LINE: --incremental
-
-% EXPECT: entailed
-QUERY 0bin0000111101010000 = 0hex0f50;
-
-% EXPECT: entailed
-QUERY 0bin01@0bin0 = 0bin010;
-
-% EXPECT: entailed
-QUERY 0bin0011[3:1] = 0bin001;
-
-% EXPECT: entailed
-QUERY 0bin0011 << 3 = 0bin0011000;
-
-% EXPECT: entailed
-QUERY 0bin1000 >> 3 = 0bin0001;
-
-% EXPECT: entailed
-QUERY SX(0bin100, 5) = 0bin11100;
-
-% EXPECT: entailed
-QUERY BVZEROEXTEND(0bin1,3) = 0bin0001;
-
-% EXPECT: entailed
-QUERY BVREPEAT(0bin10,3) = 0bin101010;
-
-% EXPECT: entailed
-QUERY BVROTL(0bin101,1) = 0bin011;
-
-% EXPECT: entailed
-QUERY BVROTR(0bin101,1) = 0bin110;
--- /dev/null
+; COMMAND-LINE: --incremental
+; EXPECT: unsat
+; EXPECT: unsat
+; EXPECT: unsat
+; EXPECT: unsat
+; EXPECT: unsat
+; EXPECT: unsat
+; EXPECT: unsat
+; EXPECT: unsat
+; EXPECT: unsat
+; EXPECT: unsat
+(set-logic ALL)
+(check-sat-assuming ( (not (= #b0000111101010000 #b0000111101010000)) ))
+(check-sat-assuming ( (not (= (concat #b01 #b0) #b010)) ))
+(check-sat-assuming ( (not (= ((_ extract 3 1) #b0011) #b001)) ))
+(check-sat-assuming ( (not (= (concat #b0011 #b000) #b0011000)) ))
+(check-sat-assuming ( (not (= (concat #b000 ((_ extract 3 3) #b1000)) #b0001)) ))
+(check-sat-assuming ( (not (= ((_ sign_extend 2) #b100) #b11100)) ))
+(check-sat-assuming ( (not (= ((_ zero_extend 3) #b1) #b0001)) ))
+(check-sat-assuming ( (not (= ((_ repeat 3) #b10) #b101010)) ))
+(check-sat-assuming ( (not (= ((_ rotate_left 1) #b101) #b011)) ))
+(check-sat-assuming ( (not (= ((_ rotate_right 1) #b101) #b110)) ))
+++ /dev/null
-x : BITVECTOR(5);
-y : BITVECTOR(4);
-yy : BITVECTOR(3);
-
-% EXPECT: entailed
-QUERY
- BVPLUS(9, x@0bin0000, (0bin000@(~y)@0bin11))[8:4] = BVPLUS(5, x, ~(y[3:2])) ;
--- /dev/null
+; EXPECT: unsat
+(set-logic ALL)
+(set-option :incremental false)
+(declare-fun x () (_ BitVec 5))
+(declare-fun y () (_ BitVec 4))
+(declare-fun yy () (_ BitVec 3))
+(check-sat-assuming ( (not (= ((_ extract 8 4) (bvadd (concat x #b0000) (concat (concat #b000 (bvnot y)) #b11))) (bvadd x ((_ zero_extend 3) (bvnot ((_ extract 3 2) y)))))) ))
+++ /dev/null
-bv : BITVECTOR(10);
-a : BOOLEAN;
-
-% EXPECT: entailed
-QUERY
- 0bin01100000[5:3]=(0bin1111001@bv[0:0])[4:2]
- AND
- 0bin1@(IF a THEN 0bin0 ELSE 0bin1 ENDIF) = (IF a THEN 0bin110 ELSE 0bin011 ENDIF)[1:0] ;
--- /dev/null
+; EXPECT: unsat
+(set-logic ALL)
+(set-option :incremental false)
+(declare-fun bv () (_ BitVec 10))
+(declare-fun a () Bool)
+(check-sat-assuming ( (not (and (= ((_ extract 5 3) #b01100000) ((_ extract 4 2) (concat #b1111001 ((_ extract 0 0) bv)))) (= (concat #b1 (ite a #b0 #b1)) ((_ extract 1 0) (ite a #b110 #b011))))) ))
+++ /dev/null
-x, y, z, t, q : BITVECTOR(1024);
-
-ASSERT x = ~x;
-ASSERT x&y&t&z&q = x;
-ASSERT x|y = t;
-ASSERT BVXOR(x,~x) = t;
-
-% EXPECT: entailed
-QUERY FALSE;
--- /dev/null
+; EXPECT: unsat
+(set-logic ALL)
+(set-option :incremental false)
+(declare-fun x () (_ BitVec 1024))
+(declare-fun y () (_ BitVec 1024))
+(declare-fun z () (_ BitVec 1024))
+(declare-fun t () (_ BitVec 1024))
+(declare-fun q () (_ BitVec 1024))
+(assert (= x (bvnot x)))
+(assert (= (bvand (bvand (bvand (bvand x y) t) z) q) x))
+(assert (= (bvor x y) t))
+(assert (= (bvxor x (bvnot x)) t))
+(check-sat)
+++ /dev/null
-x, y : BITVECTOR(4);
-
-ASSERT x = 0hex5;
-ASSERT y = 0bin0101;
-
-% EXPECT: entailed
-QUERY
- BVMULT(8,x,y)=BVMULT(8,y,x)
- AND
- NOT(BVLT(x,y))
- AND
- BVLE(BVSUB(8,x,y), BVPLUS(8, x, BVUMINUS(x)))
- AND
- x = BVSUB(4, BVUMINUS(x), BVPLUS(4, x,0hex1)) ;
--- /dev/null
+; EXPECT: unsat
+(set-logic ALL)
+(set-option :incremental false)
+(declare-fun x () (_ BitVec 4))
+(declare-fun y () (_ BitVec 4))
+(assert (= x #b0101))
+(assert (= y #b0101))
+(check-sat-assuming ( (not (let ((_let_1 (bvneg x))) (let ((_let_2 ((_ zero_extend 4) x))) (let ((_let_3 ((_ zero_extend 4) y))) (and (and (and (= (bvmul _let_2 _let_3) (bvmul _let_3 _let_2)) (not (bvult x y))) (bvule (bvsub _let_2 _let_3) (bvadd _let_2 ((_ zero_extend 4) _let_1)))) (= x (bvsub _let_1 (bvadd x #b0001)))))))) ))
+++ /dev/null
-% COMMAND-LINE: --incremental
-
-x, y : BITVECTOR(8);
-z, t : BITVECTOR(12);
-
-ASSERT x = 0hexff;
-ASSERT z = 0hexff0;
-
-% EXPECT: entailed
-QUERY z = x << 4;
-
-% EXPECT: entailed
-QUERY (z >> 4)[7:0] = x;
--- /dev/null
+; COMMAND-LINE: --incremental
+; EXPECT: unsat
+; EXPECT: unsat
+(set-logic ALL)
+(declare-fun x () (_ BitVec 8))
+(declare-fun y () (_ BitVec 8))
+(declare-fun z () (_ BitVec 12))
+(declare-fun t () (_ BitVec 12))
+(assert (= x #b11111111))
+(assert (= z #b111111110000))
+(check-sat-assuming ( (not (= z (concat x #b0000))) ))
+(check-sat-assuming ( (not (= ((_ extract 7 0) (concat #b0000 ((_ extract 11 4) z))) x)) ))
+++ /dev/null
-% EXPECT: sat
-TEST : TYPE = INT -> [INT, INT];
-
-test: TEST;
-
-ASSERT test(5) = (2, 3);
-ASSERT test(7) = (3, 4);
-
-CHECKSAT;
-
--- /dev/null
+; EXPECT: sat
+(set-logic ALL)
+(set-option :incremental false)
+
+(declare-fun test (Int) (Tuple Int Int))
+(assert (= (test 5) (mkTuple 2 3)))
+(assert (= (test 7) (mkTuple 3 4)))
+(check-sat)
+++ /dev/null
-% EXPECT: sat
-
-x : [# b:BOOLEAN #];
-
-ASSERT x = x;
-
-CHECKSAT;
--- /dev/null
+; EXPECT: sat
+(set-logic ALL)
+(set-option :incremental false)
+(declare-datatypes ((__cvc5_record_b_Bool 0)) (((__cvc5_record_b_Bool_ctor (b Bool)))))
+(declare-fun x () __cvc5_record_b_Bool)
+(assert (= x x))
+(check-sat)
+++ /dev/null
-% EXPECT: sat
-
-DATATYPE List =
- cons(car:BOOLEAN, cdr:List) | nil
-END;
-
-x : List;
-
-ASSERT x /= nil;
-
-CHECKSAT;
--- /dev/null
+; EXPECT: sat
+(set-logic ALL)
+(set-option :incremental false)
+(declare-datatypes ((List 0)) (((cons (car Bool) (cdr List)) (nil))))
+(declare-fun x () List)
+(assert (not (= x nil)))
+(check-sat)
+++ /dev/null
-% EXPECT: sat
-
-DATATYPE RightistTree[T] =
- node(left:BOOLEAN, right:RightistTree[T]) |
- leaf(data:T)
-END;
-
-x : RightistTree[INT];
-
-ASSERT x /= leaf(0);
-
-CHECKSAT;
--- /dev/null
+; EXPECT: sat
+(set-logic ALL)
+(set-option :incremental false)
+(declare-datatypes ((RightistTree 1)) ((par (T)((node (left Bool) (right (RightistTree T))) (leaf (data T))))))
+(declare-fun x () (RightistTree Int))
+(assert (not (= x (leaf 0))))
+(check-sat)
+++ /dev/null
-% EXPECT: sat
-
-x : [# i:INT, b:BOOLEAN #];
-
-ASSERT x /= (# i := 0, b := FALSE #);
-
-CHECKSAT;
--- /dev/null
+; EXPECT: sat
+(set-logic ALL)
+(set-option :incremental false)
+(declare-datatypes ((__cvc5_record_i_Int_b_Bool 0)) (((__cvc5_record_i_Int_b_Bool_ctor (i Int) (b Bool)))))
+(declare-fun x () __cvc5_record_i_Int_b_Bool)
+(assert (not (= x (__cvc5_record_i_Int_b_Bool_ctor 0 false))))
+(check-sat)
+++ /dev/null
-% EXPECT: sat
-
-x : [# b:BITVECTOR(1) #];
-
-ASSERT FALSE = ((x = (# b := 0bin0 #)) = (x = (# b := 0bin1 #)));
-
-CHECKSAT;
--- /dev/null
+; EXPECT: sat
+(set-logic ALL)
+(set-option :incremental false)
+(declare-datatypes ((|__cvc5_record_b_(_ BitVec 1)| 0)) (((|__cvc5_record_b_(_ BitVec 1)_ctor| (b (_ BitVec 1))))))
+(declare-fun x () |__cvc5_record_b_(_ BitVec 1)|)
+(assert (= false (= (= x (|__cvc5_record_b_(_ BitVec 1)_ctor| #b0)) (= x (|__cvc5_record_b_(_ BitVec 1)_ctor| #b1)))))
+(check-sat)
+++ /dev/null
-% EXPECT: sat
-
-x : [ INT, BOOLEAN ];
-
-ASSERT x /= ( 0, FALSE );
-
-CHECKSAT;
--- /dev/null
+; EXPECT: sat
+(set-logic ALL)
+(set-option :incremental false)
+(declare-fun x () (Tuple Int Bool))
+(assert (not (= x (mkTuple 0 false))))
+(check-sat)
+++ /dev/null
-% EXPECT: not_entailed
-DATATYPE foo = f(i:INT) END;
-x : foo;
-y : INT;
-QUERY x = f(y);
--- /dev/null
+; EXPECT: sat
+(set-logic ALL)
+(set-option :incremental false)
+(declare-datatypes ((foo 0)) (((f (i Int)))))
+(declare-fun x () foo)
+(declare-fun y () Int)
+(check-sat-assuming ( (not (= x (f y))) ))
+++ /dev/null
-% EXPECT: sat
-DATATYPE list[T] = cons(car:T, cdr:list[T]) | nil END;
-x : list[REAL];
-ASSERT x = cons(1.0,nil::list[REAL])::list[REAL];
-CHECKSAT;
--- /dev/null
+; EXPECT: sat
+(set-logic ALL)
+(set-option :incremental false)
+(declare-datatypes ((list 1)) ((par (T)((cons (car T) (cdr (list T))) (nil)))))
+(declare-fun x () (list Real))
+(assert (= x ((as cons (list Real)) 1.0 (as nil (list Real)))))
+(check-sat)
+++ /dev/null
-% EXPECT: sat
-DATATYPE list[T] = cons(car:T, cdr:list[T]) | nil END;
-x : list[REAL];
-ASSERT x = cons(1.0,nil::list[REAL]);
-ASSERT x = cons(1.0,nil::list[REAL])::list[REAL];
-CHECKSAT;
--- /dev/null
+; EXPECT: sat
+(set-logic ALL)
+(set-option :incremental false)
+(declare-datatypes ((list 1)) ((par (T)((cons (car T) (cdr (list T))) (nil)))))
+(declare-fun x () (list Real))
+(assert (= x (cons 1.0 (as nil (list Real)))))
+(assert (= x ((as cons (list Real)) 1.0 (as nil (list Real)))))
+(check-sat)
+++ /dev/null
-% This regression is the same as datatype.cvc but tests the
-% dumping infrastructure.
-%
-% COMMAND-LINE: -o raw-benchmark
-%
-% EXPECT: OPTION "incremental" false;
-% EXPECT: OPTION "logic" "ALL";
-% EXPECT: DATATYPE
-% EXPECT: nat = succ(pred: nat) | zero
-% EXPECT: END;
-% EXPECT: x : nat;
-% EXPECT: QUERY NOT(is_succ(x)) AND NOT(is_zero(x));
-% EXPECT: not_entailed
-%
-
-DATATYPE nat = succ(pred : nat) | zero END;
-
-x : nat;
-
-QUERY (NOT is_succ(x) AND NOT is_zero(x));
--- /dev/null
+; COMMAND-LINE: -o raw-benchmark
+; EXPECT: OPTION "incremental" false;
+; EXPECT: OPTION "logic" "ALL";
+; EXPECT: DATATYPE
+; EXPECT: nat = succ(pred: nat) | zero
+; EXPECT: END;
+; EXPECT: x : nat;
+; EXPECT: QUERY NOT(is_succ(x)) AND NOT(is_zero(x));
+; EXPECT: sat
+(set-logic ALL)
+(set-option :incremental false)
+(declare-datatypes ((nat 0)) (((succ (pred nat)) (zero))))
+(declare-fun x () nat)
+(check-sat-assuming ( (not (and (not ((_ is succ) x)) (not ((_ is zero) x)))) ))
+++ /dev/null
-% EXPECT: not_entailed
-
-DATATYPE nat = succ(pred : nat) | zero END;
-
-x : nat;
-
-QUERY (NOT is_succ(x) AND NOT is_zero(x));
--- /dev/null
+; EXPECT: sat
+(set-logic ALL)
+(set-option :incremental false)
+(declare-datatypes ((nat 0)) (((succ (pred nat)) (zero))))
+(declare-fun x () nat)
+(check-sat-assuming ( (not (and (not ((_ is succ) x)) (not ((_ is zero) x)))) ))
+++ /dev/null
-% EXPECT: entailed
-
-DATATYPE nat = succ(pred : nat) | zero END;
-
-x : nat;
-
-QUERY (is_succ(x) OR is_zero(x));
--- /dev/null
+; EXPECT: unsat
+(set-logic ALL)
+(set-option :incremental false)
+(declare-datatypes ((nat 0)) (((succ (pred nat)) (zero))))
+(declare-fun x () nat)
+(check-sat-assuming ( (not (or ((_ is succ) x) ((_ is zero) x))) ))
+++ /dev/null
-% COMMAND-LINE: -q
-% EXPECT: not_entailed
-
-DATATYPE
- tree = node(left : tree, right : tree) | leaf
-END;
-
-x : tree;
-z : tree;
-
-QUERY NOT (left(left(z)) = x AND is_node(z) AND z = x);
--- /dev/null
+; COMMAND-LINE: -q
+; EXPECT: sat
+(set-logic ALL)
+(set-option :incremental false)
+(declare-datatypes ((tree 0)) (((node (left tree) (right tree)) (leaf))))
+(declare-fun x () tree)
+(declare-fun z () tree)
+(check-sat-assuming ( (not (not (and (and (= (left (left z)) x) ((_ is node) z)) (= z x)))) ))
+++ /dev/null
-% EXPECT: entailed
-
-DATATYPE enum = enum1
-| enum2
-| enum3
-| enum4
-| enum5
-| enum6
-| enum7
-| enum8
-| enum9
-| enum10
-| enum11
-| enum12
-| enum13
-| enum14
-| enum15
-| enum16
-| enum17
-| enum18
-| enum19
-| enum20
-| enum21
-| enum22
-| enum23
-| enum24
-| enum25
-| enum26
-| enum27
-| enum28
-| enum29
-| enum30
-| enum31
-| enum32
-| enum33
-END;
-
-x,y:enum;
-
-ASSERT x = enum1;
-ASSERT y = enum33;
-QUERY x /= y;
-
--- /dev/null
+; EXPECT: unsat
+(set-logic ALL)
+(set-option :incremental false)
+(declare-datatypes ((enum 0)) (((enum1) (enum2) (enum3) (enum4) (enum5) (enum6) (enum7) (enum8) (enum9) (enum10) (enum11) (enum12) (enum13) (enum14) (enum15) (enum16) (enum17) (enum18) (enum19) (enum20) (enum21) (enum22) (enum23) (enum24) (enum25) (enum26) (enum27) (enum28) (enum29) (enum30) (enum31) (enum32) (enum33))))
+(declare-fun x () enum)
+(declare-fun y () enum)
+(assert (= x enum1))
+(assert (= y enum33))
+(check-sat-assuming ( (not (not (= x y))) ))
+++ /dev/null
-% EXPECT: entailed
-
-DATATYPE
- nat = succ(pred : nat) | zero,
- list = cons(car : tree, cdr : list) | null,
- tree = node(data : nat, children : list) | leaf
-END;
-
-x : nat;
-y : list;
-z : tree;
-
-ASSERT x = succ(zero);
-ASSERT z = IF is_cons(y) THEN car(y) ELSE node(x, null) ENDIF;
-
-QUERY (NOT is_cons(y)) => pred(data(z)) = zero;
--- /dev/null
+; EXPECT: unsat
+(set-logic ALL)
+(set-option :incremental false)
+(declare-datatypes ((nat 0)(list 0)(tree 0)) (((succ (pred nat)) (zero))((cons (car tree) (cdr list)) (null))((node (data nat) (children list)) (leaf))))
+(declare-fun x () nat)
+(declare-fun y () list)
+(declare-fun z () tree)
+(assert (= x (succ zero)))
+(assert (= z (ite ((_ is cons) y) (car y) (node x null))))
+(check-sat-assuming ( (not (=> (not ((_ is cons) y)) (= (pred (data z)) zero))) ))
+++ /dev/null
-% COMMAND-LINE: -q
-% EXPECT: not_entailed
-
-DATATYPE
- tree = node(left : tree, right : tree) | leaf
-END;
-
-x : tree;
-z : tree;
-
-QUERY NOT (left(left(left(left(left(left(left(left(left(left(z)))))))))) = x AND is_node(z) AND z = x);
--- /dev/null
+; COMMAND-LINE: -q
+; EXPECT: sat
+(set-logic ALL)
+(set-option :incremental false)
+(declare-datatypes ((tree 0)) (((node (left tree) (right tree)) (leaf))))
+(declare-fun x () tree)
+(declare-fun z () tree)
+(check-sat-assuming ( (not (not (and (and (= (left (left (left (left (left (left (left (left (left (left z)))))))))) x) ((_ is node) z)) (= z x)))) ))
+++ /dev/null
-% EXPECT: not_entailed
-DATATYPE
- TypeGeneric = generic
-END;
-
-f: TypeGeneric -> INT;
-a: TypeGeneric;
-
-QUERY(f(a) = 0);
--- /dev/null
+; EXPECT: sat
+(set-logic ALL)
+(set-option :incremental false)
+(declare-datatypes ((TypeGeneric 0)) (((generic))))
+(declare-fun f (TypeGeneric) Int)
+(declare-fun a () TypeGeneric)
+(check-sat-assuming ( (not (= (f a) 0)) ))
+++ /dev/null
-% COMMAND-LINE:
-%
-OPTION "incremental";
-
-a1, a2 : []; % empty tuples (a unit type)
-b1, b2 : [##]; % empty records (a unit type)
-c1, c2 : [[]]; % 1-tuples of the empty tuple (a unit type)
-d1, d2 : [#x:[[##]],y:[#z:[]#]#]; % more complicated records (still a unit type)
-
-% EXPECT: entailed
-QUERY a1 = a2;
-
-% EXPECT: entailed
-QUERY b1 = b2;
-
-% EXPECT: entailed
-QUERY c1 = c2;
-
-% EXPECT: entailed
-QUERY d1 = d2;
-
--- /dev/null
+; COMMAND-LINE:
+; EXPECT: unsat
+; EXPECT: unsat
+; EXPECT: unsat
+; EXPECT: unsat
+(set-logic ALL)
+(set-option :incremental true)
+(declare-fun a1 () Tuple)
+(declare-fun a2 () Tuple)
+(declare-datatypes ((__cvc5_record 0)) (((__cvc5_record_ctor))))
+(declare-fun b1 () __cvc5_record)
+(declare-fun b2 () __cvc5_record)
+(declare-fun c1 () (Tuple Tuple))
+(declare-fun c2 () (Tuple Tuple))
+(declare-datatypes ((__cvc5_record_z_Tuple 0)) (((__cvc5_record_z_Tuple_ctor (z Tuple)))))
+(declare-datatypes ((|__cvc5_record_x_(Tuple __cvc5_record)_y___cvc5_record_z_Tuple| 0)) (((|__cvc5_record_x_(Tuple __cvc5_record)_y___cvc5_record_z_Tuple_ctor| (x (Tuple __cvc5_record)) (y __cvc5_record_z_Tuple)))))
+(declare-fun d1 () |__cvc5_record_x_(Tuple __cvc5_record)_y___cvc5_record_z_Tuple|)
+(declare-fun d2 () |__cvc5_record_x_(Tuple __cvc5_record)_y___cvc5_record_z_Tuple|)
+(check-sat-assuming ( (not (= a1 a2)) ))
+(check-sat-assuming ( (not (= b1 b2)) ))
+(check-sat-assuming ( (not (= c1 c2)) ))
+(check-sat-assuming ( (not (= d1 d2)) ))
+++ /dev/null
-% COMMAND-LINE: -q
-% EXPECT: sat
-Ints_0 : ARRAY INT OF INT;
-C : TYPE = [# i : INT #];
-CType : TYPE = ARRAY INT OF C;
-C_0 : CType;
-x : INT;
-C_1 : CType = C_0 WITH [0].i := 2;
-
-ASSERT C_0[0].i = 0;
-ASSERT C_0[1].i = 1;
-ASSERT Ints_0[2] = Ints_0[0];
-ASSERT x = Ints_0[C_1[0].i];
-ASSERT x /= Ints_0[C_1[1].i];
-CHECKSAT;
--- /dev/null
+; COMMAND-LINE: -q
+; EXPECT: sat
+(set-logic ALL)
+(set-option :incremental false)
+(declare-fun Ints_0 () (Array Int Int))
+(declare-datatypes ((__cvc5_record_i_Int 0)) (((__cvc5_record_i_Int_ctor (i Int)))))
+
+
+(declare-fun C_0 () (Array Int __cvc5_record_i_Int))
+(declare-fun x () Int)
+(define-fun C_1 () (Array Int __cvc5_record_i_Int) (store C_0 0 ((_ update i) (select C_0 0) 2)))
+(assert (= (i (select C_0 0)) 0))
+(assert (= (i (select C_0 1)) 1))
+(assert (= (select Ints_0 2) (select Ints_0 0)))
+(assert (= x (select Ints_0 (i (select (store C_0 0 ((_ update i) (select C_0 0) 2)) 0)))))
+(assert (not (= x (select Ints_0 (i (select (store C_0 0 ((_ update i) (select C_0 0) 2)) 1))))))
+(check-sat)
+++ /dev/null
-% EXPECT: entailed
-
-DATATYPE nat = succ(pred : nat2) | zero,
- nat2 = succ2(pred2 : nat) | zero2 END;
-
-x : nat;
-
-DATATYPE list = cons(car : tree, cdr: list) | nil,
- tree = node(left : tree, right : tree) | leaf(data : list) END;
-
-y : tree;
-
-QUERY (is_succ(x) => is_zero2(pred(x)) OR is_succ2(pred(x)))
- AND (is_leaf(y) => is_cons(data(y)) OR is_nil(data(y)));
--- /dev/null
+; EXPECT: unsat
+(set-logic ALL)
+(set-option :incremental false)
+(declare-datatypes ((nat 0)(nat2 0)) (((succ (pred nat2)) (zero))((succ2 (pred2 nat)) (zero2))))
+(declare-fun x () nat)
+(declare-datatypes ((list 0)(tree 0)) (((cons (car tree) (cdr list)) (nil))((node (left tree) (right tree)) (leaf (data list)))))
+(declare-fun y () tree)
+(check-sat-assuming ( (not (let ((_let_1 (data y))) (let ((_let_2 (pred x))) (and (=> ((_ is succ) x) (or ((_ is zero2) _let_2) ((_ is succ2) _let_2))) (=> ((_ is leaf) y) (or ((_ is cons) _let_1) ((_ is nil) _let_1))))))) ))
+++ /dev/null
-% EXPECT: sat
-
-DATATYPE
- pair[T1,T2] = mkpair(first:T1, second:T2)
-END;
-
-x : pair[BOOLEAN,BOOLEAN];
-
-ASSERT x = mkpair(TRUE,TRUE);
-CHECKSAT;
--- /dev/null
+; EXPECT: sat
+(set-logic ALL)
+(set-option :incremental false)
+(declare-datatypes ((pair 2)) ((par (T1 T2)((mkpair (first T1) (second T2))))))
+(declare-fun x () (pair Bool Bool))
+(assert (= x (mkpair true true)))
+(check-sat)
+++ /dev/null
-% EXPECT: sat
-DATATYPE
-List[X,Y] = nil | cons (head: X, tail: List[Y,X])
-END;
-
-x : List[INT,STRING]; % = cons(1, nil::List[STRING,INT]);
-y : List[INT,STRING];
-
-ASSERT NOT( x = y );
-
-ASSERT NOT ( x = tail(tail(x)) );
-
-CHECKSAT;
--- /dev/null
+; EXPECT: sat
+(set-logic ALL)
+(set-option :incremental false)
+(declare-datatypes ((List 2)) ((par (X Y)((nil) (cons (head X) (tail (List Y X)))))))
+(declare-fun x () (List Int String))
+(declare-fun y () (List Int String))
+(assert (not (= x y)))
+(assert (not (= x (tail (tail x)))))
+(check-sat)
+++ /dev/null
-% EXPECT: entailed
-c : BOOLEAN;
-a17 : BOOLEAN = ((# _a := 2, _b := 2 #) = (
- IF c THEN (# _a := 3, _b := 2 #)
- ELSE (# _a := 1, _b := 2 #)
- ENDIF WITH ._a := 2));
-QUERY a17;
--- /dev/null
+; EXPECT: unsat
+(set-logic ALL)
+(set-option :incremental false)
+(declare-fun c () Bool)
+(declare-datatypes ((__cvc5_record__a_Int__b_Int 0)) (((__cvc5_record__a_Int__b_Int_ctor (_a Int) (_b Int)))))
+(define-fun a17 () Bool (= (__cvc5_record__a_Int__b_Int_ctor 2 2) ((_ update _a) (ite c (__cvc5_record__a_Int__b_Int_ctor 3 2) (__cvc5_record__a_Int__b_Int_ctor 1 2)) 2)))
+(check-sat-assuming ( (not (= (__cvc5_record__a_Int__b_Int_ctor 2 2) ((_ update _a) (ite c (__cvc5_record__a_Int__b_Int_ctor 3 2) (__cvc5_record__a_Int__b_Int_ctor 1 2)) 2))) ))
+++ /dev/null
-% EXPECT: entailed
-c : BOOLEAN;
-a16 : [# _a : INT, _b : INT #] = (
- IF c THEN (# _a := 3, _b := 2 #)
- ELSE (# _a := 1, _b := 5 #)
- ENDIF WITH ._a := 2);
-a21 : BOOLEAN =
- IF c THEN ((# _a := 2, _b := 2 #) = a16)
- ELSE ((# _a := 2, _b := 5 #) = a16)
- ENDIF;
-QUERY a21;
--- /dev/null
+; EXPECT: unsat
+(set-logic ALL)
+(set-option :incremental false)
+(declare-fun c () Bool)
+(declare-datatypes ((__cvc5_record__a_Int__b_Int 0)) (((__cvc5_record__a_Int__b_Int_ctor (_a Int) (_b Int)))))
+(define-fun a16 () __cvc5_record__a_Int__b_Int ((_ update _a) (ite c (__cvc5_record__a_Int__b_Int_ctor 3 2) (__cvc5_record__a_Int__b_Int_ctor 1 5)) 2))
+(define-fun a21 () Bool (let ((_let_1 ((_ update _a) (ite c (__cvc5_record__a_Int__b_Int_ctor 3 2) (__cvc5_record__a_Int__b_Int_ctor 1 5)) 2))) (ite c (= (__cvc5_record__a_Int__b_Int_ctor 2 2) _let_1) (= (__cvc5_record__a_Int__b_Int_ctor 2 5) _let_1))))
+(check-sat-assuming ( (not (let ((_let_1 ((_ update _a) (ite c (__cvc5_record__a_Int__b_Int_ctor 3 2) (__cvc5_record__a_Int__b_Int_ctor 1 5)) 2))) (ite c (= (__cvc5_record__a_Int__b_Int_ctor 2 2) _let_1) (= (__cvc5_record__a_Int__b_Int_ctor 2 5) _let_1)))) ))
+++ /dev/null
-% EXPECT: entailed
-a : BOOLEAN;
-a49 : BOOLEAN = (
- IF a THEN (# _a := 1 #)
- ELSE (# _a := 2 #)
- ENDIF = (# _a :=
- IF a THEN 1
- ELSE 2
- ENDIF #));
-QUERY a49;
--- /dev/null
+; EXPECT: unsat
+(set-logic ALL)
+(set-option :incremental false)
+(declare-fun a () Bool)
+(declare-datatypes ((__cvc5_record__a_Int 0)) (((__cvc5_record__a_Int_ctor (_a Int)))))
+(define-fun a49 () Bool (= (ite a (__cvc5_record__a_Int_ctor 1) (__cvc5_record__a_Int_ctor 2)) (__cvc5_record__a_Int_ctor (ite a 1 2))))
+(check-sat-assuming ( (not (= (ite a (__cvc5_record__a_Int_ctor 1) (__cvc5_record__a_Int_ctor 2)) (__cvc5_record__a_Int_ctor (ite a 1 2)))) ))
+++ /dev/null
-% EXPECT: entailed
-
-% simple test for rewriter cases
-
-DATATYPE single_ctor = foo(bar:REAL) END;
-DATATYPE double_ctor = foo2(bar2:REAL) | baz END;
-
-x: single_ctor;
-y: double_ctor;
-
-QUERY is_foo(x) AND bar2(foo2(0.0)) = 0.0;
-
--- /dev/null
+; EXPECT: unsat
+(set-logic ALL)
+(set-option :incremental false)
+(declare-datatypes ((single_ctor 0)) (((foo (bar Real)))))
+(declare-datatypes ((double_ctor 0)) (((foo2 (bar2 Real)) (baz))))
+(declare-fun x () single_ctor)
+(declare-fun y () double_ctor)
+(check-sat-assuming ( (not (let ((_let_1 0.0)) (and ((_ is foo) x) (= (bar2 (foo2 _let_1)) _let_1)))) ))
+++ /dev/null
-% EXPECT: sat
-DATATYPE list[T] = cons(car:T, care:BOOLEAN, cdr:list[T]) | nil END;
-x : list[REAL];
-
-y : [INT,BOOLEAN,INT];
-ASSERT y = (5,TRUE,4);
-
-ASSERT y.1;
-
-ASSERT x = cons(1.1,TRUE,nil::list[REAL])::list[REAL];
-CHECKSAT;
--- /dev/null
+; EXPECT: sat
+(set-logic ALL)
+(set-option :incremental false)
+(declare-datatypes ((list 1)) ((par (T)((cons (car T) (care Bool) (cdr (list T))) (nil)))))
+(declare-fun x () (list Real))
+(declare-fun y () (Tuple Int Bool Int))
+(assert (= y (mkTuple 5 true 4)))
+(assert ((_ tupSel 1) y))
+(assert (= x ((as cons (list Real)) (/ 11 10) true (as nil (list Real)))))
+(check-sat)
+++ /dev/null
-% EXPECT: sat
-% EXPECT: ((left(x), leaf))
-OPTION "produce-models";
-DATATYPE
- tree = node(left : tree, right : tree) | leaf
-END;
-x : tree;
-ASSERT is_leaf(left(x));
-CHECKSAT;
-GET_VALUE left(x);
--- /dev/null
+; EXPECT: sat
+; EXPECT: (((left x) leaf))
+(set-logic ALL)
+(set-option :incremental false)
+(set-option :produce-models true)
+(declare-datatypes ((tree 0)) (((node (left tree) (right tree)) (leaf))))
+(declare-fun x () tree)
+(assert ((_ is leaf) (left x)))
+(check-sat)
+(get-value ( (left x) ))
+++ /dev/null
-% This was breaking with --check-models due to tuple model breakage.
-% EXPECT: sat
-x : [ INT, INT ];
-ASSERT x.0 = 5;
-CHECKSAT;
--- /dev/null
+; EXPECT: sat
+(set-logic ALL)
+(set-option :incremental false)
+(declare-fun x () (Tuple Int Int))
+(assert (= ((_ tupSel 0) x) 5))
+(check-sat)
+++ /dev/null
-% EXPECT: sat
-OPTION "logic" "ALL";
-
-x : [ REAL, REAL ];
-y : REAL;
-z : REAL;
-
-ASSERT x = (y, z) OR x = (z, y);
-ASSERT x = (0.0,0.0) OR x = (1.0,1.0);
-
-CHECKSAT;
--- /dev/null
+; EXPECT: sat
+(set-option :incremental false)
+(set-logic ALL)
+(declare-fun x () (Tuple Real Real))
+(declare-fun y () Real)
+(declare-fun z () Real)
+(assert (or (= x (mkTuple y z)) (= x (mkTuple z y))))
+(assert (let ((_let_1 1.0)) (let ((_let_2 0.0)) (or (= x (mkTuple _let_2 _let_2)) (= x (mkTuple _let_1 _let_1))))))
+(check-sat)
+++ /dev/null
-% EXPECT: not_entailed
-
-Mem_0 : TYPE = ARRAY INT OF INT;
-
-MEMORY : TYPE = [# int : Mem_0, queries : Mem_0 #];
-
-x : INT;
-
-foo : MEMORY -> MEMORY
- = LAMBDA (x : MEMORY) : LET y = x WITH .int := x.int IN y;
-
-m : MEMORY;
-
-w : [MEMORY,INT] =
- IF x = 0
- THEN (foo(m),0)
- ELSE (m, 0)
- ENDIF;
-
-QUERY w.1 = 1;
--- /dev/null
+; EXPECT: sat
+(set-logic ALL)
+(set-option :incremental false)
+
+(declare-datatypes ((|__cvc5_record_int_(Array Int Int)_queries_(Array Int Int)| 0)) (((|__cvc5_record_int_(Array Int Int)_queries_(Array Int Int)_ctor| (int (Array Int Int)) (queries (Array Int Int))))))
+
+(declare-fun x () Int)
+(define-fun foo ((x |__cvc5_record_int_(Array Int Int)_queries_(Array Int Int)|)) |__cvc5_record_int_(Array Int Int)_queries_(Array Int Int)| ((_ update int) x (int x)))
+(declare-fun m () |__cvc5_record_int_(Array Int Int)_queries_(Array Int Int)|)
+(define-fun w () (Tuple |__cvc5_record_int_(Array Int Int)_queries_(Array Int Int)| Int) (ite (= x 0) (mkTuple (foo m) 0) (mkTuple m 0)))
+(check-sat-assuming ( (not (= ((_ tupSel 1) (ite (= x 0) (mkTuple (foo m) 0) (mkTuple m 0))) 1)) ))
+++ /dev/null
-% EXPECT: entailed
-x: [REAL,INT,REAL] = ( 4/5, 9, 11/9 );
-first_elem: REAL = x.0;
-third_elem: REAL = x.2;
-
-Tup: TYPE = [REAL,INT,REAL];
-y: Tup = ( 4/5, 9, 11/9 );
-y1: Tup = y WITH .1 := 3;
-
-QUERY x=y AND first_elem = y1.0 AND third_elem = y1.2 AND y1.1 = 3;
--- /dev/null
+; EXPECT: unsat
+(set-logic ALL)
+(set-option :incremental false)
+(define-fun x () (Tuple Real Int Real) (mkTuple (/ 4 5) 9 (/ 11 9)))
+(define-fun first_elem () Real ((_ tupSel 0) (mkTuple (/ 4 5) 9 (/ 11 9))))
+(define-fun third_elem () Real ((_ tupSel 2) (mkTuple (/ 4 5) 9 (/ 11 9))))
+
+(define-fun y () (Tuple Real Int Real) (mkTuple (/ 4 5) 9 (/ 11 9)))
+(define-fun y1 () (Tuple Real Int Real) ((_ tuple_update 1) (mkTuple (/ 4 5) 9 (/ 11 9)) 3))
+(check-sat-assuming ( (not (let ((_let_1 (mkTuple (/ 4 5) 9 (/ 11 9)))) (let ((_let_2 ((_ tuple_update 1) _let_1 3))) (and (and (and (= _let_1 _let_1) (= ((_ tupSel 0) _let_1) ((_ tupSel 0) _let_2))) (= ((_ tupSel 2) _let_1) ((_ tupSel 2) _let_2))) (= ((_ tupSel 1) _let_2) 3))))) ))
+++ /dev/null
-% EXPECT: entailed
-DATATYPE
- nat = succ(pred : nat) | zero,
- list = cons(car : tree, cdr : list) | null,
- tree = node(children : list) | leaf(data : nat)
-END;
-
-x1 : nat ;
-x2 : nat ;
-x3 : nat ;
-x4 : nat ;
-x5 : nat ;
-x6 : nat ;
-x7 : nat ;
-x8 : nat ;
-x9 : nat ;
-x10 : nat ;
-x11 : list ;
-x12 : list ;
-x13 : list ;
-x14 : list ;
-x15 : list ;
-x16 : list ;
-x17 : list ;
-x18 : list ;
-x19 : list ;
-x20 : list ;
-x21 : tree ;
-x22 : tree ;
-x23 : tree ;
-x24 : tree ;
-x25 : tree ;
-x26 : tree ;
-x27 : tree ;
-x28 : tree ;
-x29 : tree ;
-x30 : tree ;
-
-QUERY
-
-(NOT (((x4 = x4)
- AND (NOT is_leaf((LET x81 = null IN (IF is_cons(x81) THEN car(x81) ELSE leaf(zero) ENDIF)))))
- AND (NOT (x10 = x2))));
--- /dev/null
+; EXPECT: unsat
+(set-logic ALL)
+(set-option :incremental false)
+(declare-datatypes ((nat 0)(list 0)(tree 0)) (((succ (pred nat)) (zero))((cons (car tree) (cdr list)) (null))((node (children list)) (leaf (data nat)))))
+(declare-fun x1 () nat)
+(declare-fun x2 () nat)
+(declare-fun x3 () nat)
+(declare-fun x4 () nat)
+(declare-fun x5 () nat)
+(declare-fun x6 () nat)
+(declare-fun x7 () nat)
+(declare-fun x8 () nat)
+(declare-fun x9 () nat)
+(declare-fun x10 () nat)
+(declare-fun x11 () list)
+(declare-fun x12 () list)
+(declare-fun x13 () list)
+(declare-fun x14 () list)
+(declare-fun x15 () list)
+(declare-fun x16 () list)
+(declare-fun x17 () list)
+(declare-fun x18 () list)
+(declare-fun x19 () list)
+(declare-fun x20 () list)
+(declare-fun x21 () tree)
+(declare-fun x22 () tree)
+(declare-fun x23 () tree)
+(declare-fun x24 () tree)
+(declare-fun x25 () tree)
+(declare-fun x26 () tree)
+(declare-fun x27 () tree)
+(declare-fun x28 () tree)
+(declare-fun x29 () tree)
+(declare-fun x30 () tree)
+(check-sat-assuming ( (not (not (and (and (= x4 x4) (not ((_ is leaf) (ite ((_ is cons) null) (car null) (leaf zero))))) (not (= x10 x2))))) ))
+++ /dev/null
-% EXPECT: entailed
-DATATYPE
- nat = succ(pred : nat) | zero,
- list = cons(car : tree, cdr : list) | null,
- tree = node(children : list) | leaf(data : nat)
-END;
-
-x1 : nat ;
-x2 : list ;
-x3 : tree ;
-
-QUERY
-
-(NOT ((((((((NOT is_succ((LET x90 = (LET x91 = node(cons(x3,cons((LET x92 = (LET x93 = cons(node(x2),(LET x94 = node((LET x95 = null IN (IF is_cons(x95) THEN cdr(x95) ELSE null ENDIF))) IN (IF is_node(x94) THEN children(x94) ELSE null ENDIF))) IN (IF is_cons(x93) THEN cdr(x93) ELSE null ENDIF)) IN (IF is_cons(x92) THEN car(x92) ELSE leaf(zero) ENDIF)),cons(node(cons(node((LET x96 = node(x2) IN (IF is_node(x96) THEN children(x96) ELSE null ENDIF))),cons((LET x97 = (LET x98 = leaf((LET x99 = node((LET x100 = null IN (IF is_cons(x100) THEN cdr(x100) ELSE null ENDIF))) IN (IF is_leaf(x99) THEN data(x99) ELSE zero ENDIF))) IN (IF is_node(x98) THEN children(x98) ELSE null ENDIF)) IN (IF is_cons(x97) THEN car(x97) ELSE leaf(zero) ENDIF)),(LET x101 = (LET x102 = (LET x103 = node(x2) IN (IF is_node(x103) THEN children(x103) ELSE null ENDIF)) IN (IF is_cons(x102) THEN car(x102) ELSE leaf(zero) ENDIF)) IN (IF is_node(x101) THEN children(x101) ELSE null ENDIF))))),cons(leaf(succ((LET x104 = (LET x105 = (LET x106 = null IN (IF is_cons(x106) THEN car(x106) ELSE leaf(zero) ENDIF)) IN (IF is_leaf(x105) THEN data(x105) ELSE zero ENDIF)) IN (IF is_succ(x104) THEN pred(x104) ELSE zero ENDIF)))),null))))) IN (IF is_leaf(x91) THEN data(x91) ELSE zero ENDIF)) IN (IF is_succ(x90) THEN pred(x90) ELSE zero ENDIF))))
- AND (node((LET x87 = cons((LET x88 = null IN (IF is_cons(x88) THEN car(x88) ELSE leaf(zero) ENDIF)),(LET x89 = cons(node(cons(x3,x2)),null) IN (IF is_cons(x89) THEN cdr(x89) ELSE null ENDIF))) IN (IF is_cons(x87) THEN cdr(x87) ELSE null ENDIF))) = (LET x85 = (LET x86 = x3 IN (IF is_node(x86) THEN children(x86) ELSE null ENDIF)) IN (IF is_cons(x85) THEN car(x85) ELSE leaf(zero) ENDIF))))
- AND is_null((LET x83 = cons(node(null),(LET x84 = x2 IN (IF is_cons(x84) THEN cdr(x84) ELSE null ENDIF))) IN (IF is_cons(x83) THEN cdr(x83) ELSE null ENDIF))))
- AND is_null(cons(leaf((LET x77 = succ((LET x78 = (LET x79 = zero IN (IF is_succ(x79) THEN pred(x79) ELSE zero ENDIF)) IN (IF is_succ(x78) THEN pred(x78) ELSE zero ENDIF))) IN (IF is_succ(x77) THEN pred(x77) ELSE zero ENDIF))),(LET x80 = leaf((LET x81 = succ((LET x82 = x3 IN (IF is_leaf(x82) THEN data(x82) ELSE zero ENDIF))) IN (IF is_succ(x81) THEN pred(x81) ELSE zero ENDIF))) IN (IF is_node(x80) THEN children(x80) ELSE null ENDIF)))))
- AND is_node(leaf(zero)))
- AND (NOT (x2 = null)))
- AND (NOT is_zero((LET x76 = node(cons(leaf(succ(zero)),null)) IN (IF is_leaf(x76) THEN data(x76) ELSE zero ENDIF)))))
- AND is_null((LET x74 = (LET x75 = null IN (IF is_cons(x75) THEN cdr(x75) ELSE null ENDIF)) IN (IF is_cons(x74) THEN cdr(x74) ELSE null ENDIF)))));
--- /dev/null
+; EXPECT: unsat
+(set-logic ALL)
+(set-option :incremental false)
+(declare-datatypes ((nat 0)(list 0)(tree 0)) (((succ (pred nat)) (zero))((cons (car tree) (cdr list)) (null))((node (children list)) (leaf (data nat)))))
+(declare-fun x1 () nat)
+(declare-fun x2 () list)
+(declare-fun x3 () tree)
+(check-sat-assuming ( (not (let ((_let_1 ((_ is cons) null))) (let ((_let_2 (ite _let_1 (cdr null) null))) (let ((_let_3 (node (cons (leaf (succ zero)) null)))) (let ((_let_4 (leaf zero))) (let ((_let_5 (succ (ite ((_ is leaf) x3) (data x3) zero)))) (let ((_let_6 (leaf (ite ((_ is succ) _let_5) (pred _let_5) zero)))) (let ((_let_7 (ite ((_ is succ) zero) (pred zero) zero))) (let ((_let_8 (succ (ite ((_ is succ) _let_7) (pred _let_7) zero)))) (let ((_let_9 (cons (node null) (ite ((_ is cons) x2) (cdr x2) null)))) (let ((_let_10 (ite ((_ is node) x3) (children x3) null))) (let ((_let_11 (cons (node (cons x3 x2)) null))) (let ((_let_12 (ite _let_1 (car null) _let_4))) (let ((_let_13 (cons _let_12 (ite ((_ is cons) _let_11) (cdr _let_11) null)))) (let ((_let_14 (ite ((_ is leaf) _let_12) (data _let_12) zero))) (let ((_let_15 (node x2))) (let ((_let_16 (ite ((_ is node) _let_15) (children _let_15) null))) (let ((_let_17 (ite ((_ is cons) _let_16) (car _let_16) _let_4))) (let ((_let_18 (node _let_2))) (let ((_let_19 (leaf (ite ((_ is leaf) _let_18) (data _let_18) zero)))) (let ((_let_20 (ite ((_ is node) _let_19) (children _let_19) null))) (let ((_let_21 (cons _let_15 (ite ((_ is node) _let_18) (children _let_18) null)))) (let ((_let_22 (ite ((_ is cons) _let_21) (cdr _let_21) null))) (let ((_let_23 (node (cons x3 (cons (ite ((_ is cons) _let_22) (car _let_22) _let_4) (cons (node (cons (node _let_16) (cons (ite ((_ is cons) _let_20) (car _let_20) _let_4) (ite ((_ is node) _let_17) (children _let_17) null)))) (cons (leaf (succ (ite ((_ is succ) _let_14) (pred _let_14) zero))) null))))))) (let ((_let_24 (ite ((_ is leaf) _let_23) (data _let_23) zero))) (not (and (and (and (and (and (and (and (not ((_ is succ) (ite ((_ is succ) _let_24) (pred _let_24) zero))) (= (node (ite ((_ is cons) _let_13) (cdr _let_13) null)) (ite ((_ is cons) _let_10) (car _let_10) _let_4))) ((_ is null) (ite ((_ is cons) _let_9) (cdr _let_9) null))) ((_ is null) (cons (leaf (ite ((_ is succ) _let_8) (pred _let_8) zero)) (ite ((_ is node) _let_6) (children _let_6) null)))) ((_ is node) _let_4)) (not (= x2 null))) (not ((_ is zero) (ite ((_ is leaf) _let_3) (data _let_3) zero)))) ((_ is null) (ite ((_ is cons) _let_2) (cdr _let_2) null))))))))))))))))))))))))))))) ))
+++ /dev/null
-% EXPECT: not_entailed
-DATATYPE
- nat = succ(pred : nat) | zero,
- list = cons(car : tree, cdr : list) | null,
- tree = node(children : list) | leaf(data : nat)
-END;
-
-x1 : nat ;
-x2 : nat ;
-x3 : list ;
-x4 : list ;
-x5 : tree ;
-x6 : tree ;
-
-QUERY
-
-(NOT ((is_node(x6)
- AND (x6 = x5))
- AND (NOT (null = cons(x6,x3)))));
--- /dev/null
+; EXPECT: sat
+(set-logic ALL)
+(set-option :incremental false)
+(declare-datatypes ((nat 0)(list 0)(tree 0)) (((succ (pred nat)) (zero))((cons (car tree) (cdr list)) (null))((node (children list)) (leaf (data nat)))))
+(declare-fun x1 () nat)
+(declare-fun x2 () nat)
+(declare-fun x3 () list)
+(declare-fun x4 () list)
+(declare-fun x5 () tree)
+(declare-fun x6 () tree)
+(check-sat-assuming ( (not (not (and (and ((_ is node) x6) (= x6 x5)) (not (= null (cons x6 x3)))))) ))
+++ /dev/null
-% EXPECT: entailed
-DATATYPE
- nat = succ(pred : nat) | zero,
- list = cons(car : tree, cdr : list) | null,
- tree = node(children : list) | leaf(data : nat)
-END;
-
-x1 : nat ;
-x2 : nat ;
-x3 : nat ;
-x4 : list ;
-x5 : list ;
-x6 : list ;
-x7 : tree ;
-x8 : tree ;
-x9 : tree ;
-
-QUERY
-
-(NOT (((LET x137 = x1 IN (IF is_succ(x137) THEN pred(x137) ELSE zero ENDIF)) = (LET x135 = (LET x136 = null IN (IF is_cons(x136) THEN car(x136) ELSE leaf(zero) ENDIF)) IN (IF is_leaf(x135) THEN data(x135) ELSE zero ENDIF)))
- AND (cons(node(x6),(LET x134 = x7 IN (IF is_node(x134) THEN children(x134) ELSE null ENDIF))) = (LET x132 = node((LET x133 = x6 IN (IF is_cons(x133) THEN cdr(x133) ELSE null ENDIF))) IN (IF is_node(x132) THEN children(x132) ELSE null ENDIF)))));
--- /dev/null
+; EXPECT: unsat
+(set-logic ALL)
+(set-option :incremental false)
+(declare-datatypes ((nat 0)(list 0)(tree 0)) (((succ (pred nat)) (zero))((cons (car tree) (cdr list)) (null))((node (children list)) (leaf (data nat)))))
+(declare-fun x1 () nat)
+(declare-fun x2 () nat)
+(declare-fun x3 () nat)
+(declare-fun x4 () list)
+(declare-fun x5 () list)
+(declare-fun x6 () list)
+(declare-fun x7 () tree)
+(declare-fun x8 () tree)
+(declare-fun x9 () tree)
+(check-sat-assuming ( (not (let ((_let_1 (node (ite ((_ is cons) x6) (cdr x6) null)))) (let ((_let_2 (ite ((_ is cons) null) (car null) (leaf zero)))) (not (and (= (ite ((_ is succ) x1) (pred x1) zero) (ite ((_ is leaf) _let_2) (data _let_2) zero)) (= (cons (node x6) (ite ((_ is node) x7) (children x7) null)) (ite ((_ is node) _let_1) (children _let_1) null))))))) ))
+++ /dev/null
-% EXPECT: entailed
-DATATYPE
- nat = succ(pred : nat) | zero,
- list = cons(car : tree, cdr : list) | null,
- tree = node(children : list) | leaf(data : nat)
-END;
-
-x1 : nat ;
-x2 : nat ;
-x3 : nat ;
-x4 : nat ;
-x5 : nat ;
-x6 : list ;
-x7 : list ;
-x8 : list ;
-x9 : list ;
-x10 : list ;
-x11 : tree ;
-x12 : tree ;
-x13 : tree ;
-x14 : tree ;
-x15 : tree ;
-
-QUERY
-
-(NOT ((is_cons((LET x121 = leaf((LET x122 = x13 IN (IF is_leaf(x122) THEN data(x122) ELSE zero ENDIF))) IN (IF is_node(x121) THEN children(x121) ELSE null ENDIF)))
- AND (x15 = node(x6)))
- AND (NOT is_cons(x10))));
--- /dev/null
+; EXPECT: unsat
+(set-logic ALL)
+(set-option :incremental false)
+(declare-datatypes ((nat 0)(list 0)(tree 0)) (((succ (pred nat)) (zero))((cons (car tree) (cdr list)) (null))((node (children list)) (leaf (data nat)))))
+(declare-fun x1 () nat)
+(declare-fun x2 () nat)
+(declare-fun x3 () nat)
+(declare-fun x4 () nat)
+(declare-fun x5 () nat)
+(declare-fun x6 () list)
+(declare-fun x7 () list)
+(declare-fun x8 () list)
+(declare-fun x9 () list)
+(declare-fun x10 () list)
+(declare-fun x11 () tree)
+(declare-fun x12 () tree)
+(declare-fun x13 () tree)
+(declare-fun x14 () tree)
+(declare-fun x15 () tree)
+(check-sat-assuming ( (not (let ((_let_1 (leaf (ite ((_ is leaf) x13) (data x13) zero)))) (not (and (and ((_ is cons) (ite ((_ is node) _let_1) (children _let_1) null)) (= x15 (node x6))) (not ((_ is cons) x10)))))) ))
+++ /dev/null
-% EXPECT: entailed
-DATATYPE
- nat = succ(pred : nat) | zero,
- list = cons(car : tree, cdr : list) | null,
- tree = node(children : list) | leaf(data : nat)
-END;
-
-x1 : nat ;
-x2 : nat ;
-x3 : nat ;
-x4 : nat ;
-x5 : nat ;
-x6 : nat ;
-x7 : nat ;
-x8 : nat ;
-x9 : nat ;
-x10 : nat ;
-x11 : list ;
-x12 : list ;
-x13 : list ;
-x14 : list ;
-x15 : list ;
-x16 : list ;
-x17 : list ;
-x18 : list ;
-x19 : list ;
-x20 : list ;
-x21 : tree ;
-x22 : tree ;
-x23 : tree ;
-x24 : tree ;
-x25 : tree ;
-x26 : tree ;
-x27 : tree ;
-x28 : tree ;
-x29 : tree ;
-x30 : tree ;
-
-QUERY
-
-(NOT ((((NOT is_zero(x3))
- AND (x8 = zero))
- AND (NOT (x25 = x28)))
- AND (NOT is_zero(x8))));
--- /dev/null
+; EXPECT: unsat
+(set-logic ALL)
+(set-option :incremental false)
+(declare-datatypes ((nat 0)(list 0)(tree 0)) (((succ (pred nat)) (zero))((cons (car tree) (cdr list)) (null))((node (children list)) (leaf (data nat)))))
+(declare-fun x1 () nat)
+(declare-fun x2 () nat)
+(declare-fun x3 () nat)
+(declare-fun x4 () nat)
+(declare-fun x5 () nat)
+(declare-fun x6 () nat)
+(declare-fun x7 () nat)
+(declare-fun x8 () nat)
+(declare-fun x9 () nat)
+(declare-fun x10 () nat)
+(declare-fun x11 () list)
+(declare-fun x12 () list)
+(declare-fun x13 () list)
+(declare-fun x14 () list)
+(declare-fun x15 () list)
+(declare-fun x16 () list)
+(declare-fun x17 () list)
+(declare-fun x18 () list)
+(declare-fun x19 () list)
+(declare-fun x20 () list)
+(declare-fun x21 () tree)
+(declare-fun x22 () tree)
+(declare-fun x23 () tree)
+(declare-fun x24 () tree)
+(declare-fun x25 () tree)
+(declare-fun x26 () tree)
+(declare-fun x27 () tree)
+(declare-fun x28 () tree)
+(declare-fun x29 () tree)
+(declare-fun x30 () tree)
+(check-sat-assuming ( (not (not (and (and (and (not ((_ is zero) x3)) (= x8 zero)) (not (= x25 x28))) (not ((_ is zero) x8))))) ))
+++ /dev/null
-% EXPECT: entailed
-DATATYPE
- nat = succ(pred : nat) | zero,
- list = cons(car : tree, cdr : list) | null,
- tree = node(children : list) | leaf(data : nat)
-END;
-
-x1 : nat ;
-x2 : nat ;
-x3 : list ;
-x4 : list ;
-x5 : tree ;
-x6 : tree ;
-
-QUERY
-
-(NOT (((is_leaf(x5)
- AND (NOT (x2 = x1)))
- AND (x2 = pred(pred(zero))))
- AND (NOT is_node(node(null)))));
--- /dev/null
+; EXPECT: unsat
+(set-logic ALL)
+(set-option :incremental false)
+(declare-datatypes ((nat 0)(list 0)(tree 0)) (((succ (pred nat)) (zero))((cons (car tree) (cdr list)) (null))((node (children list)) (leaf (data nat)))))
+(declare-fun x1 () nat)
+(declare-fun x2 () nat)
+(declare-fun x3 () list)
+(declare-fun x4 () list)
+(declare-fun x5 () tree)
+(declare-fun x6 () tree)
+(check-sat-assuming ( (not (not (and (and (and ((_ is leaf) x5) (not (= x2 x1))) (= x2 (pred (pred zero)))) (not ((_ is node) (node null)))))) ))
+++ /dev/null
-% COMMAND-LINE: -q
-% EXPECT: not_entailed
-DATATYPE
- nat = succ(pred : nat) | zero,
- list = cons(car : tree, cdr : list) | null,
- tree = node(children : list) | leaf(data : nat)
-END;
-
-x1 : nat ;
-x2 : nat ;
-x3 : nat ;
-x4 : list ;
-x5 : list ;
-x6 : list ;
-x7 : tree ;
-x8 : tree ;
-x9 : tree ;
-
-QUERY
-
-(NOT ((((((NOT is_succ(pred(data(leaf(x3)))))
- AND (x1 = zero))
- AND (NOT is_zero(succ(succ(zero)))))
- AND (NOT (x3 = x2)))
- AND (x4 = cdr(x5)))
- AND is_cons(cons(x8,x5))));
--- /dev/null
+; COMMAND-LINE: -q
+; EXPECT: sat
+(set-logic ALL)
+(set-option :incremental false)
+(declare-datatypes ((nat 0)(list 0)(tree 0)) (((succ (pred nat)) (zero))((cons (car tree) (cdr list)) (null))((node (children list)) (leaf (data nat)))))
+(declare-fun x1 () nat)
+(declare-fun x2 () nat)
+(declare-fun x3 () nat)
+(declare-fun x4 () list)
+(declare-fun x5 () list)
+(declare-fun x6 () list)
+(declare-fun x7 () tree)
+(declare-fun x8 () tree)
+(declare-fun x9 () tree)
+(check-sat-assuming ( (not (not (and (and (and (and (and (not ((_ is succ) (pred (data (leaf x3))))) (= x1 zero)) (not ((_ is zero) (succ (succ zero))))) (not (= x3 x2))) (= x4 (cdr x5))) ((_ is cons) (cons x8 x5))))) ))
+++ /dev/null
-% EXPECT: not_entailed
-DATATYPE
- nat = succ(pred : nat) | zero,
- list = cons(car : tree, cdr : list) | null,
- tree = node(children : list) | leaf(data : nat)
-END;
-
-x1 : nat ;
-x2 : nat ;
-x3 : nat ;
-x4 : nat ;
-x5 : nat ;
-x6 : list ;
-x7 : list ;
-x8 : list ;
-x9 : list ;
-x10 : list ;
-x11 : tree ;
-x12 : tree ;
-x13 : tree ;
-x14 : tree ;
-x15 : tree ;
-
-QUERY
-
-(NOT (((NOT (node(x9) = car(x8)))
- AND (node(x6) = x11))
- AND (NOT is_node(x15))));
--- /dev/null
+; EXPECT: sat
+(set-logic ALL)
+(set-option :incremental false)
+(declare-datatypes ((nat 0)(list 0)(tree 0)) (((succ (pred nat)) (zero))((cons (car tree) (cdr list)) (null))((node (children list)) (leaf (data nat)))))
+(declare-fun x1 () nat)
+(declare-fun x2 () nat)
+(declare-fun x3 () nat)
+(declare-fun x4 () nat)
+(declare-fun x5 () nat)
+(declare-fun x6 () list)
+(declare-fun x7 () list)
+(declare-fun x8 () list)
+(declare-fun x9 () list)
+(declare-fun x10 () list)
+(declare-fun x11 () tree)
+(declare-fun x12 () tree)
+(declare-fun x13 () tree)
+(declare-fun x14 () tree)
+(declare-fun x15 () tree)
+(check-sat-assuming ( (not (not (and (and (not (= (node x9) (car x8))) (= (node x6) x11)) (not ((_ is node) x15))))) ))
+++ /dev/null
-% COMMAND-LINE: -q
-% EXPECT: not_entailed
-DATATYPE
- nat = succ(pred : nat) | zero
-END;
-
-QUERY pred(zero) = zero;
--- /dev/null
+; COMMAND-LINE: -q
+; EXPECT: sat
+(set-logic ALL)
+(set-option :incremental false)
+(declare-datatypes ((nat 0)) (((succ (pred nat)) (zero))))
+(check-sat-assuming ( (not (= (pred zero) zero)) ))
+++ /dev/null
-% COMMAND-LINE: --force-logic=QF_LRA
-% SCRUBBER: sed -e 's/The fact in question: .*$/The fact in question: TERM/' -e 's/in a linear logic: .*$/in a linear logic: TERM/' -e '/^[[:space:]]*$/d'
-% EXPECT: A non-linear fact was asserted to arithmetic in a linear logic.
-% EXPECT: The fact in question: TERM
-% EXIT: 1
-
-n : REAL;
-
-QUERY (n/n) = 1;
--- /dev/null
+; COMMAND-LINE: --force-logic=QF_LRA
+; EXIT: 1
+; EXPECT: (error "A non-linear fact was asserted to arithmetic in a linear logic.
+; EXPECT: The fact in question: TERM
+; EXPECT: ")
+;
+;
+; SCRUBBER: sed -e 's/The fact in question: .*$/The fact in question: TERM/' -e 's/in a linear logic: .*$/in a linear logic: TERM/' -e '/^[[:space:]]*$/d'
+(set-logic ALL)
+(set-option :incremental false)
+(declare-fun n () Real)
+(check-sat-assuming ( (= (/ n n) 1) ))
+++ /dev/null
-% EXPECT: not_entailed
-OPTION "finite-model-find";
-OPTION "fmf-fun";
-
-DATATYPE
- Node = A | B
-END;
-
-link, reach: (Node,Node,INT) -> BOOLEAN;
-
-ASSERT FORALL(x,y:Node, c:INT):
- link(x,y,c) => reach(x,y,c);
-
-ASSERT link(A,B,1);
-
-QUERY reach(A,B,5);
--- /dev/null
+; EXPECT: sat
+(set-logic ALL)
+(set-option :incremental false)
+(set-option :finite-model-find true)
+(set-option :fmf-fun true)
+(declare-datatypes ((Node 0)) (((A) (B))))
+(declare-fun link (Node Node Int) Bool)
+(declare-fun reach (Node Node Int) Bool)
+(assert (forall ((x Node) (y Node) (c Int)) (=> (link x y c) (reach x y c))))
+(assert (link A B 1))
+(check-sat-assuming ( (reach A B 5) ))
+++ /dev/null
-% EXPECT: sat\r
-OPTION "fmf-bound";\r
-OPTION "sets-ext";\r
-Atom : TYPE;\r
-REAL_UNIVERSE : SET OF [REAL];\r
-ATOM_UNIVERSE : SET OF [Atom];\r
-ASSERT REAL_UNIVERSE = UNIVERSE :: SET OF [REAL];\r
-ASSERT ATOM_UNIVERSE = UNIVERSE :: SET OF [Atom];\r
-\r
-levelVal : SET OF [Atom, REAL];\r
-ASSERT FORALL (s : Atom, v1, v2 : REAL) : \r
- (TUPLE(s) IS_IN ATOM_UNIVERSE AND TUPLE(v1) IS_IN REAL_UNIVERSE AND TUPLE(v2) IS_IN REAL_UNIVERSE) \r
- => (((s, v1) IS_IN levelVal AND (s, v2) IS_IN levelVal) => (v1 = v2));\r
-\r
-CHECKSAT; \r
--- /dev/null
+; EXPECT: sat\r
+(set-logic ALL)
+(set-option :incremental false)
+(set-option :fmf-bound true)
+(set-option :sets-ext true)
+(declare-sort Atom 0)
+(declare-fun REAL_UNIVERSE () (Set (Tuple Real)))
+(declare-fun ATOM_UNIVERSE () (Set (Tuple Atom)))
+(assert (= REAL_UNIVERSE (as univset (Set (Tuple Real)))))
+(assert (= ATOM_UNIVERSE (as univset (Set (Tuple Atom)))))
+(declare-fun levelVal () (Set (Tuple Atom Real)))
+(assert (forall ((s Atom) (v1 Real) (v2 Real)) (=> (and (and (member (mkTuple s) ATOM_UNIVERSE) (member (mkTuple v1) REAL_UNIVERSE)) (member (mkTuple v2) REAL_UNIVERSE)) (=> (and (member (mkTuple s v1) levelVal) (member (mkTuple s v2) levelVal)) (= v1 v2)))))
+(check-sat)
+++ /dev/null
-% EXPECT: unsat
-x, y : REAL;
-CHECKSAT (NOT (x = IF TRUE THEN x ELSE y ENDIF));
--- /dev/null
+; EXPECT: unsat
+(set-logic ALL)
+(set-option :incremental true)
+(declare-fun x () Real)
+(declare-fun y () Real)
+(push 1)
+
+(assert (not (= x (ite true x y))))
+
+(check-sat)
+
+(pop 1)
+
+++ /dev/null
-% EXPECT: entailed
-U: TYPE;
-a: U;
-b: U;
-f: U -> U;
-QUERY LET v_0 = (a = b)
-IN NOT (v_0 AND NOT v_0);
--- /dev/null
+; EXPECT: unsat
+(set-logic ALL)
+(set-option :incremental false)
+(declare-sort U 0)
+(declare-fun a () U)
+(declare-fun b () U)
+(declare-fun f (U) U)
+(check-sat-assuming ( (not (let ((_let_1 (= a b))) (not (and _let_1 (not _let_1))))) ))
+++ /dev/null
-a, b, c: BOOLEAN;
-% EXPECT: entailed
-QUERY (a XOR b) <=> (NOT a AND b) OR (NOT b AND a);
--- /dev/null
+; EXPECT: unsat
+(set-logic ALL)
+(set-option :incremental false)
+(declare-fun a () Bool)
+(declare-fun b () Bool)
+(declare-fun c () Bool)
+(check-sat-assuming ( (not (= (xor a b) (or (and (not a) b) (and (not b) a)))) ))
+++ /dev/null
-a, b, c: BOOLEAN;
-% EXPECT: not_entailed
-QUERY NOT c AND b;
--- /dev/null
+; EXPECT: sat
+(set-logic ALL)
+(set-option :incremental false)
+(declare-fun a () Bool)
+(declare-fun b () Bool)
+(declare-fun c () Bool)
+(check-sat-assuming ( (not (and (not c) b)) ))
+++ /dev/null
-a, b, c: BOOLEAN;
-% EXPECT: entailed
-QUERY (IF c THEN a ELSE b ENDIF) <=> ((c AND a) OR (NOT c AND b));
--- /dev/null
+; EXPECT: unsat
+(set-logic ALL)
+(set-option :incremental false)
+(declare-fun a () Bool)
+(declare-fun b () Bool)
+(declare-fun c () Bool)
+(check-sat-assuming ( (not (= (ite c a b) (or (and c a) (and (not c) b)))) ))
+++ /dev/null
-a, b, c: BOOLEAN;
-% EXPECT: entailed
-QUERY (a => b) <=> (NOT a OR b);
--- /dev/null
+; EXPECT: unsat
+(set-logic ALL)
+(set-option :incremental false)
+(declare-fun a () Bool)
+(declare-fun b () Bool)
+(declare-fun c () Bool)
+(check-sat-assuming ( (not (= (=> a b) (or (not a) b))) ))
+++ /dev/null
-a, b, c: BOOLEAN;
-% EXPECT: entailed
-QUERY TRUE XOR FALSE;
-
--- /dev/null
+; EXPECT: unsat
+(set-logic ALL)
+(set-option :incremental false)
+(declare-fun a () Bool)
+(declare-fun b () Bool)
+(declare-fun c () Bool)
+(check-sat-assuming ( (not (xor true false)) ))
+++ /dev/null
-% EXPECT: entailed
-% Simple test for right precedence of AND and NOT.
-
-A, B: BOOLEAN;
-
-QUERY (A AND NOT B) <=> (A AND (NOT B));
--- /dev/null
+; EXPECT: unsat
+(set-logic ALL)
+(set-option :incremental false)
+(declare-fun A () Bool)
+(declare-fun B () Bool)
+(check-sat-assuming ( (not (let ((_let_1 (and A (not B)))) (= _let_1 _let_1))) ))
+++ /dev/null
-% EXPECT: entailed
-% Simple test for right precedence of XOR and AND.
-
-A, B, C: BOOLEAN;
-
-QUERY (A AND B XOR C) <=> ((A AND B) XOR C);
--- /dev/null
+; EXPECT: unsat
+(set-logic ALL)
+(set-option :incremental false)
+(declare-fun A () Bool)
+(declare-fun B () Bool)
+(declare-fun C () Bool)
+(check-sat-assuming ( (not (let ((_let_1 (xor (and A B) C))) (= _let_1 _let_1))) ))
+++ /dev/null
-% EXPECT: entailed
-% Simple test for right precedence of comparisons and booleans
-
-x , y, z: INT;
-
-QUERY (x > y AND y = z OR x < z) <=> (((x > y) AND (y = z)) OR (x < z));
--- /dev/null
+; EXPECT: unsat
+(set-logic ALL)
+(set-option :incremental false)
+(declare-fun x () Int)
+(declare-fun y () Int)
+(declare-fun z () Int)
+(check-sat-assuming ( (not (let ((_let_1 (or (and (> x y) (= y z)) (< x z)))) (= _let_1 _let_1))) ))
+++ /dev/null
-% EXPECT: entailed
-% Simple test for right precedence of comparisons and plus/minus
-
-x, y, z: INT;
-
-QUERY (x + y - z > 0 AND 0 < x - y + z) <=>
- ((((x + y) - z) > 0) AND (0 < ((x - y) + z)));
--- /dev/null
+; EXPECT: unsat
+(set-logic ALL)
+(set-option :incremental false)
+(declare-fun x () Int)
+(declare-fun y () Int)
+(declare-fun z () Int)
+(check-sat-assuming ( (not (let ((_let_1 (and (> (- (+ x y) z) 0) (< 0 (+ (- x y) z))))) (= _let_1 _let_1))) ))
+++ /dev/null
-% EXPECT: entailed
-% Simple test for right precedence of function application and =
-
-T : TYPE;
-x , y: T;
-f : T -> T;
-
-QUERY (f(x) = f(y)) <=> ((f(x)) = (f(y)));
--- /dev/null
+; EXPECT: unsat
+(set-logic ALL)
+(set-option :incremental false)
+(declare-sort T 0)
+(declare-fun x () T)
+(declare-fun y () T)
+(declare-fun f (T) T)
+(check-sat-assuming ( (not (let ((_let_1 (= (f x) (f y)))) (= _let_1 _let_1))) ))
+++ /dev/null
-% EXPECT: entailed
-% Simple test for right associativity of <=>
-
-A, B, C: BOOLEAN;
-
-QUERY (A <=> B <=> C) <=> (A <=> (B <=> C));
--- /dev/null
+; EXPECT: unsat
+(set-logic ALL)
+(set-option :incremental false)
+(declare-fun A () Bool)
+(declare-fun B () Bool)
+(declare-fun C () Bool)
+(check-sat-assuming ( (not (= (= (= A B) C) (= A (= B C)))) ))
+++ /dev/null
-% EXPECT: entailed
-% Simple test for right precedence of <=> and =>.
-
-A, B, C: BOOLEAN;
-
-QUERY (A <=> B => C) <=> ((A <=> (B => C)));
--- /dev/null
+; EXPECT: unsat
+(set-logic ALL)
+(set-option :incremental false)
+(declare-fun A () Bool)
+(declare-fun B () Bool)
+(declare-fun C () Bool)
+(check-sat-assuming ( (not (let ((_let_1 (= A (=> B C)))) (= _let_1 _let_1))) ))
+++ /dev/null
-% EXPECT: entailed
-% Simple test for right associativity of =>
-
-A, B, C: BOOLEAN;
-
-QUERY (A => B => C) <=> (A => (B => C));
--- /dev/null
+; EXPECT: unsat
+(set-logic ALL)
+(set-option :incremental false)
+(declare-fun A () Bool)
+(declare-fun B () Bool)
+(declare-fun C () Bool)
+(check-sat-assuming ( (not (let ((_let_1 (=> A (=> B C)))) (= _let_1 _let_1))) ))
+++ /dev/null
-% EXPECT: entailed
-% Simple test for right precedence of <=> and =>.
-
-A, B, C: BOOLEAN;
-
-QUERY (A => B <=> C) <=> ((A => B) <=> C);
--- /dev/null
+; EXPECT: unsat
+(set-logic ALL)
+(set-option :incremental false)
+(declare-fun A () Bool)
+(declare-fun B () Bool)
+(declare-fun C () Bool)
+(check-sat-assuming ( (not (let ((_let_1 (= (=> A B) C))) (= _let_1 _let_1))) ))
+++ /dev/null
-% EXPECT: entailed
-% Simple test for right precedence of => and OR.
-
-A, B, C: BOOLEAN;
-
-QUERY (A => B OR C) <=> (A => (B OR C));
--- /dev/null
+; EXPECT: unsat
+(set-logic ALL)
+(set-option :incremental false)
+(declare-fun A () Bool)
+(declare-fun B () Bool)
+(declare-fun C () Bool)
+(check-sat-assuming ( (not (let ((_let_1 (=> A (or B C)))) (= _let_1 _let_1))) ))
+++ /dev/null
-% EXPECT: entailed
-% Simple test for right precedence of AND and NOT.
-
-A, B, C: BOOLEAN;
-
-QUERY (NOT A AND B) <=> ((NOT A) AND B);
--- /dev/null
+; EXPECT: unsat
+(set-logic ALL)
+(set-option :incremental false)
+(declare-fun A () Bool)
+(declare-fun B () Bool)
+(declare-fun C () Bool)
+(check-sat-assuming ( (not (let ((_let_1 (and (not A) B))) (= _let_1 _let_1))) ))
+++ /dev/null
-% EXPECT: entailed
-% Simple test for right precedence of = and NOT.
-
-A, B: INT;
-
-QUERY (NOT A = B) <=> (NOT (A = B));
--- /dev/null
+; EXPECT: unsat
+(set-logic ALL)
+(set-option :incremental false)
+(declare-fun A () Int)
+(declare-fun B () Int)
+(check-sat-assuming ( (not (let ((_let_1 (not (= A B)))) (= _let_1 _let_1))) ))
+++ /dev/null
-% EXPECT: entailed
-% Simple test for right precedence of => and OR.
-
-A, B, C: BOOLEAN;
-
-QUERY (A OR B => C) <=> ((A OR B) => C);
--- /dev/null
+; EXPECT: unsat
+(set-logic ALL)
+(set-option :incremental false)
+(declare-fun A () Bool)
+(declare-fun B () Bool)
+(declare-fun C () Bool)
+(check-sat-assuming ( (not (let ((_let_1 (=> (or A B) C))) (= _let_1 _let_1))) ))
+++ /dev/null
-% EXPECT: entailed
-% Simple test for right precedence of OR and XOR.
-
-A, B, C: BOOLEAN;
-
-QUERY ((A OR B XOR C) <=> ((A OR B) XOR C))
- AND ((A XOR B OR C) <=> ((A XOR B) OR C));
--- /dev/null
+; EXPECT: unsat
+(set-logic ALL)
+(set-option :incremental false)
+(declare-fun A () Bool)
+(declare-fun B () Bool)
+(declare-fun C () Bool)
+(check-sat-assuming ( (not (let ((_let_1 (or (xor A B) C))) (let ((_let_2 (xor (or A B) C))) (and (= _let_2 _let_2) (= _let_1 _let_1))))) ))
+++ /dev/null
-% EXPECT: entailed
-% Simple test for right precedence of plus/minus and mult/divide
-
-a, b, c, d, e: INT;
-
-QUERY (a + 2 * b / 3 - c / 4 * 5 + d / 6 - e ) =
- ((((a + ((2 * b) / 3)) - ((c / 4) * 5)) + (d / 6)) - e);
--- /dev/null
+; EXPECT: unsat
+(set-logic ALL)
+(set-option :incremental false)
+(declare-fun a () Int)
+(declare-fun b () Int)
+(declare-fun c () Int)
+(declare-fun d () Int)
+(declare-fun e () Int)
+(check-sat-assuming ( (not (let ((_let_1 (- (+ (- (+ a (/ (* 2 b) 3)) (* (/ c 4) 5)) (/ d 6)) e))) (= _let_1 _let_1))) ))
+++ /dev/null
-% EXPECT: entailed
-% Simple test for right precedence of XOR and AND.
-
-A, B, C: BOOLEAN;
-
-QUERY (A XOR B AND C) <=> (A XOR (B AND C));
--- /dev/null
+; EXPECT: unsat
+(set-logic ALL)
+(set-option :incremental false)
+(declare-fun A () Bool)
+(declare-fun B () Bool)
+(declare-fun C () Bool)
+(check-sat-assuming ( (not (let ((_let_1 (xor A (and B C)))) (= _let_1 _let_1))) ))
+++ /dev/null
-% EXPECT: entailed
-% Simple test for left associativity of XOR
-
-A, B, C: BOOLEAN;
-
-QUERY (A XOR B XOR C) <=> ((A XOR B) XOR C);
--- /dev/null
+; EXPECT: unsat
+(set-logic ALL)
+(set-option :incremental false)
+(declare-fun A () Bool)
+(declare-fun B () Bool)
+(declare-fun C () Bool)
+(check-sat-assuming ( (not (let ((_let_1 (xor (xor A B) C))) (= _let_1 _let_1))) ))
+++ /dev/null
-% EXPECT: entailed
-% Simple test for right precedence of OR and XOR.
-
-A, B, C: BOOLEAN;
-
-QUERY (A XOR B OR C) <=> ((A XOR B) OR C);
--- /dev/null
+; EXPECT: unsat
+(set-logic ALL)
+(set-option :incremental false)
+(declare-fun A () Bool)
+(declare-fun B () Bool)
+(declare-fun C () Bool)
+(check-sat-assuming ( (not (let ((_let_1 (or (xor A B) C))) (= _let_1 _let_1))) ))
+++ /dev/null
-% EXPECT: entailed
-
-a0, a1, a2, a3, a4, a5, a6, a7, a8, a9: BOOLEAN;
-
-ASSERT (a5);
-
-QUERY (a0 OR a1 OR a2 OR a3 OR a4 OR a5 OR a6 OR a7 OR a8 OR a9);
-
-
--- /dev/null
+; EXPECT: unsat
+(set-logic ALL)
+(set-option :incremental false)
+(declare-fun a0 () Bool)
+(declare-fun a1 () Bool)
+(declare-fun a2 () Bool)
+(declare-fun a3 () Bool)
+(declare-fun a4 () Bool)
+(declare-fun a5 () Bool)
+(declare-fun a6 () Bool)
+(declare-fun a7 () Bool)
+(declare-fun a8 () Bool)
+(declare-fun a9 () Bool)
+(assert a5)
+(check-sat-assuming ( (not (or (or (or (or (or (or (or (or (or a0 a1) a2) a3) a4) a5) a6) a7) a8) a9)) ))
+++ /dev/null
-% EXPECT: unsat
-
-a0, a1, a2, a3, a4, a5, a6, a7, a8, a9: BOOLEAN;
-
-ASSERT (a5);
-
-ASSERT NOT (a0 OR a1 OR a2 OR a3 OR a4 OR a5 OR a6 OR a7 OR a8 OR a9);
-
-CHECKSAT;
-
-
--- /dev/null
+; EXPECT: unsat
+(set-logic ALL)
+(set-option :incremental false)
+(declare-fun a0 () Bool)
+(declare-fun a1 () Bool)
+(declare-fun a2 () Bool)
+(declare-fun a3 () Bool)
+(declare-fun a4 () Bool)
+(declare-fun a5 () Bool)
+(declare-fun a6 () Bool)
+(declare-fun a7 () Bool)
+(declare-fun a8 () Bool)
+(declare-fun a9 () Bool)
+(assert a5)
+(assert (not (or (or (or (or (or (or (or (or (or a0 a1) a2) a3) a4) a5) a6) a7) a8) a9)))
+(check-sat)
+++ /dev/null
-% EXPECT: entailed
-
-a0, a1, a2, a3, a4, a5, a6, a7, a8, a9: BOOLEAN;
-
-ASSERT (NOT a5);
-
-QUERY NOT (a0 AND a1 AND a2 AND a3 AND a4 AND a5 AND a6 AND a7 AND a8 AND a9);
-
-
--- /dev/null
+; EXPECT: unsat
+(set-logic ALL)
+(set-option :incremental false)
+(declare-fun a0 () Bool)
+(declare-fun a1 () Bool)
+(declare-fun a2 () Bool)
+(declare-fun a3 () Bool)
+(declare-fun a4 () Bool)
+(declare-fun a5 () Bool)
+(declare-fun a6 () Bool)
+(declare-fun a7 () Bool)
+(declare-fun a8 () Bool)
+(declare-fun a9 () Bool)
+(assert (not a5))
+(check-sat-assuming ( (not (not (and (and (and (and (and (and (and (and (and a0 a1) a2) a3) a4) a5) a6) a7) a8) a9))) ))
+++ /dev/null
-% EXPECT: unsat
-
-a0, a1, a2, a3, a4, a5, a6, a7, a8, a9: BOOLEAN;
-
-ASSERT (NOT a5);
-ASSERT (a0 AND a1 AND a2 AND a3 AND a4 AND a5 AND a6 AND a7 AND a8 AND a9);
-
-CHECKSAT;
-
-
--- /dev/null
+; EXPECT: unsat
+(set-logic ALL)
+(set-option :incremental false)
+(declare-fun a0 () Bool)
+(declare-fun a1 () Bool)
+(declare-fun a2 () Bool)
+(declare-fun a3 () Bool)
+(declare-fun a4 () Bool)
+(declare-fun a5 () Bool)
+(declare-fun a6 () Bool)
+(declare-fun a7 () Bool)
+(declare-fun a8 () Bool)
+(declare-fun a9 () Bool)
+(assert (not a5))
+(assert (and (and (and (and (and (and (and (and (and a0 a1) a2) a3) a4) a5) a6) a7) a8) a9))
+(check-sat)
+++ /dev/null
-% EXPECT: unsat
-
-a0, a1, a2, a3, a4, a5, a6, a7, a8: BOOLEAN;
-
-ASSERT (NOT a1);
-ASSERT (a4 AND a7);
-ASSERT
- IF (a0 AND a1 AND a2)
- THEN (a3 AND a4 AND a5)
- ELSE (a6 AND NOT a7 AND a8)
- ENDIF;
-
-CHECKSAT;
-
-
--- /dev/null
+; EXPECT: unsat
+(set-logic ALL)
+(set-option :incremental false)
+(declare-fun a0 () Bool)
+(declare-fun a1 () Bool)
+(declare-fun a2 () Bool)
+(declare-fun a3 () Bool)
+(declare-fun a4 () Bool)
+(declare-fun a5 () Bool)
+(declare-fun a6 () Bool)
+(declare-fun a7 () Bool)
+(declare-fun a8 () Bool)
+(assert (not a1))
+(assert (and a4 a7))
+(assert (ite (and (and a0 a1) a2) (and (and a3 a4) a5) (and (and a6 (not a7)) a8)))
+(check-sat)
+++ /dev/null
-% EXPECT: sat
-
-a0, a1, a2, a3, a4, a5, a6, a7, a8: BOOLEAN;
-
-ASSERT (NOT a1);
-ASSERT (a4 AND a7);
-ASSERT
- IF (a0 AND a1 AND a2)
- THEN (a3 AND a4 AND a5)
- ELSE (a6 AND a7 AND a8)
- ENDIF;
-
-CHECKSAT;
-
-
--- /dev/null
+; EXPECT: sat
+(set-logic ALL)
+(set-option :incremental false)
+(declare-fun a0 () Bool)
+(declare-fun a1 () Bool)
+(declare-fun a2 () Bool)
+(declare-fun a3 () Bool)
+(declare-fun a4 () Bool)
+(declare-fun a5 () Bool)
+(declare-fun a6 () Bool)
+(declare-fun a7 () Bool)
+(declare-fun a8 () Bool)
+(assert (not a1))
+(assert (and a4 a7))
+(assert (ite (and (and a0 a1) a2) (and (and a3 a4) a5) (and (and a6 a7) a8)))
+(check-sat)
+++ /dev/null
-% EXPECT: entailed
-
-a0, a1, a2, a3, a4, a5: BOOLEAN;
-
-ASSERT (a0 => a1);
-ASSERT (a1 => a2);
-ASSERT (a2 => a3);
-ASSERT (a3 => a4);
-ASSERT (a4 => a5);
-ASSERT a0;
-
-QUERY (a0 <=> a5);
-
-
--- /dev/null
+; EXPECT: unsat
+(set-logic ALL)
+(set-option :incremental false)
+(declare-fun a0 () Bool)
+(declare-fun a1 () Bool)
+(declare-fun a2 () Bool)
+(declare-fun a3 () Bool)
+(declare-fun a4 () Bool)
+(declare-fun a5 () Bool)
+(assert (=> a0 a1))
+(assert (=> a1 a2))
+(assert (=> a2 a3))
+(assert (=> a3 a4))
+(assert (=> a4 a5))
+(assert a0)
+(check-sat-assuming ( (not (= a0 a5)) ))
+++ /dev/null
-% EXPECT: sat
-
-a0, a1, a2, a3, a4, a5: BOOLEAN;
-
-ASSERT ((a0 AND a1 AND a2) <=> (a3 OR a4 OR a5));
-ASSERT (a4);
-
-CHECKSAT;
-
-
--- /dev/null
+; EXPECT: sat
+(set-logic ALL)
+(set-option :incremental false)
+(declare-fun a0 () Bool)
+(declare-fun a1 () Bool)
+(declare-fun a2 () Bool)
+(declare-fun a3 () Bool)
+(declare-fun a4 () Bool)
+(declare-fun a5 () Bool)
+(assert (= (and (and a0 a1) a2) (or (or a3 a4) a5)))
+(assert a4)
+(check-sat)
+++ /dev/null
-% EXPECT: sat
-
-a0, a1, a2, a3, a4, a5: BOOLEAN;
-
-ASSERT ((a0 AND a1 AND a2) <=> (a3 OR a4 OR a5));
-ASSERT (NOT a1);
-
-CHECKSAT;
-
-
--- /dev/null
+; EXPECT: sat
+(set-logic ALL)
+(set-option :incremental false)
+(declare-fun a0 () Bool)
+(declare-fun a1 () Bool)
+(declare-fun a2 () Bool)
+(declare-fun a3 () Bool)
+(declare-fun a4 () Bool)
+(declare-fun a5 () Bool)
+(assert (= (and (and a0 a1) a2) (or (or a3 a4) a5)))
+(assert (not a1))
+(check-sat)
+++ /dev/null
-% EXPECT: sat
-
-a0, a1, a2, a3, a4, a5: BOOLEAN;
-
-ASSERT ((a0 AND a1 AND a2) <=> (a3 OR a4 OR a5));
-ASSERT (a0);
-ASSERT (a1);
-ASSERT (a2);
-ASSERT (NOT a3);
-ASSERT (NOT a5);
-
-CHECKSAT;
-
-
--- /dev/null
+; EXPECT: sat
+(set-logic ALL)
+(set-option :incremental false)
+(declare-fun a0 () Bool)
+(declare-fun a1 () Bool)
+(declare-fun a2 () Bool)
+(declare-fun a3 () Bool)
+(declare-fun a4 () Bool)
+(declare-fun a5 () Bool)
+(assert (= (and (and a0 a1) a2) (or (or a3 a4) a5)))
+(assert a0)
+(assert a1)
+(assert a2)
+(assert (not a3))
+(assert (not a5))
+(check-sat)
+++ /dev/null
-% EXPECT: sat
-x: REAL;
-b: BOOLEAN;
-
-ASSERT (x = IF b THEN 10 ELSE -10 ENDIF);
-ASSERT b;
-
-CHECKSAT;
-
-
-
--- /dev/null
+; EXPECT: sat
+(set-logic ALL)
+(set-option :incremental false)
+(declare-fun x () Real)
+(declare-fun b () Bool)
+(assert (= x (ite b 10 (- 10))))
+(assert b)
+(check-sat)
+++ /dev/null
-% EXPECT: sat
-
-x: REAL;
-y: REAL;
-
-ASSERT ((0 = IF TRUE THEN x ELSE 1 ENDIF) AND (0 = IF (x = 0) THEN 0 ELSE 1 ENDIF) AND (x = IF TRUE THEN y ELSE 0 ENDIF) AND (0 = IF TRUE THEN 0 ELSE 0 ENDIF));
-
-CHECKSAT;
-
-
--- /dev/null
+; EXPECT: sat
+(set-logic ALL)
+(set-option :incremental false)
+(declare-fun x () Real)
+(declare-fun y () Real)
+(assert (and (and (and (= 0 (ite true x 1)) (= 0 (ite (= x 0) 0 1))) (= x (ite true y 0))) (= 0 (ite true 0 0))))
+(check-sat)
+++ /dev/null
-% EXPECT: sat
-
-x: REAL;
-y: REAL;
-b: BOOLEAN;
-
-ASSERT ((0 = IF b THEN x - y ELSE 2*x ENDIF));
-
-CHECKSAT;
-
-
--- /dev/null
+; EXPECT: sat
+(set-logic ALL)
+(set-option :incremental false)
+(declare-fun x () Real)
+(declare-fun y () Real)
+(declare-fun b () Bool)
+(assert (= 0 (ite b (- x y) (* 2 x))))
+(check-sat)
+++ /dev/null
-% EXPECT: entailed
-
-a0, a1, a2, a3, a4, a5, a6, a7, a8, a9: BOOLEAN;
-
-ASSERT (a5);
-
-QUERY (a0 OR (a1 OR (a2 OR (a3 OR (a4 OR (a5 OR (FALSE OR (a6 OR (a7 OR (a8 OR a9))))))))));
-
-
--- /dev/null
+; EXPECT: unsat
+(set-logic ALL)
+(set-option :incremental false)
+(declare-fun a0 () Bool)
+(declare-fun a1 () Bool)
+(declare-fun a2 () Bool)
+(declare-fun a3 () Bool)
+(declare-fun a4 () Bool)
+(declare-fun a5 () Bool)
+(declare-fun a6 () Bool)
+(declare-fun a7 () Bool)
+(declare-fun a8 () Bool)
+(declare-fun a9 () Bool)
+(assert a5)
+(check-sat-assuming ( (not (or a0 (or a1 (or a2 (or a3 (or a4 (or a5 (or false (or a6 (or a7 (or a8 a9))))))))))) ))
+++ /dev/null
-% EXPECT: sat
-
-a0, a1, a2, a3, a4, a5, a6, a7, a8, a9: BOOLEAN;
-
-ASSERT (a5);
-
-ASSERT (a0 OR (a1 AND (a2 OR (a3 AND (a4 AND (a5 AND (TRUE AND (a6 AND (a7 AND (a8 AND a9))))))))));
-
-CHECKSAT;
-
-
--- /dev/null
+; EXPECT: sat
+(set-logic ALL)
+(set-option :incremental false)
+(declare-fun a0 () Bool)
+(declare-fun a1 () Bool)
+(declare-fun a2 () Bool)
+(declare-fun a3 () Bool)
+(declare-fun a4 () Bool)
+(declare-fun a5 () Bool)
+(declare-fun a6 () Bool)
+(declare-fun a7 () Bool)
+(declare-fun a8 () Bool)
+(declare-fun a9 () Bool)
+(assert a5)
+(assert (or a0 (and a1 (or a2 (and a3 (and a4 (and a5 (and true (and a6 (and a7 (and a8 a9)))))))))))
+(check-sat)
+++ /dev/null
-% EXPECT: sat
-
-a0, a1, a2, a3, a4, a5, a6, a7, a8, a9: BOOLEAN;
-
-ASSERT (a5);
-
-ASSERT (a0 OR (a1 AND (a2 OR (a3 AND (a4 AND (a5 AND (TRUE AND (a3 AND (a6 AND (a7 AND (a8 AND a9)))))))))));
-
-CHECKSAT;
-
-
--- /dev/null
+; EXPECT: sat
+(set-logic ALL)
+(set-option :incremental false)
+(declare-fun a0 () Bool)
+(declare-fun a1 () Bool)
+(declare-fun a2 () Bool)
+(declare-fun a3 () Bool)
+(declare-fun a4 () Bool)
+(declare-fun a5 () Bool)
+(declare-fun a6 () Bool)
+(declare-fun a7 () Bool)
+(declare-fun a8 () Bool)
+(declare-fun a9 () Bool)
+(assert a5)
+(assert (or a0 (and a1 (or a2 (and a3 (and a4 (and a5 (and true (and a3 (and a6 (and a7 (and a8 a9))))))))))))
+(check-sat)
+++ /dev/null
-% SCRUBBER: sed -e 's/f : (INT) -> INT = (LAMBDA(.*:INT): 0);$/f : (INT) -> INT = (LAMBDA(VAR:INT): 0);/'
-% COMMAND-LINE: --produce-models
-% EXPECT: sat
-% EXPECT: MODEL BEGIN
-% EXPECT: f : (INT) -> INT = (LAMBDA(VAR:INT): 0);
-% EXPECT: MODEL END;
-
-f : INT -> INT;
-ASSERT f(1) = 0;
-CHECKSAT;
-COUNTEREXAMPLE;
-
--- /dev/null
+; COMMAND-LINE: --produce-models
+; EXPECT: sat
+; EXPECT: (
+; EXPECT: (define-fun f ((_arg_1 Int)) Int 0)
+; EXPECT: )
+(set-logic ALL)
+(set-option :incremental false)
+(declare-fun f (Int) Int)
+(assert (= (f 1) 0))
+(check-sat)
+(get-model)
+++ /dev/null
-% COMMAND-LINE: --produce-models
-% EXPECT: sat
-% EXPECT: MODEL BEGIN
-% EXPECT: s1 : INT = 2;
-% EXPECT: s2 : INT = 1;
-% EXPECT: MODEL END;
-
-OPTION "produce-models";
-s1, s2 : INT;
-ASSERT s1 = 2;
-CHECKSAT s2 > 0 AND s2 < s1;
-COUNTERMODEL;
--- /dev/null
+; COMMAND-LINE: --produce-models
+; EXPECT: sat
+; EXPECT: (
+; EXPECT: (define-fun s1 () Int 2)
+; EXPECT: (define-fun s2 () Int 1)
+; EXPECT: )
+(set-logic ALL)
+(set-option :incremental true)
+(set-option :produce-models true)
+(declare-fun s1 () Int)
+(declare-fun s2 () Int)
+(assert (= s1 2))
+(push 1)
+
+(assert (and (> s2 0) (< s2 s1)))
+
+(check-sat)
+(get-model)
+
+(pop 1)
+++ /dev/null
-% EXPECT: not_entailed
-% EXPECT: ((r.a, "active"))
-% EXPECT: ((y.1, 9))
-OPTION "produce-models";
-
-R : TYPE = [#
- a : STRING,
- b : STRING
-#];
-r : R;
-
-y: [REAL, INT, REAL];
-
-ASSERT r = (# a := "active", b := "who knows?" #);
-ASSERT y = ( 4/5, 9, 11/9 );
-QUERY r.a = "what?";
-GET_VALUE r.a;
-GET_VALUE y.1;
--- /dev/null
+; EXPECT: sat
+; EXPECT: (((a r) "active"))
+; EXPECT: ((((_ tupSel 1) y) 9))
+(set-logic ALL)
+(set-option :incremental false)
+(set-option :produce-models true)
+(declare-datatypes ((__cvc5_record_a_String_b_String 0)) (((__cvc5_record_a_String_b_String_ctor (a String) (b String)))))
+
+(declare-fun r () __cvc5_record_a_String_b_String)
+(declare-fun y () (Tuple Real Int Real))
+(assert (= r (__cvc5_record_a_String_b_String_ctor "active" "who knows?")))
+(assert (= y (mkTuple (/ 4 5) 9 (/ 11 9))))
+(check-sat-assuming ( (not (= (a r) "what?")) ))
+(get-value ( (a r) ))
+(get-value ( ((_ tupSel 1) y) ))
+++ /dev/null
-% Tests the invariants for multiple queries.
-% COMMAND-LINE: --incremental
-
-a, b: BOOLEAN;
-
-% EXPECT: entailed
-QUERY (a AND b) OR NOT (a AND b);
-
-% EXPECT: not_entailed
-QUERY (a OR b);
-
--- /dev/null
+; COMMAND-LINE: --incremental
+; EXPECT: unsat
+; EXPECT: sat
+(set-logic ALL)
+(declare-fun a () Bool)
+(declare-fun b () Bool)
+(check-sat-assuming ( (not (let ((_let_1 (and a b))) (or _let_1 (not _let_1)))) ))
+(check-sat-assuming ( (not (or a b)) ))
+++ /dev/null
-% COMMAND-LINE: --incremental
-U : TYPE;
-x, y : U;
-% EXPECT: not_entailed
-QUERY x = y;
-ASSERT x = y;
-% EXPECT: entailed
-QUERY x = y;
-PUSH;
-z : U;
-% EXPECT: entailed
-QUERY x = y;
-% EXPECT: not_entailed
-QUERY x = z;
-% EXPECT: not_entailed
-QUERY z = x;
-% EXPECT: not_entailed
-QUERY z /= x;
-POP;
-% EXPECT: not_entailed
-QUERY z /= x;
--- /dev/null
+; COMMAND-LINE: --incremental
+; EXPECT: sat
+; EXPECT: unsat
+; EXPECT: unsat
+; EXPECT: sat
+; EXPECT: sat
+; EXPECT: sat
+; EXPECT: sat
+(set-logic ALL)
+(declare-sort U 0)
+(declare-fun x () U)
+(declare-fun y () U)
+(check-sat-assuming ( (not (= x y)) ))
+(assert (= x y))
+(check-sat-assuming ( (not (= x y)) ))
+(declare-fun z () U)
+(push 1)
+(check-sat-assuming ( (not (= x y)) ))
+(check-sat-assuming ( (not (= x z)) ))
+(check-sat-assuming ( (not (= z x)) ))
+(check-sat-assuming ( (= z x) ))
+(pop 1)
+(check-sat-assuming ( (= z x) ))
+++ /dev/null
-% COMMAND-LINE: --incremental
-x: BOOLEAN;
-
-PUSH;
-ASSERT x;
-% EXPECT: sat
-CHECKSAT;
-POP;
-ASSERT (NOT x);
-% EXPECT: sat
-CHECKSAT;
--- /dev/null
+; COMMAND-LINE: --incremental
+; EXPECT: sat
+; EXPECT: sat
+(set-logic ALL)
+(declare-fun x () Bool)
+(push 1)
+(assert x)
+(check-sat)
+(pop 1)
+(assert (not x))
+(check-sat)
+++ /dev/null
-% COMMAND-LINE: --incremental
-
-x, y: BOOLEAN;
-
-ASSERT (x OR y);
-% EXPECT: sat
-CHECKSAT;
-PUSH;
-ASSERT (NOT x);
-% EXPECT: sat
-CHECKSAT;
-POP;
-PUSH;
-ASSERT (NOT y);
-% EXPECT: sat
-CHECKSAT;
-POP;
-% EXPECT: sat
-CHECKSAT;
--- /dev/null
+; COMMAND-LINE: --incremental
+; EXPECT: sat
+; EXPECT: sat
+; EXPECT: sat
+; EXPECT: sat
+(set-logic ALL)
+(declare-fun x () Bool)
+(declare-fun y () Bool)
+(assert (or x y))
+(check-sat)
+(push 1)
+(assert (not x))
+(check-sat)
+(pop 1)
+(push 1)
+(assert (not y))
+(check-sat)
+(pop 1)
+(check-sat)
+++ /dev/null
-% COMMAND-LINE: --incremental
-x, y: BOOLEAN;
-ASSERT x OR y;
-% EXPECT: sat
-CHECKSAT;
-PUSH;
- ASSERT NOT x;
-% EXPECT: sat
- CHECKSAT;
- PUSH;
- ASSERT NOT y;
-% EXPECT: unsat
- CHECKSAT;
- POP;
-% EXPECT: sat
- CHECKSAT;
-POP;
-% EXPECT: sat
-CHECKSAT;
-PUSH 2;
-ASSERT x;
-ASSERT NOT x;
-% EXPECT: unsat
-CHECKSAT;
-POP 2;
-% EXPECT: sat
-CHECKSAT;
-
-
--- /dev/null
+; COMMAND-LINE: --incremental
+; EXPECT: sat
+; EXPECT: sat
+; EXPECT: unsat
+; EXPECT: sat
+; EXPECT: sat
+; EXPECT: unsat
+; EXPECT: sat
+(set-logic ALL)
+(declare-fun x () Bool)
+(declare-fun y () Bool)
+(assert (or x y))
+(check-sat)
+(push 1)
+(assert (not x))
+(check-sat)
+(push 1)
+(assert (not y))
+(check-sat)
+(pop 1)
+(check-sat)
+(pop 1)
+(check-sat)
+(push 1)
+(push 1)
+(assert x)
+(assert (not x))
+(check-sat)
+(pop 1)
+(pop 1)
+(check-sat)
+++ /dev/null
-% COMMAND-LINE: --nl-rlv=none
-% EXPECT: entailed
-QUERY FORALL (x:INT) : EXISTS (y:INT) : (x*y=x) ;
--- /dev/null
+; COMMAND-LINE: --nl-rlv=none
+; EXPECT: unsat
+(set-logic ALL)
+(set-option :incremental false)
+(check-sat-assuming ( (not (forall ((x Int)) (exists ((y Int)) (= (* x y) x)))) ))
+++ /dev/null
-% EXPECT: unsat
-OPTION "logic" "ALL";
-Atom : TYPE;
-AtomTup : TYPE = [Atom];
-AtomBinTup : TYPE = [Atom, Atom];
-AtomTerTup : TYPE = [Atom, Atom, Atom];
-Target: SET OF AtomTup;
-
-Name: SET OF AtomTup;
-Addr: SET OF AtomTup;
-Book: SET OF AtomTup;
-names: SET OF AtomBinTup;
-addr: SET OF AtomTerTup;
-
-b1: Atom;
-b1_tup : AtomTup;
-ASSERT b1_tup = TUPLE(b1);
-ASSERT b1_tup IS_IN Book;
-
-b2: Atom;
-b2_tup : AtomTup;
-ASSERT b2_tup = TUPLE(b2);
-ASSERT b2_tup IS_IN Book;
-
-b3: Atom;
-b3_tup : AtomTup;
-ASSERT b3_tup = TUPLE(b3);
-ASSERT b3_tup IS_IN Book;
-
-n: Atom;
-n_tup : AtomTup;
-ASSERT n_tup = TUPLE(n);
-ASSERT n_tup IS_IN Name;
-
-t: Atom;
-t_tup : AtomTup;
-ASSERT t_tup = TUPLE(t);
-ASSERT t_tup IS_IN Target;
-
-ASSERT ((Book JOIN addr) JOIN Target) <= Name;
-ASSERT (Book JOIN names) <= Name;
-ASSERT (Name & Addr) = {}::SET OF AtomTup;
-
-ASSERT ({n_tup} JOIN ({b1_tup} JOIN addr)) = {}::SET OF AtomTup;
-ASSERT ({n_tup} JOIN ({b2_tup} JOIN addr)) = ({n_tup} JOIN ({b1_tup} JOIN addr)) | {t_tup};
-ASSERT ({n_tup} JOIN ({b3_tup} JOIN addr)) = ({n_tup} JOIN ({b2_tup} JOIN addr)) - {t_tup};
-ASSERT NOT (({n_tup} JOIN ({b1_tup} JOIN addr)) = ({n_tup} JOIN ({b3_tup} JOIN addr)));
-
-CHECKSAT;
\ No newline at end of file
--- /dev/null
+; EXPECT: unsat
+(set-option :incremental false)
+(set-logic ALL)
+(declare-sort Atom 0)
+
+
+
+(declare-fun Target () (Set (Tuple Atom)))
+(declare-fun Name () (Set (Tuple Atom)))
+(declare-fun Addr () (Set (Tuple Atom)))
+(declare-fun Book () (Set (Tuple Atom)))
+(declare-fun names () (Set (Tuple Atom Atom)))
+(declare-fun addr () (Set (Tuple Atom Atom Atom)))
+(declare-fun b1 () Atom)
+(declare-fun b1_tup () (Tuple Atom))
+(assert (= b1_tup (mkTuple b1)))
+(assert (member b1_tup Book))
+(declare-fun b2 () Atom)
+(declare-fun b2_tup () (Tuple Atom))
+(assert (= b2_tup (mkTuple b2)))
+(assert (member b2_tup Book))
+(declare-fun b3 () Atom)
+(declare-fun b3_tup () (Tuple Atom))
+(assert (= b3_tup (mkTuple b3)))
+(assert (member b3_tup Book))
+(declare-fun n () Atom)
+(declare-fun n_tup () (Tuple Atom))
+(assert (= n_tup (mkTuple n)))
+(assert (member n_tup Name))
+(declare-fun t () Atom)
+(declare-fun t_tup () (Tuple Atom))
+(assert (= t_tup (mkTuple t)))
+(assert (member t_tup Target))
+(assert (subset (join (join Book addr) Target) Name))
+(assert (subset (join Book names) Name))
+(assert (= (intersection Name Addr) (as emptyset (Set (Tuple Atom)))))
+(assert (= (join (singleton n_tup) (join (singleton b1_tup) addr)) (as emptyset (Set (Tuple Atom)))))
+(assert (let ((_let_1 (singleton n_tup))) (= (join _let_1 (join (singleton b2_tup) addr)) (union (join _let_1 (join (singleton b1_tup) addr)) (singleton t_tup)))))
+(assert (let ((_let_1 (singleton n_tup))) (= (join _let_1 (join (singleton b3_tup) addr)) (setminus (join _let_1 (join (singleton b2_tup) addr)) (singleton t_tup)))))
+(assert (let ((_let_1 (singleton n_tup))) (not (= (join _let_1 (join (singleton b1_tup) addr)) (join _let_1 (join (singleton b3_tup) addr))))))
+(check-sat)
+++ /dev/null
-% EXPECT: unsat\r
-OPTION "sets-ext";\r
-OPTION "logic" "ALL";\r
-Atom: TYPE;\r
-\r
-a : SET OF [Atom];\r
-b : SET OF [Atom, Atom];\r
-\r
-x : Atom;\r
-y : Atom;\r
-\r
-ASSERT NOT(x = y);\r
-\r
-ASSERT TUPLE(y) IS_IN a;\r
-ASSERT (x, y) IS_IN b;\r
-\r
-ASSERT UNIVERSE::SET OF [Atom, Atom] = (UNIVERSE::SET OF [Atom] PRODUCT UNIVERSE::SET OF [Atom]);\r
-\r
-u : SET OF [Atom, Atom];\r
-ASSERT u = UNIVERSE::SET OF [Atom, Atom];\r
-\r
-ASSERT NOT (x, y) IS_IN u;\r
-\r
-CHECKSAT;\r
--- /dev/null
+; EXPECT: unsat\r
+(set-option :incremental false)
+(set-option :sets-ext true)
+(set-logic ALL)
+(declare-sort Atom 0)
+(declare-fun a () (Set (Tuple Atom)))
+(declare-fun b () (Set (Tuple Atom Atom)))
+(declare-fun x () Atom)
+(declare-fun y () Atom)
+(assert (not (= x y)))
+(assert (member (mkTuple y) a))
+(assert (member (mkTuple x y) b))
+(assert (= (as univset (Set (Tuple Atom Atom))) (product (as univset (Set (Tuple Atom))) (as univset (Set (Tuple Atom))))))
+(declare-fun u () (Set (Tuple Atom Atom)))
+(assert (= u (as univset (Set (Tuple Atom Atom)))))
+(assert (not (member (mkTuple x y) u)))
+(check-sat)
+++ /dev/null
-% EXPECT: unknown (INCOMPLETE)
-OPTION "logic" "ALL";
-IntPair: TYPE = [INT, INT];
-x : SET OF IntPair;
-ASSERT (CARD(TRANSPOSE(x)) > 0);
-CHECKSAT;
--- /dev/null
+; EXPECT: unknown
+(set-option :incremental false)
+(set-logic ALL)
+
+(declare-fun x () (Set (Tuple Int Int)))
+(assert (> (card (transpose x)) 0))
+(check-sat)
+++ /dev/null
-% EXPECT: unsat
-OPTION "logic" "ALL";
-Atom: TYPE;
-IntPair: TYPE = [INT, INT];
-x : SET OF IntPair;
-id : SET OF IntPair;
-
-t : SET OF [INT];
-
-z : IntPair;
-ASSERT z = (1,2);
-zt : IntPair;
-ASSERT zt = (2,1);
-v : IntPair;
-ASSERT v = (1,1);
-a : IntPair;
-ASSERT a = (1,5);
-
-ASSERT TUPLE(1) IS_IN t;
-ASSERT TUPLE(2) IS_IN t;
-ASSERT z IS_IN x;
-ASSERT zt IS_IN x;
-ASSERT v IS_IN x;
-ASSERT a IS_IN x;
-ASSERT id = IDEN(t);
-ASSERT NOT ((1, 1) IS_IN (id & x));
-
-CHECKSAT;
--- /dev/null
+; EXPECT: unsat
+(set-option :incremental false)
+(set-logic ALL)
+(declare-sort Atom 0)
+
+(declare-fun x () (Set (Tuple Int Int)))
+(declare-fun id () (Set (Tuple Int Int)))
+(declare-fun t () (Set (Tuple Int)))
+(declare-fun z () (Tuple Int Int))
+(assert (= z (mkTuple 1 2)))
+(declare-fun zt () (Tuple Int Int))
+(assert (= zt (mkTuple 2 1)))
+(declare-fun v () (Tuple Int Int))
+(assert (= v (mkTuple 1 1)))
+(declare-fun a () (Tuple Int Int))
+(assert (= a (mkTuple 1 5)))
+(assert (member (mkTuple 1) t))
+(assert (member (mkTuple 2) t))
+(assert (member z x))
+(assert (member zt x))
+(assert (member v x))
+(assert (member a x))
+(assert (= id (iden t)))
+(assert (not (member (mkTuple 1 1) (intersection id x))))
+(check-sat)
+++ /dev/null
-% EXPECT: unsat
-OPTION "sets-ext";
-OPTION "logic" "ALL";
-Atom:TYPE;
-AtomPair: TYPE = [Atom, Atom];
-x : SET OF AtomPair;
-t : SET OF [Atom];
-univ : SET OF [Atom];
-
-a : Atom;
-b : Atom;
-c : Atom;
-d : Atom;
-ASSERT univ = UNIVERSE::SET OF [Atom];
-ASSERT (a, b) IS_IN x;
-ASSERT (c, d) IS_IN x;
-ASSERT NOT(a = b);
-ASSERT IDEN(x JOIN univ) = x;
-CHECKSAT;
--- /dev/null
+; EXPECT: unsat
+(set-option :incremental false)
+(set-option :sets-ext true)
+(set-logic ALL)
+(declare-sort Atom 0)
+
+(declare-fun x () (Set (Tuple Atom Atom)))
+(declare-fun t () (Set (Tuple Atom)))
+(declare-fun univ () (Set (Tuple Atom)))
+(declare-fun a () Atom)
+(declare-fun b () Atom)
+(declare-fun c () Atom)
+(declare-fun d () Atom)
+(assert (= univ (as univset (Set (Tuple Atom)))))
+(assert (member (mkTuple a b) x))
+(assert (member (mkTuple c d) x))
+(assert (not (= a b)))
+(assert (= (iden (join x univ)) x))
+(check-sat)
+++ /dev/null
-% EXPECT: sat
-OPTION "logic" "ALL";
-IntPair: TYPE = [INT, INT];
-x : SET OF IntPair;
-y : SET OF IntPair;
-DATATYPE unit = u END;
-IntUPair: TYPE = [INT, unit];
-UIntPair: TYPE = [unit, INT];
-w : SET OF IntUPair;
-z : SET OF UIntPair;
-
-ASSERT (x JOIN y) = (w JOIN z);
-
-ASSERT (0,1) IS_IN (x JOIN y);
-ASSERT (0,u) IS_IN w;
-
-t : INT;
-ASSERT t > 0 AND t < 3;
-
-ASSERT NOT (u, t ) IS_IN z;
-
-CHECKSAT;
--- /dev/null
+; EXPECT: sat
+(set-option :incremental false)
+(set-logic ALL)
+
+(declare-fun x () (Set (Tuple Int Int)))
+(declare-fun y () (Set (Tuple Int Int)))
+(declare-datatypes ((unit 0)) (((u))))
+
+
+(declare-fun w () (Set (Tuple Int unit)))
+(declare-fun z () (Set (Tuple unit Int)))
+(assert (= (join x y) (join w z)))
+(assert (member (mkTuple 0 1) (join x y)))
+(assert (member (mkTuple 0 u) w))
+(declare-fun t () Int)
+(assert (and (> t 0) (< t 3)))
+(assert (not (member (mkTuple u t) z)))
+(check-sat)
+++ /dev/null
-% EXPECT: unsat
-OPTION "logic" "ALL";
-IntPair: TYPE = [INT, INT];
-x : SET OF IntPair;
-y : SET OF IntPair;
-DATATYPE unit = u END;
-IntUPair: TYPE = [INT, unit];
-UIntPair: TYPE = [unit, INT];
-w : SET OF IntUPair;
-z : SET OF UIntPair;
-
-ASSERT (x JOIN y) = (w JOIN z);
-
-ASSERT (0,1) IS_IN (x JOIN y);
-ASSERT (0,u) IS_IN w;
-
-t : INT;
-ASSERT t > 0 AND t < 2;
-
-ASSERT NOT (u, t ) IS_IN z;
-
-CHECKSAT;
--- /dev/null
+; EXPECT: unsat
+(set-option :incremental false)
+(set-logic ALL)
+
+(declare-fun x () (Set (Tuple Int Int)))
+(declare-fun y () (Set (Tuple Int Int)))
+(declare-datatypes ((unit 0)) (((u))))
+
+
+(declare-fun w () (Set (Tuple Int unit)))
+(declare-fun z () (Set (Tuple unit Int)))
+(assert (= (join x y) (join w z)))
+(assert (member (mkTuple 0 1) (join x y)))
+(assert (member (mkTuple 0 u) w))
+(declare-fun t () Int)
+(assert (and (> t 0) (< t 2)))
+(assert (not (member (mkTuple u t) z)))
+(check-sat)
+++ /dev/null
-% EXPECT: unsat
-OPTION "logic" "ALL";
-OPTION "sets-ext";
-IntPair: TYPE = [INT, INT];
-x : SET OF IntPair;
-y : SET OF IntPair;
-r : SET OF IntPair;
-
-t : SET OF [INT];
-
-z : IntPair;
-ASSERT z = (1,2);
-zt : IntPair;
-ASSERT zt = (2,1);
-v : IntPair;
-ASSERT v = (1,1);
-a : IntPair;
-ASSERT a = (1,5);
-
-ASSERT (1, 7) IS_IN x;
-ASSERT z IS_IN x;
-
-ASSERT (7, 5) IS_IN y;
-
-ASSERT t = (x JOIN_IMAGE 2);
-
-ASSERT TUPLE(3) IS_IN (x JOIN_IMAGE 2);
-
-ASSERT NOT(TUPLE(1) IS_IN (x JOIN_IMAGE 2));
-
-ASSERT TUPLE(4) IS_IN (x JOIN_IMAGE 2);
-
-ASSERT TUPLE(1) IS_IN (x JOIN_IMAGE 1);
-CHECKSAT;
--- /dev/null
+; EXPECT: unsat
+(set-option :incremental false)
+(set-logic ALL)
+(set-option :sets-ext true)
+
+(declare-fun x () (Set (Tuple Int Int)))
+(declare-fun y () (Set (Tuple Int Int)))
+(declare-fun r () (Set (Tuple Int Int)))
+(declare-fun t () (Set (Tuple Int)))
+(declare-fun z () (Tuple Int Int))
+(assert (= z (mkTuple 1 2)))
+(declare-fun zt () (Tuple Int Int))
+(assert (= zt (mkTuple 2 1)))
+(declare-fun v () (Tuple Int Int))
+(assert (= v (mkTuple 1 1)))
+(declare-fun a () (Tuple Int Int))
+(assert (= a (mkTuple 1 5)))
+(assert (member (mkTuple 1 7) x))
+(assert (member z x))
+(assert (member (mkTuple 7 5) y))
+(assert (= t (join_image x 2)))
+(assert (member (mkTuple 3) (join_image x 2)))
+(assert (not (member (mkTuple 1) (join_image x 2))))
+(assert (member (mkTuple 4) (join_image x 2)))
+(assert (member (mkTuple 1) (join_image x 1)))
+(check-sat)
+++ /dev/null
-% EXPECT: sat
-OPTION "logic" "QF_UFDTFS";
-DATATYPE Atom = atom END;
-
-
-t : SET OF [Atom, Atom];
-b : Atom;
-a : Atom;
-c : Atom;
-J : ( SET OF [Atom], SET OF [Atom, Atom] ) -> SET OF [Atom];
-T : SET OF [Atom, Atom] -> SET OF [Atom, Atom];
-
-%ASSERT t = {} :: SET OF [Atom, Atom];
-
-
-ASSERT ({TUPLE(a)} JOIN t) = J({TUPLE(a)}, t);
-ASSERT NOT( ({TUPLE(c)} JOIN TCLOSURE(t)) = {TUPLE(c)} );
-
-CHECKSAT;
--- /dev/null
+; EXPECT: sat
+(set-option :incremental false)
+(set-logic QF_UFDTFS)
+(declare-datatypes ((Atom 0)) (((atom))))
+(declare-fun t () (Set (Tuple Atom Atom)))
+(declare-fun b () Atom)
+(declare-fun a () Atom)
+(declare-fun c () Atom)
+(declare-fun J ((Set (Tuple Atom)) (Set (Tuple Atom Atom))) (Set (Tuple Atom)))
+(declare-fun T ((Set (Tuple Atom Atom))) (Set (Tuple Atom Atom)))
+(assert (let ((_let_1 (singleton (mkTuple a)))) (= (join _let_1 t) (J _let_1 t))))
+(assert (let ((_let_1 (singleton (mkTuple c)))) (not (= (join _let_1 (tclosure t)) _let_1))))
+(check-sat)
+++ /dev/null
-% EXPECT: unsat
-OPTION "logic" "ALL";
-IntTup: TYPE = [INT];
-IntPair: TYPE = [INT, INT];
-x : SET OF IntPair;
-y : SET OF IntTup;
-z: SET OF IntTup;
-
-b : IntPair;
-ASSERT b = (2, 1);
-ASSERT b IS_IN x;
-
-a : IntTup;
-ASSERT a = TUPLE(1);
-ASSERT a IS_IN y;
-
-c : IntTup;
-ASSERT c = TUPLE(2);
-
-ASSERT z = (x JOIN y);
-
-ASSERT NOT (c IS_IN z);
-
-CHECKSAT;
\ No newline at end of file
--- /dev/null
+; EXPECT: unsat
+(set-option :incremental false)
+(set-logic ALL)
+
+
+(declare-fun x () (Set (Tuple Int Int)))
+(declare-fun y () (Set (Tuple Int)))
+(declare-fun z () (Set (Tuple Int)))
+(declare-fun b () (Tuple Int Int))
+(assert (= b (mkTuple 2 1)))
+(assert (member b x))
+(declare-fun a () (Tuple Int))
+(assert (= a (mkTuple 1)))
+(assert (member a y))
+(declare-fun c () (Tuple Int))
+(assert (= c (mkTuple 2)))
+(assert (= z (join x y)))
+(assert (not (member c z)))
+(check-sat)
+++ /dev/null
-% EXPECT: unsat
-OPTION "logic" "ALL";
-IntPair: TYPE = [INT, INT];
-x : SET OF IntPair;
-y : SET OF IntPair;
-r : SET OF IntPair;
-z : SET OF INT;
-f : INT;
-g : INT;
-
-e : IntPair;
-ASSERT e = (4, f);
-ASSERT e IS_IN x;
-
-d : IntPair;
-ASSERT d = (g,3);
-ASSERT d IS_IN y;
-
-
-ASSERT z = {f, g};
-ASSERT 0 = f - g;
-
-
-
-a : IntPair;
-ASSERT a = (4,3);
-
-ASSERT r = (x JOIN y);
-
-ASSERT NOT (a IS_IN r);
-CHECKSAT;
--- /dev/null
+; EXPECT: unsat
+(set-option :incremental false)
+(set-logic ALL)
+
+(declare-fun x () (Set (Tuple Int Int)))
+(declare-fun y () (Set (Tuple Int Int)))
+(declare-fun r () (Set (Tuple Int Int)))
+(declare-fun z () (Set Int))
+(declare-fun f () Int)
+(declare-fun g () Int)
+(declare-fun e () (Tuple Int Int))
+(assert (= e (mkTuple 4 f)))
+(assert (member e x))
+(declare-fun d () (Tuple Int Int))
+(assert (= d (mkTuple g 3)))
+(assert (member d y))
+(assert (= z (union (singleton f) (singleton g))))
+(assert (= 0 (- f g)))
+(declare-fun a () (Tuple Int Int))
+(assert (= a (mkTuple 4 3)))
+(assert (= r (join x y)))
+(assert (not (member a r)))
+(check-sat)
+++ /dev/null
-% EXPECT: unsat
-OPTION "logic" "ALL";
-IntPair: TYPE = [INT, INT];
-IntTup: TYPE = [INT];
-x : SET OF IntPair;
-y : SET OF IntPair;
-r : SET OF IntPair;
-
-w : SET OF IntTup;
-z : SET OF IntTup;
-r2 : SET OF IntPair;
-
-a : IntPair;
-ASSERT a = (3,1);
-ASSERT a IS_IN x;
-
-d : IntPair;
-ASSERT d = (1,3);
-ASSERT d IS_IN y;
-
-e : IntPair;
-ASSERT e = (4,3);
-ASSERT r = (x JOIN y);
-
-ASSERT TUPLE(1) IS_IN w;
-ASSERT TUPLE(2) IS_IN z;
-ASSERT r2 = (w PRODUCT z);
-
-ASSERT NOT (e IS_IN r);
-%ASSERT e IS_IN r2;
-ASSERT (r <= r2);
-ASSERT NOT ((3,3) IS_IN r2);
-
-CHECKSAT;
--- /dev/null
+; EXPECT: unsat
+(set-option :incremental false)
+(set-logic ALL)
+
+
+(declare-fun x () (Set (Tuple Int Int)))
+(declare-fun y () (Set (Tuple Int Int)))
+(declare-fun r () (Set (Tuple Int Int)))
+(declare-fun w () (Set (Tuple Int)))
+(declare-fun z () (Set (Tuple Int)))
+(declare-fun r2 () (Set (Tuple Int Int)))
+(declare-fun a () (Tuple Int Int))
+(assert (= a (mkTuple 3 1)))
+(assert (member a x))
+(declare-fun d () (Tuple Int Int))
+(assert (= d (mkTuple 1 3)))
+(assert (member d y))
+(declare-fun e () (Tuple Int Int))
+(assert (= e (mkTuple 4 3)))
+(assert (= r (join x y)))
+(assert (member (mkTuple 1) w))
+(assert (member (mkTuple 2) z))
+(assert (= r2 (product w z)))
+(assert (not (member e r)))
+(assert (subset r r2))
+(assert (not (member (mkTuple 3 3) r2)))
+(check-sat)
+++ /dev/null
-% EXPECT: unsat
-OPTION "logic" "ALL";
-IntPair: TYPE = [INT, INT];
-x : SET OF IntPair;
-e : IntPair;
-ASSERT e = (4, 4);
-ASSERT e IS_IN x;
-
-ASSERT NOT ((4, 4) IS_IN x);
-CHECKSAT;
--- /dev/null
+; EXPECT: unsat
+(set-option :incremental false)
+(set-logic ALL)
+
+(declare-fun x () (Set (Tuple Int Int)))
+(declare-fun e () (Tuple Int Int))
+(assert (= e (mkTuple 4 4)))
+(assert (member e x))
+(assert (not (member (mkTuple 4 4) x)))
+(check-sat)
+++ /dev/null
-% EXPECT: unsat
-OPTION "logic" "ALL";
-IntPair: TYPE = [INT, INT];
-x : SET OF IntPair;
-y : SET OF IntPair;
-r : SET OF IntPair;
-
-z : IntPair;
-ASSERT z = (1,2);
-zt : IntPair;
-ASSERT zt = (2,1);
-v : IntPair;
-ASSERT v = (1,1);
-a : IntPair;
-ASSERT a = (1,5);
-
-ASSERT (1, 7) IS_IN x;
-ASSERT (7, 5) IS_IN y;
-
-ASSERT z IS_IN x;
-ASSERT zt IS_IN y;
-ASSERT NOT (a IS_IN (x JOIN y));
-
-CHECKSAT;
--- /dev/null
+; EXPECT: unsat
+(set-option :incremental false)
+(set-logic ALL)
+
+(declare-fun x () (Set (Tuple Int Int)))
+(declare-fun y () (Set (Tuple Int Int)))
+(declare-fun r () (Set (Tuple Int Int)))
+(declare-fun z () (Tuple Int Int))
+(assert (= z (mkTuple 1 2)))
+(declare-fun zt () (Tuple Int Int))
+(assert (= zt (mkTuple 2 1)))
+(declare-fun v () (Tuple Int Int))
+(assert (= v (mkTuple 1 1)))
+(declare-fun a () (Tuple Int Int))
+(assert (= a (mkTuple 1 5)))
+(assert (member (mkTuple 1 7) x))
+(assert (member (mkTuple 7 5) y))
+(assert (member z x))
+(assert (member zt y))
+(assert (not (member a (join x y))))
+(check-sat)
+++ /dev/null
-% EXPECT: sat
-OPTION "logic" "ALL";
-IntPair: TYPE = [INT, INT];
-x : SET OF IntPair;
-y : SET OF IntPair;
-r : SET OF IntPair;
-
-z : IntPair;
-ASSERT z = (1,2);
-zt : IntPair;
-ASSERT zt = (2,1);
-v : IntPair;
-ASSERT v = (1,1);
-a : IntPair;
-ASSERT a = (1,5);
-
-ASSERT (1, 7) IS_IN x;
-ASSERT (4, 3) IS_IN x;
-ASSERT (7, 5) IS_IN y;
-
-ASSERT z IS_IN x;
-ASSERT zt IS_IN y;
-%ASSERT a IS_IN (x JOIN y);
-%ASSERT NOT (v IS_IN (x JOIN y));
-ASSERT a IS_IN (x JOIN y);
-
-CHECKSAT;
--- /dev/null
+; EXPECT: sat
+(set-option :incremental false)
+(set-logic ALL)
+
+(declare-fun x () (Set (Tuple Int Int)))
+(declare-fun y () (Set (Tuple Int Int)))
+(declare-fun r () (Set (Tuple Int Int)))
+(declare-fun z () (Tuple Int Int))
+(assert (= z (mkTuple 1 2)))
+(declare-fun zt () (Tuple Int Int))
+(assert (= zt (mkTuple 2 1)))
+(declare-fun v () (Tuple Int Int))
+(assert (= v (mkTuple 1 1)))
+(declare-fun a () (Tuple Int Int))
+(assert (= a (mkTuple 1 5)))
+(assert (member (mkTuple 1 7) x))
+(assert (member (mkTuple 4 3) x))
+(assert (member (mkTuple 7 5) y))
+(assert (member z x))
+(assert (member zt y))
+(assert (member a (join x y)))
+(check-sat)
+++ /dev/null
-% EXPECT: unsat
-OPTION "logic" "ALL";
-IntPair: TYPE = [INT, INT];
-x : SET OF IntPair;
-y : SET OF IntPair;
-r : SET OF IntPair;
-
-z : IntPair;
-ASSERT z = (1,2);
-zt : IntPair;
-ASSERT zt = (2,1);
-v : IntPair;
-ASSERT v = (1,1);
-a : IntPair;
-ASSERT a = (1,5);
-
-ASSERT (1, 7) IS_IN x;
-ASSERT (2, 3) IS_IN x;
-ASSERT (3, 4) IS_IN x;
-
-ASSERT (7, 5) IS_IN y;
-ASSERT (7, 3) IS_IN y;
-ASSERT (4, 7) IS_IN y;
-
-%ASSERT (a IS_IN (r JOIN(x JOIN y)));
-
-ASSERT z IS_IN x;
-ASSERT zt IS_IN y;
-ASSERT NOT (a IS_IN (x JOIN y));
-
-CHECKSAT;
--- /dev/null
+; EXPECT: unsat
+(set-option :incremental false)
+(set-logic ALL)
+
+(declare-fun x () (Set (Tuple Int Int)))
+(declare-fun y () (Set (Tuple Int Int)))
+(declare-fun r () (Set (Tuple Int Int)))
+(declare-fun z () (Tuple Int Int))
+(assert (= z (mkTuple 1 2)))
+(declare-fun zt () (Tuple Int Int))
+(assert (= zt (mkTuple 2 1)))
+(declare-fun v () (Tuple Int Int))
+(assert (= v (mkTuple 1 1)))
+(declare-fun a () (Tuple Int Int))
+(assert (= a (mkTuple 1 5)))
+(assert (member (mkTuple 1 7) x))
+(assert (member (mkTuple 2 3) x))
+(assert (member (mkTuple 3 4) x))
+(assert (member (mkTuple 7 5) y))
+(assert (member (mkTuple 7 3) y))
+(assert (member (mkTuple 4 7) y))
+(assert (member z x))
+(assert (member zt y))
+(assert (not (member a (join x y))))
+(check-sat)
+++ /dev/null
-% EXPECT: sat
-OPTION "logic" "ALL";
-IntPair: TYPE = [INT, INT];
-x : SET OF IntPair;
-y : SET OF IntPair;
-r : SET OF IntPair;
-
-z : IntPair;
-ASSERT z = (1,2);
-zt : IntPair;
-ASSERT zt = (2,1);
-v : IntPair;
-ASSERT v = (1,1);
-a : IntPair;
-ASSERT a = (1,5);
-
-ASSERT (1, 7) IS_IN x;
-ASSERT (2, 3) IS_IN x;
-ASSERT (3, 4) IS_IN x;
-
-ASSERT (7, 5) IS_IN y;
-ASSERT (7, 3) IS_IN y;
-ASSERT (4, 7) IS_IN y;
-
-%ASSERT (a IS_IN (r JOIN(x JOIN y)));
-
-ASSERT z IS_IN x;
-ASSERT zt IS_IN y;
-ASSERT r = (x JOIN y);
-
-CHECKSAT;
--- /dev/null
+; EXPECT: sat
+(set-option :incremental false)
+(set-logic ALL)
+
+(declare-fun x () (Set (Tuple Int Int)))
+(declare-fun y () (Set (Tuple Int Int)))
+(declare-fun r () (Set (Tuple Int Int)))
+(declare-fun z () (Tuple Int Int))
+(assert (= z (mkTuple 1 2)))
+(declare-fun zt () (Tuple Int Int))
+(assert (= zt (mkTuple 2 1)))
+(declare-fun v () (Tuple Int Int))
+(assert (= v (mkTuple 1 1)))
+(declare-fun a () (Tuple Int Int))
+(assert (= a (mkTuple 1 5)))
+(assert (member (mkTuple 1 7) x))
+(assert (member (mkTuple 2 3) x))
+(assert (member (mkTuple 3 4) x))
+(assert (member (mkTuple 7 5) y))
+(assert (member (mkTuple 7 3) y))
+(assert (member (mkTuple 4 7) y))
+(assert (member z x))
+(assert (member zt y))
+(assert (= r (join x y)))
+(check-sat)
+++ /dev/null
-% EXPECT: unsat
-OPTION "logic" "ALL";
-IntPair: TYPE = [INT, INT];
-IntTup: TYPE = [INT, INT, INT];
-x : SET OF IntPair;
-y : SET OF IntTup;
-
-z : IntPair;
-ASSERT z = (1,2);
-zt : IntTup;
-ASSERT zt = (2,1,3);
-a : IntTup;
-ASSERT a = (1,1,3);
-
-ASSERT z IS_IN x;
-ASSERT zt IS_IN y;
-
-ASSERT NOT (a IS_IN (x JOIN y));
-
-CHECKSAT;
--- /dev/null
+; EXPECT: unsat
+(set-option :incremental false)
+(set-logic ALL)
+
+
+(declare-fun x () (Set (Tuple Int Int)))
+(declare-fun y () (Set (Tuple Int Int Int)))
+(declare-fun z () (Tuple Int Int))
+(assert (= z (mkTuple 1 2)))
+(declare-fun zt () (Tuple Int Int Int))
+(assert (= zt (mkTuple 2 1 3)))
+(declare-fun a () (Tuple Int Int Int))
+(assert (= a (mkTuple 1 1 3)))
+(assert (member z x))
+(assert (member zt y))
+(assert (not (member a (join x y))))
+(check-sat)
+++ /dev/null
-% EXPECT: sat
-OPTION "logic" "ALL";
-IntPair: TYPE = [INT, INT];
-IntTup: TYPE = [INT, INT, INT];
-x : SET OF IntPair;
-y : SET OF IntTup;
-
-z : IntPair;
-ASSERT z = (1,2);
-zt : IntTup;
-ASSERT zt = (2,1,3);
-a : IntTup;
-ASSERT a = (1,1,3);
-
-ASSERT z IS_IN x;
-ASSERT zt IS_IN y;
-
-ASSERT a IS_IN (x JOIN y);
-
-CHECKSAT;
--- /dev/null
+; EXPECT: sat
+(set-option :incremental false)
+(set-logic ALL)
+
+
+(declare-fun x () (Set (Tuple Int Int)))
+(declare-fun y () (Set (Tuple Int Int Int)))
+(declare-fun z () (Tuple Int Int))
+(assert (= z (mkTuple 1 2)))
+(declare-fun zt () (Tuple Int Int Int))
+(assert (= zt (mkTuple 2 1 3)))
+(declare-fun a () (Tuple Int Int Int))
+(assert (= a (mkTuple 1 1 3)))
+(assert (member z x))
+(assert (member zt y))
+(assert (member a (join x y)))
+(check-sat)
+++ /dev/null
-% EXPECT: unsat
-OPTION "logic" "ALL";
-IntPair: TYPE = [INT, INT];
-x : SET OF IntPair;
-y : SET OF IntPair;
-r : SET OF IntPair;
-
-z : IntPair;
-ASSERT z = (1,2);
-zt : IntPair;
-ASSERT zt = (2,1);
-v : IntPair;
-ASSERT v = (1,1);
-a : IntPair;
-ASSERT a = (1,5);
-
-ASSERT (1, 7) IS_IN x;
-ASSERT (2, 3) IS_IN x;
-ASSERT (3, 4) IS_IN x;
-
-ASSERT (7, 5) IS_IN y;
-ASSERT (7, 3) IS_IN y;
-ASSERT (4, 7) IS_IN y;
-ASSERT r = (x JOIN y);
-ASSERT z IS_IN x;
-ASSERT zt IS_IN y;
-ASSERT NOT (a IS_IN r);
-
-CHECKSAT;
--- /dev/null
+; EXPECT: unsat
+(set-option :incremental false)
+(set-logic ALL)
+
+(declare-fun x () (Set (Tuple Int Int)))
+(declare-fun y () (Set (Tuple Int Int)))
+(declare-fun r () (Set (Tuple Int Int)))
+(declare-fun z () (Tuple Int Int))
+(assert (= z (mkTuple 1 2)))
+(declare-fun zt () (Tuple Int Int))
+(assert (= zt (mkTuple 2 1)))
+(declare-fun v () (Tuple Int Int))
+(assert (= v (mkTuple 1 1)))
+(declare-fun a () (Tuple Int Int))
+(assert (= a (mkTuple 1 5)))
+(assert (member (mkTuple 1 7) x))
+(assert (member (mkTuple 2 3) x))
+(assert (member (mkTuple 3 4) x))
+(assert (member (mkTuple 7 5) y))
+(assert (member (mkTuple 7 3) y))
+(assert (member (mkTuple 4 7) y))
+(assert (= r (join x y)))
+(assert (member z x))
+(assert (member zt y))
+(assert (not (member a r)))
+(check-sat)
+++ /dev/null
-% EXPECT: sat
-OPTION "logic" "ALL";
-IntPair: TYPE = [INT, INT];
-x : SET OF IntPair;
-y : SET OF IntPair;
-r : SET OF IntPair;
-
-z : IntPair;
-ASSERT z = (1,2);
-zt : IntPair;
-ASSERT zt = (2,1);
-v : IntPair;
-ASSERT v = (1,1);
-a : IntPair;
-ASSERT a = (1,5);
-
-ASSERT (1, 7) IS_IN x;
-ASSERT (2, 3) IS_IN x;
-ASSERT (3, 4) IS_IN x;
-
-ASSERT (7, 5) IS_IN y;
-ASSERT (7, 3) IS_IN y;
-ASSERT (4, 7) IS_IN y;
-ASSERT r = (x JOIN y);
-ASSERT z IS_IN x;
-ASSERT zt IS_IN y;
-ASSERT a IS_IN r;
-
-CHECKSAT;
--- /dev/null
+; EXPECT: sat
+(set-option :incremental false)
+(set-logic ALL)
+
+(declare-fun x () (Set (Tuple Int Int)))
+(declare-fun y () (Set (Tuple Int Int)))
+(declare-fun r () (Set (Tuple Int Int)))
+(declare-fun z () (Tuple Int Int))
+(assert (= z (mkTuple 1 2)))
+(declare-fun zt () (Tuple Int Int))
+(assert (= zt (mkTuple 2 1)))
+(declare-fun v () (Tuple Int Int))
+(assert (= v (mkTuple 1 1)))
+(declare-fun a () (Tuple Int Int))
+(assert (= a (mkTuple 1 5)))
+(assert (member (mkTuple 1 7) x))
+(assert (member (mkTuple 2 3) x))
+(assert (member (mkTuple 3 4) x))
+(assert (member (mkTuple 7 5) y))
+(assert (member (mkTuple 7 3) y))
+(assert (member (mkTuple 4 7) y))
+(assert (= r (join x y)))
+(assert (member z x))
+(assert (member zt y))
+(assert (member a r))
+(check-sat)
+++ /dev/null
-% EXPECT: unsat
-OPTION "logic" "ALL";
-IntPair: TYPE = [INT, INT];
-x : SET OF IntPair;
-y : SET OF IntPair;
-r : SET OF IntPair;
-
-z : IntPair;
-ASSERT z = (1,2);
-zt : IntPair;
-ASSERT zt = (2,1);
-v : IntPair;
-ASSERT v = (1,1);
-a : IntPair;
-ASSERT a = (1,5);
-
-b : IntPair;
-ASSERT b = (7, 5);
-
-ASSERT (1, 7) IS_IN x;
-ASSERT (2, 3) IS_IN x;
-ASSERT (3, 4) IS_IN x;
-
-ASSERT b IS_IN y;
-ASSERT (7, 3) IS_IN y;
-ASSERT (4, 7) IS_IN y;
-ASSERT r = (x JOIN y);
-ASSERT z IS_IN x;
-ASSERT zt IS_IN y;
-ASSERT NOT (a IS_IN r);
-
-CHECKSAT;
--- /dev/null
+; EXPECT: unsat
+(set-option :incremental false)
+(set-logic ALL)
+
+(declare-fun x () (Set (Tuple Int Int)))
+(declare-fun y () (Set (Tuple Int Int)))
+(declare-fun r () (Set (Tuple Int Int)))
+(declare-fun z () (Tuple Int Int))
+(assert (= z (mkTuple 1 2)))
+(declare-fun zt () (Tuple Int Int))
+(assert (= zt (mkTuple 2 1)))
+(declare-fun v () (Tuple Int Int))
+(assert (= v (mkTuple 1 1)))
+(declare-fun a () (Tuple Int Int))
+(assert (= a (mkTuple 1 5)))
+(declare-fun b () (Tuple Int Int))
+(assert (= b (mkTuple 7 5)))
+(assert (member (mkTuple 1 7) x))
+(assert (member (mkTuple 2 3) x))
+(assert (member (mkTuple 3 4) x))
+(assert (member b y))
+(assert (member (mkTuple 7 3) y))
+(assert (member (mkTuple 4 7) y))
+(assert (= r (join x y)))
+(assert (member z x))
+(assert (member zt y))
+(assert (not (member a r)))
+(check-sat)
+++ /dev/null
-% EXPECT: unsat
-OPTION "logic" "ALL";
-IntPair: TYPE = [INT, INT];
-x : SET OF IntPair;
-y : SET OF IntPair;
-z : SET OF IntPair;
-r : SET OF IntPair;
-
-ASSERT (7, 1) IS_IN x;
-ASSERT (2, 3) IS_IN x;
-ASSERT (7, 3) IS_IN y;
-ASSERT (4, 7) IS_IN y;
-ASSERT (3, 4) IS_IN z;
-
-a : IntPair;
-ASSERT a = (1,4);
-ASSERT r = ((TRANSPOSE(x) JOIN y) JOIN z);
-ASSERT NOT (a IS_IN r);
-CHECKSAT;
--- /dev/null
+; EXPECT: unsat
+(set-option :incremental false)
+(set-logic ALL)
+
+(declare-fun x () (Set (Tuple Int Int)))
+(declare-fun y () (Set (Tuple Int Int)))
+(declare-fun z () (Set (Tuple Int Int)))
+(declare-fun r () (Set (Tuple Int Int)))
+(assert (member (mkTuple 7 1) x))
+(assert (member (mkTuple 2 3) x))
+(assert (member (mkTuple 7 3) y))
+(assert (member (mkTuple 4 7) y))
+(assert (member (mkTuple 3 4) z))
+(declare-fun a () (Tuple Int Int))
+(assert (= a (mkTuple 1 4)))
+(assert (= r (join (join (transpose x) y) z)))
+(assert (not (member a r)))
+(check-sat)
+++ /dev/null
-% EXPECT: unsat
-OPTION "logic" "ALL";
-IntPair: TYPE = [INT, INT];
-x : SET OF IntPair;
-y : SET OF IntPair;
-r : SET OF IntPair;
-ASSERT x = {(1,2), (3, 4)};
-
-ASSERT y = (x JOIN {(2,1), (4,3)});
-
-ASSERT NOT ((1,1) IS_IN y);
-
-CHECKSAT;
--- /dev/null
+; EXPECT: unsat
+(set-option :incremental false)
+(set-logic ALL)
+
+(declare-fun x () (Set (Tuple Int Int)))
+(declare-fun y () (Set (Tuple Int Int)))
+(declare-fun r () (Set (Tuple Int Int)))
+(assert (= x (union (singleton (mkTuple 1 2)) (singleton (mkTuple 3 4)))))
+(assert (= y (join x (union (singleton (mkTuple 2 1)) (singleton (mkTuple 4 3))))))
+(assert (not (member (mkTuple 1 1) y)))
+(check-sat)
+++ /dev/null
-% EXPECT: unsat
-OPTION "logic" "ALL";
-IntPair: TYPE = [INT, INT];
-x : SET OF IntPair;
-y : SET OF IntPair;
-r : SET OF IntPair;
-w : SET OF IntPair;
-
-z : IntPair;
-ASSERT z = (1,2);
-zt : IntPair;
-ASSERT zt = (2,1);
-v : IntPair;
-ASSERT v = (1,1);
-a : IntPair;
-ASSERT a = (1,5);
-
-ASSERT (1, 7) IS_IN x;
-ASSERT (7, 5) IS_IN y;
-
-ASSERT z IS_IN x;
-ASSERT zt IS_IN y;
-ASSERT w = (r | (x JOIN y));
-ASSERT NOT (a IS_IN w);
-
-CHECKSAT;
--- /dev/null
+; EXPECT: unsat
+(set-option :incremental false)
+(set-logic ALL)
+
+(declare-fun x () (Set (Tuple Int Int)))
+(declare-fun y () (Set (Tuple Int Int)))
+(declare-fun r () (Set (Tuple Int Int)))
+(declare-fun w () (Set (Tuple Int Int)))
+(declare-fun z () (Tuple Int Int))
+(assert (= z (mkTuple 1 2)))
+(declare-fun zt () (Tuple Int Int))
+(assert (= zt (mkTuple 2 1)))
+(declare-fun v () (Tuple Int Int))
+(assert (= v (mkTuple 1 1)))
+(declare-fun a () (Tuple Int Int))
+(assert (= a (mkTuple 1 5)))
+(assert (member (mkTuple 1 7) x))
+(assert (member (mkTuple 7 5) y))
+(assert (member z x))
+(assert (member zt y))
+(assert (= w (union r (join x y))))
+(assert (not (member a w)))
+(check-sat)
+++ /dev/null
-% EXPECT: unsat
-OPTION "logic" "ALL";
-IntPair: TYPE = [INT, INT];
-IntTup: TYPE = [INT, INT, INT, INT];
-x : SET OF IntPair;
-y : SET OF IntPair;
-r : SET OF IntPair;
-
-z : IntPair;
-ASSERT z = (1,2);
-zt : IntPair;
-ASSERT zt = (2,1);
-v : IntTup;
-ASSERT v = (1,2,2,1);
-
-ASSERT z IS_IN x;
-ASSERT zt IS_IN y;
-ASSERT NOT (v IS_IN (x PRODUCT y));
-
-CHECKSAT;
--- /dev/null
+; EXPECT: unsat
+(set-option :incremental false)
+(set-logic ALL)
+
+
+(declare-fun x () (Set (Tuple Int Int)))
+(declare-fun y () (Set (Tuple Int Int)))
+(declare-fun r () (Set (Tuple Int Int)))
+(declare-fun z () (Tuple Int Int))
+(assert (= z (mkTuple 1 2)))
+(declare-fun zt () (Tuple Int Int))
+(assert (= zt (mkTuple 2 1)))
+(declare-fun v () (Tuple Int Int Int Int))
+(assert (= v (mkTuple 1 2 2 1)))
+(assert (member z x))
+(assert (member zt y))
+(assert (not (member v (product x y))))
+(check-sat)
+++ /dev/null
-% EXPECT: sat
-OPTION "logic" "ALL";
-IntPair: TYPE = [INT, INT];
-IntTup: TYPE = [INT, INT, INT, INT];
-x : SET OF IntPair;
-y : SET OF IntPair;
-r : SET OF IntPair;
-
-z : IntPair;
-ASSERT z = (1,2);
-zt : IntPair;
-ASSERT zt = (2,1);
-v : IntTup;
-ASSERT v = (1,2,2,1);
-
-ASSERT z IS_IN x;
-ASSERT zt IS_IN y;
-ASSERT v IS_IN (x PRODUCT y);
-
-CHECKSAT;
--- /dev/null
+; EXPECT: sat
+(set-option :incremental false)
+(set-logic ALL)
+
+
+(declare-fun x () (Set (Tuple Int Int)))
+(declare-fun y () (Set (Tuple Int Int)))
+(declare-fun r () (Set (Tuple Int Int)))
+(declare-fun z () (Tuple Int Int))
+(assert (= z (mkTuple 1 2)))
+(declare-fun zt () (Tuple Int Int))
+(assert (= zt (mkTuple 2 1)))
+(declare-fun v () (Tuple Int Int Int Int))
+(assert (= v (mkTuple 1 2 2 1)))
+(assert (member z x))
+(assert (member zt y))
+(assert (member v (product x y)))
+(check-sat)
+++ /dev/null
-% EXPECT: unsat
-OPTION "logic" "ALL";
-IntPair: TYPE = [INT, INT, INT];
-IntTup: TYPE = [INT, INT, INT, INT,INT, INT];
-x : SET OF IntPair;
-y : SET OF IntPair;
-r : SET OF IntPair;
-
-z : IntPair;
-ASSERT z = (1,2,3);
-zt : IntPair;
-ASSERT zt = (3,2,1);
-v : IntTup;
-ASSERT v = (1,2,3,3,2,1);
-
-ASSERT z IS_IN x;
-ASSERT zt IS_IN y;
-ASSERT NOT (v IS_IN (x PRODUCT y));
-
-CHECKSAT;
--- /dev/null
+; EXPECT: unsat
+(set-option :incremental false)
+(set-logic ALL)
+
+
+(declare-fun x () (Set (Tuple Int Int Int)))
+(declare-fun y () (Set (Tuple Int Int Int)))
+(declare-fun r () (Set (Tuple Int Int Int)))
+(declare-fun z () (Tuple Int Int Int))
+(assert (= z (mkTuple 1 2 3)))
+(declare-fun zt () (Tuple Int Int Int))
+(assert (= zt (mkTuple 3 2 1)))
+(declare-fun v () (Tuple Int Int Int Int Int Int))
+(assert (= v (mkTuple 1 2 3 3 2 1)))
+(assert (member z x))
+(assert (member zt y))
+(assert (not (member v (product x y))))
+(check-sat)
+++ /dev/null
-% EXPECT: sat
-OPTION "logic" "ALL";
-IntPair: TYPE = [INT, INT, INT];
-IntTup: TYPE = [INT, INT, INT, INT,INT, INT];
-x : SET OF IntPair;
-y : SET OF IntPair;
-r : SET OF IntTup;
-
-z : IntPair;
-ASSERT z = (1,2,3);
-zt : IntPair;
-ASSERT zt = (3,2,1);
-
-
-ASSERT z IS_IN x;
-ASSERT zt IS_IN y;
-ASSERT (1,1,1,1,1,1) IS_IN r;
-ASSERT r = (x PRODUCT y);
-
-
-CHECKSAT;
--- /dev/null
+; EXPECT: sat
+(set-option :incremental false)
+(set-logic ALL)
+
+
+(declare-fun x () (Set (Tuple Int Int Int)))
+(declare-fun y () (Set (Tuple Int Int Int)))
+(declare-fun r () (Set (Tuple Int Int Int Int Int Int)))
+(declare-fun z () (Tuple Int Int Int))
+(assert (= z (mkTuple 1 2 3)))
+(declare-fun zt () (Tuple Int Int Int))
+(assert (= zt (mkTuple 3 2 1)))
+(assert (member z x))
+(assert (member zt y))
+(assert (member (mkTuple 1 1 1 1 1 1) r))
+(assert (= r (product x y)))
+(check-sat)
+++ /dev/null
-% EXPECT: unsat
-OPTION "logic" "ALL";
-IntPair: TYPE = [INT, INT];
-x : SET OF IntPair;
-y : SET OF IntPair;
-r : SET OF IntPair;
-f : INT;
-d : IntPair;
-ASSERT d = (f,3);
-ASSERT d IS_IN y;
-e : IntPair;
-ASSERT e = (4, f);
-ASSERT e IS_IN x;
-
-a : IntPair;
-ASSERT a = (4,3);
-
-ASSERT r = (x JOIN y);
-
-ASSERT NOT (a IS_IN r);
-CHECKSAT;
--- /dev/null
+; EXPECT: unsat
+(set-option :incremental false)
+(set-logic ALL)
+
+(declare-fun x () (Set (Tuple Int Int)))
+(declare-fun y () (Set (Tuple Int Int)))
+(declare-fun r () (Set (Tuple Int Int)))
+(declare-fun f () Int)
+(declare-fun d () (Tuple Int Int))
+(assert (= d (mkTuple f 3)))
+(assert (member d y))
+(declare-fun e () (Tuple Int Int))
+(assert (= e (mkTuple 4 f)))
+(assert (member e x))
+(declare-fun a () (Tuple Int Int))
+(assert (= a (mkTuple 4 3)))
+(assert (= r (join x y)))
+(assert (not (member a r)))
+(check-sat)
+++ /dev/null
-% EXPECT: sat
-OPTION "logic" "ALL";
-IntPair: TYPE = [INT, INT];
-x : SET OF IntPair;
-y : SET OF IntPair;
-r : SET OF IntPair;
-
-d : IntPair;
-ASSERT d IS_IN y;
-
-a : IntPair;
-ASSERT a IS_IN x;
-
-e : IntPair;
-ASSERT e = (4,3);
-
-ASSERT r = (x JOIN y);
-
-ASSERT NOT (e IS_IN r);
-CHECKSAT;
--- /dev/null
+; EXPECT: sat
+(set-option :incremental false)
+(set-logic ALL)
+
+(declare-fun x () (Set (Tuple Int Int)))
+(declare-fun y () (Set (Tuple Int Int)))
+(declare-fun r () (Set (Tuple Int Int)))
+(declare-fun d () (Tuple Int Int))
+(assert (member d y))
+(declare-fun a () (Tuple Int Int))
+(assert (member a x))
+(declare-fun e () (Tuple Int Int))
+(assert (= e (mkTuple 4 3)))
+(assert (= r (join x y)))
+(assert (not (member e r)))
+(check-sat)
+++ /dev/null
-% EXPECT: sat
-OPTION "logic" "ALL";
-IntPair: TYPE = [INT, INT];
-x : SET OF IntPair;
-y : SET OF IntPair;
-r : SET OF IntPair;
-
-d : IntPair;
-ASSERT d = (1,3);
-ASSERT (1,3) IS_IN y;
-
-a : IntPair;
-ASSERT a IS_IN x;
-
-e : IntPair;
-ASSERT e = (4,3);
-
-ASSERT r = (x JOIN y);
-
-ASSERT NOT (e IS_IN r);
-CHECKSAT;
--- /dev/null
+; EXPECT: sat
+(set-option :incremental false)
+(set-logic ALL)
+
+(declare-fun x () (Set (Tuple Int Int)))
+(declare-fun y () (Set (Tuple Int Int)))
+(declare-fun r () (Set (Tuple Int Int)))
+(declare-fun d () (Tuple Int Int))
+(assert (= d (mkTuple 1 3)))
+(assert (member (mkTuple 1 3) y))
+(declare-fun a () (Tuple Int Int))
+(assert (member a x))
+(declare-fun e () (Tuple Int Int))
+(assert (= e (mkTuple 4 3)))
+(assert (= r (join x y)))
+(assert (not (member e r)))
+(check-sat)
+++ /dev/null
-% EXPECT: sat
-OPTION "logic" "ALL";
-IntPair: TYPE = [INT, INT];
-x : SET OF IntPair;
-y : SET OF IntPair;
-r : SET OF IntPair;
-f : INT;
-d : IntPair;
-ASSERT d IS_IN y;
-
-e : IntPair;
-ASSERT e = (4, f);
-ASSERT e IS_IN x;
-
-a : IntPair;
-ASSERT a = (4,3);
-
-ASSERT r = (x JOIN y);
-
-ASSERT NOT (a IS_IN r);
-CHECKSAT;
--- /dev/null
+; EXPECT: sat
+(set-option :incremental false)
+(set-logic ALL)
+
+(declare-fun x () (Set (Tuple Int Int)))
+(declare-fun y () (Set (Tuple Int Int)))
+(declare-fun r () (Set (Tuple Int Int)))
+(declare-fun f () Int)
+(declare-fun d () (Tuple Int Int))
+(assert (member d y))
+(declare-fun e () (Tuple Int Int))
+(assert (= e (mkTuple 4 f)))
+(assert (member e x))
+(declare-fun a () (Tuple Int Int))
+(assert (= a (mkTuple 4 3)))
+(assert (= r (join x y)))
+(assert (not (member a r)))
+(check-sat)
+++ /dev/null
-% EXPECT: unsat
-OPTION "logic" "ALL";
-IntPair: TYPE = [INT, INT];
-IntTup: TYPE = [INT, INT, INT, INT];
-x : SET OF IntPair;
-y : SET OF IntPair;
-z : SET OF IntTup;
-ASSERT (2, 3) IS_IN x;
-ASSERT (5, 3) IS_IN x;
-ASSERT (3, 9) IS_IN x;
-ASSERT z = (x PRODUCT y);
-ASSERT (1, 2, 3, 4) IS_IN z;
-ASSERT NOT ((5, 9) IS_IN x);
-ASSERT (3, 8) IS_IN y;
-ASSERT y = TCLOSURE(x);
-ASSERT NOT ((1, 2) IS_IN y);
-
-CHECKSAT;
--- /dev/null
+; EXPECT: unsat
+(set-option :incremental false)
+(set-logic ALL)
+
+
+(declare-fun x () (Set (Tuple Int Int)))
+(declare-fun y () (Set (Tuple Int Int)))
+(declare-fun z () (Set (Tuple Int Int Int Int)))
+(assert (member (mkTuple 2 3) x))
+(assert (member (mkTuple 5 3) x))
+(assert (member (mkTuple 3 9) x))
+(assert (= z (product x y)))
+(assert (member (mkTuple 1 2 3 4) z))
+(assert (not (member (mkTuple 5 9) x)))
+(assert (member (mkTuple 3 8) y))
+(assert (= y (tclosure x)))
+(assert (not (member (mkTuple 1 2) y)))
+(check-sat)
+++ /dev/null
-% EXPECT: sat
-OPTION "logic" "ALL";
-IntPair: TYPE = [INT, INT];
-x : SET OF IntPair;
-y : SET OF IntPair;
- e: INT;
-
-a : IntPair;
-ASSERT a = (1, e);
-
-d : IntPair;
-ASSERT d = (e,5);
-
-ASSERT a IS_IN x;
-ASSERT d IS_IN x;
-ASSERT NOT ((1,1) IS_IN x);
-ASSERT NOT ((1,2) IS_IN x);
-ASSERT NOT ((1,3) IS_IN x);
-ASSERT NOT ((1,4) IS_IN x);
-ASSERT NOT ((1,5) IS_IN x);
-ASSERT NOT ((1,6) IS_IN x);
-ASSERT NOT ((1,7) IS_IN x);
-
-ASSERT y = TCLOSURE(x);
-
-ASSERT (1, 5) IS_IN y;
-
-CHECKSAT;
--- /dev/null
+; EXPECT: sat
+(set-option :incremental false)
+(set-logic ALL)
+
+(declare-fun x () (Set (Tuple Int Int)))
+(declare-fun y () (Set (Tuple Int Int)))
+(declare-fun e () Int)
+(declare-fun a () (Tuple Int Int))
+(assert (= a (mkTuple 1 e)))
+(declare-fun d () (Tuple Int Int))
+(assert (= d (mkTuple e 5)))
+(assert (member a x))
+(assert (member d x))
+(assert (not (member (mkTuple 1 1) x)))
+(assert (not (member (mkTuple 1 2) x)))
+(assert (not (member (mkTuple 1 3) x)))
+(assert (not (member (mkTuple 1 4) x)))
+(assert (not (member (mkTuple 1 5) x)))
+(assert (not (member (mkTuple 1 6) x)))
+(assert (not (member (mkTuple 1 7) x)))
+(assert (= y (tclosure x)))
+(assert (member (mkTuple 1 5) y))
+(check-sat)
+++ /dev/null
-% EXPECT: unsat
-OPTION "logic" "ALL";
-IntPair: TYPE = [INT, INT];
-x : SET OF IntPair;
-y : SET OF IntPair;
-a: INT;
-b:INT;
-c:INT;
-d:INT;
-ASSERT (1, a) IS_IN x;
-ASSERT (1, c) IS_IN x;
-ASSERT (1, d) IS_IN x;
-ASSERT (b, 1) IS_IN x;
-ASSERT (b = d);
-ASSERT (b > (d -1));
-ASSERT (b < (d+1));
-%ASSERT (2,3) IS_IN ((x JOIN x) JOIN x);
-%ASSERT NOT (2, 3) IS_IN TCLOSURE(x);
-ASSERT y = TCLOSURE(x);
-ASSERT NOT ((1, 1) IS_IN y);
-
-CHECKSAT;
--- /dev/null
+; EXPECT: unsat
+(set-option :incremental false)
+(set-logic ALL)
+
+(declare-fun x () (Set (Tuple Int Int)))
+(declare-fun y () (Set (Tuple Int Int)))
+(declare-fun a () Int)
+(declare-fun b () Int)
+(declare-fun c () Int)
+(declare-fun d () Int)
+(assert (member (mkTuple 1 a) x))
+(assert (member (mkTuple 1 c) x))
+(assert (member (mkTuple 1 d) x))
+(assert (member (mkTuple b 1) x))
+(assert (= b d))
+(assert (> b (- d 1)))
+(assert (< b (+ d 1)))
+(assert (= y (tclosure x)))
+(assert (not (member (mkTuple 1 1) y)))
+(check-sat)
+++ /dev/null
-% EXPECT: sat
-OPTION "logic" "ALL";
-IntPair: TYPE = [INT, INT];
-x : SET OF IntPair;
-y : SET OF IntPair;
-a: INT;
-b:INT;
-c:INT;
-d:INT;
-ASSERT (1, a) IS_IN x;
-ASSERT (1, c) IS_IN x;
-ASSERT (1, d) IS_IN x;
-ASSERT (b, 1) IS_IN x;
-ASSERT (b = d);
-
-ASSERT y = TCLOSURE(x);
-
-CHECKSAT;
--- /dev/null
+; EXPECT: sat
+(set-option :incremental false)
+(set-logic ALL)
+
+(declare-fun x () (Set (Tuple Int Int)))
+(declare-fun y () (Set (Tuple Int Int)))
+(declare-fun a () Int)
+(declare-fun b () Int)
+(declare-fun c () Int)
+(declare-fun d () Int)
+(assert (member (mkTuple 1 a) x))
+(assert (member (mkTuple 1 c) x))
+(assert (member (mkTuple 1 d) x))
+(assert (member (mkTuple b 1) x))
+(assert (= b d))
+(assert (= y (tclosure x)))
+(check-sat)
+++ /dev/null
-% EXPECT: unsat
-OPTION "logic" "ALL";
-IntPair: TYPE = [INT, INT];
-x : SET OF IntPair;
-y : SET OF IntPair;
-ASSERT y = (TCLOSURE(x) JOIN x);
-ASSERT (1,2) IS_IN ((x JOIN x) JOIN x);
-ASSERT NOT (y <= TCLOSURE(x));
-
-CHECKSAT;
--- /dev/null
+; EXPECT: unsat
+(set-option :incremental false)
+(set-logic ALL)
+
+(declare-fun x () (Set (Tuple Int Int)))
+(declare-fun y () (Set (Tuple Int Int)))
+(assert (= y (join (tclosure x) x)))
+(assert (member (mkTuple 1 2) (join (join x x) x)))
+(assert (not (subset y (tclosure x))))
+(check-sat)
+++ /dev/null
-% EXPECT: unsat
-OPTION "logic" "ALL";
-IntPair: TYPE = [INT, INT];
-x : SET OF IntPair;
-y : SET OF IntPair;
-
-ASSERT (2, 2) IS_IN TCLOSURE(x);
-ASSERT x = {}::SET OF IntPair;
-
-CHECKSAT;
--- /dev/null
+; EXPECT: unsat
+(set-option :incremental false)
+(set-logic ALL)
+
+(declare-fun x () (Set (Tuple Int Int)))
+(declare-fun y () (Set (Tuple Int Int)))
+(assert (member (mkTuple 2 2) (tclosure x)))
+(assert (= x (as emptyset (Set (Tuple Int Int)))))
+(check-sat)
+++ /dev/null
-% EXPECT: sat
-OPTION "logic" "ALL";
-IntPair: TYPE = [INT, INT];
-x : SET OF IntPair;
-y : SET OF IntPair;
-z: SET OF IntPair;
-
-ASSERT (1, 3) IS_IN x;
-ASSERT ((2,3) IS_IN z OR (2,1) IS_IN z);
-ASSERT y = TRANSPOSE(x);
-ASSERT NOT (1,2) IS_IN y;
-
-ASSERT x = z;
-CHECKSAT;
--- /dev/null
+; EXPECT: sat
+(set-option :incremental false)
+(set-logic ALL)
+
+(declare-fun x () (Set (Tuple Int Int)))
+(declare-fun y () (Set (Tuple Int Int)))
+(declare-fun z () (Set (Tuple Int Int)))
+(assert (member (mkTuple 1 3) x))
+(assert (or (member (mkTuple 2 3) z) (member (mkTuple 2 1) z)))
+(assert (= y (transpose x)))
+(assert (not (member (mkTuple 1 2) y)))
+(assert (= x z))
+(check-sat)
+++ /dev/null
-% EXPECT: unsat
-OPTION "logic" "ALL";
-IntPair: TYPE = [INT, INT];
-x : SET OF IntPair;
-y : SET OF IntPair;
-r : SET OF IntPair;
-
-
-z : IntPair;
-ASSERT z = (1,2);
-zt : IntPair;
-ASSERT zt = (2,1);
-v : IntPair;
-ASSERT v = (1,1);
-a : IntPair;
-ASSERT a = (5,1);
-
-b : IntPair;
-ASSERT b = (7, 5);
-
-ASSERT (1, 7) IS_IN x;
-ASSERT (2, 3) IS_IN x;
-ASSERT (3, 4) IS_IN x;
-
-ASSERT b IS_IN y;
-ASSERT (7, 3) IS_IN y;
-ASSERT (4, 7) IS_IN y;
-ASSERT r = (x JOIN y);
-ASSERT z IS_IN x;
-ASSERT zt IS_IN y;
-ASSERT NOT (a IS_IN TRANSPOSE(r));
-CHECKSAT;
--- /dev/null
+; EXPECT: unsat
+(set-option :incremental false)
+(set-logic ALL)
+
+(declare-fun x () (Set (Tuple Int Int)))
+(declare-fun y () (Set (Tuple Int Int)))
+(declare-fun r () (Set (Tuple Int Int)))
+(declare-fun z () (Tuple Int Int))
+(assert (= z (mkTuple 1 2)))
+(declare-fun zt () (Tuple Int Int))
+(assert (= zt (mkTuple 2 1)))
+(declare-fun v () (Tuple Int Int))
+(assert (= v (mkTuple 1 1)))
+(declare-fun a () (Tuple Int Int))
+(assert (= a (mkTuple 5 1)))
+(declare-fun b () (Tuple Int Int))
+(assert (= b (mkTuple 7 5)))
+(assert (member (mkTuple 1 7) x))
+(assert (member (mkTuple 2 3) x))
+(assert (member (mkTuple 3 4) x))
+(assert (member b y))
+(assert (member (mkTuple 7 3) y))
+(assert (member (mkTuple 4 7) y))
+(assert (= r (join x y)))
+(assert (member z x))
+(assert (member zt y))
+(assert (not (member a (transpose r))))
+(check-sat)
+++ /dev/null
-% EXPECT: unsat
-OPTION "logic" "ALL";
-IntPair: TYPE = [INT, INT];
-x : SET OF IntPair;
-y : SET OF IntPair;
-z : SET OF IntPair;
-r : SET OF IntPair;
-
-b : IntPair;
-ASSERT b = (1,7);
-c : IntPair;
-ASSERT c = (2,3);
-ASSERT b IS_IN x;
-ASSERT c IS_IN x;
-
-d : IntPair;
-ASSERT d = (7,3);
-e : IntPair;
-ASSERT e = (4,7);
-
-ASSERT d IS_IN y;
-ASSERT e IS_IN y;
-
-ASSERT (3, 4) IS_IN z;
-
-a : IntPair;
-ASSERT a = (4,1);
-
-ASSERT r = ((x JOIN y) JOIN z);
-
-ASSERT NOT (a IS_IN TRANSPOSE(r));
-CHECKSAT;
--- /dev/null
+; EXPECT: unsat
+(set-option :incremental false)
+(set-logic ALL)
+
+(declare-fun x () (Set (Tuple Int Int)))
+(declare-fun y () (Set (Tuple Int Int)))
+(declare-fun z () (Set (Tuple Int Int)))
+(declare-fun r () (Set (Tuple Int Int)))
+(declare-fun b () (Tuple Int Int))
+(assert (= b (mkTuple 1 7)))
+(declare-fun c () (Tuple Int Int))
+(assert (= c (mkTuple 2 3)))
+(assert (member b x))
+(assert (member c x))
+(declare-fun d () (Tuple Int Int))
+(assert (= d (mkTuple 7 3)))
+(declare-fun e () (Tuple Int Int))
+(assert (= e (mkTuple 4 7)))
+(assert (member d y))
+(assert (member e y))
+(assert (member (mkTuple 3 4) z))
+(declare-fun a () (Tuple Int Int))
+(assert (= a (mkTuple 4 1)))
+(assert (= r (join (join x y) z)))
+(assert (not (member a (transpose r))))
+(check-sat)
+++ /dev/null
-% EXPECT: unsat
-OPTION "logic" "ALL";
-IntPair: TYPE = [INT, INT];
-x : SET OF IntPair;
-y : SET OF IntPair;
-z : SET OF IntPair;
-r : SET OF IntPair;
-
-ASSERT (7, 1) IS_IN x;
-ASSERT (2, 3) IS_IN x;
-ASSERT (7, 3) IS_IN y;
-ASSERT (4, 7) IS_IN y;
-ASSERT (3, 4) IS_IN z;
-
-a : IntPair;
-ASSERT a = (4,1);
-ASSERT r = ((TRANSPOSE(x) JOIN y) JOIN z);
-ASSERT NOT (a IS_IN TRANSPOSE(r));
-CHECKSAT;
--- /dev/null
+; EXPECT: unsat
+(set-option :incremental false)
+(set-logic ALL)
+
+(declare-fun x () (Set (Tuple Int Int)))
+(declare-fun y () (Set (Tuple Int Int)))
+(declare-fun z () (Set (Tuple Int Int)))
+(declare-fun r () (Set (Tuple Int Int)))
+(assert (member (mkTuple 7 1) x))
+(assert (member (mkTuple 2 3) x))
+(assert (member (mkTuple 7 3) y))
+(assert (member (mkTuple 4 7) y))
+(assert (member (mkTuple 3 4) z))
+(declare-fun a () (Tuple Int Int))
+(assert (= a (mkTuple 4 1)))
+(assert (= r (join (join (transpose x) y) z)))
+(assert (not (member a (transpose r))))
+(check-sat)
+++ /dev/null
-% EXPECT: unsat
-% crash on this
-OPTION "logic" "ALL";
-IntPair: TYPE = [INT, INT];
-w : SET OF IntPair;
-x : SET OF IntPair;
-y : SET OF IntPair;
-z : SET OF IntPair;
-r : SET OF IntPair;
-
-ASSERT (7, 1) IS_IN x;
-ASSERT (2, 3) IS_IN x;
-ASSERT (7, 3) IS_IN y;
-ASSERT (4, 7) IS_IN y;
-ASSERT (3, 4) IS_IN z;
-ASSERT (3, 3) IS_IN w;
-
-a : IntPair;
-ASSERT a = (4,1);
-%ASSERT r = ((TRANSPOSE(x) JOIN y) JOIN (w JOIN z));
-ASSERT NOT (a IS_IN TRANSPOSE(r));
-
-zz : SET OF IntPair;
-ASSERT zz = (TRANSPOSE(x) JOIN y);
-ASSERT NOT ((1,3) IS_IN w);
-ASSERT NOT ((1,3) IS_IN (w | zz) );
-
-CHECKSAT;
--- /dev/null
+; EXPECT: unsat
+(set-option :incremental false)
+(set-logic ALL)
+
+(declare-fun w () (Set (Tuple Int Int)))
+(declare-fun x () (Set (Tuple Int Int)))
+(declare-fun y () (Set (Tuple Int Int)))
+(declare-fun z () (Set (Tuple Int Int)))
+(declare-fun r () (Set (Tuple Int Int)))
+(assert (member (mkTuple 7 1) x))
+(assert (member (mkTuple 2 3) x))
+(assert (member (mkTuple 7 3) y))
+(assert (member (mkTuple 4 7) y))
+(assert (member (mkTuple 3 4) z))
+(assert (member (mkTuple 3 3) w))
+(declare-fun a () (Tuple Int Int))
+(assert (= a (mkTuple 4 1)))
+(assert (not (member a (transpose r))))
+(declare-fun zz () (Set (Tuple Int Int)))
+(assert (= zz (join (transpose x) y)))
+(assert (not (member (mkTuple 1 3) w)))
+(assert (not (member (mkTuple 1 3) (union w zz))))
+(check-sat)
+++ /dev/null
-% EXPECT: unsat
-OPTION "logic" "ALL";
-IntPair: TYPE = [INT, INT];
-x : SET OF IntPair;
-y : SET OF IntPair;
-z : SET OF IntPair;
-r : SET OF IntPair;
-
-
-ASSERT x = {(1,7), (2,3)};
-
-d : IntPair;
-ASSERT d = (7,3);
-e : IntPair;
-ASSERT e = (4,7);
-
-ASSERT d IS_IN y;
-ASSERT e IS_IN y;
-
-ASSERT (3, 4) IS_IN z;
-
-a : IntPair;
-ASSERT a = (4,1);
-
-ASSERT r = ((x JOIN y) JOIN z);
-
-ASSERT NOT (a IS_IN TRANSPOSE(r));
-CHECKSAT;
--- /dev/null
+; EXPECT: unsat
+(set-option :incremental false)
+(set-logic ALL)
+
+(declare-fun x () (Set (Tuple Int Int)))
+(declare-fun y () (Set (Tuple Int Int)))
+(declare-fun z () (Set (Tuple Int Int)))
+(declare-fun r () (Set (Tuple Int Int)))
+(assert (= x (union (singleton (mkTuple 1 7)) (singleton (mkTuple 2 3)))))
+(declare-fun d () (Tuple Int Int))
+(assert (= d (mkTuple 7 3)))
+(declare-fun e () (Tuple Int Int))
+(assert (= e (mkTuple 4 7)))
+(assert (member d y))
+(assert (member e y))
+(assert (member (mkTuple 3 4) z))
+(declare-fun a () (Tuple Int Int))
+(assert (= a (mkTuple 4 1)))
+(assert (= r (join (join x y) z)))
+(assert (not (member a (transpose r))))
+(check-sat)
+++ /dev/null
-% EXPECT: unsat
-% crash on this
-OPTION "logic" "ALL";
-IntPair: TYPE = [INT, INT];
-w : SET OF IntPair;
-x : SET OF IntPair;
-y : SET OF IntPair;
-z : SET OF IntPair;
-r : SET OF IntPair;
-
-t : INT;
-u : INT;
-
-ASSERT 4 < t AND t < 6;
-ASSERT 4 < u AND u < 6;
-
-ASSERT (1, u) IS_IN x;
-ASSERT (t, 3) IS_IN y;
-
-a : IntPair;
-ASSERT a = (1,3);
-
-ASSERT NOT (a IS_IN (x JOIN y));
-
-
-CHECKSAT;
--- /dev/null
+; EXPECT: unsat
+(set-option :incremental false)
+(set-logic ALL)
+
+(declare-fun w () (Set (Tuple Int Int)))
+(declare-fun x () (Set (Tuple Int Int)))
+(declare-fun y () (Set (Tuple Int Int)))
+(declare-fun z () (Set (Tuple Int Int)))
+(declare-fun r () (Set (Tuple Int Int)))
+(declare-fun t () Int)
+(declare-fun u () Int)
+(assert (and (< 4 t) (< t 6)))
+(assert (and (< 4 u) (< u 6)))
+(assert (member (mkTuple 1 u) x))
+(assert (member (mkTuple t 3) y))
+(declare-fun a () (Tuple Int Int))
+(assert (= a (mkTuple 1 3)))
+(assert (not (member a (join x y))))
+(check-sat)
+++ /dev/null
-% EXPECT: unsat
-OPTION "logic" "ALL";
-IntPair: TYPE = [INT, INT];
-IntTup: TYPE = [INT, INT, INT, INT];
-x : SET OF IntPair;
-y : SET OF IntPair;
-z : SET OF IntPair;
-r : SET OF IntTup;
-
-ASSERT (2, 1) IS_IN x;
-ASSERT (2, 3) IS_IN x;
-ASSERT (2, 2) IS_IN y;
-ASSERT (4, 7) IS_IN y;
-ASSERT (3, 4) IS_IN z;
-
-v : IntTup;
-ASSERT v = (4,3,2,1);
-
-ASSERT r = ((TRANSPOSE(x) JOIN y) PRODUCT z);
-ASSERT NOT (v IS_IN TRANSPOSE(r));
-CHECKSAT;
--- /dev/null
+; EXPECT: unsat
+(set-option :incremental false)
+(set-logic ALL)
+
+
+(declare-fun x () (Set (Tuple Int Int)))
+(declare-fun y () (Set (Tuple Int Int)))
+(declare-fun z () (Set (Tuple Int Int)))
+(declare-fun r () (Set (Tuple Int Int Int Int)))
+(assert (member (mkTuple 2 1) x))
+(assert (member (mkTuple 2 3) x))
+(assert (member (mkTuple 2 2) y))
+(assert (member (mkTuple 4 7) y))
+(assert (member (mkTuple 3 4) z))
+(declare-fun v () (Tuple Int Int Int Int))
+(assert (= v (mkTuple 4 3 2 1)))
+(assert (= r (product (join (transpose x) y) z)))
+(assert (not (member v (transpose r))))
+(check-sat)
+++ /dev/null
-% EXPECT: unsat
-OPTION "logic" "ALL";
-IntPair: TYPE = [INT, INT];
-w : SET OF IntPair;
-x : SET OF IntPair;
-y : SET OF IntPair;
-z : SET OF IntPair;
-r : SET OF IntPair;
-
-t : INT;
-u : INT;
-
-ASSERT 4 < t AND t < 6;
-ASSERT 4 < u AND u < 6;
-
-ASSERT (1, t) IS_IN x;
-ASSERT (u, 3) IS_IN y;
-
-a : IntPair;
-ASSERT a = (1,3);
-
-ASSERT NOT (a IS_IN (x JOIN y));
-
-st : SET OF INT;
-su : SET OF INT;
-ASSERT t IS_IN st;
-ASSERT u IS_IN su;
-CHECKSAT;
--- /dev/null
+; EXPECT: unsat
+(set-option :incremental false)
+(set-logic ALL)
+
+(declare-fun w () (Set (Tuple Int Int)))
+(declare-fun x () (Set (Tuple Int Int)))
+(declare-fun y () (Set (Tuple Int Int)))
+(declare-fun z () (Set (Tuple Int Int)))
+(declare-fun r () (Set (Tuple Int Int)))
+(declare-fun t () Int)
+(declare-fun u () Int)
+(assert (and (< 4 t) (< t 6)))
+(assert (and (< 4 u) (< u 6)))
+(assert (member (mkTuple 1 t) x))
+(assert (member (mkTuple u 3) y))
+(declare-fun a () (Tuple Int Int))
+(assert (= a (mkTuple 1 3)))
+(assert (not (member a (join x y))))
+(declare-fun st () (Set Int))
+(declare-fun su () (Set Int))
+(assert (member t st))
+(assert (member u su))
+(check-sat)
+++ /dev/null
-% EXPECT: unsat
-OPTION "logic" "ALL";
-IntPair: TYPE = [INT, INT];
-x : SET OF IntPair;
-y : SET OF IntPair;
-
-a: INT;
-z : IntPair;
-ASSERT z = (1,2);
-zt : IntPair;
-ASSERT zt = (2,1);
-
-ASSERT z IS_IN x;
-ASSERT NOT (zt IS_IN TRANSPOSE(x));
-
-ASSERT y = TRANSPOSE(x);
-
-CHECKSAT;
--- /dev/null
+; EXPECT: unsat
+(set-option :incremental false)
+(set-logic ALL)
+
+(declare-fun x () (Set (Tuple Int Int)))
+(declare-fun y () (Set (Tuple Int Int)))
+(declare-fun a () Int)
+(declare-fun z () (Tuple Int Int))
+(assert (= z (mkTuple 1 2)))
+(declare-fun zt () (Tuple Int Int))
+(assert (= zt (mkTuple 2 1)))
+(assert (member z x))
+(assert (not (member zt (transpose x))))
+(assert (= y (transpose x)))
+(check-sat)
+++ /dev/null
-% EXPECT: unsat
-OPTION "logic" "ALL";
-IntTup: TYPE = [INT, INT, INT];
-x : SET OF IntTup;
-y : SET OF IntTup;
-z : IntTup;
-ASSERT z = (1,2,3);
-zt : IntTup;
-ASSERT zt = (3,2,1);
-ASSERT z IS_IN x;
-ASSERT NOT (zt IS_IN TRANSPOSE(x));
-CHECKSAT;
--- /dev/null
+; EXPECT: unsat
+(set-option :incremental false)
+(set-logic ALL)
+
+(declare-fun x () (Set (Tuple Int Int Int)))
+(declare-fun y () (Set (Tuple Int Int Int)))
+(declare-fun z () (Tuple Int Int Int))
+(assert (= z (mkTuple 1 2 3)))
+(declare-fun zt () (Tuple Int Int Int))
+(assert (= zt (mkTuple 3 2 1)))
+(assert (member z x))
+(assert (not (member zt (transpose x))))
+(check-sat)
+++ /dev/null
-% EXPECT: sat
-OPTION "logic" "ALL";
-IntTup: TYPE = [INT, INT, INT];
-x : SET OF IntTup;
-y : SET OF IntTup;
-z : IntTup;
-a: INT;
-ASSERT z = (1,2,a);
-zt : IntTup;
-ASSERT zt = (3,2,2);
-ASSERT z IS_IN x;
-ASSERT zt IS_IN TRANSPOSE(x);
-ASSERT y = TRANSPOSE(x);
-CHECKSAT;
--- /dev/null
+; EXPECT: sat
+(set-option :incremental false)
+(set-logic ALL)
+
+(declare-fun x () (Set (Tuple Int Int Int)))
+(declare-fun y () (Set (Tuple Int Int Int)))
+(declare-fun z () (Tuple Int Int Int))
+(declare-fun a () Int)
+(assert (= z (mkTuple 1 2 a)))
+(declare-fun zt () (Tuple Int Int Int))
+(assert (= zt (mkTuple 3 2 2)))
+(assert (member z x))
+(assert (member zt (transpose x)))
+(assert (= y (transpose x)))
+(check-sat)
+++ /dev/null
-% EXPECT: unsat
-OPTION "logic" "ALL";
-IntPair: TYPE = [INT, INT];
-x : SET OF IntPair;
-y : SET OF IntPair;
-
-z : IntPair;
-ASSERT z = (1,2);
-zt : IntPair;
-ASSERT zt = (2,1);
-ASSERT (x = y);
-ASSERT z IS_IN x;
-ASSERT NOT (zt IS_IN TRANSPOSE(y));
-
-CHECKSAT;
--- /dev/null
+; EXPECT: unsat
+(set-option :incremental false)
+(set-logic ALL)
+
+(declare-fun x () (Set (Tuple Int Int)))
+(declare-fun y () (Set (Tuple Int Int)))
+(declare-fun z () (Tuple Int Int))
+(assert (= z (mkTuple 1 2)))
+(declare-fun zt () (Tuple Int Int))
+(assert (= zt (mkTuple 2 1)))
+(assert (= x y))
+(assert (member z x))
+(assert (not (member zt (transpose y))))
+(check-sat)
+++ /dev/null
-% EXPECT: unsat
-OPTION "logic" "ALL";
-IntPair: TYPE = [INT, INT];
-x : SET OF IntPair;
-y : SET OF IntPair;
-
-z : IntPair;
-ASSERT z = (1,2);
-
-ASSERT z IS_IN x;
-ASSERT NOT ((2, 1) IS_IN TRANSPOSE(x));
-
-CHECKSAT;
--- /dev/null
+; EXPECT: unsat
+(set-option :incremental false)
+(set-logic ALL)
+
+(declare-fun x () (Set (Tuple Int Int)))
+(declare-fun y () (Set (Tuple Int Int)))
+(declare-fun z () (Tuple Int Int))
+(assert (= z (mkTuple 1 2)))
+(assert (member z x))
+(assert (not (member (mkTuple 2 1) (transpose x))))
+(check-sat)
+++ /dev/null
-% EXPECT: unsat
-OPTION "logic" "ALL";
-IntPair: TYPE = [INT, INT];
-x : SET OF IntPair;
-y : SET OF IntPair;
-
-r : SET OF IntPair;
-
-z : IntPair;
-ASSERT z = (1,2);
-zt : IntPair;
-ASSERT zt = (2,1);
-ASSERT zt IS_IN y;
-
-w : IntPair;
-ASSERT w = (2, 2);
-ASSERT w IS_IN y;
-ASSERT z IS_IN x;
-
-ASSERT NOT (zt IS_IN (TRANSPOSE (x JOIN y)));
-
-CHECKSAT;
--- /dev/null
+; EXPECT: unsat
+(set-option :incremental false)
+(set-logic ALL)
+
+(declare-fun x () (Set (Tuple Int Int)))
+(declare-fun y () (Set (Tuple Int Int)))
+(declare-fun r () (Set (Tuple Int Int)))
+(declare-fun z () (Tuple Int Int))
+(assert (= z (mkTuple 1 2)))
+(declare-fun zt () (Tuple Int Int))
+(assert (= zt (mkTuple 2 1)))
+(assert (member zt y))
+(declare-fun w () (Tuple Int Int))
+(assert (= w (mkTuple 2 2)))
+(assert (member w y))
+(assert (member z x))
+(assert (not (member zt (transpose (join x y)))))
+(check-sat)
+++ /dev/null
-% EXPECT: unsat
-OPTION "logic" "ALL";
-IntPair: TYPE = [INT, INT];
-x : SET OF IntPair;
-y : SET OF IntPair;
-
-z : IntPair;
-ASSERT z = (1,2);
-zt : IntPair;
-ASSERT zt = (2,1);
-
-ASSERT z IS_IN x;
-ASSERT (3, 4) IS_IN x;
-ASSERT (3, 5) IS_IN x;
-ASSERT (3, 3) IS_IN x;
-
-ASSERT x = TRANSPOSE(y);
-
-ASSERT NOT (zt IS_IN y);
-
-ASSERT z IS_IN y;
-ASSERT NOT (zt IS_IN TRANSPOSE(y));
-
-CHECKSAT;
--- /dev/null
+; EXPECT: unsat
+(set-option :incremental false)
+(set-logic ALL)
+
+(declare-fun x () (Set (Tuple Int Int)))
+(declare-fun y () (Set (Tuple Int Int)))
+(declare-fun z () (Tuple Int Int))
+(assert (= z (mkTuple 1 2)))
+(declare-fun zt () (Tuple Int Int))
+(assert (= zt (mkTuple 2 1)))
+(assert (member z x))
+(assert (member (mkTuple 3 4) x))
+(assert (member (mkTuple 3 5) x))
+(assert (member (mkTuple 3 3) x))
+(assert (= x (transpose y)))
+(assert (not (member zt y)))
+(assert (member z y))
+(assert (not (member zt (transpose y))))
+(check-sat)
+++ /dev/null
-% EXPECT: unsat
-OPTION "logic" "ALL";
-IntPair: TYPE = [INT, INT];
-x : SET OF IntPair;
-y : SET OF IntPair;
-
-ASSERT x = y;
-ASSERT NOT (TRANSPOSE(x) = TRANSPOSE(y));
-
-CHECKSAT;
--- /dev/null
+; EXPECT: unsat
+(set-option :incremental false)
+(set-logic ALL)
+
+(declare-fun x () (Set (Tuple Int Int)))
+(declare-fun y () (Set (Tuple Int Int)))
+(assert (= x y))
+(assert (not (= (transpose x) (transpose y))))
+(check-sat)
+++ /dev/null
-% EXPECT: sat
-OPTION "logic" "ALL";
-IntPair: TYPE = [INT, INT];
-w : SET OF IntPair;
-z : SET OF IntPair;
-x : INT;
-y : INT;
-
-ASSERT (1,x) IS_IN w;
-ASSERT (y,2) IS_IN z;
-
-ASSERT NOT (1, 2) IS_IN ( w JOIN z );
-
-CHECKSAT;
--- /dev/null
+; EXPECT: sat
+(set-option :incremental false)
+(set-logic ALL)
+
+(declare-fun w () (Set (Tuple Int Int)))
+(declare-fun z () (Set (Tuple Int Int)))
+(declare-fun x () Int)
+(declare-fun y () Int)
+(assert (member (mkTuple 1 x) w))
+(assert (member (mkTuple y 2) z))
+(assert (not (member (mkTuple 1 2) (join w z))))
+(check-sat)
+++ /dev/null
-% EXPECT: sat
-OPTION "logic" "ALL";
-x : SET OF INT;
-y : SET OF INT;
-z : SET OF INT;
-
-ASSERT CARD( x ) > CARD( y ) AND CARD( y ) > CARD( z );
-
-CHECKSAT;
--- /dev/null
+; EXPECT: sat
+(set-option :incremental false)
+(set-logic ALL)
+(declare-fun x () (Set Int))
+(declare-fun y () (Set Int))
+(declare-fun z () (Set Int))
+(assert (let ((_let_1 (card y))) (and (> (card x) _let_1) (> _let_1 (card z)))))
+(check-sat)
+++ /dev/null
-% EXPECT: sat
-OPTION "sets-ext";
-OPTION "logic" "ALL";
-Atom: TYPE;
-a : SET OF [Atom];
-b : SET OF [Atom];
-
-ASSERT a = (~ b);
-
-CHECKSAT;
--- /dev/null
+; EXPECT: sat
+(set-option :incremental false)
+(set-option :sets-ext true)
+(set-logic ALL)
+(declare-sort Atom 0)
+(declare-fun a () (Set (Tuple Atom)))
+(declare-fun b () (Set (Tuple Atom)))
+(assert (= a (complement b)))
+(check-sat)
+++ /dev/null
-% EXPECT: unsat\r
-OPTION "sets-ext";\r
-OPTION "logic" "ALL";\r
-Atom: TYPE;\r
-a : SET OF Atom;\r
-b : SET OF Atom;\r
-c : Atom;\r
-\r
-ASSERT a = ~(a);\r
-ASSERT c IS_IN a;\r
-\r
-CHECKSAT;\r
--- /dev/null
+; EXPECT: unsat\r
+(set-option :incremental false)
+(set-option :sets-ext true)
+(set-logic ALL)
+(declare-sort Atom 0)
+(declare-fun a () (Set Atom))
+(declare-fun b () (Set Atom))
+(declare-fun c () Atom)
+(assert (= a (complement a)))
+(assert (member c a))
+(check-sat)
+++ /dev/null
-% EXPECT: sat
-OPTION "sets-ext";
-OPTION "logic" "ALL";
-Atom : TYPE;
-C32 : SET OF [Atom];
-C2 : SET OF [Atom];
-C4 : SET OF [Atom];
-ATOM_UNIV : SET OF [Atom];
-V1 : Atom;
-ASSERT C32 = (~C2) & (~C4);
-ASSERT TUPLE(V1) IS_IN ~(C32);
-ASSERT ATOM_UNIV = UNIVERSE :: SET OF [Atom];
-ASSERT TUPLE(V1) IS_IN ATOM_UNIV;
-ASSERT TUPLE(V1) IS_IN ~(C2);
-CHECKSAT;
--- /dev/null
+; EXPECT: sat
+(set-option :incremental false)
+(set-option :sets-ext true)
+(set-logic ALL)
+(declare-sort Atom 0)
+(declare-fun C32 () (Set (Tuple Atom)))
+(declare-fun C2 () (Set (Tuple Atom)))
+(declare-fun C4 () (Set (Tuple Atom)))
+(declare-fun ATOM_UNIV () (Set (Tuple Atom)))
+(declare-fun V1 () Atom)
+(assert (= C32 (intersection (complement C2) (complement C4))))
+(assert (member (mkTuple V1) (complement C32)))
+(assert (= ATOM_UNIV (as univset (Set (Tuple Atom)))))
+(assert (member (mkTuple V1) ATOM_UNIV))
+(assert (member (mkTuple V1) (complement C2)))
+(check-sat)
+++ /dev/null
-% COMMAND-LINE: --incremental
-% EXPECT: unsat
-% EXPECT: unsat
-% EXPECT: unsat
-% EXPECT: unsat
-% EXPECT: unsat
-% EXPECT: not_entailed
-OPTION "incremental" true;
-OPTION "logic" "ALL";
-SetInt : TYPE = SET OF INT;
-x : SET OF INT;
-y : SET OF INT;
-z : SET OF INT;
-e1 : INT;
-e2 : INT;
-PUSH;
-a : SET OF INT;
-b : SET OF INT;
-c : SET OF INT;
-e : INT;
-ASSERT a = {5};
-ASSERT c = (a | b);
-ASSERT NOT(c = (a & b));
-ASSERT c = (a - b);
-ASSERT a <= b;
-ASSERT e IS_IN c;
-ASSERT e IS_IN a;
-ASSERT e IS_IN (a & b);
-CHECKSAT TRUE;
-POP;
-PUSH;
-ASSERT x = y;
-ASSERT NOT((x | z) = (y | z));
-CHECKSAT TRUE;
-POP;
-PUSH;
-ASSERT x = y;
-ASSERT e1 = e2;
-ASSERT e1 IS_IN x;
-ASSERT NOT(e2 IS_IN y);
-CHECKSAT TRUE;
-POP;
-PUSH;
-ASSERT x = y;
-ASSERT e1 = e2;
-ASSERT e1 IS_IN (x | z);
-ASSERT NOT(e2 IS_IN (y | z));
-CHECKSAT TRUE;
-POP;
-PUSH;
-ASSERT 5 IS_IN ({1, 2, 3, 4} | {5});
-ASSERT 5 IS_IN ({1, 2, 3, 4} | {} :: SET OF INT);
-CHECKSAT TRUE;
-POP;
-QUERY LET v_0 = e1 IS_IN z IN v_0 AND NOT v_0;
--- /dev/null
+; COMMAND-LINE: --incremental
+; EXPECT: unsat
+; EXPECT: unsat
+; EXPECT: unsat
+; EXPECT: unsat
+; EXPECT: unsat
+; EXPECT: sat
+(set-option :incremental true)
+(set-logic ALL)
+
+(declare-fun x () (Set Int))
+(declare-fun y () (Set Int))
+(declare-fun z () (Set Int))
+(declare-fun e1 () Int)
+(declare-fun e2 () Int)
+(push 1)
+(declare-fun a () (Set Int))
+(declare-fun b () (Set Int))
+(declare-fun c () (Set Int))
+(declare-fun e () Int)
+(assert (= a (singleton 5)))
+(assert (= c (union a b)))
+(assert (not (= c (intersection a b))))
+(assert (= c (setminus a b)))
+(assert (subset a b))
+(assert (member e c))
+(assert (member e a))
+(assert (member e (intersection a b)))
+(push 1)
+
+(assert true)
+
+(check-sat)
+
+(pop 1)
+
+(pop 1)
+(push 1)
+(assert (= x y))
+(assert (not (= (union x z) (union y z))))
+(push 1)
+
+(assert true)
+
+(check-sat)
+
+(pop 1)
+
+(pop 1)
+(push 1)
+(assert (= x y))
+(assert (= e1 e2))
+(assert (member e1 x))
+(assert (not (member e2 y)))
+(push 1)
+
+(assert true)
+
+(check-sat)
+
+(pop 1)
+
+(pop 1)
+(push 1)
+(assert (= x y))
+(assert (= e1 e2))
+(assert (member e1 (union x z)))
+(assert (not (member e2 (union y z))))
+(push 1)
+
+(assert true)
+
+(check-sat)
+
+(pop 1)
+
+(pop 1)
+(push 1)
+(assert (member 5 (union (union (union (union (singleton 1) (singleton 2)) (singleton 3)) (singleton 4)) (singleton 5))))
+(assert (member 5 (union (union (union (union (singleton 1) (singleton 2)) (singleton 3)) (singleton 4)) (as emptyset (Set Int)))))
+(push 1)
+
+(assert true)
+
+(check-sat)
+
+(pop 1)
+
+(pop 1)
+(check-sat-assuming ( (not (let ((_let_1 (member e1 z))) (and _let_1 (not _let_1)))) ))
+++ /dev/null
-x0, x1, x2, x3 : BOOLEAN;
-ASSERT x1 OR NOT x0;
-ASSERT x0 OR NOT x3;
-ASSERT x3 OR x2;
-ASSERT x1 AND NOT x1;
-% EXPECT: entailed
-QUERY x2;
--- /dev/null
+; EXPECT: unsat
+(set-logic ALL)
+(set-option :incremental false)
+(declare-fun x0 () Bool)
+(declare-fun x1 () Bool)
+(declare-fun x2 () Bool)
+(declare-fun x3 () Bool)
+(assert (or x1 (not x0)))
+(assert (or x0 (not x3)))
+(assert (or x3 x2))
+(assert (and x1 (not x1)))
+(check-sat-assuming ( x2 ))
+++ /dev/null
-a, b, c : BOOLEAN;
-
-ASSERT NOT a OR NOT b;
-ASSERT c OR b OR a;
-ASSERT b OR NOT a;
-ASSERT a OR NOT b OR c;
-% EXPECT: not_entailed
-QUERY FALSE;
-
--- /dev/null
+; EXPECT: sat
+(set-logic ALL)
+(set-option :incremental false)
+(declare-fun a () Bool)
+(declare-fun b () Bool)
+(declare-fun c () Bool)
+(assert (or (not a) (not b)))
+(assert (or (or c b) a))
+(assert (or b (not a)))
+(assert (or (or a (not b)) c))
+(check-sat)
+++ /dev/null
-% EXPECT: sat
-
-x : STRING;
-y : STRING;
-
-ASSERT CONCAT( REVERSE("abc"), "d") = x;
-ASSERT CONCAT( TOLOWER("ABC"), TOUPPER("abc")) = y;
-
-CHECKSAT;
--- /dev/null
+; EXPECT: sat
+(set-logic ALL)
+(set-option :incremental false)
+(declare-fun x () String)
+(declare-fun y () String)
+(assert (= (str.++ (str.rev "abc") "d") x))
+(assert (= (str.++ (str.tolower "ABC") (str.toupper "abc")) y))
+(check-sat)
+++ /dev/null
-% EXPECT: sat
-
-x : STRING;
-
-ASSERT x IS_IN RE_CONCAT(RE_OPT(RE_STAR(RE_UNION(RE_RANGE("i", "j"), RE_RANGE("k", "l")))),
- RE_PLUS(STRING_TO_REGEXP("abc")),
- RE_LOOP(STRING_TO_REGEXP("def"), 1, 2),
- RE_SIGMA);
-ASSERT NOT(x IS_IN RE_INTER(RE_STAR(RE_SIGMA), RE_EMPTY));
-
-ASSERT x = "ikljabcabcdefe";
-
-CHECKSAT;
--- /dev/null
+; EXPECT: sat
+(set-logic ALL)
+(set-option :incremental false)
+(declare-fun x () String)
+(assert (str.in_re x (re.++ (re.opt (re.* (re.union (re.range "i" "j") (re.range "k" "l")))) (re.+ (str.to_re "abc")) ((_ re.loop 1 2) (str.to_re "def")) re.allchar )))
+(assert (not (str.in_re x (re.inter (re.* re.allchar ) re.none ))))
+(assert (= x "ikljabcabcdefe"))
+(check-sat)
+++ /dev/null
-% COMMAND-LINE: --strings-exp
-% EXPECT: unsat
-
-x : STRING;
-y : STRING;
-
-ASSERT x = CONCAT( "abcd", y );
-ASSERT CHARAT(x,0) = CHARAT(x,2);
-
-CHECKSAT;
--- /dev/null
+; COMMAND-LINE: --strings-exp
+; EXPECT: unsat
+(set-logic ALL)
+(set-option :incremental false)
+(declare-fun x () String)
+(declare-fun y () String)
+(assert (= x (str.++ "abcd" y)))
+(assert (= (str.at x 0) (str.at x 2)))
+(check-sat)
+++ /dev/null
-% EXPECT: sat
-
-x : STRING;
-y : STRING;
-
-ASSERT x = CONCAT( "abcd", y );
-ASSERT LENGTH( x ) >= 6;
-ASSERT LENGTH( y ) < 5;
-
-CHECKSAT;
--- /dev/null
+; EXPECT: sat
+(set-logic ALL)
+(set-option :incremental false)
+(declare-fun x () String)
+(declare-fun y () String)
+(assert (= x (str.++ "abcd" y)))
+(assert (>= (str.len x) 6))
+(assert (< (str.len y) 5))
+(check-sat)
+++ /dev/null
-x, y : BOOLEAN;
-
-ASSERT (x OR y);
-ASSERT NOT (x OR y);
-
-% EXPECT: entailed
-QUERY FALSE;
--- /dev/null
+; EXPECT: unsat
+(set-logic ALL)
+(set-option :incremental false)
+(declare-fun x () Bool)
+(declare-fun y () Bool)
+(assert (or x y))
+(assert (not (or x y)))
+(check-sat)
+++ /dev/null
-% EXPECT: entailed
-P,Q:BOOLEAN;
-ASSERT (P OR Q);
-QUERY (P OR Q);
--- /dev/null
+; EXPECT: unsat
+(set-logic ALL)
+(set-option :incremental false)
+(declare-fun P () Bool)
+(declare-fun Q () Bool)
+(assert (or P Q))
+(check-sat-assuming ( (not (or P Q)) ))
+++ /dev/null
-% EXPECT: entailed
-A: TYPE;
-B: TYPE;
-x, y: A;
-f: A -> B;
-QUERY (x = y => f(x) = f(y));
-
--- /dev/null
+; EXPECT: unsat
+(set-logic ALL)
+(set-option :incremental false)
+(declare-sort A 0)
+(declare-sort B 0)
+(declare-fun x () A)
+(declare-fun y () A)
+(declare-fun f (A) B)
+(check-sat-assuming ( (not (=> (= x y) (= (f x) (f y)))) ))
+++ /dev/null
-% EXPECT: not_entailed
-A: TYPE;
-B: TYPE;
-x, y: A;
-f: A -> B;
-QUERY (f(x) = f(y));
-
--- /dev/null
+; EXPECT: sat
+(set-logic ALL)
+(set-option :incremental false)
+(declare-sort A 0)
+(declare-sort B 0)
+(declare-fun x () A)
+(declare-fun y () A)
+(declare-fun f (A) B)
+(check-sat-assuming ( (= (f x) (f y)) ))
+++ /dev/null
-% EXPECT: entailed
-A: TYPE;
-B: TYPE;
-x, y: A;
-a, b: A;
-
-f: A -> B;
-
-ASSERT (x = a AND y = a) OR (x = b AND y = b);
-QUERY (f(x) = f(y));
-
--- /dev/null
+; EXPECT: unsat
+(set-logic ALL)
+(set-option :incremental false)
+(declare-sort A 0)
+(declare-sort B 0)
+(declare-fun x () A)
+(declare-fun y () A)
+(declare-fun a () A)
+(declare-fun b () A)
+(declare-fun f (A) B)
+(assert (or (and (= x a) (= y a)) (and (= x b) (= y b))))
+(check-sat-assuming ( (not (= (f x) (f y))) ))
+++ /dev/null
-% EXPECT: not_entailed
-A: TYPE;
-B: TYPE;
-x, y: A;
-a, b: A;
-
-f: A -> B;
-
-ASSERT (x = a OR x = b) AND (y = b OR y = a);
-QUERY (f(x) = f(y));
-
--- /dev/null
+; EXPECT: sat
+(set-logic ALL)
+(set-option :incremental false)
+(declare-sort A 0)
+(declare-sort B 0)
+(declare-fun x () A)
+(declare-fun y () A)
+(declare-fun a () A)
+(declare-fun b () A)
+(declare-fun f (A) B)
+(assert (and (or (= x a) (= x b)) (or (= y b) (= y a))))
+(check-sat-assuming ( (= (f x) (f y)) ))
+++ /dev/null
-% EXPECT: not_entailed
-x_1 : BOOLEAN;
-x_2 : BOOLEAN;
-x_3 : BOOLEAN;
-x_4 : BOOLEAN;
-x_5 : BOOLEAN;
-x_6 : BOOLEAN;
-x_7 : BOOLEAN;
-x_8 : BOOLEAN;
-x_9 : BOOLEAN;
-x_10 : BOOLEAN;
-x_11 : BOOLEAN;
-x_12 : BOOLEAN;
-x_13 : BOOLEAN;
-x_14 : BOOLEAN;
-x_15 : BOOLEAN;
-x_16 : BOOLEAN;
-x_17 : BOOLEAN;
-x_18 : BOOLEAN;
-x_19 : BOOLEAN;
-x_20 : BOOLEAN;
-ASSERT NOT x_9 OR x_3 OR NOT x_15;
-ASSERT NOT x_12 OR NOT x_4 OR NOT x_15;
-ASSERT x_6 OR x_14 OR NOT x_17;
-ASSERT x_10 OR x_16 OR x_11;
-ASSERT NOT x_15 OR x_20 OR NOT x_7;
-ASSERT NOT x_1 OR x_10 OR x_16;
-ASSERT x_13 OR x_17 OR NOT x_7;
-ASSERT NOT x_2 OR NOT x_14 OR NOT x_13;
-ASSERT x_13 OR NOT x_6 OR x_15;
-ASSERT NOT x_9 OR x_3 OR x_16;
-ASSERT NOT x_20 OR NOT x_13 OR x_4;
-ASSERT NOT x_7 OR x_15 OR NOT x_14;
-ASSERT NOT x_15 OR NOT x_16 OR x_6;
-ASSERT x_5 OR NOT x_18 OR x_20;
-ASSERT NOT x_16 OR NOT x_19 OR x_7;
-ASSERT x_20 OR NOT x_18 OR NOT x_2;
-ASSERT x_10 OR NOT x_19 OR NOT x_14;
-ASSERT x_16 OR NOT x_7 OR x_12;
-ASSERT x_6 OR NOT x_5 OR NOT x_1;
-ASSERT NOT x_9 OR x_11 OR x_15;
-ASSERT x_19 OR NOT x_6 OR x_7;
-ASSERT NOT x_11 OR x_17 OR NOT x_19;
-ASSERT x_9 OR NOT x_16 OR x_6;
-ASSERT x_15 OR NOT x_20 OR x_10;
-ASSERT x_9 OR NOT x_1 OR NOT x_11;
-ASSERT NOT x_8 OR NOT x_19 OR x_5;
-ASSERT NOT x_19 OR x_11 OR x_20;
-ASSERT NOT x_12 OR x_13 OR NOT x_3;
-ASSERT NOT x_7 OR NOT x_17 OR NOT x_19;
-ASSERT x_17 OR x_6 OR NOT x_11;
-ASSERT NOT x_7 OR NOT x_17 OR x_10;
-ASSERT NOT x_14 OR x_9 OR x_20;
-ASSERT x_1 OR NOT x_18 OR NOT x_16;
-ASSERT NOT x_2 OR NOT x_15 OR x_20;
-ASSERT x_14 OR x_18 OR NOT x_1;
-ASSERT NOT x_8 OR NOT x_4 OR x_1;
-ASSERT x_13 OR x_3 OR NOT x_9;
-ASSERT x_5 OR x_7 OR x_8;
-ASSERT x_9 OR x_4 OR NOT x_20;
-ASSERT NOT x_18 OR NOT x_15 OR NOT x_10;
-ASSERT x_10 OR x_3 OR NOT x_20;
-ASSERT x_20 OR NOT x_14 OR x_16;
-ASSERT x_20 OR NOT x_3 OR NOT x_11;
-ASSERT NOT x_12 OR x_19 OR NOT x_16;
-ASSERT NOT x_3 OR x_5 OR x_10;
-ASSERT x_8 OR x_13 OR NOT x_7;
-ASSERT NOT x_2 OR NOT x_15 OR x_10;
-ASSERT NOT x_3 OR x_9 OR x_16;
-ASSERT NOT x_12 OR NOT x_16 OR NOT x_18;
-ASSERT x_3 OR x_1 OR NOT x_12;
-ASSERT NOT x_18 OR x_13 OR x_5;
-ASSERT x_1 OR x_3 OR NOT x_19;
-ASSERT NOT x_19 OR NOT x_5 OR x_6;
-ASSERT NOT x_20 OR x_8 OR NOT x_2;
-ASSERT x_17 OR NOT x_8 OR NOT x_13;
-ASSERT x_7 OR NOT x_11 OR NOT x_12;
-ASSERT NOT x_10 OR NOT x_14 OR NOT x_20;
-ASSERT NOT x_1 OR x_16 OR NOT x_12;
-ASSERT x_5 OR NOT x_3 OR x_9;
-ASSERT NOT x_18 OR x_8 OR x_14;
-ASSERT x_1 OR x_16 OR x_12;
-ASSERT x_20 OR NOT x_1 OR NOT x_16;
-ASSERT x_5 OR x_10 OR NOT x_13;
-ASSERT x_9 OR NOT x_10 OR x_6;
-ASSERT NOT x_12 OR x_10 OR NOT x_14;
-ASSERT NOT x_13 OR x_1 OR x_4;
-ASSERT NOT x_20 OR NOT x_7 OR x_3;
-ASSERT x_12 OR x_1 OR NOT x_10;
-ASSERT NOT x_1 OR NOT x_16 OR x_7;
-ASSERT x_11 OR NOT x_6 OR NOT x_4;
-ASSERT x_1 OR x_16 OR NOT x_20;
-ASSERT x_9 OR x_7 OR x_15;
-ASSERT NOT x_6 OR x_17 OR x_10;
-ASSERT x_8 OR x_9 OR x_17;
-ASSERT x_18 OR x_11 OR x_10;
-ASSERT x_7 OR x_1 OR NOT x_8;
-ASSERT NOT x_5 OR NOT x_12 OR x_18;
-ASSERT NOT x_6 OR x_2 OR x_15;
-ASSERT x_2 OR x_18 OR x_1;
-ASSERT NOT x_7 OR NOT x_13 OR x_16;
-ASSERT x_18 OR x_19 OR x_9;
-ASSERT x_9 OR NOT x_14 OR x_18;
-ASSERT x_14 OR x_12 OR NOT x_5;
-ASSERT NOT x_13 OR NOT x_7 OR NOT x_14;
-ASSERT NOT x_1 OR x_8 OR NOT x_16;
-ASSERT NOT x_11 OR x_4 OR x_7;
-ASSERT NOT x_4 OR x_20 OR x_5;
-ASSERT NOT x_5 OR x_2 OR x_12;
-ASSERT NOT x_5 OR x_13 OR NOT x_18;
-ASSERT NOT x_18 OR x_9 OR x_1;
-ASSERT x_10 OR NOT x_11 OR x_16;
-
-
-QUERY FALSE;
--- /dev/null
+; EXPECT: sat
+(set-logic ALL)
+(set-option :incremental false)
+(declare-fun x_1 () Bool)
+(declare-fun x_2 () Bool)
+(declare-fun x_3 () Bool)
+(declare-fun x_4 () Bool)
+(declare-fun x_5 () Bool)
+(declare-fun x_6 () Bool)
+(declare-fun x_7 () Bool)
+(declare-fun x_8 () Bool)
+(declare-fun x_9 () Bool)
+(declare-fun x_10 () Bool)
+(declare-fun x_11 () Bool)
+(declare-fun x_12 () Bool)
+(declare-fun x_13 () Bool)
+(declare-fun x_14 () Bool)
+(declare-fun x_15 () Bool)
+(declare-fun x_16 () Bool)
+(declare-fun x_17 () Bool)
+(declare-fun x_18 () Bool)
+(declare-fun x_19 () Bool)
+(declare-fun x_20 () Bool)
+(assert (or (or (not x_9) x_3) (not x_15)))
+(assert (or (or (not x_12) (not x_4)) (not x_15)))
+(assert (or (or x_6 x_14) (not x_17)))
+(assert (or (or x_10 x_16) x_11))
+(assert (or (or (not x_15) x_20) (not x_7)))
+(assert (or (or (not x_1) x_10) x_16))
+(assert (or (or x_13 x_17) (not x_7)))
+(assert (or (or (not x_2) (not x_14)) (not x_13)))
+(assert (or (or x_13 (not x_6)) x_15))
+(assert (or (or (not x_9) x_3) x_16))
+(assert (or (or (not x_20) (not x_13)) x_4))
+(assert (or (or (not x_7) x_15) (not x_14)))
+(assert (or (or (not x_15) (not x_16)) x_6))
+(assert (or (or x_5 (not x_18)) x_20))
+(assert (or (or (not x_16) (not x_19)) x_7))
+(assert (or (or x_20 (not x_18)) (not x_2)))
+(assert (or (or x_10 (not x_19)) (not x_14)))
+(assert (or (or x_16 (not x_7)) x_12))
+(assert (or (or x_6 (not x_5)) (not x_1)))
+(assert (or (or (not x_9) x_11) x_15))
+(assert (or (or x_19 (not x_6)) x_7))
+(assert (or (or (not x_11) x_17) (not x_19)))
+(assert (or (or x_9 (not x_16)) x_6))
+(assert (or (or x_15 (not x_20)) x_10))
+(assert (or (or x_9 (not x_1)) (not x_11)))
+(assert (or (or (not x_8) (not x_19)) x_5))
+(assert (or (or (not x_19) x_11) x_20))
+(assert (or (or (not x_12) x_13) (not x_3)))
+(assert (or (or (not x_7) (not x_17)) (not x_19)))
+(assert (or (or x_17 x_6) (not x_11)))
+(assert (or (or (not x_7) (not x_17)) x_10))
+(assert (or (or (not x_14) x_9) x_20))
+(assert (or (or x_1 (not x_18)) (not x_16)))
+(assert (or (or (not x_2) (not x_15)) x_20))
+(assert (or (or x_14 x_18) (not x_1)))
+(assert (or (or (not x_8) (not x_4)) x_1))
+(assert (or (or x_13 x_3) (not x_9)))
+(assert (or (or x_5 x_7) x_8))
+(assert (or (or x_9 x_4) (not x_20)))
+(assert (or (or (not x_18) (not x_15)) (not x_10)))
+(assert (or (or x_10 x_3) (not x_20)))
+(assert (or (or x_20 (not x_14)) x_16))
+(assert (or (or x_20 (not x_3)) (not x_11)))
+(assert (or (or (not x_12) x_19) (not x_16)))
+(assert (or (or (not x_3) x_5) x_10))
+(assert (or (or x_8 x_13) (not x_7)))
+(assert (or (or (not x_2) (not x_15)) x_10))
+(assert (or (or (not x_3) x_9) x_16))
+(assert (or (or (not x_12) (not x_16)) (not x_18)))
+(assert (or (or x_3 x_1) (not x_12)))
+(assert (or (or (not x_18) x_13) x_5))
+(assert (or (or x_1 x_3) (not x_19)))
+(assert (or (or (not x_19) (not x_5)) x_6))
+(assert (or (or (not x_20) x_8) (not x_2)))
+(assert (or (or x_17 (not x_8)) (not x_13)))
+(assert (or (or x_7 (not x_11)) (not x_12)))
+(assert (or (or (not x_10) (not x_14)) (not x_20)))
+(assert (or (or (not x_1) x_16) (not x_12)))
+(assert (or (or x_5 (not x_3)) x_9))
+(assert (or (or (not x_18) x_8) x_14))
+(assert (or (or x_1 x_16) x_12))
+(assert (or (or x_20 (not x_1)) (not x_16)))
+(assert (or (or x_5 x_10) (not x_13)))
+(assert (or (or x_9 (not x_10)) x_6))
+(assert (or (or (not x_12) x_10) (not x_14)))
+(assert (or (or (not x_13) x_1) x_4))
+(assert (or (or (not x_20) (not x_7)) x_3))
+(assert (or (or x_12 x_1) (not x_10)))
+(assert (or (or (not x_1) (not x_16)) x_7))
+(assert (or (or x_11 (not x_6)) (not x_4)))
+(assert (or (or x_1 x_16) (not x_20)))
+(assert (or (or x_9 x_7) x_15))
+(assert (or (or (not x_6) x_17) x_10))
+(assert (or (or x_8 x_9) x_17))
+(assert (or (or x_18 x_11) x_10))
+(assert (or (or x_7 x_1) (not x_8)))
+(assert (or (or (not x_5) (not x_12)) x_18))
+(assert (or (or (not x_6) x_2) x_15))
+(assert (or (or x_2 x_18) x_1))
+(assert (or (or (not x_7) (not x_13)) x_16))
+(assert (or (or x_18 x_19) x_9))
+(assert (or (or x_9 (not x_14)) x_18))
+(assert (or (or x_14 x_12) (not x_5)))
+(assert (or (or (not x_13) (not x_7)) (not x_14)))
+(assert (or (or (not x_1) x_8) (not x_16)))
+(assert (or (or (not x_11) x_4) x_7))
+(assert (or (or (not x_4) x_20) x_5))
+(assert (or (or (not x_5) x_2) x_12))
+(assert (or (or (not x_5) x_13) (not x_18)))
+(assert (or (or (not x_18) x_9) x_1))
+(assert (or (or x_10 (not x_11)) x_16))
+(check-sat)
+++ /dev/null
-% EXPECT: unsat
-x: REAL;
-f: REAL -> REAL;
-ASSERT NOT (f(1) = f(x));
-ASSERT NOT (f(0) = f(x));
-ASSERT (x = 0) XOR (x = 1);
-CHECKSAT;
\ No newline at end of file
--- /dev/null
+; EXPECT: unsat
+(set-logic ALL)
+(set-option :incremental false)
+(declare-fun x () Real)
+(declare-fun f (Real) Real)
+(assert (not (= (f 1) (f x))))
+(assert (not (= (f 0) (f x))))
+(assert (xor (= x 0) (= x 1)))
+(check-sat)
+++ /dev/null
-% EXPECT: sat
-x, y: REAL;
-f: REAL -> REAL;
-
-CHECKSAT NOT (f(x) = f(y));
\ No newline at end of file
--- /dev/null
+; EXPECT: sat
+(set-logic ALL)
+(set-option :incremental true)
+(declare-fun x () Real)
+(declare-fun y () Real)
+(declare-fun f (Real) Real)
+(push 1)
+
+(assert (not (= (f x) (f y))))
+
+(check-sat)
+
+(pop 1)
+
+++ /dev/null
-% EXPECT: unsat
-x, y: REAL;
-f: REAL -> REAL;
-
-ASSERT (x <= y);
-ASSERT (y <= x);
-ASSERT NOT (f(x) = f(y));
-
-CHECKSAT;
\ No newline at end of file
--- /dev/null
+; EXPECT: unsat
+(set-logic ALL)
+(set-option :incremental false)
+(declare-fun x () Real)
+(declare-fun y () Real)
+(declare-fun f (Real) Real)
+(assert (<= x y))
+(assert (<= y x))
+(assert (not (= (f x) (f y))))
+(check-sat)
+++ /dev/null
-% EXPECT: sat
-x1, y1, z1: REAL;
-x2, y2, z2: REAL;
-f: REAL -> REAL;
-g: (REAL, REAL) -> REAL;
-
-ASSERT (z1 = f(x1));
-ASSERT (z2 = f(y1));
-ASSERT NOT (g(z1, z2) = g(z2, y2));
-
-CHECKSAT;
\ No newline at end of file
--- /dev/null
+; EXPECT: sat
+(set-logic ALL)
+(set-option :incremental false)
+(declare-fun x1 () Real)
+(declare-fun y1 () Real)
+(declare-fun z1 () Real)
+(declare-fun x2 () Real)
+(declare-fun y2 () Real)
+(declare-fun z2 () Real)
+(declare-fun f (Real) Real)
+(declare-fun g (Real Real) Real)
+(assert (= z1 (f x1)))
+(assert (= z2 (f y1)))
+(assert (not (= (g z1 z2) (g z2 y2))))
+(check-sat)
+++ /dev/null
-% EXPECT: unsat
-x1, x2: REAL;
-y1, y2: REAL;
-f: REAL -> REAL;
-g: (REAL, REAL) -> REAL;
-
-ASSERT (x1 <= x2) AND (x2 <= x1);
-
-ASSERT NOT (g(x1, y1) = g(x2, y2));
-
-ASSERT (y1 <= f(x1)) AND (f(x1) <= y1);
-ASSERT (y2 <= f(x2)) AND (f(x2) <= y2);
-
-CHECKSAT;
\ No newline at end of file
--- /dev/null
+; EXPECT: unsat
+(set-logic ALL)
+(set-option :incremental false)
+(declare-fun x1 () Real)
+(declare-fun x2 () Real)
+(declare-fun y1 () Real)
+(declare-fun y2 () Real)
+(declare-fun f (Real) Real)
+(declare-fun g (Real Real) Real)
+(assert (and (<= x1 x2) (<= x2 x1)))
+(assert (not (= (g x1 y1) (g x2 y2))))
+(assert (let ((_let_1 (f x1))) (and (<= y1 _let_1) (<= _let_1 y1))))
+(assert (let ((_let_1 (f x2))) (and (<= y2 _let_1) (<= _let_1 y2))))
+(check-sat)
+++ /dev/null
-a, b, c : BOOLEAN;
-
-% EXPECT: entailed
-QUERY a OR (b OR c) <=> (a OR b) OR c;
--- /dev/null
+; EXPECT: unsat
+(set-logic ALL)
+(set-option :incremental false)
+(declare-fun a () Bool)
+(declare-fun b () Bool)
+(declare-fun c () Bool)
+(check-sat-assuming ( (not (= (or a (or b c)) (or (or a b) c))) ))
+++ /dev/null
-a, b, c : BOOLEAN;
-
-% EXPECT: entailed
-QUERY a AND (b AND c) <=> (a AND b) AND c;
--- /dev/null
+; EXPECT: unsat
+(set-logic ALL)
+(set-option :incremental false)
+(declare-fun a () Bool)
+(declare-fun b () Bool)
+(declare-fun c () Bool)
+(check-sat-assuming ( (not (= (and a (and b c)) (and (and a b) c))) ))
+++ /dev/null
-a, b, c : BOOLEAN;
-
-% EXPECT: entailed
-QUERY a OR b <=> b OR a;
--- /dev/null
+; EXPECT: unsat
+(set-logic ALL)
+(set-option :incremental false)
+(declare-fun a () Bool)
+(declare-fun b () Bool)
+(declare-fun c () Bool)
+(check-sat-assuming ( (not (= (or a b) (or b a))) ))
+++ /dev/null
-a, b, c : BOOLEAN;
-
-% EXPECT: entailed
-QUERY a AND b <=> b AND a;
--- /dev/null
+; EXPECT: unsat
+(set-logic ALL)
+(set-option :incremental false)
+(declare-fun a () Bool)
+(declare-fun b () Bool)
+(declare-fun c () Bool)
+(check-sat-assuming ( (not (= (and a b) (and b a))) ))
+++ /dev/null
-a, b, c : BOOLEAN;
-
-% EXPECT: entailed
-QUERY a OR (a AND b) <=> a;
--- /dev/null
+; EXPECT: unsat
+(set-logic ALL)
+(set-option :incremental false)
+(declare-fun a () Bool)
+(declare-fun b () Bool)
+(declare-fun c () Bool)
+(check-sat-assuming ( (not (= (or a (and a b)) a)) ))
+++ /dev/null
-a, b, c : BOOLEAN;
-
-% EXPECT: entailed
-QUERY a AND (a OR b) <=> a;
--- /dev/null
+; EXPECT: unsat
+(set-logic ALL)
+(set-option :incremental false)
+(declare-fun a () Bool)
+(declare-fun b () Bool)
+(declare-fun c () Bool)
+(check-sat-assuming ( (not (= (and a (or a b)) a)) ))
+++ /dev/null
-a, b, c : BOOLEAN;
-
-% EXPECT: entailed
-QUERY a OR (b AND c) <=> (a OR b) AND (a OR c);
--- /dev/null
+; EXPECT: unsat
+(set-logic ALL)
+(set-option :incremental false)
+(declare-fun a () Bool)
+(declare-fun b () Bool)
+(declare-fun c () Bool)
+(check-sat-assuming ( (not (= (or a (and b c)) (and (or a b) (or a c)))) ))
+++ /dev/null
-a, b, c : BOOLEAN;
-
-% EXPECT: entailed
-QUERY a AND (b OR c) <=> (a AND b) OR (a AND c);
--- /dev/null
+; EXPECT: unsat
+(set-logic ALL)
+(set-option :incremental false)
+(declare-fun a () Bool)
+(declare-fun b () Bool)
+(declare-fun c () Bool)
+(check-sat-assuming ( (not (= (and a (or b c)) (or (and a b) (and a c)))) ))
+++ /dev/null
-a, b, c : BOOLEAN;
-
-% EXPECT: entailed
-QUERY a OR NOT a;
--- /dev/null
+; EXPECT: unsat
+(set-logic ALL)
+(set-option :incremental false)
+(declare-fun a () Bool)
+(declare-fun b () Bool)
+(declare-fun c () Bool)
+(check-sat-assuming ( (not (or a (not a))) ))
+++ /dev/null
-a, b, c : BOOLEAN;
-
-% EXPECT: entailed
-QUERY a AND NOT a <=> FALSE;
--- /dev/null
+; EXPECT: unsat
+(set-logic ALL)
+(set-option :incremental false)
+(declare-fun a () Bool)
+(declare-fun b () Bool)
+(declare-fun c () Bool)
+(check-sat-assuming ( (not (= (and a (not a)) false)) ))
+++ /dev/null
-a, b, c : BOOLEAN;
-
-% EXPECT: entailed
-QUERY a OR a <=> a;
--- /dev/null
+; EXPECT: unsat
+(set-logic ALL)
+(set-option :incremental false)
+(declare-fun a () Bool)
+(declare-fun b () Bool)
+(declare-fun c () Bool)
+(check-sat-assuming ( (not (= (or a a) a)) ))
+++ /dev/null
-a, b, c : BOOLEAN;
-
-% EXPECT: entailed
-QUERY a AND a <=> a;
--- /dev/null
+; EXPECT: unsat
+(set-logic ALL)
+(set-option :incremental false)
+(declare-fun a () Bool)
+(declare-fun b () Bool)
+(declare-fun c () Bool)
+(check-sat-assuming ( (not (= (and a a) a)) ))
+++ /dev/null
-a, b, c : BOOLEAN;
-
-% EXPECT: entailed
-QUERY a OR FALSE <=> a;
--- /dev/null
+; EXPECT: unsat
+(set-logic ALL)
+(set-option :incremental false)
+(declare-fun a () Bool)
+(declare-fun b () Bool)
+(declare-fun c () Bool)
+(check-sat-assuming ( (not (= (or a false) a)) ))
+++ /dev/null
-a, b, c : BOOLEAN;
-
-% EXPECT: entailed
-QUERY a AND TRUE <=> a;
--- /dev/null
+; EXPECT: unsat
+(set-logic ALL)
+(set-option :incremental false)
+(declare-fun a () Bool)
+(declare-fun b () Bool)
+(declare-fun c () Bool)
+(check-sat-assuming ( (not (= (and a true) a)) ))
+++ /dev/null
-a, b, c : BOOLEAN;
-
-% EXPECT: entailed
-QUERY a OR TRUE <=> TRUE;
--- /dev/null
+; EXPECT: unsat
+(set-logic ALL)
+(set-option :incremental false)
+(declare-fun a () Bool)
+(declare-fun b () Bool)
+(declare-fun c () Bool)
+(check-sat-assuming ( (not (= (or a true) true)) ))
+++ /dev/null
-a, b, c : BOOLEAN;
-
-% EXPECT: entailed
-QUERY a AND FALSE <=> FALSE;
--- /dev/null
+; EXPECT: unsat
+(set-logic ALL)
+(set-option :incremental false)
+(declare-fun a () Bool)
+(declare-fun b () Bool)
+(declare-fun c () Bool)
+(check-sat-assuming ( (not (= (and a false) false)) ))
+++ /dev/null
-a, b, c : BOOLEAN;
-
-% EXPECT: entailed
-QUERY NOT FALSE <=> TRUE;
--- /dev/null
+; EXPECT: unsat
+(set-logic ALL)
+(set-option :incremental false)
+(declare-fun a () Bool)
+(declare-fun b () Bool)
+(declare-fun c () Bool)
+(check-sat-assuming ( (not (= (not false) true)) ))
+++ /dev/null
-a, b, c : BOOLEAN;
-
-% EXPECT: entailed
-QUERY NOT TRUE <=> FALSE;
--- /dev/null
+; EXPECT: unsat
+(set-logic ALL)
+(set-option :incremental false)
+(declare-fun a () Bool)
+(declare-fun b () Bool)
+(declare-fun c () Bool)
+(check-sat-assuming ( (not (= (not true) false)) ))
+++ /dev/null
-a, b, c : BOOLEAN;
-
-% EXPECT: entailed
-QUERY NOT (a OR b) <=> NOT a AND NOT b;
--- /dev/null
+; EXPECT: unsat
+(set-logic ALL)
+(set-option :incremental false)
+(declare-fun a () Bool)
+(declare-fun b () Bool)
+(declare-fun c () Bool)
+(check-sat-assuming ( (not (= (not (or a b)) (and (not a) (not b)))) ))
+++ /dev/null
-a, b, c : BOOLEAN;
-
-% EXPECT: entailed
-QUERY NOT (a AND b) <=> NOT a OR NOT b;
--- /dev/null
+; EXPECT: unsat
+(set-logic ALL)
+(set-option :incremental false)
+(declare-fun a () Bool)
+(declare-fun b () Bool)
+(declare-fun c () Bool)
+(check-sat-assuming ( (not (= (not (and a b)) (or (not a) (not b)))) ))
+++ /dev/null
-a, b, c : BOOLEAN;
-
-% EXPECT: entailed
-QUERY NOT NOT a <=> a;
--- /dev/null
+; EXPECT: unsat
+(set-logic ALL)
+(set-option :incremental false)
+(declare-fun a () Bool)
+(declare-fun b () Bool)
+(declare-fun c () Bool)
+(check-sat-assuming ( (not (= (not (not a)) a)) ))
+++ /dev/null
-% EXPECT: not_entailed
-
-x0, x1, x2, x3 : INT;
-ASSERT (12 * x0) + (-25 * x1) + (21 * x2) + (7 * x3) < 27 ;
-ASSERT (9 * x0) + (2 * x1) + (26 * x2) + (-3 * x3) >= 11 ;
-ASSERT (3 * x0) + (-29 * x1) + (-4 * x2) + (-17 * x3) > 2 ;
-ASSERT (7 * x0) + (-29 * x1) + (12 * x2) + (16 * x3) >= -14 ;
-ASSERT (21 * x0) + (32 * x1) + (16 * x2) + (4 * x3) >= -19 ;
-ASSERT (6 * x0) + (23 * x1) + (-10 * x2) + (-25 * x3) > 5 ;
-ASSERT (-26 * x0) + (4 * x1) + (-23 * x2) + (-30 * x3) >= 25 ;
-ASSERT (-4 * x0) + (-13 * x1) + (15 * x2) + (-12 * x3) > -13 ;
-ASSERT (-11 * x0) + (31 * x1) + (0 * x2) + (-2 * x3) < 8 ;
-ASSERT (7 * x0) + (14 * x1) + (-21 * x2) + (-5 * x3) >= -19 ;
-ASSERT (-28 * x0) + (-12 * x1) + (7 * x2) + (-5 * x3) <= 28;
-QUERY FALSE;
--- /dev/null
+; EXPECT: sat
+(set-logic ALL)
+(set-option :incremental false)
+(declare-fun x0 () Int)
+(declare-fun x1 () Int)
+(declare-fun x2 () Int)
+(declare-fun x3 () Int)
+(assert (< (+ (+ (+ (* 12 x0) (* (- 25) x1)) (* 21 x2)) (* 7 x3)) 27))
+(assert (>= (+ (+ (+ (* 9 x0) (* 2 x1)) (* 26 x2)) (* (- 3) x3)) 11))
+(assert (> (+ (+ (+ (* 3 x0) (* (- 29) x1)) (* (- 4) x2)) (* (- 17) x3)) 2))
+(assert (>= (+ (+ (+ (* 7 x0) (* (- 29) x1)) (* 12 x2)) (* 16 x3)) (- 14)))
+(assert (>= (+ (+ (+ (* 21 x0) (* 32 x1)) (* 16 x2)) (* 4 x3)) (- 19)))
+(assert (> (+ (+ (+ (* 6 x0) (* 23 x1)) (* (- 10) x2)) (* (- 25) x3)) 5))
+(assert (>= (+ (+ (+ (* (- 26) x0) (* 4 x1)) (* (- 23) x2)) (* (- 30) x3)) 25))
+(assert (let ((_let_1 (- 13))) (> (+ (+ (+ (* (- 4) x0) (* _let_1 x1)) (* 15 x2)) (* (- 12) x3)) _let_1)))
+(assert (< (+ (+ (+ (* (- 11) x0) (* 31 x1)) (* 0 x2)) (* (- 2) x3)) 8))
+(assert (>= (+ (+ (+ (* 7 x0) (* 14 x1)) (* (- 21) x2)) (* (- 5) x3)) (- 19)))
+(assert (<= (+ (+ (+ (* (- 28) x0) (* (- 12) x1)) (* 7 x2)) (* (- 5) x3)) 28))
+(check-sat-assuming ( (not false) ))
+++ /dev/null
-% EXPECT: not_entailed
-x0, x1, x2, x3 : INT;
-ASSERT (13 * x0) + (-1 * x1) + (11 * x2) + (10 * x3) = 9 ;
-ASSERT (-7 * x0) + (3 * x1) + (-22 * x2) + (16 * x3) >= 9;
-QUERY FALSE;
--- /dev/null
+; EXPECT: sat
+(set-logic ALL)
+(set-option :incremental false)
+(declare-fun x0 () Int)
+(declare-fun x1 () Int)
+(declare-fun x2 () Int)
+(declare-fun x3 () Int)
+(assert (= (+ (+ (+ (* 13 x0) (* (- 1) x1)) (* 11 x2)) (* 10 x3)) 9))
+(assert (>= (+ (+ (+ (* (- 7) x0) (* 3 x1)) (* (- 22) x2)) (* 16 x3)) 9))
+(check-sat-assuming ( (not false) ))
+++ /dev/null
-% EXPECT: not_entailed
-x0, x1, x2, x3 : INT;
-ASSERT (18 * x0) + (32 * x1) + (-11 * x2) + (18 * x3) < -25 ;
-ASSERT (-31 * x0) + (16 * x1) + (24 * x2) + (9 * x3) >= -24;
-QUERY FALSE;
--- /dev/null
+; EXPECT: sat
+(set-logic ALL)
+(set-option :incremental false)
+(declare-fun x0 () Int)
+(declare-fun x1 () Int)
+(declare-fun x2 () Int)
+(declare-fun x3 () Int)
+(assert (< (+ (+ (+ (* 18 x0) (* 32 x1)) (* (- 11) x2)) (* 18 x3)) (- 25)))
+(assert (>= (+ (+ (+ (* (- 31) x0) (* 16 x1)) (* 24 x2)) (* 9 x3)) (- 24)))
+(check-sat-assuming ( (not false) ))
+++ /dev/null
-% EXPECT: not_entailed
-x0, x1, x2, x3 : INT;
-ASSERT (-22 * x0) + (-14 * x1) + (4 * x2) + (-12 * x3) > 25 ;
-ASSERT (14 * x0) + (11 * x1) + (32 * x2) + (-8 * x3) >= 2;
-QUERY FALSE;
--- /dev/null
+; EXPECT: sat
+(set-logic ALL)
+(set-option :incremental false)
+(declare-fun x0 () Int)
+(declare-fun x1 () Int)
+(declare-fun x2 () Int)
+(declare-fun x3 () Int)
+(assert (> (+ (+ (+ (* (- 22) x0) (* (- 14) x1)) (* 4 x2)) (* (- 12) x3)) 25))
+(assert (>= (+ (+ (+ (* 14 x0) (* 11 x1)) (* 32 x2)) (* (- 8) x3)) 2))
+(check-sat-assuming ( (not false) ))
+++ /dev/null
-% EXPECT: not_entailed
-x0, x1, x2, x3 : INT;
-ASSERT (-24 * x0) + (25 * x1) + (-28 * x2) + (31 * x3) > 18;
-QUERY FALSE;
--- /dev/null
+; EXPECT: sat
+(set-logic ALL)
+(set-option :incremental false)
+(declare-fun x0 () Int)
+(declare-fun x1 () Int)
+(declare-fun x2 () Int)
+(declare-fun x3 () Int)
+(assert (> (+ (+ (+ (* (- 24) x0) (* 25 x1)) (* (- 28) x2)) (* 31 x3)) 18))
+(check-sat-assuming ( (not false) ))
+++ /dev/null
-% EXPECT: not_entailed
-x0, x1, x2, x3 : INT;
-ASSERT (4 * x0) + (8 * x1) + (27 * x2) + (-12 * x3) = -5;
-QUERY FALSE;
--- /dev/null
+; EXPECT: sat
+(set-logic ALL)
+(set-option :incremental false)
+(declare-fun x0 () Int)
+(declare-fun x1 () Int)
+(declare-fun x2 () Int)
+(declare-fun x3 () Int)
+(assert (= (+ (+ (+ (* 4 x0) (* 8 x1)) (* 27 x2)) (* (- 12) x3)) (- 5)))
+(check-sat-assuming ( (not false) ))
+++ /dev/null
-% EXPECT: not_entailed
-x0, x1, x2, x3 : INT;
-ASSERT (-14 * x0) + (27 * x1) + (10 * x2) + (1 * x3) = 10;
-ASSERT (-29 * x0) + (-26 * x1) + (-16 * x2) + (17 * x3) >= 16 ;
-ASSERT (-3 * x0) + (-2 * x1) + (26 * x2) + (30 * x3) < -27 ;
-QUERY FALSE;
--- /dev/null
+; EXPECT: sat
+(set-logic ALL)
+(set-option :incremental false)
+(declare-fun x0 () Int)
+(declare-fun x1 () Int)
+(declare-fun x2 () Int)
+(declare-fun x3 () Int)
+(assert (= (+ (+ (+ (* (- 14) x0) (* 27 x1)) (* 10 x2)) (* 1 x3)) 10))
+(assert (>= (+ (+ (+ (* (- 29) x0) (* (- 26) x1)) (* (- 16) x2)) (* 17 x3)) 16))
+(assert (< (+ (+ (+ (* (- 3) x0) (* (- 2) x1)) (* 26 x2)) (* 30 x3)) (- 27)))
+(check-sat-assuming ( (not false) ))
+++ /dev/null
-% EXPECT: not_entailed
-x0, x1, x2, x3 : INT;
-ASSERT (-13 * x0) + (-11 * x1) + (-14 * x2) + (21 * x3) = 6 ;
-ASSERT (7 * x0) + (5 * x1) + (13 * x2) + (21 * x3) <= 27 ;
-ASSERT (15 * x0) + (-11 * x1) + (-19 * x2) + (-13 * x3) < 5;
-QUERY FALSE;
--- /dev/null
+; EXPECT: sat
+(set-logic ALL)
+(set-option :incremental false)
+(declare-fun x0 () Int)
+(declare-fun x1 () Int)
+(declare-fun x2 () Int)
+(declare-fun x3 () Int)
+(assert (= (+ (+ (+ (* (- 13) x0) (* (- 11) x1)) (* (- 14) x2)) (* 21 x3)) 6))
+(assert (<= (+ (+ (+ (* 7 x0) (* 5 x1)) (* 13 x2)) (* 21 x3)) 27))
+(assert (< (+ (+ (+ (* 15 x0) (* (- 11) x1)) (* (- 19) x2)) (* (- 13) x3)) 5))
+(check-sat-assuming ( (not false) ))
+++ /dev/null
-% EXPECT: not_entailed
-x0, x1, x2, x3 : INT;
-ASSERT (-20 * x0) + (-19 * x1) + (6 * x2) + (32 * x3) > 16 ;
-ASSERT (-1 * x0) + (-30 * x1) + (15 * x2) + (7 * x3) < -10 ;
-ASSERT (-13 * x0) + (24 * x1) + (27 * x2) + (20 * x3) < -5;
-QUERY FALSE;
--- /dev/null
+; EXPECT: sat
+(set-logic ALL)
+(set-option :incremental false)
+(declare-fun x0 () Int)
+(declare-fun x1 () Int)
+(declare-fun x2 () Int)
+(declare-fun x3 () Int)
+(assert (> (+ (+ (+ (* (- 20) x0) (* (- 19) x1)) (* 6 x2)) (* 32 x3)) 16))
+(assert (< (+ (+ (+ (* (- 1) x0) (* (- 30) x1)) (* 15 x2)) (* 7 x3)) (- 10)))
+(assert (< (+ (+ (+ (* (- 13) x0) (* 24 x1)) (* 27 x2)) (* 20 x3)) (- 5)))
+(check-sat-assuming ( (not false) ))
+++ /dev/null
-% EXPECT: not_entailed
-x0, x1, x2, x3 : INT;
-ASSERT (-2 * x0) + (-13 * x1) + (-14 * x2) + (-26 * x3) <= 4 ;
-ASSERT (-17 * x0) + (-17 * x1) + (21 * x2) + (-4 * x3) < 18 ;
-ASSERT (-31 * x0) + (23 * x1) + (4 * x2) + (29 * x3) > -6 ;
-ASSERT (-14 * x0) + (32 * x1) + (-8 * x2) + (-8 * x3) <= -1;
-QUERY FALSE;
--- /dev/null
+; EXPECT: sat
+(set-logic ALL)
+(set-option :incremental false)
+(declare-fun x0 () Int)
+(declare-fun x1 () Int)
+(declare-fun x2 () Int)
+(declare-fun x3 () Int)
+(assert (<= (+ (+ (+ (* (- 2) x0) (* (- 13) x1)) (* (- 14) x2)) (* (- 26) x3)) 4))
+(assert (let ((_let_1 (- 17))) (< (+ (+ (+ (* _let_1 x0) (* _let_1 x1)) (* 21 x2)) (* (- 4) x3)) 18)))
+(assert (> (+ (+ (+ (* (- 31) x0) (* 23 x1)) (* 4 x2)) (* 29 x3)) (- 6)))
+(assert (let ((_let_1 (- 8))) (<= (+ (+ (+ (* (- 14) x0) (* 32 x1)) (* _let_1 x2)) (* _let_1 x3)) (- 1))))
+(check-sat-assuming ( (not false) ))
+++ /dev/null
-% EXPECT: not_entailed
-%% down from 3
-x0, x1, x2, x3 : INT;
-ASSERT (22 * x0) + (-25 * x1) + (-20 * x2) + (8 * x3) = -6 ;
-ASSERT (-9 * x0) + (30 * x1) + (-17 * x2) + (29 * x3) >= -15 ;
-ASSERT (21 * x0) + (29 * x1) + (12 * x2) + (-3 * x3) <= -21 ;
-ASSERT (-16 * x0) + (-26 * x1) + (11 * x2) + (-12 * x3) >= -14;
-QUERY FALSE;
--- /dev/null
+; EXPECT: sat
+(set-logic ALL)
+(set-option :incremental false)
+(declare-fun x0 () Int)
+(declare-fun x1 () Int)
+(declare-fun x2 () Int)
+(declare-fun x3 () Int)
+(assert (= (+ (+ (+ (* 22 x0) (* (- 25) x1)) (* (- 20) x2)) (* 8 x3)) (- 6)))
+(assert (>= (+ (+ (+ (* (- 9) x0) (* 30 x1)) (* (- 17) x2)) (* 29 x3)) (- 15)))
+(assert (<= (+ (+ (+ (* 21 x0) (* 29 x1)) (* 12 x2)) (* (- 3) x3)) (- 21)))
+(assert (>= (+ (+ (+ (* (- 16) x0) (* (- 26) x1)) (* 11 x2)) (* (- 12) x3)) (- 14)))
+(check-sat-assuming ( (not false) ))
+++ /dev/null
-% EXPECT: not_entailed
-x0, x1, x2, x3 : INT;
-ASSERT (19 * x0) + (-11 * x1) + (-19 * x2) + (5 * x3) = 26 ;
-ASSERT (1 * x0) + (-28 * x1) + (-2 * x2) + (15 * x3) < 9 ;
-ASSERT (-8 * x0) + (-1 * x1) + (-25 * x2) + (-7 * x3) <= -31 ;
-ASSERT (-7 * x0) + (11 * x1) + (-5 * x2) + (-19 * x3) > 32 ;
-ASSERT (-22 * x0) + (13 * x1) + (-16 * x2) + (-12 * x3) <= 32;
-QUERY FALSE;
--- /dev/null
+; EXPECT: sat
+(set-logic ALL)
+(set-option :incremental false)
+(declare-fun x0 () Int)
+(declare-fun x1 () Int)
+(declare-fun x2 () Int)
+(declare-fun x3 () Int)
+(assert (= (+ (+ (+ (* 19 x0) (* (- 11) x1)) (* (- 19) x2)) (* 5 x3)) 26))
+(assert (< (+ (+ (+ (* 1 x0) (* (- 28) x1)) (* (- 2) x2)) (* 15 x3)) 9))
+(assert (<= (+ (+ (+ (* (- 8) x0) (* (- 1) x1)) (* (- 25) x2)) (* (- 7) x3)) (- 31)))
+(assert (> (+ (+ (+ (* (- 7) x0) (* 11 x1)) (* (- 5) x2)) (* (- 19) x3)) 32))
+(assert (<= (+ (+ (+ (* (- 22) x0) (* 13 x1)) (* (- 16) x2)) (* (- 12) x3)) 32))
+(check-sat-assuming ( (not false) ))
+++ /dev/null
-% EXPECT: The exponent of the POW(^) operator can only be a positive integral constant below 67108864. Exception occurred in:
-% EXPECT: 3 ^ x
-% EXIT: 1
-x: INT;
-ASSERT 3^x = 27;
-QUERY x=3;
--- /dev/null
+; EXIT: 1
+; EXPECT: (error "The exponent of the POW(^) operator can only be a positive integral constant below 67108864. Exception occurred in:
+; EXPECT: (^ 3 x)")
+(set-logic ALL)
+(set-option :incremental false)
+(declare-fun x () Int)
+(assert (= (^ 3 x) 27))
+(check-sat-assuming ( (= x 3) ))
+++ /dev/null
-% EXPECT: The exponent of the POW(^) operator can only be a positive integral constant below 67108864. Exception occurred in:
-% EXPECT: x ^ 67108864
-% EXIT: 1
-x: INT;
-ASSERT x^67108864 = 8;
-QUERY x=3;
--- /dev/null
+; EXIT: 1
+; EXPECT: (error "The exponent of the POW(^) operator can only be a positive integral constant below 67108864. Exception occurred in:
+; EXPECT: (^ x 67108864)")
+(set-logic ALL)
+(set-option :incremental false)
+(declare-fun x () Int)
+(assert (= (^ x 67108864) 8))
+(check-sat-assuming ( (= x 3) ))
+++ /dev/null
-% COMMAND-LINE: --miplib-trick
-% EXPECT: sat
-
-tmp1, tmp2, tmp3, tmp4 : INT;
-x, y, z : BOOLEAN;
-
-% x = {0, 1}, (NOT x) = 1 - x
-% i*Nx + j*Ny + k = 0
-% i*x + j*Ny + k = 4
-% i*Nx + j*y + k = 6
-% i*x + j*y + k = 10
-
-ASSERT NOT x AND (NOT y AND TRUE) => tmp1 = 0;
-ASSERT x AND (NOT y AND TRUE) => tmp1 = 4;
-ASSERT NOT x AND ( y AND TRUE) => tmp1 = 6;
-ASSERT x AND ( y AND TRUE) => tmp1 = 10;
-
-ASSERT NOT x AND (NOT z AND TRUE) => tmp2 = 0;
-ASSERT x AND (NOT z AND TRUE) => tmp2 = 2;
-ASSERT NOT x AND ( z AND TRUE) => tmp2 = 9;
-ASSERT x AND ( z AND TRUE) => tmp2 = 11;
-
-ASSERT NOT y AND (NOT z AND TRUE) => tmp3 = 0;
-ASSERT y AND (NOT z AND TRUE) => tmp3 = 5;
-ASSERT NOT y AND ( z AND TRUE) => tmp3 = 16;
-ASSERT y AND ( z AND TRUE) => tmp3 = 21;
-
-ASSERT NOT x AND (NOT y AND TRUE) => tmp4 = 0;
-ASSERT x AND (NOT y AND TRUE) => tmp4 = 4;
-ASSERT NOT x AND ( y AND TRUE) => tmp4 = 6;
-ASSERT x AND ( y AND TRUE) => tmp4 = 10;
-
-CHECKSAT;
--- /dev/null
+; COMMAND-LINE: --miplib-trick
+; EXPECT: sat
+(set-logic ALL)
+(set-option :incremental false)
+(declare-fun tmp1 () Int)
+(declare-fun tmp2 () Int)
+(declare-fun tmp3 () Int)
+(declare-fun tmp4 () Int)
+(declare-fun x () Bool)
+(declare-fun y () Bool)
+(declare-fun z () Bool)
+(assert (=> (and (not x) (and (not y) true)) (= tmp1 0)))
+(assert (=> (and x (and (not y) true)) (= tmp1 4)))
+(assert (=> (and (not x) (and y true)) (= tmp1 6)))
+(assert (=> (and x (and y true)) (= tmp1 10)))
+(assert (=> (and (not x) (and (not z) true)) (= tmp2 0)))
+(assert (=> (and x (and (not z) true)) (= tmp2 2)))
+(assert (=> (and (not x) (and z true)) (= tmp2 9)))
+(assert (=> (and x (and z true)) (= tmp2 11)))
+(assert (=> (and (not y) (and (not z) true)) (= tmp3 0)))
+(assert (=> (and y (and (not z) true)) (= tmp3 5)))
+(assert (=> (and (not y) (and z true)) (= tmp3 16)))
+(assert (=> (and y (and z true)) (= tmp3 21)))
+(assert (=> (and (not x) (and (not y) true)) (= tmp4 0)))
+(assert (=> (and x (and (not y) true)) (= tmp4 4)))
+(assert (=> (and (not x) (and y true)) (= tmp4 6)))
+(assert (=> (and x (and y true)) (= tmp4 10)))
+(check-sat)
+++ /dev/null
-% EXPECT: entailed
-p : BOOLEAN;
-q : BOOLEAN;
-r : BOOLEAN;
-s : BOOLEAN;
-t : BOOLEAN;
-u : BOOLEAN;
-v : BOOLEAN;
-P1 : BOOLEAN;
-P2 : BOOLEAN;
-P3 : BOOLEAN;
-P4 : BOOLEAN;
-P6 : BOOLEAN;
-P5 : BOOLEAN;
-a41 : BOOLEAN =
- IF p THEN FALSE
- ELSE TRUE
- ENDIF;
-a42 : BOOLEAN =
- IF a41 THEN FALSE
- ELSE TRUE
- ENDIF;
-a45 : BOOLEAN =
- IF p THEN p
- ELSE a41
- ENDIF;
-a46 : BOOLEAN =
- IF q THEN FALSE
- ELSE TRUE
- ENDIF;
-a49 : BOOLEAN =
- IF s THEN t
- ELSE FALSE
- ENDIF;
-a58 : BOOLEAN =
- IF q THEN q
- ELSE a46
- ENDIF;
-a59 : BOOLEAN =
- IF r THEN FALSE
- ELSE TRUE
- ENDIF;
-a61 : BOOLEAN =
- IF s THEN FALSE
- ELSE TRUE
- ENDIF;
-a62 : BOOLEAN =
- IF s THEN s
- ELSE a61
- ENDIF;
-a65 : BOOLEAN =
- IF t THEN FALSE
- ELSE TRUE
- ENDIF;
-a67 : BOOLEAN =
- IF u THEN FALSE
- ELSE TRUE
- ENDIF;
-a73 : BOOLEAN =
- IF p THEN q
- ELSE FALSE
- ENDIF;
-a74 : BOOLEAN =
- IF q THEN p
- ELSE FALSE
- ENDIF;
-a77 : BOOLEAN =
- IF r THEN TRUE
- ELSE s
- ENDIF;
-a78 : BOOLEAN =
- IF s THEN TRUE
- ELSE r
- ENDIF;
-a81 : BOOLEAN =
- IF t THEN u
- ELSE a67
- ENDIF;
-a82 : BOOLEAN =
- IF u THEN t
- ELSE a65
- ENDIF;
-a88 : BOOLEAN =
- IF q THEN r
- ELSE FALSE
- ENDIF;
-a89 : BOOLEAN =
- IF p THEN a88
- ELSE FALSE
- ENDIF;
-a92 : BOOLEAN =
- IF s THEN TRUE
- ELSE t
- ENDIF;
-a94 : BOOLEAN =
- IF t THEN TRUE
- ELSE u
- ENDIF;
-a95 : BOOLEAN =
- IF s THEN TRUE
- ELSE a94
- ENDIF;
-a105 : BOOLEAN =
- IF t THEN u
- ELSE FALSE
- ENDIF;
-a111 : BOOLEAN =
- IF p THEN q
- ELSE TRUE
- ENDIF;
-a112 : BOOLEAN =
- IF q THEN r
- ELSE TRUE
- ENDIF;
-a114 : BOOLEAN =
- IF p THEN r
- ELSE TRUE
- ENDIF;
-a116 : BOOLEAN =
- IF s THEN t
- ELSE a65
- ENDIF;
-a121 : BOOLEAN =
- IF a46 THEN a41
- ELSE TRUE
- ENDIF;
-a126 : BOOLEAN =
- IF a59 THEN a61
- ELSE
- IF a61 THEN FALSE
- ELSE TRUE
- ENDIF
- ENDIF;
-a130 : BOOLEAN =
- IF q THEN TRUE
- ELSE r
- ENDIF;
-a132 : BOOLEAN =
- IF p THEN r
- ELSE FALSE
- ENDIF;
-a133 : BOOLEAN =
- IF a73 THEN TRUE
- ELSE a132
- ENDIF;
-a138 : BOOLEAN =
- IF a92 THEN
- IF s THEN TRUE
- ELSE u
- ENDIF
- ELSE FALSE
- ENDIF;
-a143 : BOOLEAN =
- IF a114 THEN a112
- ELSE FALSE
- ENDIF;
-a145 : BOOLEAN =
- IF
- IF
- IF p THEN TRUE
- ELSE q
- ENDIF THEN r
- ELSE TRUE
- ENDIF THEN a143
- ELSE
- IF a143 THEN FALSE
- ELSE TRUE
- ENDIF
- ENDIF;
-a147 : BOOLEAN =
- IF s THEN t
- ELSE TRUE
- ENDIF;
-a148 : BOOLEAN =
- IF s THEN u
- ELSE TRUE
- ENDIF;
-a149 : BOOLEAN =
- IF a147 THEN TRUE
- ELSE a148
- ENDIF;
-a153 : BOOLEAN =
- IF a73 THEN r
- ELSE TRUE
- ENDIF;
-a154 : BOOLEAN =
- IF a114 THEN TRUE
- ELSE a112
- ENDIF;
-a158 : BOOLEAN =
- IF a147 THEN a148
- ELSE FALSE
- ENDIF;
-a162 : BOOLEAN =
- IF p THEN a112
- ELSE TRUE
- ENDIF;
-a167 : BOOLEAN =
- IF a46 THEN TRUE
- ELSE a59
- ENDIF;
-a171 : BOOLEAN =
- IF a61 THEN a65
- ELSE FALSE
- ENDIF;
-a176 : BOOLEAN =
- IF p THEN q
- ELSE r
- ENDIF;
-a178 : BOOLEAN =
- IF p THEN a46
- ELSE a59
- ENDIF;
-a183 : BOOLEAN =
- IF s THEN a65
- ELSE
- IF a65 THEN FALSE
- ELSE TRUE
- ENDIF
- ENDIF;
-a187 : BOOLEAN =
- IF a41 THEN TRUE
- ELSE q
- ENDIF;
-a192 : BOOLEAN =
- IF
- IF r THEN s
- ELSE FALSE
- ENDIF THEN TRUE
- ELSE
- IF a59 THEN t
- ELSE FALSE
- ENDIF
- ENDIF;
-a197 : BOOLEAN =
- IF a111 THEN
- IF a41 THEN r
- ELSE TRUE
- ENDIF
- ELSE FALSE
- ENDIF;
-a200 : BOOLEAN =
- IF a49 THEN TRUE
- ELSE a171
- ENDIF;
-a204 : BOOLEAN =
- IF p THEN q
- ELSE a46
- ENDIF;
-a205 : BOOLEAN =
- IF q THEN p
- ELSE TRUE
- ENDIF;
-a206 : BOOLEAN =
- IF a111 THEN a205
- ELSE FALSE
- ENDIF;
-a210 : BOOLEAN =
- IF p THEN a46
- ELSE TRUE
- ENDIF;
-a214 : BOOLEAN =
- IF a73 THEN FALSE
- ELSE TRUE
- ENDIF;
-a221 : BOOLEAN =
- IF
- IF p THEN a46
- ELSE FALSE
- ENDIF THEN r
- ELSE TRUE
- ENDIF;
-a225 : BOOLEAN =
- IF a187 THEN a132
- ELSE TRUE
- ENDIF;
-a228 : BOOLEAN =
- IF q THEN r
- ELSE a59
- ENDIF;
-a231 : BOOLEAN =
- IF a204 THEN r
- ELSE a59
- ENDIF;
-a237 : BOOLEAN =
- IF q THEN a132
- ELSE
- IF a41 THEN s
- ELSE FALSE
- ENDIF
- ENDIF;
-a288 : BOOLEAN =
- IF
- IF
- IF p THEN a41
- ELSE a42
- ENDIF THEN FALSE
- ELSE TRUE
- ENDIF THEN
- IF
- IF a45 THEN
- IF
- IF q THEN TRUE
- ELSE a46
- ENDIF THEN
- IF
- IF r THEN r
- ELSE TRUE
- ENDIF THEN
- IF
- IF a49 THEN s
- ELSE TRUE
- ENDIF THEN
- IF u THEN
- IF u THEN TRUE
- ELSE v
- ENDIF
- ELSE TRUE
- ENDIF
- ELSE FALSE
- ENDIF
- ELSE FALSE
- ENDIF
- ELSE FALSE
- ENDIF
- ELSE FALSE
- ENDIF THEN
- IF
- IF a58 THEN
- IF
- IF r THEN r
- ELSE a59
- ENDIF THEN a62
- ELSE FALSE
- ENDIF
- ELSE FALSE
- ENDIF THEN
- IF
- IF a45 THEN
- IF a62 THEN
- IF
- IF t THEN t
- ELSE a65
- ENDIF THEN
- IF a67 THEN a67
- ELSE
- IF a67 THEN FALSE
- ELSE TRUE
- ENDIF
- ENDIF
- ELSE FALSE
- ENDIF
- ELSE FALSE
- ENDIF
- ELSE FALSE
- ENDIF THEN
- IF
- IF
- IF a73 THEN a74
- ELSE
- IF a74 THEN FALSE
- ELSE TRUE
- ENDIF
- ENDIF THEN
- IF
- IF a77 THEN a78
- ELSE
- IF a78 THEN FALSE
- ELSE TRUE
- ENDIF
- ENDIF THEN
- IF a81 THEN a82
- ELSE
- IF a82 THEN FALSE
- ELSE TRUE
- ENDIF
- ENDIF
- ELSE FALSE
- ENDIF
- ELSE FALSE
- ENDIF THEN
- IF
- IF
- IF
- IF a73 THEN r
- ELSE FALSE
- ENDIF THEN a89
- ELSE
- IF a89 THEN FALSE
- ELSE TRUE
- ENDIF
- ENDIF THEN
- IF
- IF a92 THEN TRUE
- ELSE u
- ENDIF THEN a95
- ELSE
- IF a95 THEN FALSE
- ELSE TRUE
- ENDIF
- ENDIF
- ELSE FALSE
- ENDIF THEN
- IF
- IF
- IF
- IF p THEN p
- ELSE FALSE
- ENDIF THEN p
- ELSE a41
- ENDIF THEN
- IF
- IF
- IF q THEN TRUE
- ELSE q
- ENDIF THEN q
- ELSE a46
- ENDIF THEN
- IF
- IF
- IF r THEN a77
- ELSE FALSE
- ENDIF THEN r
- ELSE a59
- ENDIF THEN
- IF
- IF t THEN TRUE
- ELSE a105
- ENDIF THEN t
- ELSE a65
- ENDIF
- ELSE FALSE
- ENDIF
- ELSE FALSE
- ENDIF
- ELSE FALSE
- ENDIF THEN
- IF a58 THEN
- IF
- IF
- IF
- IF a111 THEN a112
- ELSE FALSE
- ENDIF THEN a114
- ELSE TRUE
- ENDIF THEN
- IF
- IF a116 THEN a81
- ELSE FALSE
- ENDIF THEN
- IF s THEN u
- ELSE a67
- ENDIF
- ELSE TRUE
- ENDIF
- ELSE FALSE
- ENDIF THEN
- IF
- IF
- IF a111 THEN a121
- ELSE
- IF a121 THEN FALSE
- ELSE TRUE
- ENDIF
- ENDIF THEN
- IF
- IF r THEN s
- ELSE a61
- ENDIF THEN a126
- ELSE
- IF a126 THEN FALSE
- ELSE TRUE
- ENDIF
- ENDIF
- ELSE FALSE
- ENDIF THEN
- IF
- IF
- IF
- IF p THEN a130
- ELSE FALSE
- ENDIF THEN a133
- ELSE
- IF a133 THEN FALSE
- ELSE TRUE
- ENDIF
- ENDIF THEN
- IF
- IF s THEN TRUE
- ELSE a105
- ENDIF THEN a138
- ELSE
- IF a138 THEN FALSE
- ELSE TRUE
- ENDIF
- ENDIF
- ELSE FALSE
- ENDIF THEN
- IF
- IF a145 THEN
- IF
- IF s THEN a94
- ELSE TRUE
- ENDIF THEN a149
- ELSE
- IF a149 THEN FALSE
- ELSE TRUE
- ENDIF
- ENDIF
- ELSE FALSE
- ENDIF THEN
- IF
- IF
- IF a153 THEN a154
- ELSE
- IF a154 THEN FALSE
- ELSE TRUE
- ENDIF
- ENDIF THEN
- IF
- IF s THEN a105
- ELSE TRUE
- ENDIF THEN a158
- ELSE
- IF a158 THEN FALSE
- ELSE TRUE
- ENDIF
- ENDIF
- ELSE FALSE
- ENDIF THEN
- IF
- IF a153 THEN a162
- ELSE
- IF a162 THEN FALSE
- ELSE TRUE
- ENDIF
- ENDIF THEN
- IF
- IF
- IF a42 THEN p
- ELSE a41
- ENDIF THEN
- IF
- IF
- IF a88 THEN FALSE
- ELSE TRUE
- ENDIF THEN a167
- ELSE
- IF a167 THEN FALSE
- ELSE TRUE
- ENDIF
- ENDIF THEN
- IF
- IF a92 THEN FALSE
- ELSE TRUE
- ENDIF THEN a171
- ELSE
- IF a171 THEN FALSE
- ELSE TRUE
- ENDIF
- ENDIF
- ELSE FALSE
- ENDIF
- ELSE FALSE
- ENDIF THEN
- IF
- IF
- IF
- IF a176 THEN FALSE
- ELSE TRUE
- ENDIF THEN a178
- ELSE
- IF a178 THEN FALSE
- ELSE TRUE
- ENDIF
- ENDIF THEN
- IF
- IF a116 THEN FALSE
- ELSE TRUE
- ENDIF THEN a183
- ELSE
- IF a183 THEN FALSE
- ELSE TRUE
- ENDIF
- ENDIF
- ELSE FALSE
- ENDIF THEN
- IF
- IF
- IF a111 THEN a187
- ELSE
- IF a187 THEN FALSE
- ELSE TRUE
- ENDIF
- ENDIF THEN
- IF
- IF r THEN s
- ELSE t
- ENDIF THEN a192
- ELSE
- IF a192 THEN FALSE
- ELSE TRUE
- ENDIF
- ENDIF
- ELSE FALSE
- ENDIF THEN
- IF
- IF
- IF a176 THEN a197
- ELSE
- IF a197 THEN FALSE
- ELSE TRUE
- ENDIF
- ENDIF THEN
- IF a116 THEN a200
- ELSE
- IF a200 THEN FALSE
- ELSE TRUE
- ENDIF
- ENDIF
- ELSE FALSE
- ENDIF THEN
- IF
- IF a204 THEN a206
- ELSE
- IF a206 THEN FALSE
- ELSE TRUE
- ENDIF
- ENDIF THEN
- IF
- IF a111 THEN TRUE
- ELSE a205
- ENDIF THEN
- IF
- IF a46 THEN TRUE
- ELSE
- IF
- IF a210 THEN p
- ELSE FALSE
- ENDIF THEN FALSE
- ELSE TRUE
- ENDIF
- ENDIF THEN
- IF
- IF a210 THEN a214
- ELSE
- IF a214 THEN FALSE
- ELSE TRUE
- ENDIF
- ENDIF THEN
- IF a145 THEN
- IF
- IF a162 THEN a153
- ELSE
- IF a153 THEN FALSE
- ELSE TRUE
- ENDIF
- ENDIF THEN
- IF
- IF
- IF p THEN a130
- ELSE TRUE
- ENDIF THEN a221
- ELSE
- IF a221 THEN FALSE
- ELSE TRUE
- ENDIF
- ENDIF THEN
- IF
- IF
- IF p THEN a112
- ELSE FALSE
- ENDIF THEN a225
- ELSE
- IF a225 THEN FALSE
- ELSE TRUE
- ENDIF
- ENDIF THEN
- IF
- IF
- IF p THEN a228
- ELSE
- IF a228 THEN FALSE
- ELSE TRUE
- ENDIF
- ENDIF THEN a231
- ELSE
- IF a231 THEN FALSE
- ELSE TRUE
- ENDIF
- ENDIF THEN
- IF
- IF
- IF p THEN a88
- ELSE
- IF a46 THEN s
- ELSE FALSE
- ENDIF
- ENDIF THEN a237
- ELSE
- IF a237 THEN FALSE
- ELSE TRUE
- ENDIF
- ENDIF THEN
- IF
- IF
- IF P1 THEN
- IF P2 THEN TRUE
- ELSE P3
- ENDIF
- ELSE
- IF P3 THEN TRUE
- ELSE P4
- ENDIF
- ENDIF THEN
- IF
- IF P3 THEN
- IF P6 THEN FALSE
- ELSE TRUE
- ENDIF
- ELSE
- IF P4 THEN P1
- ELSE TRUE
- ENDIF
- ENDIF THEN
- IF
- IF
- IF P2 THEN P5
- ELSE FALSE
- ENDIF THEN FALSE
- ELSE TRUE
- ENDIF THEN
- IF P2 THEN P5
- ELSE TRUE
- ENDIF
- ELSE FALSE
- ENDIF
- ELSE FALSE
- ENDIF
- ELSE FALSE
- ENDIF THEN
- IF
- IF P3 THEN P6
- ELSE TRUE
- ENDIF THEN FALSE
- ELSE TRUE
- ENDIF
- ELSE TRUE
- ENDIF
- ELSE FALSE
- ENDIF
- ELSE FALSE
- ENDIF
- ELSE FALSE
- ENDIF
- ELSE FALSE
- ENDIF
- ELSE FALSE
- ENDIF
- ELSE FALSE
- ENDIF
- ELSE FALSE
- ENDIF
- ELSE FALSE
- ENDIF
- ELSE FALSE
- ENDIF
- ELSE FALSE
- ENDIF
- ELSE FALSE
- ENDIF
- ELSE FALSE
- ENDIF
- ELSE FALSE
- ENDIF
- ELSE FALSE
- ENDIF
- ELSE FALSE
- ENDIF
- ELSE FALSE
- ENDIF
- ELSE FALSE
- ENDIF
- ELSE FALSE
- ENDIF
- ELSE FALSE
- ENDIF
- ELSE FALSE
- ENDIF
- ELSE FALSE
- ENDIF
- ELSE FALSE
- ENDIF
- ELSE FALSE
- ENDIF
- ELSE FALSE
- ENDIF
- ELSE FALSE
- ENDIF
- ELSE FALSE
- ENDIF
- ELSE FALSE
- ENDIF
- ELSE FALSE
- ENDIF;
-QUERY a288;
--- /dev/null
+; EXPECT: unsat
+(set-logic ALL)
+(set-option :incremental false)
+(declare-fun p () Bool)
+(declare-fun q () Bool)
+(declare-fun r () Bool)
+(declare-fun s () Bool)
+(declare-fun t () Bool)
+(declare-fun u () Bool)
+(declare-fun v () Bool)
+(declare-fun P1 () Bool)
+(declare-fun P2 () Bool)
+(declare-fun P3 () Bool)
+(declare-fun P4 () Bool)
+(declare-fun P6 () Bool)
+(declare-fun P5 () Bool)
+(define-fun a41 () Bool (ite p false true))
+(define-fun a42 () Bool (ite (ite p false true) false true))
+(define-fun a45 () Bool (ite p p (ite p false true)))
+(define-fun a46 () Bool (ite q false true))
+(define-fun a49 () Bool (ite s t false))
+(define-fun a58 () Bool (ite q q (ite q false true)))
+(define-fun a59 () Bool (ite r false true))
+(define-fun a61 () Bool (ite s false true))
+(define-fun a62 () Bool (ite s s (ite s false true)))
+(define-fun a65 () Bool (ite t false true))
+(define-fun a67 () Bool (ite u false true))
+(define-fun a73 () Bool (ite p q false))
+(define-fun a74 () Bool (ite q p false))
+(define-fun a77 () Bool (ite r true s))
+(define-fun a78 () Bool (ite s true r))
+(define-fun a81 () Bool (ite t u (ite u false true)))
+(define-fun a82 () Bool (ite u t (ite t false true)))
+(define-fun a88 () Bool (ite q r false))
+(define-fun a89 () Bool (ite p (ite q r false) false))
+(define-fun a92 () Bool (ite s true t))
+(define-fun a94 () Bool (ite t true u))
+(define-fun a95 () Bool (ite s true (ite t true u)))
+(define-fun a105 () Bool (ite t u false))
+(define-fun a111 () Bool (ite p q true))
+(define-fun a112 () Bool (ite q r true))
+(define-fun a114 () Bool (ite p r true))
+(define-fun a116 () Bool (ite s t (ite t false true)))
+(define-fun a121 () Bool (ite (ite q false true) (ite p false true) true))
+(define-fun a126 () Bool (let ((_let_1 (ite s false true))) (ite (ite r false true) _let_1 (ite _let_1 false true))))
+(define-fun a130 () Bool (ite q true r))
+(define-fun a132 () Bool (ite p r false))
+(define-fun a133 () Bool (ite (ite p q false) true (ite p r false)))
+(define-fun a138 () Bool (ite (ite s true t) (ite s true u) false))
+(define-fun a143 () Bool (ite (ite p r true) (ite q r true) false))
+(define-fun a145 () Bool (let ((_let_1 (ite (ite p r true) (ite q r true) false))) (ite (ite (ite p true q) r true) _let_1 (ite _let_1 false true))))
+(define-fun a147 () Bool (ite s t true))
+(define-fun a148 () Bool (ite s u true))
+(define-fun a149 () Bool (ite (ite s t true) true (ite s u true)))
+(define-fun a153 () Bool (ite (ite p q false) r true))
+(define-fun a154 () Bool (ite (ite p r true) true (ite q r true)))
+(define-fun a158 () Bool (ite (ite s t true) (ite s u true) false))
+(define-fun a162 () Bool (ite p (ite q r true) true))
+(define-fun a167 () Bool (ite (ite q false true) true (ite r false true)))
+(define-fun a171 () Bool (ite (ite s false true) (ite t false true) false))
+(define-fun a176 () Bool (ite p q r))
+(define-fun a178 () Bool (ite p (ite q false true) (ite r false true)))
+(define-fun a183 () Bool (let ((_let_1 (ite t false true))) (ite s _let_1 (ite _let_1 false true))))
+(define-fun a187 () Bool (ite (ite p false true) true q))
+(define-fun a192 () Bool (ite (ite r s false) true (ite (ite r false true) t false)))
+(define-fun a197 () Bool (ite (ite p q true) (ite (ite p false true) r true) false))
+(define-fun a200 () Bool (ite (ite s t false) true (ite (ite s false true) (ite t false true) false)))
+(define-fun a204 () Bool (ite p q (ite q false true)))
+(define-fun a205 () Bool (ite q p true))
+(define-fun a206 () Bool (ite (ite p q true) (ite q p true) false))
+(define-fun a210 () Bool (ite p (ite q false true) true))
+(define-fun a214 () Bool (ite (ite p q false) false true))
+(define-fun a221 () Bool (ite (ite p (ite q false true) false) r true))
+(define-fun a225 () Bool (ite (ite (ite p false true) true q) (ite p r false) true))
+(define-fun a228 () Bool (ite q r (ite r false true)))
+(define-fun a231 () Bool (ite (ite p q (ite q false true)) r (ite r false true)))
+(define-fun a237 () Bool (ite q (ite p r false) (ite (ite p false true) s false)))
+(define-fun a288 () Bool (let ((_let_1 (ite p false true))) (let ((_let_2 (ite p r false))) (let ((_let_3 (ite q _let_2 (ite _let_1 s false)))) (let ((_let_4 (ite q false true))) (let ((_let_5 (ite q r false))) (let ((_let_6 (ite r false true))) (let ((_let_7 (ite p q _let_4))) (let ((_let_8 (ite _let_7 r _let_6))) (let ((_let_9 (ite q r _let_6))) (let ((_let_10 (ite _let_1 true q))) (let ((_let_11 (ite _let_10 _let_2 true))) (let ((_let_12 (ite q r true))) (let ((_let_13 (ite (ite p _let_4 false) r true))) (let ((_let_14 (ite q true r))) (let ((_let_15 (ite p q false))) (let ((_let_16 (ite _let_15 r true))) (let ((_let_17 (ite p _let_12 true))) (let ((_let_18 (ite p r true))) (let ((_let_19 (ite _let_18 _let_12 false))) (let ((_let_20 (ite (ite (ite p true q) r true) _let_19 (ite _let_19 false true)))) (let ((_let_21 (ite _let_15 false true))) (let ((_let_22 (ite p _let_4 true))) (let ((_let_23 (ite q p true))) (let ((_let_24 (ite p q true))) (let ((_let_25 (ite _let_24 _let_23 false))) (let ((_let_26 (ite t false true))) (let ((_let_27 (ite s false true))) (let ((_let_28 (ite _let_27 _let_26 false))) (let ((_let_29 (ite s t false))) (let ((_let_30 (ite _let_29 true _let_28))) (let ((_let_31 (ite s t _let_26))) (let ((_let_32 (ite _let_24 (ite _let_1 r true) false))) (let ((_let_33 (ite p q r))) (let ((_let_34 (ite (ite r s false) true (ite _let_6 t false)))) (let ((_let_35 (ite s _let_26 (ite _let_26 false true)))) (let ((_let_36 (ite p _let_4 _let_6))) (let ((_let_37 (ite s true t))) (let ((_let_38 (ite _let_4 true _let_6))) (let ((_let_39 (ite _let_1 false true))) (let ((_let_40 (ite s u true))) (let ((_let_41 (ite s t true))) (let ((_let_42 (ite _let_41 _let_40 false))) (let ((_let_43 (ite t u false))) (let ((_let_44 (ite _let_18 true _let_12))) (let ((_let_45 (ite _let_41 true _let_40))) (let ((_let_46 (ite t true u))) (let ((_let_47 (ite _let_37 (ite s true u) false))) (let ((_let_48 (ite _let_15 true _let_2))) (let ((_let_49 (ite _let_6 _let_27 (ite _let_27 false true)))) (let ((_let_50 (ite _let_4 _let_1 true))) (let ((_let_51 (ite u false true))) (let ((_let_52 (ite t u _let_51))) (let ((_let_53 (ite q q _let_4))) (let ((_let_54 (ite r true s))) (let ((_let_55 (ite s true _let_46))) (let ((_let_56 (ite p _let_5 false))) (let ((_let_57 (ite u t _let_26))) (let ((_let_58 (ite s true r))) (let ((_let_59 (ite q p false))) (let ((_let_60 (ite s s _let_27))) (let ((_let_61 (ite p p _let_1))) (ite (ite (ite p _let_1 _let_39) false true) (ite (ite _let_61 (ite (ite q true _let_4) (ite (ite r r true) (ite (ite _let_29 s true) (ite u (ite u true v) true) false) false) false) false) (ite (ite _let_53 (ite (ite r r _let_6) _let_60 false) false) (ite (ite _let_61 (ite _let_60 (ite (ite t t _let_26) (ite _let_51 _let_51 (ite _let_51 false true)) false) false) false) (ite (ite (ite _let_15 _let_59 (ite _let_59 false true)) (ite (ite _let_54 _let_58 (ite _let_58 false true)) (ite _let_52 _let_57 (ite _let_57 false true)) false) false) (ite (ite (ite (ite _let_15 r false) _let_56 (ite _let_56 false true)) (ite (ite _let_37 true u) _let_55 (ite _let_55 false true)) false) (ite (ite (ite (ite p p false) p _let_1) (ite (ite (ite q true q) q _let_4) (ite (ite (ite r _let_54 false) r _let_6) (ite (ite t true _let_43) t _let_26) false) false) false) (ite _let_53 (ite (ite (ite (ite _let_24 _let_12 false) _let_18 true) (ite (ite _let_31 _let_52 false) (ite s u _let_51) true) false) (ite (ite (ite _let_24 _let_50 (ite _let_50 false true)) (ite (ite r s _let_27) _let_49 (ite _let_49 false true)) false) (ite (ite (ite (ite p _let_14 false) _let_48 (ite _let_48 false true)) (ite (ite s true _let_43) _let_47 (ite _let_47 false true)) false) (ite (ite _let_20 (ite (ite s _let_46 true) _let_45 (ite _let_45 false true)) false) (ite (ite (ite _let_16 _let_44 (ite _let_44 false true)) (ite (ite s _let_43 true) _let_42 (ite _let_42 false true)) false) (ite (ite _let_16 _let_17 (ite _let_17 false true)) (ite (ite (ite _let_39 p _let_1) (ite (ite (ite _let_5 false true) _let_38 (ite _let_38 false true)) (ite (ite _let_37 false true) _let_28 (ite _let_28 false true)) false) false) (ite (ite (ite (ite _let_33 false true) _let_36 (ite _let_36 false true)) (ite (ite _let_31 false true) _let_35 (ite _let_35 false true)) false) (ite (ite (ite _let_24 _let_10 (ite _let_10 false true)) (ite (ite r s t) _let_34 (ite _let_34 false true)) false) (ite (ite (ite _let_33 _let_32 (ite _let_32 false true)) (ite _let_31 _let_30 (ite _let_30 false true)) false) (ite (ite _let_7 _let_25 (ite _let_25 false true)) (ite (ite _let_24 true _let_23) (ite (ite _let_4 true (ite (ite _let_22 p false) false true)) (ite (ite _let_22 _let_21 (ite _let_21 false true)) (ite _let_20 (ite (ite _let_17 _let_16 (ite _let_16 false true)) (ite (ite (ite p _let_14 true) _let_13 (ite _let_13 false true)) (ite (ite (ite p _let_12 false) _let_11 (ite _let_11 false true)) (ite (ite (ite p _let_9 (ite _let_9 false true)) _let_8 (ite _let_8 false true)) (ite (ite (ite p _let_5 (ite _let_4 s false)) _let_3 (ite _let_3 false true)) (ite (ite (ite P1 (ite P2 true P3) (ite P3 true P4)) (ite (ite P3 (ite P6 false true) (ite P4 P1 true)) (ite (ite (ite P2 P5 false) false true) (ite P2 P5 true) false) false) false) (ite (ite P3 P6 true) false true) true) false) false) false) false) false) false) false) false) false) false) false) false) false) false) false) false) false) false) false) false) false) false) false) false) false) false) false) false)))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))
+(check-sat-assuming ( (not (let ((_let_1 (ite p false true))) (let ((_let_2 (ite p r false))) (let ((_let_3 (ite q _let_2 (ite _let_1 s false)))) (let ((_let_4 (ite q false true))) (let ((_let_5 (ite q r false))) (let ((_let_6 (ite r false true))) (let ((_let_7 (ite p q _let_4))) (let ((_let_8 (ite _let_7 r _let_6))) (let ((_let_9 (ite q r _let_6))) (let ((_let_10 (ite _let_1 true q))) (let ((_let_11 (ite _let_10 _let_2 true))) (let ((_let_12 (ite q r true))) (let ((_let_13 (ite (ite p _let_4 false) r true))) (let ((_let_14 (ite q true r))) (let ((_let_15 (ite p q false))) (let ((_let_16 (ite _let_15 r true))) (let ((_let_17 (ite p _let_12 true))) (let ((_let_18 (ite p r true))) (let ((_let_19 (ite _let_18 _let_12 false))) (let ((_let_20 (ite (ite (ite p true q) r true) _let_19 (ite _let_19 false true)))) (let ((_let_21 (ite _let_15 false true))) (let ((_let_22 (ite p _let_4 true))) (let ((_let_23 (ite q p true))) (let ((_let_24 (ite p q true))) (let ((_let_25 (ite _let_24 _let_23 false))) (let ((_let_26 (ite t false true))) (let ((_let_27 (ite s false true))) (let ((_let_28 (ite _let_27 _let_26 false))) (let ((_let_29 (ite s t false))) (let ((_let_30 (ite _let_29 true _let_28))) (let ((_let_31 (ite s t _let_26))) (let ((_let_32 (ite _let_24 (ite _let_1 r true) false))) (let ((_let_33 (ite p q r))) (let ((_let_34 (ite (ite r s false) true (ite _let_6 t false)))) (let ((_let_35 (ite s _let_26 (ite _let_26 false true)))) (let ((_let_36 (ite p _let_4 _let_6))) (let ((_let_37 (ite s true t))) (let ((_let_38 (ite _let_4 true _let_6))) (let ((_let_39 (ite _let_1 false true))) (let ((_let_40 (ite s u true))) (let ((_let_41 (ite s t true))) (let ((_let_42 (ite _let_41 _let_40 false))) (let ((_let_43 (ite t u false))) (let ((_let_44 (ite _let_18 true _let_12))) (let ((_let_45 (ite _let_41 true _let_40))) (let ((_let_46 (ite t true u))) (let ((_let_47 (ite _let_37 (ite s true u) false))) (let ((_let_48 (ite _let_15 true _let_2))) (let ((_let_49 (ite _let_6 _let_27 (ite _let_27 false true)))) (let ((_let_50 (ite _let_4 _let_1 true))) (let ((_let_51 (ite u false true))) (let ((_let_52 (ite t u _let_51))) (let ((_let_53 (ite q q _let_4))) (let ((_let_54 (ite r true s))) (let ((_let_55 (ite s true _let_46))) (let ((_let_56 (ite p _let_5 false))) (let ((_let_57 (ite u t _let_26))) (let ((_let_58 (ite s true r))) (let ((_let_59 (ite q p false))) (let ((_let_60 (ite s s _let_27))) (let ((_let_61 (ite p p _let_1))) (ite (ite (ite p _let_1 _let_39) false true) (ite (ite _let_61 (ite (ite q true _let_4) (ite (ite r r true) (ite (ite _let_29 s true) (ite u (ite u true v) true) false) false) false) false) (ite (ite _let_53 (ite (ite r r _let_6) _let_60 false) false) (ite (ite _let_61 (ite _let_60 (ite (ite t t _let_26) (ite _let_51 _let_51 (ite _let_51 false true)) false) false) false) (ite (ite (ite _let_15 _let_59 (ite _let_59 false true)) (ite (ite _let_54 _let_58 (ite _let_58 false true)) (ite _let_52 _let_57 (ite _let_57 false true)) false) false) (ite (ite (ite (ite _let_15 r false) _let_56 (ite _let_56 false true)) (ite (ite _let_37 true u) _let_55 (ite _let_55 false true)) false) (ite (ite (ite (ite p p false) p _let_1) (ite (ite (ite q true q) q _let_4) (ite (ite (ite r _let_54 false) r _let_6) (ite (ite t true _let_43) t _let_26) false) false) false) (ite _let_53 (ite (ite (ite (ite _let_24 _let_12 false) _let_18 true) (ite (ite _let_31 _let_52 false) (ite s u _let_51) true) false) (ite (ite (ite _let_24 _let_50 (ite _let_50 false true)) (ite (ite r s _let_27) _let_49 (ite _let_49 false true)) false) (ite (ite (ite (ite p _let_14 false) _let_48 (ite _let_48 false true)) (ite (ite s true _let_43) _let_47 (ite _let_47 false true)) false) (ite (ite _let_20 (ite (ite s _let_46 true) _let_45 (ite _let_45 false true)) false) (ite (ite (ite _let_16 _let_44 (ite _let_44 false true)) (ite (ite s _let_43 true) _let_42 (ite _let_42 false true)) false) (ite (ite _let_16 _let_17 (ite _let_17 false true)) (ite (ite (ite _let_39 p _let_1) (ite (ite (ite _let_5 false true) _let_38 (ite _let_38 false true)) (ite (ite _let_37 false true) _let_28 (ite _let_28 false true)) false) false) (ite (ite (ite (ite _let_33 false true) _let_36 (ite _let_36 false true)) (ite (ite _let_31 false true) _let_35 (ite _let_35 false true)) false) (ite (ite (ite _let_24 _let_10 (ite _let_10 false true)) (ite (ite r s t) _let_34 (ite _let_34 false true)) false) (ite (ite (ite _let_33 _let_32 (ite _let_32 false true)) (ite _let_31 _let_30 (ite _let_30 false true)) false) (ite (ite _let_7 _let_25 (ite _let_25 false true)) (ite (ite _let_24 true _let_23) (ite (ite _let_4 true (ite (ite _let_22 p false) false true)) (ite (ite _let_22 _let_21 (ite _let_21 false true)) (ite _let_20 (ite (ite _let_17 _let_16 (ite _let_16 false true)) (ite (ite (ite p _let_14 true) _let_13 (ite _let_13 false true)) (ite (ite (ite p _let_12 false) _let_11 (ite _let_11 false true)) (ite (ite (ite p _let_9 (ite _let_9 false true)) _let_8 (ite _let_8 false true)) (ite (ite (ite p _let_5 (ite _let_4 s false)) _let_3 (ite _let_3 false true)) (ite (ite (ite P1 (ite P2 true P3) (ite P3 true P4)) (ite (ite P3 (ite P6 false true) (ite P4 P1 true)) (ite (ite (ite P2 P5 false) false true) (ite P2 P5 true) false) false) false) (ite (ite P3 P6 true) false true) true) false) false) false) false) false) false) false) false) false) false) false) false) false) false) false) false) false) false) false) false) false) false) false) false) false) false) false) false))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) ))
+++ /dev/null
-% EXPECT: sat
-var_92, var_96, var_98, var_102, var_106, var_111, var_137, var_141, var_143, var_147, var_151, var_156, var_182, var_186, var_188, var_192, var_196, var_201, var_227, var_231, var_233, var_237, var_241, var_246, var_272, var_276, var_278, var_282, var_286, var_291, var_317, var_321, var_323, var_327, var_331, var_336, var_362, var_366, var_368, var_372, var_376, var_381, var_407, var_411, var_413, var_417, var_421, var_426, var_452, var_456, var_458, var_462, var_466, var_471, var_497, var_501, var_503, var_507, var_511, var_516, var_542, var_546, var_548, var_552, var_556, var_561, var_587, var_591, var_593, var_597, var_601, var_606, var_632, var_636, var_638, var_642, var_646, var_651, var_677, var_681, var_683, var_687, var_691, var_696, var_722, var_726, var_728, var_732, var_736, var_741, var_767, var_771, var_773, var_777, var_781, var_786, var_812, var_816, var_818, var_822, var_826, var_831, var_857, var_861, var_863, var_867, var_871, var_876, var_902, var_906, var_908, var_912, var_916, var_921, var_947, var_951, var_953, var_957, var_961, var_966, var_992, var_996, var_998, var_1002, var_1006, var_1011, var_1037, var_1041, var_1043, var_1047, var_1051, var_1056, var_1082, var_1086, var_1088, var_1092, var_1096, var_1101, var_1127, var_1131, var_1133, var_1137, var_1141, var_1146, var_1172, var_1176, var_1178, var_1182, var_1186, var_1191, var_1217, var_1221, var_1223, var_1227, var_1231, var_1236, var_1262, var_1266, var_1268, var_1272, var_1276, var_1281, var_1307, var_1311, var_1313, var_1317, var_1321, var_1326, var_1352, var_1356, var_1358, var_1362, var_1366, var_1371, var_1397, var_1401, var_1403, var_1407, var_1411, var_1416, var_1442, var_1446, var_1448, var_1452, var_1456, var_1461, var_1487, var_1491, var_1493, var_1497, var_1501, var_1506, var_1532, var_1536, var_1538, var_1542, var_1546, var_1551, var_1577, var_1581, var_1583, var_1587, var_1591, var_1596, var_1622, var_1626, var_1628, var_1632, var_1636, var_1641, var_1667, var_1671, var_1673, var_1677, var_1681, var_1686, var_1712, var_1716, var_1718, var_1722, var_1726, var_1731, var_1757, var_1761, var_1763, var_1767, var_1771, var_1776, var_1802, var_1806, var_1808, var_1812, var_1816, var_1821, var_1847, var_1851, var_1853, var_1857, var_1861, var_1866, var_1892, var_1896, var_1898, var_1902, var_1906, var_1911, var_1937, var_1941, var_1943, var_1947, var_1951, var_1956, var_1982, var_1986, var_1988, var_1992, var_1996, var_2001, var_2027, var_2031, var_2033, var_2037, var_2041, var_2046, var_2072, var_2076, var_2078, var_2082, var_2086, var_2091, var_2117, var_2121, var_2123, var_2127, var_2131, var_2136, var_2162, var_2166, var_2168, var_2172, var_2176, var_2181, var_2207, var_2211, var_2213, var_2217, var_2221, var_2226, var_2252, var_2256, var_2258, var_2262, var_2266, var_2271, var_2297, var_2301, var_2303, var_2307, var_2311, var_2316, var_2342, var_2346, var_2348, var_2352, var_2356, var_2361, var_2387, var_2391, var_2393, var_2397, var_2401, var_2406, var_2432, var_2436, var_2438, var_2442, var_2446, var_2451, var_2477, var_2481, var_2483, var_2487, var_2491, var_2496, var_2522, var_2526, var_2528, var_2532, var_2536, var_2541, var_2567, var_2571, var_2573, var_2577, var_2581, var_2586, var_2612, var_2616, var_2618, var_2622, var_2626, var_2631, var_2657, var_2661, var_2663, var_2667, var_2671, var_2676, var_2702, var_2706, var_2708, var_2712, var_2716, var_2721, var_2747, var_2751, var_2753, var_2757, var_2761, var_2766, var_2792, var_2796, var_2798, var_2802, var_2806, var_2811, var_2837, var_2841, var_2843, var_2847, var_2851, var_2856, var_2882, var_2886, var_2888, var_2892, var_2896, var_2901, var_2927, var_2931, var_2933, var_2937, var_2941, var_2946, var_2972, var_2976, var_2978, var_2982, var_2986, var_2991, var_3017, var_3021, var_3023, var_3027, var_3031, var_3036, var_3062, var_3066, var_3068, var_3072, var_3076, var_3081, var_3107, var_3111, var_3113, var_3117, var_3121, var_3126, var_3152, var_3156, var_3158, var_3162, var_3166, var_3171, var_3197, var_3201, var_3203, var_3207, var_3211, var_3216, var_3242, var_3246, var_3248, var_3252, var_3256, var_3261, var_3287, var_3291, var_3293, var_3297, var_3301, var_3306, var_3332, var_3336, var_3338, var_3342, var_3346, var_3351, var_3377, var_3381, var_3383, var_3387, var_3391, var_3396, var_3422, var_3426, var_3428, var_3432, var_3436, var_3441, var_3467, var_3471, var_3473, var_3477, var_3481, var_3486, var_3512, var_3515, var_3518, var_3521, var_3524, var_3527, var_3530, var_3533, var_3536, var_3539, var_3542, var_3545, var_3548, var_3551, var_3554, var_3557, var_3560, var_3563, var_3566, var_3569, var_3572, var_3575, var_3578, var_3581, var_3584, var_3587, var_3590, var_3593, var_3596, var_3599, var_3602, var_3605, var_3608, var_3611, var_3614, var_3617, var_3620, var_3623, var_3626, var_3629, var_3632, var_3635, var_3638, var_3641, var_3644, var_3647, var_3650, var_3653, var_3656, var_3659, var_3662, var_3665, var_3668, var_3671, var_3674, var_3677, var_3680, var_3683, var_3686, var_3689, var_3692, var_3695, var_3698, var_3701, var_3704, var_3707, var_3710, var_3713, var_3716, var_3719, var_3722, var_3725, var_3728, var_3731, var_3734, var_3737, var_3740, var_3743, var_3746, var_3749, var_3752, var_3755, var_3758, var_3761, var_3764, var_3767, var_3770, var_3773, var_3776, var_3779, var_3782, var_3785, var_3788, var_3791, var_3794, var_3797, var_3800, var_3803, var_3806, var_3809, var_3812, var_3815, var_3818, var_3821, var_3824, var_3827, var_3830, var_3833, var_3836, var_3839, var_3843, var_3847, var_3851, var_3855, var_3859, var_3863, var_3867, var_3871, var_3875, var_3879, var_3883, var_3887, var_3891, var_3895, var_3899, var_3903, var_3907, var_3911, var_3915, var_3919, var_3923, var_3927, var_3931, var_3935, var_3939, var_3943, var_3947, var_3951, var_3955, var_3959, var_3963, var_3967, var_3971, var_3974, var_3980, var_3987, var_3994, var_4001, var_4009, var_4018, var_4031, var_4035, var_4039, var_4046, var_4050, var_4057, var_4064, var_4077, var_4085, var_4094, var_4111, var_4115, var_4119, var_4123, var_4130, var_4137, var_4150, var_4158, var_4167, var_4186, var_4190, var_4194, var_4198, var_4223, var_4270, var_4277, var_4290, var_4298, var_4307, var_4324, var_4328, var_4332, var_4336, var_4361, var_4412, var_4425, var_4439, var_4462, var_4466, var_4479, var_4492, var_4506, var_4531, var_4535, var_4560, var_4611, var_4624, var_4638, var_4661, var_4665, var_4672, var_4685, var_4692, var_4700, var_4715, var_4720, var_4724, var_4728, var_4732, var_4745, var_4752, var_4765, var_4773, var_4782, var_4799, var_4803, var_4807, var_4811, var_4836, var_4881, var_4888, var_4901, var_4909, var_4918, var_4935, var_4939, var_4943, var_4947, var_4972, var_5035, var_5098, var_5147, var_5160, var_5174, var_5197, var_5201, var_5226, var_5289, var_5338, var_5351, var_5365, var_5388, var_5392, var_5405, var_5418, var_5432, var_5455, var_5459, var_5484, var_5547, var_5596, var_5609, var_5623, var_5646, var_5650, var_5663, var_5676, var_5690, var_5713, var_5717, var_5742, var_5787, var_5794, var_5807, var_5815, var_5824, var_5841, var_5845, var_5849, var_5853, var_5878, var_5923, var_5930, var_5943, var_5951, var_5960, var_5977, var_5981, var_5985, var_5989, var_6014, var_6077, var_6140, var_6203, var_6264, var_6313, var_6326, var_6340, var_6363, var_6367, var_6392, var_6455, var_6516, var_6565, var_6578, var_6592, var_6615, var_6619, var_6644, var_6707, var_6768, var_6817, var_6830, var_6844, var_6867, var_6871, var_6896, var_6959, var_7022, var_7085, var_7146, var_7209, var_7270, var_7333, var_7394, var_7443, var_7456, var_7470, var_7493, var_7497, var_7522, var_7585, var_7646, var_7695, var_7708, var_7722, var_7745, var_7749, var_7774, var_7837, var_7898, var_7947, var_7960, var_7974, var_7997, var_8001, var_8026, var_8089, var_8150, var_8213, var_8274, var_8337, var_8398, var_8461, var_8524, var_8585, var_8648, var_8709, var_8772, var_8835, var_11220, var_11228, var_11236, var_11244, var_11252, var_11260, var_11268, var_11276, var_11284, var_11292, var_11300, var_11308, var_11316, var_11324, var_11332, var_11340, var_11348, var_11356, var_11364, var_11372, var_11380, var_11388, var_11396, var_11404, var_11412, var_11420, var_11428, var_11436, var_11444, var_11452, var_11460, var_11468, var_11476, var_11484, var_11492, var_11500, var_11508, var_11516, var_11524, var_11532, var_11540, var_11548, var_11556, var_11564, var_11572, var_11580, var_11588, var_11596, var_11604, var_11612, var_11620, var_11628, var_11636, var_11644, var_11652, var_11660, var_11668, var_11676, var_11684, var_11692, var_11700, var_11708, var_11716, var_11724, var_11732, var_11740, var_11748, var_11756, var_11764, var_11772, var_11780, var_11788, var_11796, var_11804, var_11812, var_11820: BOOLEAN;
-ASSERT LET _let_0 = ((NOT var_151) OR (NOT var_1546)), _let_1 = ((NOT var_147) OR (NOT var_1542)), _let_2 = ((NOT var_1546) OR (NOT var_151)), _let_3 = ((NOT var_1542) OR (NOT var_147)), _let_4 = ((NOT var_196) OR (NOT var_1726)), _let_5 = ((NOT var_192) OR (NOT var_1722)), _let_6 = ((NOT var_1726) OR (NOT var_196)), _let_7 = ((NOT var_1722) OR (NOT var_192)), _let_8 = ((NOT var_286) OR (NOT var_1906)), _let_9 = ((NOT var_282) OR (NOT var_1902)), _let_10 = ((NOT var_1906) OR (NOT var_286)), _let_11 = ((NOT var_1902) OR (NOT var_282)), _let_12 = ((NOT var_556) OR (NOT var_961)), _let_13 = ((NOT var_552) OR (NOT var_957)), _let_14 = ((NOT var_961) OR (NOT var_556)), _let_15 = ((NOT var_957) OR (NOT var_552)), _let_16 = ((NOT var_376) OR (NOT var_2356)), _let_17 = ((NOT var_372) OR (NOT var_2352)), _let_18 = ((NOT var_646) OR (NOT var_1141)), _let_19 = ((NOT var_642) OR (NOT var_1137)), _let_20 = ((NOT var_1141) OR (NOT var_646)), _let_21 = ((NOT var_1137) OR (NOT var_642)), _let_22 = ((NOT var_2356) OR (NOT var_376)), _let_23 = ((NOT var_2352) OR (NOT var_372)), _let_24 = ((NOT var_421) OR (NOT var_2536)), _let_25 = ((NOT var_417) OR (NOT var_2532)), _let_26 = ((NOT var_826) OR (NOT var_1276)), _let_27 = ((NOT var_822) OR (NOT var_1272)), _let_28 = ((NOT var_1276) OR (NOT var_826)), _let_29 = ((NOT var_1272) OR (NOT var_822)), _let_30 = ((NOT var_2536) OR (NOT var_421)), _let_31 = ((NOT var_2532) OR (NOT var_417)), _let_32 = ((NOT var_511) OR (NOT var_2716)), _let_33 = ((NOT var_507) OR (NOT var_2712)), _let_34 = ((NOT var_1006) OR (NOT var_1366)), _let_35 = ((NOT var_1002) OR (NOT var_1362)), _let_36 = ((NOT var_1366) OR (NOT var_1006)), _let_37 = ((NOT var_1362) OR (NOT var_1002)), _let_38 = ((NOT var_2716) OR (NOT var_511)), _let_39 = ((NOT var_2712) OR (NOT var_507)), _let_40 = ((NOT var_1456) OR (NOT var_1771)), _let_41 = ((NOT var_1452) OR (NOT var_1767)), _let_42 = ((NOT var_1771) OR (NOT var_1456)), _let_43 = ((NOT var_1767) OR (NOT var_1452)), _let_44 = ((NOT var_871) OR (NOT var_3076)), _let_45 = ((NOT var_867) OR (NOT var_3072)), _let_46 = ((NOT var_1501) OR (NOT var_1951)), _let_47 = ((NOT var_1497) OR (NOT var_1947)), _let_48 = ((NOT var_1951) OR (NOT var_1501)), _let_49 = ((NOT var_1947) OR (NOT var_1497)), _let_50 = ((NOT var_3076) OR (NOT var_871)), _let_51 = ((NOT var_3072) OR (NOT var_867)), _let_52 = ((NOT var_1051) OR (NOT var_3166)), _let_53 = ((NOT var_1047) OR (NOT var_3162)), _let_54 = ((NOT var_1636) OR (NOT var_2086)), _let_55 = ((NOT var_1632) OR (NOT var_2082)), _let_56 = ((NOT var_2086) OR (NOT var_1636)), _let_57 = ((NOT var_2082) OR (NOT var_1632)), _let_58 = ((NOT var_3166) OR (NOT var_1051)), _let_59 = ((NOT var_3162) OR (NOT var_1047)), _let_60 = ((NOT var_1231) OR (NOT var_3211)), _let_61 = ((NOT var_1227) OR (NOT var_3207)), _let_62 = ((NOT var_1816) OR (NOT var_2131)), _let_63 = ((NOT var_1812) OR (NOT var_2127)), _let_64 = ((NOT var_2131) OR (NOT var_1816)), _let_65 = ((NOT var_2127) OR (NOT var_1812)), _let_66 = ((NOT var_3211) OR (NOT var_1231)), _let_67 = ((NOT var_3207) OR (NOT var_1227)), _let_68 = ((NOT var_2221) OR (NOT var_2581)), _let_69 = ((NOT var_2217) OR (NOT var_2577)), _let_70 = ((NOT var_2581) OR (NOT var_2221)), _let_71 = ((NOT var_2577) OR (NOT var_2217)), _let_72 = ((NOT var_1681) OR (NOT var_3301)), _let_73 = ((NOT var_1677) OR (NOT var_3297)), _let_74 = ((NOT var_2311) OR (NOT var_2761)), _let_75 = ((NOT var_2307) OR (NOT var_2757)), _let_76 = ((NOT var_2761) OR (NOT var_2311)), _let_77 = ((NOT var_2757) OR (NOT var_2307)), _let_78 = ((NOT var_3301) OR (NOT var_1681)), _let_79 = ((NOT var_3297) OR (NOT var_1677)), _let_80 = ((NOT var_1861) OR (NOT var_3391)), _let_81 = ((NOT var_1857) OR (NOT var_3387)), _let_82 = ((NOT var_2446) OR (NOT var_2941)), _let_83 = ((NOT var_2442) OR (NOT var_2937)), _let_84 = ((NOT var_2941) OR (NOT var_2446)), _let_85 = ((NOT var_2937) OR (NOT var_2442)), _let_86 = ((NOT var_3391) OR (NOT var_1861)), _let_87 = ((NOT var_3387) OR (NOT var_1857)), _let_88 = ((NOT var_2041) OR (NOT var_3436)), _let_89 = ((NOT var_2037) OR (NOT var_3432)), _let_90 = ((NOT var_2626) OR (NOT var_3031)), _let_91 = ((NOT var_2622) OR (NOT var_3027)), _let_92 = ((NOT var_3031) OR (NOT var_2626)), _let_93 = ((NOT var_3027) OR (NOT var_2622)), _let_94 = ((NOT var_3436) OR (NOT var_2041)), _let_95 = ((NOT var_3432) OR (NOT var_2037)) IN (NOT var_92) AND ((NOT var_96) OR var_98) AND (NOT var_102) AND ((NOT var_106) OR (NOT var_92)) AND ((NOT var_111) OR var_92) AND ((NOT var_102) OR (NOT var_96)) AND ((NOT var_98) OR var_96) AND ((NOT var_106) OR var_96) AND ((NOT var_111) OR (NOT var_96)) AND (((NOT var_92) OR var_96) OR var_111) AND ((var_92 OR (NOT var_96)) OR var_106) AND (NOT var_137) AND ((NOT var_141) OR var_143) AND (NOT var_147) AND ((NOT var_151) OR (NOT var_137)) AND ((NOT var_156) OR var_137) AND ((NOT var_147) OR (NOT var_141)) AND ((NOT var_143) OR var_141) AND ((NOT var_151) OR var_141) AND ((NOT var_156) OR (NOT var_141)) AND (((NOT var_137) OR var_141) OR var_156) AND ((var_137 OR (NOT var_141)) OR var_151) AND (NOT var_182) AND ((NOT var_186) OR var_188) AND (NOT var_192) AND ((NOT var_196) OR (NOT var_182)) AND ((NOT var_201) OR var_182) AND ((NOT var_192) OR (NOT var_186)) AND ((NOT var_188) OR var_186) AND ((NOT var_196) OR var_186) AND ((NOT var_201) OR (NOT var_186)) AND (((NOT var_182) OR var_186) OR var_201) AND ((var_182 OR (NOT var_186)) OR var_196) AND (NOT var_227) AND ((NOT var_231) OR var_233) AND (NOT var_237) AND ((NOT var_241) OR (NOT var_227)) AND ((NOT var_246) OR var_227) AND ((NOT var_237) OR (NOT var_231)) AND ((NOT var_233) OR var_231) AND ((NOT var_241) OR var_231) AND ((NOT var_246) OR (NOT var_231)) AND (((NOT var_227) OR var_231) OR var_246) AND ((var_227 OR (NOT var_231)) OR var_241) AND (NOT var_272) AND ((NOT var_276) OR var_278) AND (NOT var_282) AND ((NOT var_286) OR (NOT var_272)) AND ((NOT var_291) OR var_272) AND ((NOT var_282) OR (NOT var_276)) AND ((NOT var_278) OR var_276) AND ((NOT var_286) OR var_276) AND ((NOT var_291) OR (NOT var_276)) AND (((NOT var_272) OR var_276) OR var_291) AND ((var_272 OR (NOT var_276)) OR var_286) AND (NOT var_317) AND ((NOT var_321) OR var_323) AND (NOT var_327) AND ((NOT var_331) OR (NOT var_317)) AND ((NOT var_336) OR var_317) AND ((NOT var_327) OR (NOT var_321)) AND ((NOT var_323) OR var_321) AND ((NOT var_331) OR var_321) AND ((NOT var_336) OR (NOT var_321)) AND (((NOT var_317) OR var_321) OR var_336) AND ((var_317 OR (NOT var_321)) OR var_331) AND (NOT var_362) AND ((NOT var_366) OR var_368) AND (NOT var_372) AND ((NOT var_376) OR (NOT var_362)) AND ((NOT var_381) OR var_362) AND ((NOT var_372) OR (NOT var_366)) AND ((NOT var_368) OR var_366) AND ((NOT var_376) OR var_366) AND ((NOT var_381) OR (NOT var_366)) AND (((NOT var_362) OR var_366) OR var_381) AND ((var_362 OR (NOT var_366)) OR var_376) AND (NOT var_407) AND ((NOT var_411) OR var_413) AND (NOT var_417) AND ((NOT var_421) OR (NOT var_407)) AND ((NOT var_426) OR var_407) AND ((NOT var_417) OR (NOT var_411)) AND ((NOT var_413) OR var_411) AND ((NOT var_421) OR var_411) AND ((NOT var_426) OR (NOT var_411)) AND (((NOT var_407) OR var_411) OR var_426) AND ((var_407 OR (NOT var_411)) OR var_421) AND (NOT var_452) AND ((NOT var_456) OR var_458) AND (NOT var_462) AND ((NOT var_466) OR (NOT var_452)) AND ((NOT var_471) OR var_452) AND ((NOT var_462) OR (NOT var_456)) AND ((NOT var_458) OR var_456) AND ((NOT var_466) OR var_456) AND ((NOT var_471) OR (NOT var_456)) AND (((NOT var_452) OR var_456) OR var_471) AND ((var_452 OR (NOT var_456)) OR var_466) AND (NOT var_497) AND ((NOT var_501) OR var_503) AND (NOT var_507) AND ((NOT var_511) OR (NOT var_497)) AND ((NOT var_516) OR var_497) AND ((NOT var_507) OR (NOT var_501)) AND ((NOT var_503) OR var_501) AND ((NOT var_511) OR var_501) AND ((NOT var_516) OR (NOT var_501)) AND (((NOT var_497) OR var_501) OR var_516) AND ((var_497 OR (NOT var_501)) OR var_511) AND (NOT var_542) AND ((NOT var_546) OR var_548) AND (NOT var_552) AND ((NOT var_556) OR (NOT var_542)) AND ((NOT var_561) OR var_542) AND ((NOT var_552) OR (NOT var_546)) AND ((NOT var_548) OR var_546) AND ((NOT var_556) OR var_546) AND ((NOT var_561) OR (NOT var_546)) AND (((NOT var_542) OR var_546) OR var_561) AND ((var_542 OR (NOT var_546)) OR var_556) AND (NOT var_587) AND ((NOT var_591) OR var_593) AND (NOT var_597) AND ((NOT var_601) OR (NOT var_587)) AND ((NOT var_606) OR var_587) AND ((NOT var_597) OR (NOT var_591)) AND ((NOT var_593) OR var_591) AND ((NOT var_601) OR var_591) AND ((NOT var_606) OR (NOT var_591)) AND (((NOT var_587) OR var_591) OR var_606) AND ((var_587 OR (NOT var_591)) OR var_601) AND (NOT var_632) AND ((NOT var_636) OR var_638) AND (NOT var_642) AND ((NOT var_646) OR (NOT var_632)) AND ((NOT var_651) OR var_632) AND ((NOT var_642) OR (NOT var_636)) AND ((NOT var_638) OR var_636) AND ((NOT var_646) OR var_636) AND ((NOT var_651) OR (NOT var_636)) AND (((NOT var_632) OR var_636) OR var_651) AND ((var_632 OR (NOT var_636)) OR var_646) AND (NOT var_677) AND ((NOT var_681) OR var_683) AND (NOT var_687) AND ((NOT var_691) OR (NOT var_677)) AND ((NOT var_696) OR var_677) AND ((NOT var_687) OR (NOT var_681)) AND ((NOT var_683) OR var_681) AND ((NOT var_691) OR var_681) AND ((NOT var_696) OR (NOT var_681)) AND (((NOT var_677) OR var_681) OR var_696) AND ((var_677 OR (NOT var_681)) OR var_691) AND (NOT var_722) AND ((NOT var_726) OR var_728) AND (NOT var_732) AND ((NOT var_736) OR (NOT var_722)) AND ((NOT var_741) OR var_722) AND ((NOT var_732) OR (NOT var_726)) AND ((NOT var_728) OR var_726) AND ((NOT var_736) OR var_726) AND ((NOT var_741) OR (NOT var_726)) AND (((NOT var_722) OR var_726) OR var_741) AND ((var_722 OR (NOT var_726)) OR var_736) AND (NOT var_767) AND ((NOT var_771) OR var_773) AND (NOT var_777) AND ((NOT var_781) OR (NOT var_767)) AND ((NOT var_786) OR var_767) AND ((NOT var_777) OR (NOT var_771)) AND ((NOT var_773) OR var_771) AND ((NOT var_781) OR var_771) AND ((NOT var_786) OR (NOT var_771)) AND (((NOT var_767) OR var_771) OR var_786) AND ((var_767 OR (NOT var_771)) OR var_781) AND (NOT var_812) AND ((NOT var_816) OR var_818) AND (NOT var_822) AND ((NOT var_826) OR (NOT var_812)) AND ((NOT var_831) OR var_812) AND ((NOT var_822) OR (NOT var_816)) AND ((NOT var_818) OR var_816) AND ((NOT var_826) OR var_816) AND ((NOT var_831) OR (NOT var_816)) AND (((NOT var_812) OR var_816) OR var_831) AND ((var_812 OR (NOT var_816)) OR var_826) AND (NOT var_857) AND ((NOT var_861) OR var_863) AND (NOT var_867) AND ((NOT var_871) OR (NOT var_857)) AND ((NOT var_876) OR var_857) AND ((NOT var_867) OR (NOT var_861)) AND ((NOT var_863) OR var_861) AND ((NOT var_871) OR var_861) AND ((NOT var_876) OR (NOT var_861)) AND (((NOT var_857) OR var_861) OR var_876) AND ((var_857 OR (NOT var_861)) OR var_871) AND (NOT var_902) AND ((NOT var_906) OR var_908) AND (NOT var_912) AND ((NOT var_916) OR (NOT var_902)) AND ((NOT var_921) OR var_902) AND ((NOT var_912) OR (NOT var_906)) AND ((NOT var_908) OR var_906) AND ((NOT var_916) OR var_906) AND ((NOT var_921) OR (NOT var_906)) AND (((NOT var_902) OR var_906) OR var_921) AND ((var_902 OR (NOT var_906)) OR var_916) AND (NOT var_947) AND ((NOT var_951) OR var_953) AND (NOT var_957) AND ((NOT var_961) OR (NOT var_947)) AND ((NOT var_966) OR var_947) AND ((NOT var_957) OR (NOT var_951)) AND ((NOT var_953) OR var_951) AND ((NOT var_961) OR var_951) AND ((NOT var_966) OR (NOT var_951)) AND (((NOT var_947) OR var_951) OR var_966) AND ((var_947 OR (NOT var_951)) OR var_961) AND (NOT var_992) AND ((NOT var_996) OR var_998) AND (NOT var_1002) AND ((NOT var_1006) OR (NOT var_992)) AND ((NOT var_1011) OR var_992) AND ((NOT var_1002) OR (NOT var_996)) AND ((NOT var_998) OR var_996) AND ((NOT var_1006) OR var_996) AND ((NOT var_1011) OR (NOT var_996)) AND (((NOT var_992) OR var_996) OR var_1011) AND ((var_992 OR (NOT var_996)) OR var_1006) AND (NOT var_1037) AND ((NOT var_1041) OR var_1043) AND (NOT var_1047) AND ((NOT var_1051) OR (NOT var_1037)) AND ((NOT var_1056) OR var_1037) AND ((NOT var_1047) OR (NOT var_1041)) AND ((NOT var_1043) OR var_1041) AND ((NOT var_1051) OR var_1041) AND ((NOT var_1056) OR (NOT var_1041)) AND (((NOT var_1037) OR var_1041) OR var_1056) AND ((var_1037 OR (NOT var_1041)) OR var_1051) AND (NOT var_1082) AND ((NOT var_1086) OR var_1088) AND (NOT var_1092) AND ((NOT var_1096) OR (NOT var_1082)) AND ((NOT var_1101) OR var_1082) AND ((NOT var_1092) OR (NOT var_1086)) AND ((NOT var_1088) OR var_1086) AND ((NOT var_1096) OR var_1086) AND ((NOT var_1101) OR (NOT var_1086)) AND (((NOT var_1082) OR var_1086) OR var_1101) AND ((var_1082 OR (NOT var_1086)) OR var_1096) AND (NOT var_1127) AND ((NOT var_1131) OR var_1133) AND (NOT var_1137) AND ((NOT var_1141) OR (NOT var_1127)) AND ((NOT var_1146) OR var_1127) AND ((NOT var_1137) OR (NOT var_1131)) AND ((NOT var_1133) OR var_1131) AND ((NOT var_1141) OR var_1131) AND ((NOT var_1146) OR (NOT var_1131)) AND (((NOT var_1127) OR var_1131) OR var_1146) AND ((var_1127 OR (NOT var_1131)) OR var_1141) AND (NOT var_1172) AND ((NOT var_1176) OR var_1178) AND (NOT var_1182) AND ((NOT var_1186) OR (NOT var_1172)) AND ((NOT var_1191) OR var_1172) AND ((NOT var_1182) OR (NOT var_1176)) AND ((NOT var_1178) OR var_1176) AND ((NOT var_1186) OR var_1176) AND ((NOT var_1191) OR (NOT var_1176)) AND (((NOT var_1172) OR var_1176) OR var_1191) AND ((var_1172 OR (NOT var_1176)) OR var_1186) AND (NOT var_1217) AND ((NOT var_1221) OR var_1223) AND (NOT var_1227) AND ((NOT var_1231) OR (NOT var_1217)) AND ((NOT var_1236) OR var_1217) AND ((NOT var_1227) OR (NOT var_1221)) AND ((NOT var_1223) OR var_1221) AND ((NOT var_1231) OR var_1221) AND ((NOT var_1236) OR (NOT var_1221)) AND (((NOT var_1217) OR var_1221) OR var_1236) AND ((var_1217 OR (NOT var_1221)) OR var_1231) AND (NOT var_1262) AND ((NOT var_1266) OR var_1268) AND (NOT var_1272) AND ((NOT var_1276) OR (NOT var_1262)) AND ((NOT var_1281) OR var_1262) AND ((NOT var_1272) OR (NOT var_1266)) AND ((NOT var_1268) OR var_1266) AND ((NOT var_1276) OR var_1266) AND ((NOT var_1281) OR (NOT var_1266)) AND (((NOT var_1262) OR var_1266) OR var_1281) AND ((var_1262 OR (NOT var_1266)) OR var_1276) AND (NOT var_1307) AND ((NOT var_1311) OR var_1313) AND (NOT var_1317) AND ((NOT var_1321) OR (NOT var_1307)) AND ((NOT var_1326) OR var_1307) AND ((NOT var_1317) OR (NOT var_1311)) AND ((NOT var_1313) OR var_1311) AND ((NOT var_1321) OR var_1311) AND ((NOT var_1326) OR (NOT var_1311)) AND (((NOT var_1307) OR var_1311) OR var_1326) AND ((var_1307 OR (NOT var_1311)) OR var_1321) AND (NOT var_1352) AND ((NOT var_1356) OR var_1358) AND (NOT var_1362) AND ((NOT var_1366) OR (NOT var_1352)) AND ((NOT var_1371) OR var_1352) AND ((NOT var_1362) OR (NOT var_1356)) AND ((NOT var_1358) OR var_1356) AND ((NOT var_1366) OR var_1356) AND ((NOT var_1371) OR (NOT var_1356)) AND (((NOT var_1352) OR var_1356) OR var_1371) AND ((var_1352 OR (NOT var_1356)) OR var_1366) AND (NOT var_1397) AND ((NOT var_1401) OR var_1403) AND (NOT var_1407) AND ((NOT var_1411) OR (NOT var_1397)) AND ((NOT var_1416) OR var_1397) AND ((NOT var_1407) OR (NOT var_1401)) AND ((NOT var_1403) OR var_1401) AND ((NOT var_1411) OR var_1401) AND ((NOT var_1416) OR (NOT var_1401)) AND (((NOT var_1397) OR var_1401) OR var_1416) AND ((var_1397 OR (NOT var_1401)) OR var_1411) AND (NOT var_1442) AND ((NOT var_1446) OR var_1448) AND (NOT var_1452) AND ((NOT var_1456) OR (NOT var_1442)) AND ((NOT var_1461) OR var_1442) AND ((NOT var_1452) OR (NOT var_1446)) AND ((NOT var_1448) OR var_1446) AND ((NOT var_1456) OR var_1446) AND ((NOT var_1461) OR (NOT var_1446)) AND (((NOT var_1442) OR var_1446) OR var_1461) AND ((var_1442 OR (NOT var_1446)) OR var_1456) AND (NOT var_1487) AND ((NOT var_1491) OR var_1493) AND (NOT var_1497) AND ((NOT var_1501) OR (NOT var_1487)) AND ((NOT var_1506) OR var_1487) AND ((NOT var_1497) OR (NOT var_1491)) AND ((NOT var_1493) OR var_1491) AND ((NOT var_1501) OR var_1491) AND ((NOT var_1506) OR (NOT var_1491)) AND (((NOT var_1487) OR var_1491) OR var_1506) AND ((var_1487 OR (NOT var_1491)) OR var_1501) AND (NOT var_1532) AND ((NOT var_1536) OR var_1538) AND (NOT var_1542) AND ((NOT var_1546) OR (NOT var_1532)) AND ((NOT var_1551) OR var_1532) AND ((NOT var_1542) OR (NOT var_1536)) AND ((NOT var_1538) OR var_1536) AND ((NOT var_1546) OR var_1536) AND ((NOT var_1551) OR (NOT var_1536)) AND (((NOT var_1532) OR var_1536) OR var_1551) AND ((var_1532 OR (NOT var_1536)) OR var_1546) AND (NOT var_1577) AND ((NOT var_1581) OR var_1583) AND (NOT var_1587) AND ((NOT var_1591) OR (NOT var_1577)) AND ((NOT var_1596) OR var_1577) AND ((NOT var_1587) OR (NOT var_1581)) AND ((NOT var_1583) OR var_1581) AND ((NOT var_1591) OR var_1581) AND ((NOT var_1596) OR (NOT var_1581)) AND (((NOT var_1577) OR var_1581) OR var_1596) AND ((var_1577 OR (NOT var_1581)) OR var_1591) AND (NOT var_1622) AND ((NOT var_1626) OR var_1628) AND (NOT var_1632) AND ((NOT var_1636) OR (NOT var_1622)) AND ((NOT var_1641) OR var_1622) AND ((NOT var_1632) OR (NOT var_1626)) AND ((NOT var_1628) OR var_1626) AND ((NOT var_1636) OR var_1626) AND ((NOT var_1641) OR (NOT var_1626)) AND (((NOT var_1622) OR var_1626) OR var_1641) AND ((var_1622 OR (NOT var_1626)) OR var_1636) AND (NOT var_1667) AND ((NOT var_1671) OR var_1673) AND (NOT var_1677) AND ((NOT var_1681) OR (NOT var_1667)) AND ((NOT var_1686) OR var_1667) AND ((NOT var_1677) OR (NOT var_1671)) AND ((NOT var_1673) OR var_1671) AND ((NOT var_1681) OR var_1671) AND ((NOT var_1686) OR (NOT var_1671)) AND (((NOT var_1667) OR var_1671) OR var_1686) AND ((var_1667 OR (NOT var_1671)) OR var_1681) AND (NOT var_1712) AND ((NOT var_1716) OR var_1718) AND (NOT var_1722) AND ((NOT var_1726) OR (NOT var_1712)) AND ((NOT var_1731) OR var_1712) AND ((NOT var_1722) OR (NOT var_1716)) AND ((NOT var_1718) OR var_1716) AND ((NOT var_1726) OR var_1716) AND ((NOT var_1731) OR (NOT var_1716)) AND (((NOT var_1712) OR var_1716) OR var_1731) AND ((var_1712 OR (NOT var_1716)) OR var_1726) AND (NOT var_1757) AND ((NOT var_1761) OR var_1763) AND (NOT var_1767) AND ((NOT var_1771) OR (NOT var_1757)) AND ((NOT var_1776) OR var_1757) AND ((NOT var_1767) OR (NOT var_1761)) AND ((NOT var_1763) OR var_1761) AND ((NOT var_1771) OR var_1761) AND ((NOT var_1776) OR (NOT var_1761)) AND (((NOT var_1757) OR var_1761) OR var_1776) AND ((var_1757 OR (NOT var_1761)) OR var_1771) AND (NOT var_1802) AND ((NOT var_1806) OR var_1808) AND (NOT var_1812) AND ((NOT var_1816) OR (NOT var_1802)) AND ((NOT var_1821) OR var_1802) AND ((NOT var_1812) OR (NOT var_1806)) AND ((NOT var_1808) OR var_1806) AND ((NOT var_1816) OR var_1806) AND ((NOT var_1821) OR (NOT var_1806)) AND (((NOT var_1802) OR var_1806) OR var_1821) AND ((var_1802 OR (NOT var_1806)) OR var_1816) AND (NOT var_1847) AND ((NOT var_1851) OR var_1853) AND (NOT var_1857) AND ((NOT var_1861) OR (NOT var_1847)) AND ((NOT var_1866) OR var_1847) AND ((NOT var_1857) OR (NOT var_1851)) AND ((NOT var_1853) OR var_1851) AND ((NOT var_1861) OR var_1851) AND ((NOT var_1866) OR (NOT var_1851)) AND (((NOT var_1847) OR var_1851) OR var_1866) AND ((var_1847 OR (NOT var_1851)) OR var_1861) AND (NOT var_1892) AND ((NOT var_1896) OR var_1898) AND (NOT var_1902) AND ((NOT var_1906) OR (NOT var_1892)) AND ((NOT var_1911) OR var_1892) AND ((NOT var_1902) OR (NOT var_1896)) AND ((NOT var_1898) OR var_1896) AND ((NOT var_1906) OR var_1896) AND ((NOT var_1911) OR (NOT var_1896)) AND (((NOT var_1892) OR var_1896) OR var_1911) AND ((var_1892 OR (NOT var_1896)) OR var_1906) AND (NOT var_1937) AND ((NOT var_1941) OR var_1943) AND (NOT var_1947) AND ((NOT var_1951) OR (NOT var_1937)) AND ((NOT var_1956) OR var_1937) AND ((NOT var_1947) OR (NOT var_1941)) AND ((NOT var_1943) OR var_1941) AND ((NOT var_1951) OR var_1941) AND ((NOT var_1956) OR (NOT var_1941)) AND (((NOT var_1937) OR var_1941) OR var_1956) AND ((var_1937 OR (NOT var_1941)) OR var_1951) AND (NOT var_1982) AND ((NOT var_1986) OR var_1988) AND (NOT var_1992) AND ((NOT var_1996) OR (NOT var_1982)) AND ((NOT var_2001) OR var_1982) AND ((NOT var_1992) OR (NOT var_1986)) AND ((NOT var_1988) OR var_1986) AND ((NOT var_1996) OR var_1986) AND ((NOT var_2001) OR (NOT var_1986)) AND (((NOT var_1982) OR var_1986) OR var_2001) AND ((var_1982 OR (NOT var_1986)) OR var_1996) AND (NOT var_2027) AND ((NOT var_2031) OR var_2033) AND (NOT var_2037) AND ((NOT var_2041) OR (NOT var_2027)) AND ((NOT var_2046) OR var_2027) AND ((NOT var_2037) OR (NOT var_2031)) AND ((NOT var_2033) OR var_2031) AND ((NOT var_2041) OR var_2031) AND ((NOT var_2046) OR (NOT var_2031)) AND (((NOT var_2027) OR var_2031) OR var_2046) AND ((var_2027 OR (NOT var_2031)) OR var_2041) AND (NOT var_2072) AND ((NOT var_2076) OR var_2078) AND (NOT var_2082) AND ((NOT var_2086) OR (NOT var_2072)) AND ((NOT var_2091) OR var_2072) AND ((NOT var_2082) OR (NOT var_2076)) AND ((NOT var_2078) OR var_2076) AND ((NOT var_2086) OR var_2076) AND ((NOT var_2091) OR (NOT var_2076)) AND (((NOT var_2072) OR var_2076) OR var_2091) AND ((var_2072 OR (NOT var_2076)) OR var_2086) AND (NOT var_2117) AND ((NOT var_2121) OR var_2123) AND (NOT var_2127) AND ((NOT var_2131) OR (NOT var_2117)) AND ((NOT var_2136) OR var_2117) AND ((NOT var_2127) OR (NOT var_2121)) AND ((NOT var_2123) OR var_2121) AND ((NOT var_2131) OR var_2121) AND ((NOT var_2136) OR (NOT var_2121)) AND (((NOT var_2117) OR var_2121) OR var_2136) AND ((var_2117 OR (NOT var_2121)) OR var_2131) AND (NOT var_2162) AND ((NOT var_2166) OR var_2168) AND (NOT var_2172) AND ((NOT var_2176) OR (NOT var_2162)) AND ((NOT var_2181) OR var_2162) AND ((NOT var_2172) OR (NOT var_2166)) AND ((NOT var_2168) OR var_2166) AND ((NOT var_2176) OR var_2166) AND ((NOT var_2181) OR (NOT var_2166)) AND (((NOT var_2162) OR var_2166) OR var_2181) AND ((var_2162 OR (NOT var_2166)) OR var_2176) AND (NOT var_2207) AND ((NOT var_2211) OR var_2213) AND (NOT var_2217) AND ((NOT var_2221) OR (NOT var_2207)) AND ((NOT var_2226) OR var_2207) AND ((NOT var_2217) OR (NOT var_2211)) AND ((NOT var_2213) OR var_2211) AND ((NOT var_2221) OR var_2211) AND ((NOT var_2226) OR (NOT var_2211)) AND (((NOT var_2207) OR var_2211) OR var_2226) AND ((var_2207 OR (NOT var_2211)) OR var_2221) AND (NOT var_2252) AND ((NOT var_2256) OR var_2258) AND (NOT var_2262) AND ((NOT var_2266) OR (NOT var_2252)) AND ((NOT var_2271) OR var_2252) AND ((NOT var_2262) OR (NOT var_2256)) AND ((NOT var_2258) OR var_2256) AND ((NOT var_2266) OR var_2256) AND ((NOT var_2271) OR (NOT var_2256)) AND (((NOT var_2252) OR var_2256) OR var_2271) AND ((var_2252 OR (NOT var_2256)) OR var_2266) AND (NOT var_2297) AND ((NOT var_2301) OR var_2303) AND (NOT var_2307) AND ((NOT var_2311) OR (NOT var_2297)) AND ((NOT var_2316) OR var_2297) AND ((NOT var_2307) OR (NOT var_2301)) AND ((NOT var_2303) OR var_2301) AND ((NOT var_2311) OR var_2301) AND ((NOT var_2316) OR (NOT var_2301)) AND (((NOT var_2297) OR var_2301) OR var_2316) AND ((var_2297 OR (NOT var_2301)) OR var_2311) AND (NOT var_2342) AND ((NOT var_2346) OR var_2348) AND (NOT var_2352) AND ((NOT var_2356) OR (NOT var_2342)) AND ((NOT var_2361) OR var_2342) AND ((NOT var_2352) OR (NOT var_2346)) AND ((NOT var_2348) OR var_2346) AND ((NOT var_2356) OR var_2346) AND ((NOT var_2361) OR (NOT var_2346)) AND (((NOT var_2342) OR var_2346) OR var_2361) AND ((var_2342 OR (NOT var_2346)) OR var_2356) AND (NOT var_2387) AND ((NOT var_2391) OR var_2393) AND (NOT var_2397) AND ((NOT var_2401) OR (NOT var_2387)) AND ((NOT var_2406) OR var_2387) AND ((NOT var_2397) OR (NOT var_2391)) AND ((NOT var_2393) OR var_2391) AND ((NOT var_2401) OR var_2391) AND ((NOT var_2406) OR (NOT var_2391)) AND (((NOT var_2387) OR var_2391) OR var_2406) AND ((var_2387 OR (NOT var_2391)) OR var_2401) AND (NOT var_2432) AND ((NOT var_2436) OR var_2438) AND (NOT var_2442) AND ((NOT var_2446) OR (NOT var_2432)) AND ((NOT var_2451) OR var_2432) AND ((NOT var_2442) OR (NOT var_2436)) AND ((NOT var_2438) OR var_2436) AND ((NOT var_2446) OR var_2436) AND ((NOT var_2451) OR (NOT var_2436)) AND (((NOT var_2432) OR var_2436) OR var_2451) AND ((var_2432 OR (NOT var_2436)) OR var_2446) AND (NOT var_2477) AND ((NOT var_2481) OR var_2483) AND (NOT var_2487) AND ((NOT var_2491) OR (NOT var_2477)) AND ((NOT var_2496) OR var_2477) AND ((NOT var_2487) OR (NOT var_2481)) AND ((NOT var_2483) OR var_2481) AND ((NOT var_2491) OR var_2481) AND ((NOT var_2496) OR (NOT var_2481)) AND (((NOT var_2477) OR var_2481) OR var_2496) AND ((var_2477 OR (NOT var_2481)) OR var_2491) AND (NOT var_2522) AND ((NOT var_2526) OR var_2528) AND (NOT var_2532) AND ((NOT var_2536) OR (NOT var_2522)) AND ((NOT var_2541) OR var_2522) AND ((NOT var_2532) OR (NOT var_2526)) AND ((NOT var_2528) OR var_2526) AND ((NOT var_2536) OR var_2526) AND ((NOT var_2541) OR (NOT var_2526)) AND (((NOT var_2522) OR var_2526) OR var_2541) AND ((var_2522 OR (NOT var_2526)) OR var_2536) AND (NOT var_2567) AND ((NOT var_2571) OR var_2573) AND (NOT var_2577) AND ((NOT var_2581) OR (NOT var_2567)) AND ((NOT var_2586) OR var_2567) AND ((NOT var_2577) OR (NOT var_2571)) AND ((NOT var_2573) OR var_2571) AND ((NOT var_2581) OR var_2571) AND ((NOT var_2586) OR (NOT var_2571)) AND (((NOT var_2567) OR var_2571) OR var_2586) AND ((var_2567 OR (NOT var_2571)) OR var_2581) AND (NOT var_2612) AND ((NOT var_2616) OR var_2618) AND (NOT var_2622) AND ((NOT var_2626) OR (NOT var_2612)) AND ((NOT var_2631) OR var_2612) AND ((NOT var_2622) OR (NOT var_2616)) AND ((NOT var_2618) OR var_2616) AND ((NOT var_2626) OR var_2616) AND ((NOT var_2631) OR (NOT var_2616)) AND (((NOT var_2612) OR var_2616) OR var_2631) AND ((var_2612 OR (NOT var_2616)) OR var_2626) AND (NOT var_2657) AND ((NOT var_2661) OR var_2663) AND (NOT var_2667) AND ((NOT var_2671) OR (NOT var_2657)) AND ((NOT var_2676) OR var_2657) AND ((NOT var_2667) OR (NOT var_2661)) AND ((NOT var_2663) OR var_2661) AND ((NOT var_2671) OR var_2661) AND ((NOT var_2676) OR (NOT var_2661)) AND (((NOT var_2657) OR var_2661) OR var_2676) AND ((var_2657 OR (NOT var_2661)) OR var_2671) AND (NOT var_2702) AND ((NOT var_2706) OR var_2708) AND (NOT var_2712) AND ((NOT var_2716) OR (NOT var_2702)) AND ((NOT var_2721) OR var_2702) AND ((NOT var_2712) OR (NOT var_2706)) AND ((NOT var_2708) OR var_2706) AND ((NOT var_2716) OR var_2706) AND ((NOT var_2721) OR (NOT var_2706)) AND (((NOT var_2702) OR var_2706) OR var_2721) AND ((var_2702 OR (NOT var_2706)) OR var_2716) AND (NOT var_2747) AND ((NOT var_2751) OR var_2753) AND (NOT var_2757) AND ((NOT var_2761) OR (NOT var_2747)) AND ((NOT var_2766) OR var_2747) AND ((NOT var_2757) OR (NOT var_2751)) AND ((NOT var_2753) OR var_2751) AND ((NOT var_2761) OR var_2751) AND ((NOT var_2766) OR (NOT var_2751)) AND (((NOT var_2747) OR var_2751) OR var_2766) AND ((var_2747 OR (NOT var_2751)) OR var_2761) AND (NOT var_2792) AND ((NOT var_2796) OR var_2798) AND (NOT var_2802) AND ((NOT var_2806) OR (NOT var_2792)) AND ((NOT var_2811) OR var_2792) AND ((NOT var_2802) OR (NOT var_2796)) AND ((NOT var_2798) OR var_2796) AND ((NOT var_2806) OR var_2796) AND ((NOT var_2811) OR (NOT var_2796)) AND (((NOT var_2792) OR var_2796) OR var_2811) AND ((var_2792 OR (NOT var_2796)) OR var_2806) AND (NOT var_2837) AND ((NOT var_2841) OR var_2843) AND (NOT var_2847) AND ((NOT var_2851) OR (NOT var_2837)) AND ((NOT var_2856) OR var_2837) AND ((NOT var_2847) OR (NOT var_2841)) AND ((NOT var_2843) OR var_2841) AND ((NOT var_2851) OR var_2841) AND ((NOT var_2856) OR (NOT var_2841)) AND (((NOT var_2837) OR var_2841) OR var_2856) AND ((var_2837 OR (NOT var_2841)) OR var_2851) AND (NOT var_2882) AND ((NOT var_2886) OR var_2888) AND (NOT var_2892) AND ((NOT var_2896) OR (NOT var_2882)) AND ((NOT var_2901) OR var_2882) AND ((NOT var_2892) OR (NOT var_2886)) AND ((NOT var_2888) OR var_2886) AND ((NOT var_2896) OR var_2886) AND ((NOT var_2901) OR (NOT var_2886)) AND (((NOT var_2882) OR var_2886) OR var_2901) AND ((var_2882 OR (NOT var_2886)) OR var_2896) AND (NOT var_2927) AND ((NOT var_2931) OR var_2933) AND (NOT var_2937) AND ((NOT var_2941) OR (NOT var_2927)) AND ((NOT var_2946) OR var_2927) AND ((NOT var_2937) OR (NOT var_2931)) AND ((NOT var_2933) OR var_2931) AND ((NOT var_2941) OR var_2931) AND ((NOT var_2946) OR (NOT var_2931)) AND (((NOT var_2927) OR var_2931) OR var_2946) AND ((var_2927 OR (NOT var_2931)) OR var_2941) AND (NOT var_2972) AND ((NOT var_2976) OR var_2978) AND (NOT var_2982) AND ((NOT var_2986) OR (NOT var_2972)) AND ((NOT var_2991) OR var_2972) AND ((NOT var_2982) OR (NOT var_2976)) AND ((NOT var_2978) OR var_2976) AND ((NOT var_2986) OR var_2976) AND ((NOT var_2991) OR (NOT var_2976)) AND (((NOT var_2972) OR var_2976) OR var_2991) AND ((var_2972 OR (NOT var_2976)) OR var_2986) AND (NOT var_3017) AND ((NOT var_3021) OR var_3023) AND (NOT var_3027) AND ((NOT var_3031) OR (NOT var_3017)) AND ((NOT var_3036) OR var_3017) AND ((NOT var_3027) OR (NOT var_3021)) AND ((NOT var_3023) OR var_3021) AND ((NOT var_3031) OR var_3021) AND ((NOT var_3036) OR (NOT var_3021)) AND (((NOT var_3017) OR var_3021) OR var_3036) AND ((var_3017 OR (NOT var_3021)) OR var_3031) AND (NOT var_3062) AND ((NOT var_3066) OR var_3068) AND (NOT var_3072) AND ((NOT var_3076) OR (NOT var_3062)) AND ((NOT var_3081) OR var_3062) AND ((NOT var_3072) OR (NOT var_3066)) AND ((NOT var_3068) OR var_3066) AND ((NOT var_3076) OR var_3066) AND ((NOT var_3081) OR (NOT var_3066)) AND (((NOT var_3062) OR var_3066) OR var_3081) AND ((var_3062 OR (NOT var_3066)) OR var_3076) AND (NOT var_3107) AND ((NOT var_3111) OR var_3113) AND (NOT var_3117) AND ((NOT var_3121) OR (NOT var_3107)) AND ((NOT var_3126) OR var_3107) AND ((NOT var_3117) OR (NOT var_3111)) AND ((NOT var_3113) OR var_3111) AND ((NOT var_3121) OR var_3111) AND ((NOT var_3126) OR (NOT var_3111)) AND (((NOT var_3107) OR var_3111) OR var_3126) AND ((var_3107 OR (NOT var_3111)) OR var_3121) AND (NOT var_3152) AND ((NOT var_3156) OR var_3158) AND (NOT var_3162) AND ((NOT var_3166) OR (NOT var_3152)) AND ((NOT var_3171) OR var_3152) AND ((NOT var_3162) OR (NOT var_3156)) AND ((NOT var_3158) OR var_3156) AND ((NOT var_3166) OR var_3156) AND ((NOT var_3171) OR (NOT var_3156)) AND (((NOT var_3152) OR var_3156) OR var_3171) AND ((var_3152 OR (NOT var_3156)) OR var_3166) AND (NOT var_3197) AND ((NOT var_3201) OR var_3203) AND (NOT var_3207) AND ((NOT var_3211) OR (NOT var_3197)) AND ((NOT var_3216) OR var_3197) AND ((NOT var_3207) OR (NOT var_3201)) AND ((NOT var_3203) OR var_3201) AND ((NOT var_3211) OR var_3201) AND ((NOT var_3216) OR (NOT var_3201)) AND (((NOT var_3197) OR var_3201) OR var_3216) AND ((var_3197 OR (NOT var_3201)) OR var_3211) AND (NOT var_3242) AND ((NOT var_3246) OR var_3248) AND (NOT var_3252) AND ((NOT var_3256) OR (NOT var_3242)) AND ((NOT var_3261) OR var_3242) AND ((NOT var_3252) OR (NOT var_3246)) AND ((NOT var_3248) OR var_3246) AND ((NOT var_3256) OR var_3246) AND ((NOT var_3261) OR (NOT var_3246)) AND (((NOT var_3242) OR var_3246) OR var_3261) AND ((var_3242 OR (NOT var_3246)) OR var_3256) AND (NOT var_3287) AND ((NOT var_3291) OR var_3293) AND (NOT var_3297) AND ((NOT var_3301) OR (NOT var_3287)) AND ((NOT var_3306) OR var_3287) AND ((NOT var_3297) OR (NOT var_3291)) AND ((NOT var_3293) OR var_3291) AND ((NOT var_3301) OR var_3291) AND ((NOT var_3306) OR (NOT var_3291)) AND (((NOT var_3287) OR var_3291) OR var_3306) AND ((var_3287 OR (NOT var_3291)) OR var_3301) AND (NOT var_3332) AND ((NOT var_3336) OR var_3338) AND (NOT var_3342) AND ((NOT var_3346) OR (NOT var_3332)) AND ((NOT var_3351) OR var_3332) AND ((NOT var_3342) OR (NOT var_3336)) AND ((NOT var_3338) OR var_3336) AND ((NOT var_3346) OR var_3336) AND ((NOT var_3351) OR (NOT var_3336)) AND (((NOT var_3332) OR var_3336) OR var_3351) AND ((var_3332 OR (NOT var_3336)) OR var_3346) AND (NOT var_3377) AND ((NOT var_3381) OR var_3383) AND (NOT var_3387) AND ((NOT var_3391) OR (NOT var_3377)) AND ((NOT var_3396) OR var_3377) AND ((NOT var_3387) OR (NOT var_3381)) AND ((NOT var_3383) OR var_3381) AND ((NOT var_3391) OR var_3381) AND ((NOT var_3396) OR (NOT var_3381)) AND (((NOT var_3377) OR var_3381) OR var_3396) AND ((var_3377 OR (NOT var_3381)) OR var_3391) AND (NOT var_3422) AND ((NOT var_3426) OR var_3428) AND (NOT var_3432) AND ((NOT var_3436) OR (NOT var_3422)) AND ((NOT var_3441) OR var_3422) AND ((NOT var_3432) OR (NOT var_3426)) AND ((NOT var_3428) OR var_3426) AND ((NOT var_3436) OR var_3426) AND ((NOT var_3441) OR (NOT var_3426)) AND (((NOT var_3422) OR var_3426) OR var_3441) AND ((var_3422 OR (NOT var_3426)) OR var_3436) AND (NOT var_3467) AND ((NOT var_3471) OR var_3473) AND (NOT var_3477) AND ((NOT var_3481) OR (NOT var_3467)) AND ((NOT var_3486) OR var_3467) AND ((NOT var_3477) OR (NOT var_3471)) AND ((NOT var_3473) OR var_3471) AND ((NOT var_3481) OR var_3471) AND ((NOT var_3486) OR (NOT var_3471)) AND (((NOT var_3467) OR var_3471) OR var_3486) AND ((var_3467 OR (NOT var_3471)) OR var_3481) AND var_3512 AND var_3515 AND var_3518 AND var_3521 AND var_3524 AND var_3527 AND var_3530 AND var_3533 AND var_3536 AND var_3539 AND var_3542 AND var_3545 AND var_3548 AND var_3551 AND var_3554 AND var_3557 AND var_3560 AND var_3563 AND var_3566 AND var_3569 AND var_3572 AND var_3575 AND var_3578 AND var_3581 AND var_3584 AND var_3587 AND var_3590 AND var_3593 AND var_3596 AND var_3599 AND var_3602 AND var_3605 AND var_3608 AND var_3611 AND var_3614 AND var_3617 AND var_3620 AND var_3623 AND var_3626 AND var_3629 AND var_3632 AND var_3635 AND var_3638 AND var_3641 AND var_3644 AND var_3647 AND var_3650 AND var_3653 AND var_3656 AND var_3659 AND var_3662 AND var_3665 AND var_3668 AND var_3671 AND var_3674 AND var_3677 AND var_3680 AND var_3683 AND var_3686 AND var_3689 AND var_3692 AND var_3695 AND var_3698 AND var_3701 AND var_3704 AND var_3707 AND var_3710 AND var_3713 AND var_3716 AND var_3719 AND var_3722 AND var_3725 AND var_3728 AND var_3731 AND var_3734 AND var_3737 AND var_3740 AND var_3743 AND var_3746 AND var_3749 AND var_3752 AND var_3755 AND var_3758 AND var_3761 AND var_3764 AND var_3767 AND var_3770 AND var_3773 AND var_3776 AND var_3779 AND var_3782 AND var_3785 AND var_3788 AND var_3791 AND var_3794 AND var_3797 AND var_3800 AND var_3803 AND var_3806 AND var_3809 AND var_3812 AND var_3815 AND var_3818 AND var_3821 AND var_3824 AND var_3827 AND var_3830 AND var_3833 AND var_3836 AND (NOT var_3839) AND (NOT var_3843) AND (NOT var_3847) AND (NOT var_3851) AND (NOT var_3855) AND (NOT var_3859) AND (NOT var_3863) AND (NOT var_3867) AND (NOT var_3871) AND (NOT var_3875) AND (NOT var_3879) AND (NOT var_3883) AND (NOT var_3887) AND (NOT var_3891) AND (NOT var_3895) AND (NOT var_3899) AND (NOT var_3903) AND (NOT var_3907) AND (NOT var_3911) AND (NOT var_3915) AND (NOT var_3919) AND (NOT var_3923) AND (NOT var_3927) AND (NOT var_3931) AND (NOT var_3935) AND (NOT var_3939) AND (NOT var_3943) AND (NOT var_3947) AND (NOT var_3951) AND (NOT var_3955) AND (NOT var_3959) AND (NOT var_3963) AND (NOT var_3967) AND var_3971 AND var_3974 AND ((NOT var_106) OR var_3791) AND ((NOT var_102) OR var_3980) AND ((NOT var_106) OR var_3843) AND ((NOT var_102) OR var_3987) AND ((NOT var_106) OR var_3740) AND ((NOT var_102) OR var_3994) AND ((NOT var_106) OR var_3515) AND ((NOT var_102) OR var_4001) AND ((NOT var_106) OR (NOT var_3980)) AND ((NOT var_102) OR (NOT var_4009)) AND ((NOT var_106) OR (NOT var_3987)) AND ((NOT var_102) OR (NOT var_4018)) AND ((NOT var_106) OR (NOT var_3994)) AND ((NOT var_102) OR (NOT var_3971)) AND ((NOT var_111) OR var_4031) AND ((NOT var_98) OR var_4035) AND ((NOT var_111) OR var_4039) AND ((NOT var_98) OR var_3974) AND ((NOT var_111) OR var_4046) AND ((NOT var_98) OR var_4050) AND ((NOT var_151) OR var_3847) AND ((NOT var_147) OR var_4057) AND ((NOT var_151) OR var_3855) AND ((NOT var_147) OR var_4064) AND ((NOT var_151) OR var_3740) AND ((NOT var_147) OR var_3994) AND ((NOT var_151) OR var_3521) AND ((NOT var_147) OR var_4077) AND ((NOT var_151) OR (NOT var_4057)) AND ((NOT var_147) OR (NOT var_4085)) AND ((NOT var_151) OR (NOT var_4064)) AND ((NOT var_147) OR (NOT var_4094)) AND ((NOT var_151) OR (NOT var_3994)) AND ((NOT var_147) OR (NOT var_3971)) AND ((NOT var_156) OR var_4031) AND ((NOT var_143) OR var_4035) AND ((NOT var_156) OR var_4111) AND ((NOT var_143) OR var_4115) AND ((NOT var_156) OR var_4119) AND ((NOT var_143) OR var_4123) AND ((NOT var_196) OR var_3794) AND ((NOT var_192) OR var_4130) AND ((NOT var_196) OR var_3859) AND ((NOT var_192) OR var_4137) AND ((NOT var_196) OR var_3907) AND ((NOT var_192) OR var_4039) AND ((NOT var_196) OR var_3527) AND ((NOT var_192) OR var_4150) AND ((NOT var_196) OR (NOT var_4130)) AND ((NOT var_192) OR (NOT var_4158)) AND ((NOT var_196) OR (NOT var_4137)) AND ((NOT var_192) OR (NOT var_4167)) AND ((NOT var_196) OR (NOT var_4039)) AND ((NOT var_192) OR (NOT var_3974)) AND ((NOT var_201) OR var_3980) AND ((NOT var_188) OR var_4009) AND ((NOT var_201) OR var_4186) AND ((NOT var_188) OR var_4190) AND ((NOT var_201) OR var_4194) AND ((NOT var_188) OR var_4198) AND ((NOT var_241) OR var_3839) AND ((NOT var_237) OR var_4031) AND ((NOT var_241) OR var_3791) AND ((NOT var_237) OR var_3980) AND ((NOT var_241) OR var_3743) AND ((NOT var_237) OR var_4046) AND ((NOT var_241) OR var_3512) AND ((NOT var_237) OR var_4223) AND ((NOT var_241) OR (NOT var_4031)) AND ((NOT var_237) OR (NOT var_4035)) AND ((NOT var_241) OR (NOT var_3980)) AND ((NOT var_237) OR (NOT var_4009)) AND ((NOT var_241) OR (NOT var_4046)) AND ((NOT var_237) OR (NOT var_4050)) AND ((NOT var_246) OR var_3987) AND ((NOT var_233) OR var_4018) AND ((NOT var_246) OR var_3994) AND ((NOT var_233) OR var_3971) AND ((NOT var_246) OR var_4039) AND ((NOT var_233) OR var_3974) AND ((NOT var_286) OR var_3851) AND ((NOT var_282) OR var_4270) AND ((NOT var_286) OR var_3863) AND ((NOT var_282) OR var_4277) AND ((NOT var_286) OR var_3743) AND ((NOT var_282) OR var_4046) AND ((NOT var_286) OR var_3533) AND ((NOT var_282) OR var_4290) AND ((NOT var_286) OR (NOT var_4270)) AND ((NOT var_282) OR (NOT var_4298)) AND ((NOT var_286) OR (NOT var_4277)) AND ((NOT var_282) OR (NOT var_4307)) AND ((NOT var_286) OR (NOT var_4046)) AND ((NOT var_282) OR (NOT var_4050)) AND ((NOT var_291) OR var_3987) AND ((NOT var_278) OR var_4018) AND ((NOT var_291) OR var_4324) AND ((NOT var_278) OR var_4328) AND ((NOT var_291) OR var_4332) AND ((NOT var_278) OR var_4336) AND ((NOT var_331) OR var_3794) AND ((NOT var_327) OR var_4130) AND ((NOT var_331) OR var_3851) AND ((NOT var_327) OR var_4270) AND ((NOT var_331) OR var_3746) AND ((NOT var_327) OR var_4111) AND ((NOT var_331) OR var_3539) AND ((NOT var_327) OR var_4361) AND ((NOT var_331) OR (NOT var_4130)) AND ((NOT var_327) OR (NOT var_4158)) AND ((NOT var_331) OR (NOT var_4270)) AND ((NOT var_327) OR (NOT var_4298)) AND ((NOT var_331) OR (NOT var_4111)) AND ((NOT var_327) OR (NOT var_4115)) AND ((NOT var_336) OR var_4057) AND ((NOT var_323) OR var_4085) AND ((NOT var_336) OR var_4186) AND ((NOT var_323) OR var_4190) AND ((NOT var_336) OR var_4324) AND ((NOT var_323) OR var_4328) AND ((NOT var_376) OR var_3855) AND ((NOT var_372) OR var_4064) AND ((NOT var_376) OR var_3809) AND ((NOT var_372) OR var_4412) AND ((NOT var_376) OR var_3746) AND ((NOT var_372) OR var_4111) AND ((NOT var_376) OR var_3545) AND ((NOT var_372) OR var_4425) AND ((NOT var_376) OR (NOT var_4064)) AND ((NOT var_372) OR (NOT var_4094)) AND ((NOT var_376) OR (NOT var_4412)) AND ((NOT var_372) OR (NOT var_4439)) AND ((NOT var_376) OR (NOT var_4111)) AND ((NOT var_372) OR (NOT var_4115)) AND ((NOT var_381) OR var_4057) AND ((NOT var_368) OR var_4085) AND ((NOT var_381) OR var_4119) AND ((NOT var_368) OR var_4123) AND ((NOT var_381) OR var_4462) AND ((NOT var_368) OR var_4466) AND ((NOT var_421) OR var_3859) AND ((NOT var_417) OR var_4137) AND ((NOT var_421) OR var_3875) AND ((NOT var_417) OR var_4479) AND ((NOT var_421) OR var_3911) AND ((NOT var_417) OR var_4186) AND ((NOT var_421) OR var_3551) AND ((NOT var_417) OR var_4492) AND ((NOT var_421) OR (NOT var_4137)) AND ((NOT var_417) OR (NOT var_4167)) AND ((NOT var_421) OR (NOT var_4479)) AND ((NOT var_417) OR (NOT var_4506)) AND ((NOT var_421) OR (NOT var_4186)) AND ((NOT var_417) OR (NOT var_4190)) AND ((NOT var_426) OR var_4130) AND ((NOT var_413) OR var_4158) AND ((NOT var_426) OR var_4194) AND ((NOT var_413) OR var_4198) AND ((NOT var_426) OR var_4531) AND ((NOT var_413) OR var_4535) AND ((NOT var_466) OR var_3847) AND ((NOT var_462) OR var_4057) AND ((NOT var_466) OR var_3794) AND ((NOT var_462) OR var_4130) AND ((NOT var_466) OR var_3749) AND ((NOT var_462) OR var_4324) AND ((NOT var_466) OR var_3536) AND ((NOT var_462) OR var_4560) AND ((NOT var_466) OR (NOT var_4057)) AND ((NOT var_462) OR (NOT var_4085)) AND ((NOT var_466) OR (NOT var_4130)) AND ((NOT var_462) OR (NOT var_4158)) AND ((NOT var_466) OR (NOT var_4324)) AND ((NOT var_462) OR (NOT var_4328)) AND ((NOT var_471) OR var_4270) AND ((NOT var_458) OR var_4298) AND ((NOT var_471) OR var_4111) AND ((NOT var_458) OR var_4115) AND ((NOT var_471) OR var_4186) AND ((NOT var_458) OR var_4190) AND ((NOT var_511) OR var_3863) AND ((NOT var_507) OR var_4277) AND ((NOT var_511) OR var_3812) AND ((NOT var_507) OR var_4611) AND ((NOT var_511) OR var_3749) AND ((NOT var_507) OR var_4324) AND ((NOT var_511) OR var_3557) AND ((NOT var_507) OR var_4624) AND ((NOT var_511) OR (NOT var_4277)) AND ((NOT var_507) OR (NOT var_4307)) AND ((NOT var_511) OR (NOT var_4611)) AND ((NOT var_507) OR (NOT var_4638)) AND ((NOT var_511) OR (NOT var_4324)) AND ((NOT var_507) OR (NOT var_4328)) AND ((NOT var_516) OR var_4270) AND ((NOT var_503) OR var_4298) AND ((NOT var_516) OR var_4332) AND ((NOT var_503) OR var_4336) AND ((NOT var_516) OR var_4661) AND ((NOT var_503) OR var_4665) AND ((NOT var_556) OR var_3800) AND ((NOT var_552) OR var_4672) AND ((NOT var_556) OR var_3855) AND ((NOT var_552) OR var_4064) AND ((NOT var_556) OR var_3915) AND ((NOT var_552) OR var_4685) AND ((NOT var_556) OR var_3563) AND ((NOT var_552) OR var_4692) AND ((NOT var_556) OR (NOT var_4672)) AND ((NOT var_552) OR (NOT var_4700)) AND ((NOT var_556) OR (NOT var_4064)) AND ((NOT var_552) OR (NOT var_4094)) AND ((NOT var_556) OR (NOT var_4685)) AND ((NOT var_552) OR (NOT var_4715)) AND ((NOT var_561) OR var_4720) AND ((NOT var_548) OR var_4724) AND ((NOT var_561) OR var_4728) AND ((NOT var_548) OR var_4732) AND ((NOT var_561) OR var_4119) AND ((NOT var_548) OR var_4123) AND ((NOT var_601) OR var_3871) AND ((NOT var_597) OR var_4745) AND ((NOT var_601) OR var_3821) AND ((NOT var_597) OR var_4752) AND ((NOT var_601) OR var_3915) AND ((NOT var_597) OR var_4685) AND ((NOT var_601) OR var_3569) AND ((NOT var_597) OR var_4765) AND ((NOT var_601) OR (NOT var_4745)) AND ((NOT var_597) OR (NOT var_4773)) AND ((NOT var_601) OR (NOT var_4752)) AND ((NOT var_597) OR (NOT var_4782)) AND ((NOT var_601) OR (NOT var_4685)) AND ((NOT var_597) OR (NOT var_4715)) AND ((NOT var_606) OR var_4720) AND ((NOT var_593) OR var_4724) AND ((NOT var_606) OR var_4799) AND ((NOT var_593) OR var_4803) AND ((NOT var_606) OR var_4807) AND ((NOT var_593) OR var_4811) AND ((NOT var_646) OR var_3855) AND ((NOT var_642) OR var_4064) AND ((NOT var_646) OR var_3859) AND ((NOT var_642) OR var_4137) AND ((NOT var_646) OR var_3919) AND ((NOT var_642) OR var_4728) AND ((NOT var_646) OR var_3575) AND ((NOT var_642) OR var_4836) AND ((NOT var_646) OR (NOT var_4064)) AND ((NOT var_642) OR (NOT var_4094)) AND ((NOT var_646) OR (NOT var_4137)) AND ((NOT var_642) OR (NOT var_4167)) AND ((NOT var_646) OR (NOT var_4728)) AND ((NOT var_642) OR (NOT var_4732)) AND ((NOT var_651) OR var_4672) AND ((NOT var_638) OR var_4700) AND ((NOT var_651) OR var_4119) AND ((NOT var_638) OR var_4123) AND ((NOT var_651) OR var_4194) AND ((NOT var_638) OR var_4198) AND ((NOT var_691) OR var_3806) AND ((NOT var_687) OR var_4881) AND ((NOT var_691) OR var_3824) AND ((NOT var_687) OR var_4888) AND ((NOT var_691) OR var_3919) AND ((NOT var_687) OR var_4728) AND ((NOT var_691) OR var_3581) AND ((NOT var_687) OR var_4901) AND ((NOT var_691) OR (NOT var_4881)) AND ((NOT var_687) OR (NOT var_4909)) AND ((NOT var_691) OR (NOT var_4888)) AND ((NOT var_687) OR (NOT var_4918)) AND ((NOT var_691) OR (NOT var_4728)) AND ((NOT var_687) OR (NOT var_4732)) AND ((NOT var_696) OR var_4672) AND ((NOT var_683) OR var_4700) AND ((NOT var_696) OR var_4935) AND ((NOT var_683) OR var_4939) AND ((NOT var_696) OR var_4943) AND ((NOT var_683) OR var_4947) AND ((NOT var_736) OR var_3839) AND ((NOT var_732) OR var_4031) AND ((NOT var_736) OR var_3847) AND ((NOT var_732) OR var_4057) AND ((NOT var_736) OR var_3752) AND ((NOT var_732) OR var_4119) AND ((NOT var_736) OR var_3518) AND ((NOT var_732) OR var_4972) AND ((NOT var_736) OR (NOT var_4031)) AND ((NOT var_732) OR (NOT var_4035)) AND ((NOT var_736) OR (NOT var_4057)) AND ((NOT var_732) OR (NOT var_4085)) AND ((NOT var_736) OR (NOT var_4119)) AND ((NOT var_732) OR (NOT var_4123)) AND ((NOT var_741) OR var_4064) AND ((NOT var_728) OR var_4094) AND ((NOT var_741) OR var_3994) AND ((NOT var_728) OR var_3971) AND ((NOT var_741) OR var_4111) AND ((NOT var_728) OR var_4115) AND ((NOT var_781) OR var_3797) AND ((NOT var_777) OR var_4720) AND ((NOT var_781) OR var_3800) AND ((NOT var_777) OR var_4672) AND ((NOT var_781) OR var_3752) AND ((NOT var_777) OR var_4119) AND ((NOT var_781) OR var_3560) AND ((NOT var_777) OR var_5035) AND ((NOT var_781) OR (NOT var_4720)) AND ((NOT var_777) OR (NOT var_4724)) AND ((NOT var_781) OR (NOT var_4672)) AND ((NOT var_777) OR (NOT var_4700)) AND ((NOT var_781) OR (NOT var_4119)) AND ((NOT var_777) OR (NOT var_4123)) AND ((NOT var_786) OR var_4064) AND ((NOT var_773) OR var_4094) AND ((NOT var_786) OR var_4685) AND ((NOT var_773) OR var_4715) AND ((NOT var_786) OR var_4728) AND ((NOT var_773) OR var_4732) AND ((NOT var_826) OR var_3859) AND ((NOT var_822) OR var_4137) AND ((NOT var_826) OR var_3863) AND ((NOT var_822) OR var_4277) AND ((NOT var_826) OR var_3752) AND ((NOT var_822) OR var_4119) AND ((NOT var_826) OR var_3587) AND ((NOT var_822) OR var_5098) AND ((NOT var_826) OR (NOT var_4137)) AND ((NOT var_822) OR (NOT var_4167)) AND ((NOT var_826) OR (NOT var_4277)) AND ((NOT var_822) OR (NOT var_4307)) AND ((NOT var_826) OR (NOT var_4119)) AND ((NOT var_822) OR (NOT var_4123)) AND ((NOT var_831) OR var_4064) AND ((NOT var_818) OR var_4094) AND ((NOT var_831) OR var_4194) AND ((NOT var_818) OR var_4198) AND ((NOT var_831) OR var_4332) AND ((NOT var_818) OR var_4336) AND ((NOT var_871) OR var_3809) AND ((NOT var_867) OR var_4412) AND ((NOT var_871) OR var_3879) AND ((NOT var_867) OR var_5147) AND ((NOT var_871) OR var_3752) AND ((NOT var_867) OR var_4119) AND ((NOT var_871) OR var_3593) AND ((NOT var_867) OR var_5160) AND ((NOT var_871) OR (NOT var_4412)) AND ((NOT var_867) OR (NOT var_4439)) AND ((NOT var_871) OR (NOT var_5147)) AND ((NOT var_867) OR (NOT var_5174)) AND ((NOT var_871) OR (NOT var_4119)) AND ((NOT var_867) OR (NOT var_4123)) AND ((NOT var_876) OR var_4064) AND ((NOT var_863) OR var_4094) AND ((NOT var_876) OR var_4462) AND ((NOT var_863) OR var_4466) AND ((NOT var_876) OR var_5197) AND ((NOT var_863) OR var_5201) AND ((NOT var_916) OR var_3791) AND ((NOT var_912) OR var_3980) AND ((NOT var_916) OR var_3794) AND ((NOT var_912) OR var_4130) AND ((NOT var_916) OR var_3755) AND ((NOT var_912) OR var_4194) AND ((NOT var_916) OR var_3524) AND ((NOT var_912) OR var_5226) AND ((NOT var_916) OR (NOT var_3980)) AND ((NOT var_912) OR (NOT var_4009)) AND ((NOT var_916) OR (NOT var_4130)) AND ((NOT var_912) OR (NOT var_4158)) AND ((NOT var_916) OR (NOT var_4194)) AND ((NOT var_912) OR (NOT var_4198)) AND ((NOT var_921) OR var_4137) AND ((NOT var_908) OR var_4167) AND ((NOT var_921) OR var_4039) AND ((NOT var_908) OR var_3974) AND ((NOT var_921) OR var_4186) AND ((NOT var_908) OR var_4190) AND ((NOT var_961) OR var_3800) AND ((NOT var_957) OR var_4672) AND ((NOT var_961) OR var_3855) AND ((NOT var_957) OR var_4064) AND ((NOT var_961) OR var_3755) AND ((NOT var_957) OR var_4194) AND ((NOT var_961) OR var_3572) AND ((NOT var_957) OR var_5289) AND ((NOT var_961) OR (NOT var_4672)) AND ((NOT var_957) OR (NOT var_4700)) AND ((NOT var_961) OR (NOT var_4064)) AND ((NOT var_957) OR (NOT var_4094)) AND ((NOT var_961) OR (NOT var_4194)) AND ((NOT var_957) OR (NOT var_4198)) AND ((NOT var_966) OR var_4137) AND ((NOT var_953) OR var_4167) AND ((NOT var_966) OR var_4728) AND ((NOT var_953) OR var_4732) AND ((NOT var_966) OR var_4119) AND ((NOT var_953) OR var_4123) AND ((NOT var_1006) OR var_3863) AND ((NOT var_1002) OR var_4277) AND ((NOT var_1006) OR var_3803) AND ((NOT var_1002) OR var_5338) AND ((NOT var_1006) OR var_3755) AND ((NOT var_1002) OR var_4194) AND ((NOT var_1006) OR var_3599) AND ((NOT var_1002) OR var_5351) AND ((NOT var_1006) OR (NOT var_4277)) AND ((NOT var_1002) OR (NOT var_4307)) AND ((NOT var_1006) OR (NOT var_5338)) AND ((NOT var_1002) OR (NOT var_5365)) AND ((NOT var_1006) OR (NOT var_4194)) AND ((NOT var_1002) OR (NOT var_4198)) AND ((NOT var_1011) OR var_4137) AND ((NOT var_998) OR var_4167) AND ((NOT var_1011) OR var_4332) AND ((NOT var_998) OR var_4336) AND ((NOT var_1011) OR var_5388) AND ((NOT var_998) OR var_5392) AND ((NOT var_1051) OR var_3875) AND ((NOT var_1047) OR var_4479) AND ((NOT var_1051) OR var_3827) AND ((NOT var_1047) OR var_5405) AND ((NOT var_1051) OR var_3755) AND ((NOT var_1047) OR var_4194) AND ((NOT var_1051) OR var_3605) AND ((NOT var_1047) OR var_5418) AND ((NOT var_1051) OR (NOT var_4479)) AND ((NOT var_1047) OR (NOT var_4506)) AND ((NOT var_1051) OR (NOT var_5405)) AND ((NOT var_1047) OR (NOT var_5432)) AND ((NOT var_1051) OR (NOT var_4194)) AND ((NOT var_1047) OR (NOT var_4198)) AND ((NOT var_1056) OR var_4137) AND ((NOT var_1043) OR var_4167) AND ((NOT var_1056) OR var_4531) AND ((NOT var_1043) OR var_4535) AND ((NOT var_1056) OR var_5455) AND ((NOT var_1043) OR var_5459) AND ((NOT var_1096) OR var_3843) AND ((NOT var_1092) OR var_3987) AND ((NOT var_1096) OR var_3851) AND ((NOT var_1092) OR var_4270) AND ((NOT var_1096) OR var_3758) AND ((NOT var_1092) OR var_4332) AND ((NOT var_1096) OR var_3530) AND ((NOT var_1092) OR var_5484) AND ((NOT var_1096) OR (NOT var_3987)) AND ((NOT var_1092) OR (NOT var_4018)) AND ((NOT var_1096) OR (NOT var_4270)) AND ((NOT var_1092) OR (NOT var_4298)) AND ((NOT var_1096) OR (NOT var_4332)) AND ((NOT var_1092) OR (NOT var_4336)) AND ((NOT var_1101) OR var_4277) AND ((NOT var_1088) OR var_4307) AND ((NOT var_1101) OR var_4046) AND ((NOT var_1088) OR var_4050) AND ((NOT var_1101) OR var_4324) AND ((NOT var_1088) OR var_4328) AND ((NOT var_1141) OR var_3855) AND ((NOT var_1137) OR var_4064) AND ((NOT var_1141) OR var_3859) AND ((NOT var_1137) OR var_4137) AND ((NOT var_1141) OR var_3758) AND ((NOT var_1137) OR var_4332) AND ((NOT var_1141) OR var_3584) AND ((NOT var_1137) OR var_5547) AND ((NOT var_1141) OR (NOT var_4064)) AND ((NOT var_1137) OR (NOT var_4094)) AND ((NOT var_1141) OR (NOT var_4137)) AND ((NOT var_1137) OR (NOT var_4167)) AND ((NOT var_1141) OR (NOT var_4332)) AND ((NOT var_1137) OR (NOT var_4336)) AND ((NOT var_1146) OR var_4277) AND ((NOT var_1133) OR var_4307) AND ((NOT var_1146) OR var_4119) AND ((NOT var_1133) OR var_4123) AND ((NOT var_1146) OR var_4194) AND ((NOT var_1133) OR var_4198) AND ((NOT var_1186) OR var_3803) AND ((NOT var_1182) OR var_5338) AND ((NOT var_1186) OR var_3867) AND ((NOT var_1182) OR var_5596) AND ((NOT var_1186) OR var_3758) AND ((NOT var_1182) OR var_4332) AND ((NOT var_1186) OR var_3611) AND ((NOT var_1182) OR var_5609) AND ((NOT var_1186) OR (NOT var_5338)) AND ((NOT var_1182) OR (NOT var_5365)) AND ((NOT var_1186) OR (NOT var_5596)) AND ((NOT var_1182) OR (NOT var_5623)) AND ((NOT var_1186) OR (NOT var_4332)) AND ((NOT var_1182) OR (NOT var_4336)) AND ((NOT var_1191) OR var_4277) AND ((NOT var_1178) OR var_4307) AND ((NOT var_1191) OR var_5388) AND ((NOT var_1178) OR var_5392) AND ((NOT var_1191) OR var_5646) AND ((NOT var_1178) OR var_5650) AND ((NOT var_1231) OR var_3812) AND ((NOT var_1227) OR var_4611) AND ((NOT var_1231) OR var_3883) AND ((NOT var_1227) OR var_5663) AND ((NOT var_1231) OR var_3758) AND ((NOT var_1227) OR var_4332) AND ((NOT var_1231) OR var_3617) AND ((NOT var_1227) OR var_5676) AND ((NOT var_1231) OR (NOT var_4611)) AND ((NOT var_1227) OR (NOT var_4638)) AND ((NOT var_1231) OR (NOT var_5663)) AND ((NOT var_1227) OR (NOT var_5690)) AND ((NOT var_1231) OR (NOT var_4332)) AND ((NOT var_1227) OR (NOT var_4336)) AND ((NOT var_1236) OR var_4277) AND ((NOT var_1223) OR var_4307) AND ((NOT var_1236) OR var_4661) AND ((NOT var_1223) OR var_4665) AND ((NOT var_1236) OR var_5713) AND ((NOT var_1223) OR var_5717) AND ((NOT var_1276) OR var_3859) AND ((NOT var_1272) OR var_4137) AND ((NOT var_1276) OR var_3863) AND ((NOT var_1272) OR var_4277) AND ((NOT var_1276) OR var_3923) AND ((NOT var_1272) OR var_5388) AND ((NOT var_1276) OR var_3596) AND ((NOT var_1272) OR var_5742) AND ((NOT var_1276) OR (NOT var_4137)) AND ((NOT var_1272) OR (NOT var_4167)) AND ((NOT var_1276) OR (NOT var_4277)) AND ((NOT var_1272) OR (NOT var_4307)) AND ((NOT var_1276) OR (NOT var_5388)) AND ((NOT var_1272) OR (NOT var_5392)) AND ((NOT var_1281) OR var_5338) AND ((NOT var_1268) OR var_5365) AND ((NOT var_1281) OR var_4194) AND ((NOT var_1268) OR var_4198) AND ((NOT var_1281) OR var_4332) AND ((NOT var_1268) OR var_4336) AND ((NOT var_1321) OR var_3815) AND ((NOT var_1317) OR var_5787) AND ((NOT var_1321) OR var_3830) AND ((NOT var_1317) OR var_5794) AND ((NOT var_1321) OR var_3923) AND ((NOT var_1317) OR var_5388) AND ((NOT var_1321) OR var_3623) AND ((NOT var_1317) OR var_5807) AND ((NOT var_1321) OR (NOT var_5787)) AND ((NOT var_1317) OR (NOT var_5815)) AND ((NOT var_1321) OR (NOT var_5794)) AND ((NOT var_1317) OR (NOT var_5824)) AND ((NOT var_1321) OR (NOT var_5388)) AND ((NOT var_1317) OR (NOT var_5392)) AND ((NOT var_1326) OR var_5338) AND ((NOT var_1313) OR var_5365) AND ((NOT var_1326) OR var_5841) AND ((NOT var_1313) OR var_5845) AND ((NOT var_1326) OR var_5849) AND ((NOT var_1313) OR var_5853) AND ((NOT var_1366) OR var_3863) AND ((NOT var_1362) OR var_4277) AND ((NOT var_1366) OR var_3803) AND ((NOT var_1362) OR var_5338) AND ((NOT var_1366) OR var_3761) AND ((NOT var_1362) OR var_5646) AND ((NOT var_1366) OR var_3608) AND ((NOT var_1362) OR var_5878) AND ((NOT var_1366) OR (NOT var_4277)) AND ((NOT var_1362) OR (NOT var_4307)) AND ((NOT var_1366) OR (NOT var_5338)) AND ((NOT var_1362) OR (NOT var_5365)) AND ((NOT var_1366) OR (NOT var_5646)) AND ((NOT var_1362) OR (NOT var_5650)) AND ((NOT var_1371) OR var_5596) AND ((NOT var_1358) OR var_5623) AND ((NOT var_1371) OR var_4332) AND ((NOT var_1358) OR var_4336) AND ((NOT var_1371) OR var_5388) AND ((NOT var_1358) OR var_5392) AND ((NOT var_1411) OR var_3818) AND ((NOT var_1407) OR var_5923) AND ((NOT var_1411) OR var_3887) AND ((NOT var_1407) OR var_5930) AND ((NOT var_1411) OR var_3761) AND ((NOT var_1407) OR var_5646) AND ((NOT var_1411) OR var_3629) AND ((NOT var_1407) OR var_5943) AND ((NOT var_1411) OR (NOT var_5923)) AND ((NOT var_1407) OR (NOT var_5951)) AND ((NOT var_1411) OR (NOT var_5930)) AND ((NOT var_1407) OR (NOT var_5960)) AND ((NOT var_1411) OR (NOT var_5646)) AND ((NOT var_1407) OR (NOT var_5650)) AND ((NOT var_1416) OR var_5596) AND ((NOT var_1403) OR var_5623) AND ((NOT var_1416) OR var_5977) AND ((NOT var_1403) OR var_5981) AND ((NOT var_1416) OR var_5985) AND ((NOT var_1403) OR var_5989) AND ((NOT var_1456) OR var_3806) AND ((NOT var_1452) OR var_4881) AND ((NOT var_1456) OR var_3809) AND ((NOT var_1452) OR var_4412) AND ((NOT var_1456) OR var_3764) AND ((NOT var_1452) OR var_4799) AND ((NOT var_1456) OR var_3635) AND ((NOT var_1452) OR var_6014) AND ((NOT var_1456) OR (NOT var_4881)) AND ((NOT var_1452) OR (NOT var_4909)) AND ((NOT var_1456) OR (NOT var_4412)) AND ((NOT var_1452) OR (NOT var_4439)) AND ((NOT var_1456) OR (NOT var_4799)) AND ((NOT var_1452) OR (NOT var_4803)) AND ((NOT var_1461) OR var_4745) AND ((NOT var_1448) OR var_4773) AND ((NOT var_1461) OR var_4935) AND ((NOT var_1448) OR var_4939) AND ((NOT var_1461) OR var_4462) AND ((NOT var_1448) OR var_4466) AND ((NOT var_1501) OR var_3809) AND ((NOT var_1497) OR var_4412) AND ((NOT var_1501) OR var_3875) AND ((NOT var_1497) OR var_4479) AND ((NOT var_1501) OR var_3927) AND ((NOT var_1497) OR var_4935) AND ((NOT var_1501) OR var_3641) AND ((NOT var_1497) OR var_6077) AND ((NOT var_1501) OR (NOT var_4412)) AND ((NOT var_1497) OR (NOT var_4439)) AND ((NOT var_1501) OR (NOT var_4479)) AND ((NOT var_1497) OR (NOT var_4506)) AND ((NOT var_1501) OR (NOT var_4935)) AND ((NOT var_1497) OR (NOT var_4939)) AND ((NOT var_1506) OR var_4881) AND ((NOT var_1493) OR var_4909) AND ((NOT var_1506) OR var_4462) AND ((NOT var_1493) OR var_4466) AND ((NOT var_1506) OR var_4531) AND ((NOT var_1493) OR var_4535) AND ((NOT var_1546) OR var_3847) AND ((NOT var_1542) OR var_4057) AND ((NOT var_1546) OR var_3855) AND ((NOT var_1542) OR var_4064) AND ((NOT var_1546) OR var_3931) AND ((NOT var_1542) OR var_4462) AND ((NOT var_1546) OR var_3542) AND ((NOT var_1542) OR var_6140) AND ((NOT var_1546) OR (NOT var_4057)) AND ((NOT var_1542) OR (NOT var_4085)) AND ((NOT var_1546) OR (NOT var_4064)) AND ((NOT var_1542) OR (NOT var_4094)) AND ((NOT var_1546) OR (NOT var_4462)) AND ((NOT var_1542) OR (NOT var_4466)) AND ((NOT var_1551) OR var_4412) AND ((NOT var_1538) OR var_4439) AND ((NOT var_1551) OR var_4111) AND ((NOT var_1538) OR var_4115) AND ((NOT var_1551) OR var_4119) AND ((NOT var_1538) OR var_4123) AND ((NOT var_1591) OR var_3871) AND ((NOT var_1587) OR var_4745) AND ((NOT var_1591) OR var_3806) AND ((NOT var_1587) OR var_4881) AND ((NOT var_1591) OR var_3931) AND ((NOT var_1587) OR var_4462) AND ((NOT var_1591) OR var_3632) AND ((NOT var_1587) OR var_6203) AND ((NOT var_1591) OR (NOT var_4745)) AND ((NOT var_1587) OR (NOT var_4773)) AND ((NOT var_1591) OR (NOT var_4881)) AND ((NOT var_1587) OR (NOT var_4909)) AND ((NOT var_1591) OR (NOT var_4462)) AND ((NOT var_1587) OR (NOT var_4466)) AND ((NOT var_1596) OR var_4412) AND ((NOT var_1583) OR var_4439) AND ((NOT var_1596) OR var_4799) AND ((NOT var_1583) OR var_4803) AND ((NOT var_1596) OR var_4935) AND ((NOT var_1583) OR var_4939) AND ((NOT var_1636) OR var_3875) AND ((NOT var_1632) OR var_4479) AND ((NOT var_1636) OR var_3812) AND ((NOT var_1632) OR var_4611) AND ((NOT var_1636) OR var_3931) AND ((NOT var_1632) OR var_4462) AND ((NOT var_1636) OR var_3647) AND ((NOT var_1632) OR var_6264) AND ((NOT var_1636) OR (NOT var_4479)) AND ((NOT var_1632) OR (NOT var_4506)) AND ((NOT var_1636) OR (NOT var_4611)) AND ((NOT var_1632) OR (NOT var_4638)) AND ((NOT var_1636) OR (NOT var_4462)) AND ((NOT var_1632) OR (NOT var_4466)) AND ((NOT var_1641) OR var_4412) AND ((NOT var_1628) OR var_4439) AND ((NOT var_1641) OR var_4531) AND ((NOT var_1628) OR var_4535) AND ((NOT var_1641) OR var_4661) AND ((NOT var_1628) OR var_4665) AND ((NOT var_1681) OR var_3879) AND ((NOT var_1677) OR var_5147) AND ((NOT var_1681) OR var_3891) AND ((NOT var_1677) OR var_6313) AND ((NOT var_1681) OR var_3931) AND ((NOT var_1677) OR var_4462) AND ((NOT var_1681) OR var_3653) AND ((NOT var_1677) OR var_6326) AND ((NOT var_1681) OR (NOT var_5147)) AND ((NOT var_1677) OR (NOT var_5174)) AND ((NOT var_1681) OR (NOT var_6313)) AND ((NOT var_1677) OR (NOT var_6340)) AND ((NOT var_1681) OR (NOT var_4462)) AND ((NOT var_1677) OR (NOT var_4466)) AND ((NOT var_1686) OR var_4412) AND ((NOT var_1673) OR var_4439) AND ((NOT var_1686) OR var_5197) AND ((NOT var_1673) OR var_5201) AND ((NOT var_1686) OR var_6363) AND ((NOT var_1673) OR var_6367) AND ((NOT var_1726) OR var_3794) AND ((NOT var_1722) OR var_4130) AND ((NOT var_1726) OR var_3859) AND ((NOT var_1722) OR var_4137) AND ((NOT var_1726) OR var_3767) AND ((NOT var_1722) OR var_4531) AND ((NOT var_1726) OR var_3548) AND ((NOT var_1722) OR var_6392) AND ((NOT var_1726) OR (NOT var_4130)) AND ((NOT var_1722) OR (NOT var_4158)) AND ((NOT var_1726) OR (NOT var_4137)) AND ((NOT var_1722) OR (NOT var_4167)) AND ((NOT var_1726) OR (NOT var_4531)) AND ((NOT var_1722) OR (NOT var_4535)) AND ((NOT var_1731) OR var_4479) AND ((NOT var_1718) OR var_4506) AND ((NOT var_1731) OR var_4186) AND ((NOT var_1718) OR var_4190) AND ((NOT var_1731) OR var_4194) AND ((NOT var_1718) OR var_4198) AND ((NOT var_1771) OR var_3806) AND ((NOT var_1767) OR var_4881) AND ((NOT var_1771) OR var_3809) AND ((NOT var_1767) OR var_4412) AND ((NOT var_1771) OR var_3767) AND ((NOT var_1767) OR var_4531) AND ((NOT var_1771) OR var_3638) AND ((NOT var_1767) OR var_6455) AND ((NOT var_1771) OR (NOT var_4881)) AND ((NOT var_1767) OR (NOT var_4909)) AND ((NOT var_1771) OR (NOT var_4412)) AND ((NOT var_1767) OR (NOT var_4439)) AND ((NOT var_1771) OR (NOT var_4531)) AND ((NOT var_1767) OR (NOT var_4535)) AND ((NOT var_1776) OR var_4479) AND ((NOT var_1763) OR var_4506) AND ((NOT var_1776) OR var_4935) AND ((NOT var_1763) OR var_4939) AND ((NOT var_1776) OR var_4462) AND ((NOT var_1763) OR var_4466) AND ((NOT var_1816) OR var_3812) AND ((NOT var_1812) OR var_4611) AND ((NOT var_1816) OR var_3815) AND ((NOT var_1812) OR var_5787) AND ((NOT var_1816) OR var_3767) AND ((NOT var_1812) OR var_4531) AND ((NOT var_1816) OR var_3659) AND ((NOT var_1812) OR var_6516) AND ((NOT var_1816) OR (NOT var_4611)) AND ((NOT var_1812) OR (NOT var_4638)) AND ((NOT var_1816) OR (NOT var_5787)) AND ((NOT var_1812) OR (NOT var_5815)) AND ((NOT var_1816) OR (NOT var_4531)) AND ((NOT var_1812) OR (NOT var_4535)) AND ((NOT var_1821) OR var_4479) AND ((NOT var_1808) OR var_4506) AND ((NOT var_1821) OR var_4661) AND ((NOT var_1808) OR var_4665) AND ((NOT var_1821) OR var_5841) AND ((NOT var_1808) OR var_5845) AND ((NOT var_1861) OR var_3827) AND ((NOT var_1857) OR var_5405) AND ((NOT var_1861) OR var_3833) AND ((NOT var_1857) OR var_6565) AND ((NOT var_1861) OR var_3767) AND ((NOT var_1857) OR var_4531) AND ((NOT var_1861) OR var_3665) AND ((NOT var_1857) OR var_6578) AND ((NOT var_1861) OR (NOT var_5405)) AND ((NOT var_1857) OR (NOT var_5432)) AND ((NOT var_1861) OR (NOT var_6565)) AND ((NOT var_1857) OR (NOT var_6592)) AND ((NOT var_1861) OR (NOT var_4531)) AND ((NOT var_1857) OR (NOT var_4535)) AND ((NOT var_1866) OR var_4479) AND ((NOT var_1853) OR var_4506) AND ((NOT var_1866) OR var_5455) AND ((NOT var_1853) OR var_5459) AND ((NOT var_1866) OR var_6615) AND ((NOT var_1853) OR var_6619) AND ((NOT var_1906) OR var_3851) AND ((NOT var_1902) OR var_4270) AND ((NOT var_1906) OR var_3863) AND ((NOT var_1902) OR var_4277) AND ((NOT var_1906) OR var_3935) AND ((NOT var_1902) OR var_4661) AND ((NOT var_1906) OR var_3554) AND ((NOT var_1902) OR var_6644) AND ((NOT var_1906) OR (NOT var_4270)) AND ((NOT var_1902) OR (NOT var_4298)) AND ((NOT var_1906) OR (NOT var_4277)) AND ((NOT var_1902) OR (NOT var_4307)) AND ((NOT var_1906) OR (NOT var_4661)) AND ((NOT var_1902) OR (NOT var_4665)) AND ((NOT var_1911) OR var_4611) AND ((NOT var_1898) OR var_4638) AND ((NOT var_1911) OR var_4324) AND ((NOT var_1898) OR var_4328) AND ((NOT var_1911) OR var_4332) AND ((NOT var_1898) OR var_4336) AND ((NOT var_1951) OR var_3809) AND ((NOT var_1947) OR var_4412) AND ((NOT var_1951) OR var_3875) AND ((NOT var_1947) OR var_4479) AND ((NOT var_1951) OR var_3935) AND ((NOT var_1947) OR var_4661) AND ((NOT var_1951) OR var_3644) AND ((NOT var_1947) OR var_6707) AND ((NOT var_1951) OR (NOT var_4412)) AND ((NOT var_1947) OR (NOT var_4439)) AND ((NOT var_1951) OR (NOT var_4479)) AND ((NOT var_1947) OR (NOT var_4506)) AND ((NOT var_1951) OR (NOT var_4661)) AND ((NOT var_1947) OR (NOT var_4665)) AND ((NOT var_1956) OR var_4611) AND ((NOT var_1943) OR var_4638) AND ((NOT var_1956) OR var_4462) AND ((NOT var_1943) OR var_4466) AND ((NOT var_1956) OR var_4531) AND ((NOT var_1943) OR var_4535) AND ((NOT var_1996) OR var_3815) AND ((NOT var_1992) OR var_5787) AND ((NOT var_1996) OR var_3818) AND ((NOT var_1992) OR var_5923) AND ((NOT var_1996) OR var_3935) AND ((NOT var_1992) OR var_4661) AND ((NOT var_1996) OR var_3671) AND ((NOT var_1992) OR var_6768) AND ((NOT var_1996) OR (NOT var_5787)) AND ((NOT var_1992) OR (NOT var_5815)) AND ((NOT var_1996) OR (NOT var_5923)) AND ((NOT var_1992) OR (NOT var_5951)) AND ((NOT var_1996) OR (NOT var_4661)) AND ((NOT var_1992) OR (NOT var_4665)) AND ((NOT var_2001) OR var_4611) AND ((NOT var_1988) OR var_4638) AND ((NOT var_2001) OR var_5841) AND ((NOT var_1988) OR var_5845) AND ((NOT var_2001) OR var_5977) AND ((NOT var_1988) OR var_5981) AND ((NOT var_2041) OR var_3883) AND ((NOT var_2037) OR var_5663) AND ((NOT var_2041) OR var_3895) AND ((NOT var_2037) OR var_6817) AND ((NOT var_2041) OR var_3935) AND ((NOT var_2037) OR var_4661) AND ((NOT var_2041) OR var_3677) AND ((NOT var_2037) OR var_6830) AND ((NOT var_2041) OR (NOT var_5663)) AND ((NOT var_2037) OR (NOT var_5690)) AND ((NOT var_2041) OR (NOT var_6817)) AND ((NOT var_2037) OR (NOT var_6844)) AND ((NOT var_2041) OR (NOT var_4661)) AND ((NOT var_2037) OR (NOT var_4665)) AND ((NOT var_2046) OR var_4611) AND ((NOT var_2033) OR var_4638) AND ((NOT var_2046) OR var_5713) AND ((NOT var_2033) OR var_5717) AND ((NOT var_2046) OR var_6867) AND ((NOT var_2033) OR var_6871) AND ((NOT var_2086) OR var_3875) AND ((NOT var_2082) OR var_4479) AND ((NOT var_2086) OR var_3812) AND ((NOT var_2082) OR var_4611) AND ((NOT var_2086) OR var_3939) AND ((NOT var_2082) OR var_5841) AND ((NOT var_2086) OR var_3656) AND ((NOT var_2082) OR var_6896) AND ((NOT var_2086) OR (NOT var_4479)) AND ((NOT var_2082) OR (NOT var_4506)) AND ((NOT var_2086) OR (NOT var_4611)) AND ((NOT var_2082) OR (NOT var_4638)) AND ((NOT var_2086) OR (NOT var_5841)) AND ((NOT var_2082) OR (NOT var_5845)) AND ((NOT var_2091) OR var_5787) AND ((NOT var_2078) OR var_5815) AND ((NOT var_2091) OR var_4531) AND ((NOT var_2078) OR var_4535) AND ((NOT var_2091) OR var_4661) AND ((NOT var_2078) OR var_4665) AND ((NOT var_2131) OR var_3812) AND ((NOT var_2127) OR var_4611) AND ((NOT var_2131) OR var_3815) AND ((NOT var_2127) OR var_5787) AND ((NOT var_2131) OR var_3943) AND ((NOT var_2127) OR var_5977) AND ((NOT var_2131) OR var_3668) AND ((NOT var_2127) OR var_6959) AND ((NOT var_2131) OR (NOT var_4611)) AND ((NOT var_2127) OR (NOT var_4638)) AND ((NOT var_2131) OR (NOT var_5787)) AND ((NOT var_2127) OR (NOT var_5815)) AND ((NOT var_2131) OR (NOT var_5977)) AND ((NOT var_2127) OR (NOT var_5981)) AND ((NOT var_2136) OR var_5923) AND ((NOT var_2123) OR var_5951) AND ((NOT var_2136) OR var_4661) AND ((NOT var_2123) OR var_4665) AND ((NOT var_2136) OR var_5841) AND ((NOT var_2123) OR var_5845) AND ((NOT var_2176) OR var_3797) AND ((NOT var_2172) OR var_4720) AND ((NOT var_2176) OR var_3871) AND ((NOT var_2172) OR var_4745) AND ((NOT var_2176) OR var_3947) AND ((NOT var_2172) OR var_4807) AND ((NOT var_2176) OR var_3566) AND ((NOT var_2172) OR var_7022) AND ((NOT var_2176) OR (NOT var_4720)) AND ((NOT var_2172) OR (NOT var_4724)) AND ((NOT var_2176) OR (NOT var_4745)) AND ((NOT var_2172) OR (NOT var_4773)) AND ((NOT var_2176) OR (NOT var_4807)) AND ((NOT var_2172) OR (NOT var_4811)) AND ((NOT var_2181) OR var_4752) AND ((NOT var_2168) OR var_4782) AND ((NOT var_2181) OR var_4685) AND ((NOT var_2168) OR var_4715) AND ((NOT var_2181) OR var_4799) AND ((NOT var_2168) OR var_4803) AND ((NOT var_2221) OR var_3824) AND ((NOT var_2217) OR var_4888) AND ((NOT var_2221) OR var_3879) AND ((NOT var_2217) OR var_5147) AND ((NOT var_2221) OR var_3947) AND ((NOT var_2217) OR var_4807) AND ((NOT var_2221) OR var_3683) AND ((NOT var_2217) OR var_7085) AND ((NOT var_2221) OR (NOT var_4888)) AND ((NOT var_2217) OR (NOT var_4918)) AND ((NOT var_2221) OR (NOT var_5147)) AND ((NOT var_2217) OR (NOT var_5174)) AND ((NOT var_2221) OR (NOT var_4807)) AND ((NOT var_2217) OR (NOT var_4811)) AND ((NOT var_2226) OR var_4752) AND ((NOT var_2213) OR var_4782) AND ((NOT var_2226) OR var_4943) AND ((NOT var_2213) OR var_4947) AND ((NOT var_2226) OR var_5197) AND ((NOT var_2213) OR var_5201) AND ((NOT var_2266) OR var_3800) AND ((NOT var_2262) OR var_4672) AND ((NOT var_2266) OR var_3806) AND ((NOT var_2262) OR var_4881) AND ((NOT var_2266) OR var_3951) AND ((NOT var_2262) OR var_4943) AND ((NOT var_2266) OR var_3578) AND ((NOT var_2262) OR var_7146) AND ((NOT var_2266) OR (NOT var_4672)) AND ((NOT var_2262) OR (NOT var_4700)) AND ((NOT var_2266) OR (NOT var_4881)) AND ((NOT var_2262) OR (NOT var_4909)) AND ((NOT var_2266) OR (NOT var_4943)) AND ((NOT var_2262) OR (NOT var_4947)) AND ((NOT var_2271) OR var_4888) AND ((NOT var_2258) OR var_4918) AND ((NOT var_2271) OR var_4728) AND ((NOT var_2258) OR var_4732) AND ((NOT var_2271) OR var_4935) AND ((NOT var_2258) OR var_4939) AND ((NOT var_2311) OR var_3879) AND ((NOT var_2307) OR var_5147) AND ((NOT var_2311) OR var_3827) AND ((NOT var_2307) OR var_5405) AND ((NOT var_2311) OR var_3951) AND ((NOT var_2307) OR var_4943) AND ((NOT var_2311) OR var_3689) AND ((NOT var_2307) OR var_7209) AND ((NOT var_2311) OR (NOT var_5147)) AND ((NOT var_2307) OR (NOT var_5174)) AND ((NOT var_2311) OR (NOT var_5405)) AND ((NOT var_2307) OR (NOT var_5432)) AND ((NOT var_2311) OR (NOT var_4943)) AND ((NOT var_2307) OR (NOT var_4947)) AND ((NOT var_2316) OR var_4888) AND ((NOT var_2303) OR var_4918) AND ((NOT var_2316) OR var_5197) AND ((NOT var_2303) OR var_5201) AND ((NOT var_2316) OR var_5455) AND ((NOT var_2303) OR var_5459) AND ((NOT var_2356) OR var_3855) AND ((NOT var_2352) OR var_4064) AND ((NOT var_2356) OR var_3809) AND ((NOT var_2352) OR var_4412) AND ((NOT var_2356) OR var_3770) AND ((NOT var_2352) OR var_5197) AND ((NOT var_2356) OR var_3590) AND ((NOT var_2352) OR var_7270) AND ((NOT var_2356) OR (NOT var_4064)) AND ((NOT var_2352) OR (NOT var_4094)) AND ((NOT var_2356) OR (NOT var_4412)) AND ((NOT var_2352) OR (NOT var_4439)) AND ((NOT var_2356) OR (NOT var_5197)) AND ((NOT var_2352) OR (NOT var_5201)) AND ((NOT var_2361) OR var_5147) AND ((NOT var_2348) OR var_5174) AND ((NOT var_2361) OR var_4119) AND ((NOT var_2348) OR var_4123) AND ((NOT var_2361) OR var_4462) AND ((NOT var_2348) OR var_4466) AND ((NOT var_2401) OR var_3821) AND ((NOT var_2397) OR var_4752) AND ((NOT var_2401) OR var_3824) AND ((NOT var_2397) OR var_4888) AND ((NOT var_2401) OR var_3770) AND ((NOT var_2397) OR var_5197) AND ((NOT var_2401) OR var_3680) AND ((NOT var_2397) OR var_7333) AND ((NOT var_2401) OR (NOT var_4752)) AND ((NOT var_2397) OR (NOT var_4782)) AND ((NOT var_2401) OR (NOT var_4888)) AND ((NOT var_2397) OR (NOT var_4918)) AND ((NOT var_2401) OR (NOT var_5197)) AND ((NOT var_2397) OR (NOT var_5201)) AND ((NOT var_2406) OR var_5147) AND ((NOT var_2393) OR var_5174) AND ((NOT var_2406) OR var_4807) AND ((NOT var_2393) OR var_4811) AND ((NOT var_2406) OR var_4943) AND ((NOT var_2393) OR var_4947) AND ((NOT var_2446) OR var_3827) AND ((NOT var_2442) OR var_5405) AND ((NOT var_2446) OR var_3883) AND ((NOT var_2442) OR var_5663) AND ((NOT var_2446) OR var_3770) AND ((NOT var_2442) OR var_5197) AND ((NOT var_2446) OR var_3695) AND ((NOT var_2442) OR var_7394) AND ((NOT var_2446) OR (NOT var_5405)) AND ((NOT var_2442) OR (NOT var_5432)) AND ((NOT var_2446) OR (NOT var_5663)) AND ((NOT var_2442) OR (NOT var_5690)) AND ((NOT var_2446) OR (NOT var_5197)) AND ((NOT var_2442) OR (NOT var_5201)) AND ((NOT var_2451) OR var_5147) AND ((NOT var_2438) OR var_5174) AND ((NOT var_2451) OR var_5455) AND ((NOT var_2438) OR var_5459) AND ((NOT var_2451) OR var_5713) AND ((NOT var_2438) OR var_5717) AND ((NOT var_2491) OR var_3891) AND ((NOT var_2487) OR var_6313) AND ((NOT var_2491) OR var_3899) AND ((NOT var_2487) OR var_7443) AND ((NOT var_2491) OR var_3770) AND ((NOT var_2487) OR var_5197) AND ((NOT var_2491) OR var_3701) AND ((NOT var_2487) OR var_7456) AND ((NOT var_2491) OR (NOT var_6313)) AND ((NOT var_2487) OR (NOT var_6340)) AND ((NOT var_2491) OR (NOT var_7443)) AND ((NOT var_2487) OR (NOT var_7470)) AND ((NOT var_2491) OR (NOT var_5197)) AND ((NOT var_2487) OR (NOT var_5201)) AND ((NOT var_2496) OR var_5147) AND ((NOT var_2483) OR var_5174) AND ((NOT var_2496) OR var_6363) AND ((NOT var_2483) OR var_6367) AND ((NOT var_2496) OR var_7493) AND ((NOT var_2483) OR var_7497) AND ((NOT var_2536) OR var_3859) AND ((NOT var_2532) OR var_4137) AND ((NOT var_2536) OR var_3875) AND ((NOT var_2532) OR var_4479) AND ((NOT var_2536) OR var_3955) AND ((NOT var_2532) OR var_5455) AND ((NOT var_2536) OR var_3602) AND ((NOT var_2532) OR var_7522) AND ((NOT var_2536) OR (NOT var_4137)) AND ((NOT var_2532) OR (NOT var_4167)) AND ((NOT var_2536) OR (NOT var_4479)) AND ((NOT var_2532) OR (NOT var_4506)) AND ((NOT var_2536) OR (NOT var_5455)) AND ((NOT var_2532) OR (NOT var_5459)) AND ((NOT var_2541) OR var_5405) AND ((NOT var_2528) OR var_5432) AND ((NOT var_2541) OR var_4194) AND ((NOT var_2528) OR var_4198) AND ((NOT var_2541) OR var_4531) AND ((NOT var_2528) OR var_4535) AND ((NOT var_2581) OR var_3824) AND ((NOT var_2577) OR var_4888) AND ((NOT var_2581) OR var_3879) AND ((NOT var_2577) OR var_5147) AND ((NOT var_2581) OR var_3955) AND ((NOT var_2577) OR var_5455) AND ((NOT var_2581) OR var_3686) AND ((NOT var_2577) OR var_7585) AND ((NOT var_2581) OR (NOT var_4888)) AND ((NOT var_2577) OR (NOT var_4918)) AND ((NOT var_2581) OR (NOT var_5147)) AND ((NOT var_2577) OR (NOT var_5174)) AND ((NOT var_2581) OR (NOT var_5455)) AND ((NOT var_2577) OR (NOT var_5459)) AND ((NOT var_2586) OR var_5405) AND ((NOT var_2573) OR var_5432) AND ((NOT var_2586) OR var_4943) AND ((NOT var_2573) OR var_4947) AND ((NOT var_2586) OR var_5197) AND ((NOT var_2573) OR var_5201) AND ((NOT var_2626) OR var_3883) AND ((NOT var_2622) OR var_5663) AND ((NOT var_2626) OR var_3830) AND ((NOT var_2622) OR var_5794) AND ((NOT var_2626) OR var_3955) AND ((NOT var_2622) OR var_5455) AND ((NOT var_2626) OR var_3707) AND ((NOT var_2622) OR var_7646) AND ((NOT var_2626) OR (NOT var_5663)) AND ((NOT var_2622) OR (NOT var_5690)) AND ((NOT var_2626) OR (NOT var_5794)) AND ((NOT var_2622) OR (NOT var_5824)) AND ((NOT var_2626) OR (NOT var_5455)) AND ((NOT var_2622) OR (NOT var_5459)) AND ((NOT var_2631) OR var_5405) AND ((NOT var_2618) OR var_5432) AND ((NOT var_2631) OR var_5713) AND ((NOT var_2618) OR var_5717) AND ((NOT var_2631) OR var_5849) AND ((NOT var_2618) OR var_5853) AND ((NOT var_2671) OR var_3833) AND ((NOT var_2667) OR var_6565) AND ((NOT var_2671) OR var_3836) AND ((NOT var_2667) OR var_7695) AND ((NOT var_2671) OR var_3955) AND ((NOT var_2667) OR var_5455) AND ((NOT var_2671) OR var_3713) AND ((NOT var_2667) OR var_7708) AND ((NOT var_2671) OR (NOT var_6565)) AND ((NOT var_2667) OR (NOT var_6592)) AND ((NOT var_2671) OR (NOT var_7695)) AND ((NOT var_2667) OR (NOT var_7722)) AND ((NOT var_2671) OR (NOT var_5455)) AND ((NOT var_2667) OR (NOT var_5459)) AND ((NOT var_2676) OR var_5405) AND ((NOT var_2663) OR var_5432) AND ((NOT var_2676) OR var_6615) AND ((NOT var_2663) OR var_6619) AND ((NOT var_2676) OR var_7745) AND ((NOT var_2663) OR var_7749) AND ((NOT var_2716) OR var_3863) AND ((NOT var_2712) OR var_4277) AND ((NOT var_2716) OR var_3812) AND ((NOT var_2712) OR var_4611) AND ((NOT var_2716) OR var_3773) AND ((NOT var_2712) OR var_5713) AND ((NOT var_2716) OR var_3614) AND ((NOT var_2712) OR var_7774) AND ((NOT var_2716) OR (NOT var_4277)) AND ((NOT var_2712) OR (NOT var_4307)) AND ((NOT var_2716) OR (NOT var_4611)) AND ((NOT var_2712) OR (NOT var_4638)) AND ((NOT var_2716) OR (NOT var_5713)) AND ((NOT var_2712) OR (NOT var_5717)) AND ((NOT var_2721) OR var_5663) AND ((NOT var_2708) OR var_5690) AND ((NOT var_2721) OR var_4332) AND ((NOT var_2708) OR var_4336) AND ((NOT var_2721) OR var_4661) AND ((NOT var_2708) OR var_4665) AND ((NOT var_2761) OR var_3879) AND ((NOT var_2757) OR var_5147) AND ((NOT var_2761) OR var_3827) AND ((NOT var_2757) OR var_5405) AND ((NOT var_2761) OR var_3773) AND ((NOT var_2757) OR var_5713) AND ((NOT var_2761) OR var_3692) AND ((NOT var_2757) OR var_7837) AND ((NOT var_2761) OR (NOT var_5147)) AND ((NOT var_2757) OR (NOT var_5174)) AND ((NOT var_2761) OR (NOT var_5405)) AND ((NOT var_2757) OR (NOT var_5432)) AND ((NOT var_2761) OR (NOT var_5713)) AND ((NOT var_2757) OR (NOT var_5717)) AND ((NOT var_2766) OR var_5663) AND ((NOT var_2753) OR var_5690) AND ((NOT var_2766) OR var_5197) AND ((NOT var_2753) OR var_5201) AND ((NOT var_2766) OR var_5455) AND ((NOT var_2753) OR var_5459) AND ((NOT var_2806) OR var_3830) AND ((NOT var_2802) OR var_5794) AND ((NOT var_2806) OR var_3887) AND ((NOT var_2802) OR var_5930) AND ((NOT var_2806) OR var_3773) AND ((NOT var_2802) OR var_5713) AND ((NOT var_2806) OR var_3719) AND ((NOT var_2802) OR var_7898) AND ((NOT var_2806) OR (NOT var_5794)) AND ((NOT var_2802) OR (NOT var_5824)) AND ((NOT var_2806) OR (NOT var_5930)) AND ((NOT var_2802) OR (NOT var_5960)) AND ((NOT var_2806) OR (NOT var_5713)) AND ((NOT var_2802) OR (NOT var_5717)) AND ((NOT var_2811) OR var_5663) AND ((NOT var_2798) OR var_5690) AND ((NOT var_2811) OR var_5849) AND ((NOT var_2798) OR var_5853) AND ((NOT var_2811) OR var_5985) AND ((NOT var_2798) OR var_5989) AND ((NOT var_2851) OR var_3895) AND ((NOT var_2847) OR var_6817) AND ((NOT var_2851) OR var_3903) AND ((NOT var_2847) OR var_7947) AND ((NOT var_2851) OR var_3773) AND ((NOT var_2847) OR var_5713) AND ((NOT var_2851) OR var_3725) AND ((NOT var_2847) OR var_7960) AND ((NOT var_2851) OR (NOT var_6817)) AND ((NOT var_2847) OR (NOT var_6844)) AND ((NOT var_2851) OR (NOT var_7947)) AND ((NOT var_2847) OR (NOT var_7974)) AND ((NOT var_2851) OR (NOT var_5713)) AND ((NOT var_2847) OR (NOT var_5717)) AND ((NOT var_2856) OR var_5663) AND ((NOT var_2843) OR var_5690) AND ((NOT var_2856) OR var_6867) AND ((NOT var_2843) OR var_6871) AND ((NOT var_2856) OR var_7997) AND ((NOT var_2843) OR var_8001) AND ((NOT var_2896) OR var_3803) AND ((NOT var_2892) OR var_5338) AND ((NOT var_2896) OR var_3815) AND ((NOT var_2892) OR var_5787) AND ((NOT var_2896) OR var_3959) AND ((NOT var_2892) OR var_5849) AND ((NOT var_2896) OR var_3620) AND ((NOT var_2892) OR var_8026) AND ((NOT var_2896) OR (NOT var_5338)) AND ((NOT var_2892) OR (NOT var_5365)) AND ((NOT var_2896) OR (NOT var_5787)) AND ((NOT var_2892) OR (NOT var_5815)) AND ((NOT var_2896) OR (NOT var_5849)) AND ((NOT var_2892) OR (NOT var_5853)) AND ((NOT var_2901) OR var_5794) AND ((NOT var_2888) OR var_5824) AND ((NOT var_2901) OR var_5388) AND ((NOT var_2888) OR var_5392) AND ((NOT var_2901) OR var_5841) AND ((NOT var_2888) OR var_5845) AND ((NOT var_2941) OR var_3827) AND ((NOT var_2937) OR var_5405) AND ((NOT var_2941) OR var_3883) AND ((NOT var_2937) OR var_5663) AND ((NOT var_2941) OR var_3959) AND ((NOT var_2937) OR var_5849) AND ((NOT var_2941) OR var_3704) AND ((NOT var_2937) OR var_8089) AND ((NOT var_2941) OR (NOT var_5405)) AND ((NOT var_2937) OR (NOT var_5432)) AND ((NOT var_2941) OR (NOT var_5663)) AND ((NOT var_2937) OR (NOT var_5690)) AND ((NOT var_2941) OR (NOT var_5849)) AND ((NOT var_2937) OR (NOT var_5853)) AND ((NOT var_2946) OR var_5794) AND ((NOT var_2933) OR var_5824) AND ((NOT var_2946) OR var_5455) AND ((NOT var_2933) OR var_5459) AND ((NOT var_2946) OR var_5713) AND ((NOT var_2933) OR var_5717) AND ((NOT var_2986) OR var_3867) AND ((NOT var_2982) OR var_5596) AND ((NOT var_2986) OR var_3818) AND ((NOT var_2982) OR var_5923) AND ((NOT var_2986) OR var_3776) AND ((NOT var_2982) OR var_5985) AND ((NOT var_2986) OR var_3626) AND ((NOT var_2982) OR var_8150) AND ((NOT var_2986) OR (NOT var_5596)) AND ((NOT var_2982) OR (NOT var_5623)) AND ((NOT var_2986) OR (NOT var_5923)) AND ((NOT var_2982) OR (NOT var_5951)) AND ((NOT var_2986) OR (NOT var_5985)) AND ((NOT var_2982) OR (NOT var_5989)) AND ((NOT var_2991) OR var_5930) AND ((NOT var_2978) OR var_5960) AND ((NOT var_2991) OR var_5646) AND ((NOT var_2978) OR var_5650) AND ((NOT var_2991) OR var_5977) AND ((NOT var_2978) OR var_5981) AND ((NOT var_3031) OR var_3883) AND ((NOT var_3027) OR var_5663) AND ((NOT var_3031) OR var_3830) AND ((NOT var_3027) OR var_5794) AND ((NOT var_3031) OR var_3776) AND ((NOT var_3027) OR var_5985) AND ((NOT var_3031) OR var_3716) AND ((NOT var_3027) OR var_8213) AND ((NOT var_3031) OR (NOT var_5663)) AND ((NOT var_3027) OR (NOT var_5690)) AND ((NOT var_3031) OR (NOT var_5794)) AND ((NOT var_3027) OR (NOT var_5824)) AND ((NOT var_3031) OR (NOT var_5985)) AND ((NOT var_3027) OR (NOT var_5989)) AND ((NOT var_3036) OR var_5930) AND ((NOT var_3023) OR var_5960) AND ((NOT var_3036) OR var_5713) AND ((NOT var_3023) OR var_5717) AND ((NOT var_3036) OR var_5849) AND ((NOT var_3023) OR var_5853) AND ((NOT var_3076) OR var_3809) AND ((NOT var_3072) OR var_4412) AND ((NOT var_3076) OR var_3879) AND ((NOT var_3072) OR var_5147) AND ((NOT var_3076) OR var_3779) AND ((NOT var_3072) OR var_6363) AND ((NOT var_3076) OR var_3650) AND ((NOT var_3072) OR var_8274) AND ((NOT var_3076) OR (NOT var_4412)) AND ((NOT var_3072) OR (NOT var_4439)) AND ((NOT var_3076) OR (NOT var_5147)) AND ((NOT var_3072) OR (NOT var_5174)) AND ((NOT var_3076) OR (NOT var_6363)) AND ((NOT var_3072) OR (NOT var_6367)) AND ((NOT var_3081) OR var_6313) AND ((NOT var_3068) OR var_6340) AND ((NOT var_3081) OR var_4462) AND ((NOT var_3068) OR var_4466) AND ((NOT var_3081) OR var_5197) AND ((NOT var_3068) OR var_5201) AND ((NOT var_3121) OR var_3833) AND ((NOT var_3117) OR var_6565) AND ((NOT var_3121) OR var_3895) AND ((NOT var_3117) OR var_6817) AND ((NOT var_3121) OR var_3779) AND ((NOT var_3117) OR var_6363) AND ((NOT var_3121) OR var_3731) AND ((NOT var_3117) OR var_8337) AND ((NOT var_3121) OR (NOT var_6565)) AND ((NOT var_3117) OR (NOT var_6592)) AND ((NOT var_3121) OR (NOT var_6817)) AND ((NOT var_3117) OR (NOT var_6844)) AND ((NOT var_3121) OR (NOT var_6363)) AND ((NOT var_3117) OR (NOT var_6367)) AND ((NOT var_3126) OR var_6313) AND ((NOT var_3113) OR var_6340) AND ((NOT var_3126) OR var_6615) AND ((NOT var_3113) OR var_6619) AND ((NOT var_3126) OR var_6867) AND ((NOT var_3113) OR var_6871) AND ((NOT var_3166) OR var_3875) AND ((NOT var_3162) OR var_4479) AND ((NOT var_3166) OR var_3827) AND ((NOT var_3162) OR var_5405) AND ((NOT var_3166) OR var_3963) AND ((NOT var_3162) OR var_6615) AND ((NOT var_3166) OR var_3662) AND ((NOT var_3162) OR var_8398) AND ((NOT var_3166) OR (NOT var_4479)) AND ((NOT var_3162) OR (NOT var_4506)) AND ((NOT var_3166) OR (NOT var_5405)) AND ((NOT var_3162) OR (NOT var_5432)) AND ((NOT var_3166) OR (NOT var_6615)) AND ((NOT var_3162) OR (NOT var_6619)) AND ((NOT var_3171) OR var_6565) AND ((NOT var_3158) OR var_6592) AND ((NOT var_3171) OR var_4531) AND ((NOT var_3158) OR var_4535) AND ((NOT var_3171) OR var_5455) AND ((NOT var_3158) OR var_5459) AND ((NOT var_3211) OR var_3812) AND ((NOT var_3207) OR var_4611) AND ((NOT var_3211) OR var_3883) AND ((NOT var_3207) OR var_5663) AND ((NOT var_3211) OR var_3782) AND ((NOT var_3207) OR var_6867) AND ((NOT var_3211) OR var_3674) AND ((NOT var_3207) OR var_8461) AND ((NOT var_3211) OR (NOT var_4611)) AND ((NOT var_3207) OR (NOT var_4638)) AND ((NOT var_3211) OR (NOT var_5663)) AND ((NOT var_3207) OR (NOT var_5690)) AND ((NOT var_3211) OR (NOT var_6867)) AND ((NOT var_3207) OR (NOT var_6871)) AND ((NOT var_3216) OR var_6817) AND ((NOT var_3203) OR var_6844) AND ((NOT var_3216) OR var_4661) AND ((NOT var_3203) OR var_4665) AND ((NOT var_3216) OR var_5713) AND ((NOT var_3203) OR var_5717) AND ((NOT var_3256) OR var_3891) AND ((NOT var_3252) OR var_6313) AND ((NOT var_3256) OR var_3833) AND ((NOT var_3252) OR var_6565) AND ((NOT var_3256) OR var_3782) AND ((NOT var_3252) OR var_6867) AND ((NOT var_3256) OR var_3728) AND ((NOT var_3252) OR var_8524) AND ((NOT var_3256) OR (NOT var_6313)) AND ((NOT var_3252) OR (NOT var_6340)) AND ((NOT var_3256) OR (NOT var_6565)) AND ((NOT var_3252) OR (NOT var_6592)) AND ((NOT var_3256) OR (NOT var_6867)) AND ((NOT var_3252) OR (NOT var_6871)) AND ((NOT var_3261) OR var_6817) AND ((NOT var_3248) OR var_6844) AND ((NOT var_3261) OR var_6363) AND ((NOT var_3248) OR var_6367) AND ((NOT var_3261) OR var_6615) AND ((NOT var_3248) OR var_6619) AND ((NOT var_3301) OR var_3879) AND ((NOT var_3297) OR var_5147) AND ((NOT var_3301) OR var_3891) AND ((NOT var_3297) OR var_6313) AND ((NOT var_3301) OR var_3785) AND ((NOT var_3297) OR var_7493) AND ((NOT var_3301) OR var_3698) AND ((NOT var_3297) OR var_8585) AND ((NOT var_3301) OR (NOT var_5147)) AND ((NOT var_3297) OR (NOT var_5174)) AND ((NOT var_3301) OR (NOT var_6313)) AND ((NOT var_3297) OR (NOT var_6340)) AND ((NOT var_3301) OR (NOT var_7493)) AND ((NOT var_3297) OR (NOT var_7497)) AND ((NOT var_3306) OR var_7443) AND ((NOT var_3293) OR var_7470) AND ((NOT var_3306) OR var_5197) AND ((NOT var_3293) OR var_5201) AND ((NOT var_3306) OR var_6363) AND ((NOT var_3293) OR var_6367) AND ((NOT var_3346) OR var_3836) AND ((NOT var_3342) OR var_7695) AND ((NOT var_3346) OR var_3903) AND ((NOT var_3342) OR var_7947) AND ((NOT var_3346) OR var_3785) AND ((NOT var_3342) OR var_7493) AND ((NOT var_3346) OR var_3737) AND ((NOT var_3342) OR var_8648) AND ((NOT var_3346) OR (NOT var_7695)) AND ((NOT var_3342) OR (NOT var_7722)) AND ((NOT var_3346) OR (NOT var_7947)) AND ((NOT var_3342) OR (NOT var_7974)) AND ((NOT var_3346) OR (NOT var_7493)) AND ((NOT var_3342) OR (NOT var_7497)) AND ((NOT var_3351) OR var_7443) AND ((NOT var_3338) OR var_7470) AND ((NOT var_3351) OR var_7745) AND ((NOT var_3338) OR var_7749) AND ((NOT var_3351) OR var_7997) AND ((NOT var_3338) OR var_8001) AND ((NOT var_3391) OR var_3827) AND ((NOT var_3387) OR var_5405) AND ((NOT var_3391) OR var_3833) AND ((NOT var_3387) OR var_6565) AND ((NOT var_3391) OR var_3967) AND ((NOT var_3387) OR var_7745) AND ((NOT var_3391) OR var_3710) AND ((NOT var_3387) OR var_8709) AND ((NOT var_3391) OR (NOT var_5405)) AND ((NOT var_3387) OR (NOT var_5432)) AND ((NOT var_3391) OR (NOT var_6565)) AND ((NOT var_3387) OR (NOT var_6592)) AND ((NOT var_3391) OR (NOT var_7745)) AND ((NOT var_3387) OR (NOT var_7749)) AND ((NOT var_3396) OR var_7695) AND ((NOT var_3383) OR var_7722) AND ((NOT var_3396) OR var_5455) AND ((NOT var_3383) OR var_5459) AND ((NOT var_3396) OR var_6615) AND ((NOT var_3383) OR var_6619) AND ((NOT var_3436) OR var_3883) AND ((NOT var_3432) OR var_5663) AND ((NOT var_3436) OR var_3895) AND ((NOT var_3432) OR var_6817) AND ((NOT var_3436) OR var_3788) AND ((NOT var_3432) OR var_7997) AND ((NOT var_3436) OR var_3722) AND ((NOT var_3432) OR var_8772) AND ((NOT var_3436) OR (NOT var_5663)) AND ((NOT var_3432) OR (NOT var_5690)) AND ((NOT var_3436) OR (NOT var_6817)) AND ((NOT var_3432) OR (NOT var_6844)) AND ((NOT var_3436) OR (NOT var_7997)) AND ((NOT var_3432) OR (NOT var_8001)) AND ((NOT var_3441) OR var_7947) AND ((NOT var_3428) OR var_7974) AND ((NOT var_3441) OR var_5713) AND ((NOT var_3428) OR var_5717) AND ((NOT var_3441) OR var_6867) AND ((NOT var_3428) OR var_6871) AND ((NOT var_3481) OR var_3899) AND ((NOT var_3477) OR var_7443) AND ((NOT var_3481) OR var_3836) AND ((NOT var_3477) OR var_7695) AND ((NOT var_3481) OR var_3788) AND ((NOT var_3477) OR var_7997) AND ((NOT var_3481) OR var_3734) AND ((NOT var_3477) OR var_8835) AND ((NOT var_3481) OR (NOT var_7443)) AND ((NOT var_3477) OR (NOT var_7470)) AND ((NOT var_3481) OR (NOT var_7695)) AND ((NOT var_3477) OR (NOT var_7722)) AND ((NOT var_3481) OR (NOT var_7997)) AND ((NOT var_3477) OR (NOT var_8001)) AND ((NOT var_3486) OR var_7947) AND ((NOT var_3473) OR var_7974) AND ((NOT var_3486) OR var_7493) AND ((NOT var_3473) OR var_7497) AND ((NOT var_3486) OR var_7745) AND ((NOT var_3473) OR var_7749) AND (((var_3839 OR (NOT var_4031)) OR var_111) OR var_156) AND ((((NOT var_3839) OR var_4031) OR var_241) OR var_736) AND ((var_3791 OR (NOT var_3980)) OR var_201) AND (((((NOT var_3791) OR var_3980) OR var_106) OR var_241) OR var_916) AND (((var_3843 OR (NOT var_3987)) OR var_246) OR var_291) AND ((((NOT var_3843) OR var_3987) OR var_106) OR var_1096) AND (((var_3847 OR (NOT var_4057)) OR var_336) OR var_381) AND ((((((NOT var_3847) OR var_4057) OR var_151) OR var_466) OR var_736) OR var_1546) AND ((var_3794 OR (NOT var_4130)) OR var_426) AND (((((((NOT var_3794) OR var_4130) OR var_196) OR var_331) OR var_466) OR var_916) OR var_1726) AND (((var_3851 OR (NOT var_4270)) OR var_471) OR var_516) AND ((((((NOT var_3851) OR var_4270) OR var_286) OR var_331) OR var_1096) OR var_1906) AND (((var_3797 OR (NOT var_4720)) OR var_561) OR var_606) AND ((((NOT var_3797) OR var_4720) OR var_781) OR var_2176) AND (((var_3800 OR (NOT var_4672)) OR var_651) OR var_696) AND ((((((NOT var_3800) OR var_4672) OR var_556) OR var_781) OR var_961) OR var_2266) AND (((((var_3855 OR (NOT var_4064)) OR var_741) OR var_786) OR var_831) OR var_876) AND ((((((((((NOT var_3855) OR var_4064) OR var_151) OR var_376) OR var_556) OR var_646) OR var_961) OR var_1141) OR var_1546) OR var_2356) AND (((((var_3859 OR (NOT var_4137)) OR var_921) OR var_966) OR var_1011) OR var_1056) AND ((((((((((NOT var_3859) OR var_4137) OR var_196) OR var_421) OR var_646) OR var_826) OR var_1141) OR var_1276) OR var_1726) OR var_2536) AND (((((var_3863 OR (NOT var_4277)) OR var_1101) OR var_1146) OR var_1191) OR var_1236) AND ((((((((((NOT var_3863) OR var_4277) OR var_286) OR var_511) OR var_826) OR var_1006) OR var_1276) OR var_1366) OR var_1906) OR var_2716) AND (((var_3803 OR (NOT var_5338)) OR var_1281) OR var_1326) AND ((((((NOT var_3803) OR var_5338) OR var_1006) OR var_1186) OR var_1366) OR var_2896) AND (((var_3867 OR (NOT var_5596)) OR var_1371) OR var_1416) AND ((((NOT var_3867) OR var_5596) OR var_1186) OR var_2986) AND ((var_3871 OR (NOT var_4745)) OR var_1461) AND (((((NOT var_3871) OR var_4745) OR var_601) OR var_1591) OR var_2176) AND ((var_3806 OR (NOT var_4881)) OR var_1506) AND (((((((NOT var_3806) OR var_4881) OR var_691) OR var_1456) OR var_1591) OR var_1771) OR var_2266) AND (((((var_3809 OR (NOT var_4412)) OR var_1551) OR var_1596) OR var_1641) OR var_1686) AND ((((((((((NOT var_3809) OR var_4412) OR var_376) OR var_871) OR var_1456) OR var_1501) OR var_1771) OR var_1951) OR var_2356) OR var_3076) AND (((((var_3875 OR (NOT var_4479)) OR var_1731) OR var_1776) OR var_1821) OR var_1866) AND ((((((((((NOT var_3875) OR var_4479) OR var_421) OR var_1051) OR var_1501) OR var_1636) OR var_1951) OR var_2086) OR var_2536) OR var_3166) AND (((((var_3812 OR (NOT var_4611)) OR var_1911) OR var_1956) OR var_2001) OR var_2046) AND ((((((((((NOT var_3812) OR var_4611) OR var_511) OR var_1231) OR var_1636) OR var_1816) OR var_2086) OR var_2131) OR var_2716) OR var_3211) AND ((var_3815 OR (NOT var_5787)) OR var_2091) AND (((((((NOT var_3815) OR var_5787) OR var_1321) OR var_1816) OR var_1996) OR var_2131) OR var_2896) AND ((var_3818 OR (NOT var_5923)) OR var_2136) AND (((((NOT var_3818) OR var_5923) OR var_1411) OR var_1996) OR var_2986) AND (((var_3821 OR (NOT var_4752)) OR var_2181) OR var_2226) AND ((((NOT var_3821) OR var_4752) OR var_601) OR var_2401) AND (((var_3824 OR (NOT var_4888)) OR var_2271) OR var_2316) AND ((((((NOT var_3824) OR var_4888) OR var_691) OR var_2221) OR var_2401) OR var_2581) AND (((((var_3879 OR (NOT var_5147)) OR var_2361) OR var_2406) OR var_2451) OR var_2496) AND ((((((((((NOT var_3879) OR var_5147) OR var_871) OR var_1681) OR var_2221) OR var_2311) OR var_2581) OR var_2761) OR var_3076) OR var_3301) AND (((((var_3827 OR (NOT var_5405)) OR var_2541) OR var_2586) OR var_2631) OR var_2676) AND ((((((((((NOT var_3827) OR var_5405) OR var_1051) OR var_1861) OR var_2311) OR var_2446) OR var_2761) OR var_2941) OR var_3166) OR var_3391) AND (((((var_3883 OR (NOT var_5663)) OR var_2721) OR var_2766) OR var_2811) OR var_2856) AND ((((((((((NOT var_3883) OR var_5663) OR var_1231) OR var_2041) OR var_2446) OR var_2626) OR var_2941) OR var_3031) OR var_3211) OR var_3436) AND (((var_3830 OR (NOT var_5794)) OR var_2901) OR var_2946) AND ((((((NOT var_3830) OR var_5794) OR var_1321) OR var_2626) OR var_2806) OR var_3031) AND (((var_3887 OR (NOT var_5930)) OR var_2991) OR var_3036) AND ((((NOT var_3887) OR var_5930) OR var_1411) OR var_2806) AND (((var_3891 OR (NOT var_6313)) OR var_3081) OR var_3126) AND ((((((NOT var_3891) OR var_6313) OR var_1681) OR var_2491) OR var_3256) OR var_3301) AND ((var_3833 OR (NOT var_6565)) OR var_3171) AND (((((((NOT var_3833) OR var_6565) OR var_1861) OR var_2671) OR var_3121) OR var_3256) OR var_3391) AND (((var_3895 OR (NOT var_6817)) OR var_3216) OR var_3261) AND ((((((NOT var_3895) OR var_6817) OR var_2041) OR var_2851) OR var_3121) OR var_3436) AND (((var_3899 OR (NOT var_7443)) OR var_3306) OR var_3351) AND ((((NOT var_3899) OR var_7443) OR var_2491) OR var_3481) AND ((var_3836 OR (NOT var_7695)) OR var_3396) AND (((((NOT var_3836) OR var_7695) OR var_2671) OR var_3346) OR var_3481) AND (((var_3903 OR (NOT var_7947)) OR var_3441) OR var_3486) AND ((((NOT var_3903) OR var_7947) OR var_2851) OR var_3346) AND (((var_3740 OR (NOT var_3994)) OR var_246) OR var_741) AND ((((NOT var_3740) OR var_3994) OR var_106) OR var_151) AND ((((var_3907 OR (NOT var_4039)) OR var_111) OR var_246) OR var_921) AND (((NOT var_3907) OR var_4039) OR var_196) AND (((var_3743 OR (NOT var_4046)) OR var_111) OR var_1101) AND ((((NOT var_3743) OR var_4046) OR var_241) OR var_286) AND (((((var_3746 OR (NOT var_4111)) OR var_156) OR var_471) OR var_741) OR var_1551) AND ((((NOT var_3746) OR var_4111) OR var_331) OR var_376) AND ((((((var_3911 OR (NOT var_4186)) OR var_201) OR var_336) OR var_471) OR var_921) OR var_1731) AND (((NOT var_3911) OR var_4186) OR var_421) AND (((((var_3749 OR (NOT var_4324)) OR var_291) OR var_336) OR var_1101) OR var_1911) AND ((((NOT var_3749) OR var_4324) OR var_466) OR var_511) AND (((var_3915 OR (NOT var_4685)) OR var_786) OR var_2181) AND ((((NOT var_3915) OR var_4685) OR var_556) OR var_601) AND (((((var_3919 OR (NOT var_4728)) OR var_561) OR var_786) OR var_966) OR var_2271) AND ((((NOT var_3919) OR var_4728) OR var_646) OR var_691) AND (((((((((var_3752 OR (NOT var_4119)) OR var_156) OR var_381) OR var_561) OR var_651) OR var_966) OR var_1146) OR var_1551) OR var_2361) AND ((((((NOT var_3752) OR var_4119) OR var_736) OR var_781) OR var_826) OR var_871) AND (((((((((var_3755 OR (NOT var_4194)) OR var_201) OR var_426) OR var_651) OR var_831) OR var_1146) OR var_1281) OR var_1731) OR var_2541) AND ((((((NOT var_3755) OR var_4194) OR var_916) OR var_961) OR var_1006) OR var_1051) AND (((((((((var_3758 OR (NOT var_4332)) OR var_291) OR var_516) OR var_831) OR var_1011) OR var_1281) OR var_1371) OR var_1911) OR var_2721) AND ((((((NOT var_3758) OR var_4332) OR var_1096) OR var_1141) OR var_1186) OR var_1231) AND (((((var_3923 OR (NOT var_5388)) OR var_1011) OR var_1191) OR var_1371) OR var_2901) AND ((((NOT var_3923) OR var_5388) OR var_1276) OR var_1321) AND (((var_3761 OR (NOT var_5646)) OR var_1191) OR var_2991) AND ((((NOT var_3761) OR var_5646) OR var_1366) OR var_1411) AND ((((var_3764 OR (NOT var_4799)) OR var_606) OR var_1596) OR var_2181) AND (((NOT var_3764) OR var_4799) OR var_1456) AND ((((((var_3927 OR (NOT var_4935)) OR var_696) OR var_1461) OR var_1596) OR var_1776) OR var_2271) AND (((NOT var_3927) OR var_4935) OR var_1501) AND (((((((((var_3931 OR (NOT var_4462)) OR var_381) OR var_876) OR var_1461) OR var_1506) OR var_1776) OR var_1956) OR var_2361) OR var_3081) AND ((((((NOT var_3931) OR var_4462) OR var_1546) OR var_1591) OR var_1636) OR var_1681) AND (((((((((var_3767 OR (NOT var_4531)) OR var_426) OR var_1056) OR var_1506) OR var_1641) OR var_1956) OR var_2091) OR var_2541) OR var_3171) AND ((((((NOT var_3767) OR var_4531) OR var_1726) OR var_1771) OR var_1816) OR var_1861) AND (((((((((var_3935 OR (NOT var_4661)) OR var_516) OR var_1236) OR var_1641) OR var_1821) OR var_2091) OR var_2136) OR var_2721) OR var_3216) AND ((((((NOT var_3935) OR var_4661) OR var_1906) OR var_1951) OR var_1996) OR var_2041) AND ((((((var_3939 OR (NOT var_5841)) OR var_1326) OR var_1821) OR var_2001) OR var_2136) OR var_2901) AND (((NOT var_3939) OR var_5841) OR var_2086) AND ((((var_3943 OR (NOT var_5977)) OR var_1416) OR var_2001) OR var_2991) AND (((NOT var_3943) OR var_5977) OR var_2131) AND (((var_3947 OR (NOT var_4807)) OR var_606) OR var_2406) AND ((((NOT var_3947) OR var_4807) OR var_2176) OR var_2221) AND (((((var_3951 OR (NOT var_4943)) OR var_696) OR var_2226) OR var_2406) OR var_2586) AND ((((NOT var_3951) OR var_4943) OR var_2266) OR var_2311) AND (((((((((var_3770 OR (NOT var_5197)) OR var_876) OR var_1686) OR var_2226) OR var_2316) OR var_2586) OR var_2766) OR var_3081) OR var_3306) AND ((((((NOT var_3770) OR var_5197) OR var_2356) OR var_2401) OR var_2446) OR var_2491) AND (((((((((var_3955 OR (NOT var_5455)) OR var_1056) OR var_1866) OR var_2316) OR var_2451) OR var_2766) OR var_2946) OR var_3171) OR var_3396) AND ((((((NOT var_3955) OR var_5455) OR var_2536) OR var_2581) OR var_2626) OR var_2671) AND (((((((((var_3773 OR (NOT var_5713)) OR var_1236) OR var_2046) OR var_2451) OR var_2631) OR var_2946) OR var_3036) OR var_3216) OR var_3441) AND ((((((NOT var_3773) OR var_5713) OR var_2716) OR var_2761) OR var_2806) OR var_2851) AND (((((var_3959 OR (NOT var_5849)) OR var_1326) OR var_2631) OR var_2811) OR var_3036) AND ((((NOT var_3959) OR var_5849) OR var_2896) OR var_2941) AND (((var_3776 OR (NOT var_5985)) OR var_1416) OR var_2811) AND ((((NOT var_3776) OR var_5985) OR var_2986) OR var_3031) AND (((((var_3779 OR (NOT var_6363)) OR var_1686) OR var_2496) OR var_3261) OR var_3306) AND ((((NOT var_3779) OR var_6363) OR var_3076) OR var_3121) AND ((((((var_3963 OR (NOT var_6615)) OR var_1866) OR var_2676) OR var_3126) OR var_3261) OR var_3396) AND (((NOT var_3963) OR var_6615) OR var_3166) AND (((((var_3782 OR (NOT var_6867)) OR var_2046) OR var_2856) OR var_3126) OR var_3441) AND ((((NOT var_3782) OR var_6867) OR var_3211) OR var_3256) AND (((var_3785 OR (NOT var_7493)) OR var_2496) OR var_3486) AND ((((NOT var_3785) OR var_7493) OR var_3301) OR var_3346) AND ((((var_3967 OR (NOT var_7745)) OR var_2676) OR var_3351) OR var_3486) AND (((NOT var_3967) OR var_7745) OR var_3391) AND (((var_3788 OR (NOT var_7997)) OR var_2856) OR var_3351) AND ((((NOT var_3788) OR var_7997) OR var_3436) OR var_3481) AND (var_3512 OR (NOT var_4223)) AND ((NOT var_3512) OR var_4223) AND (var_3515 OR (NOT var_4001)) AND ((NOT var_3515) OR var_4001) AND (var_3518 OR (NOT var_4972)) AND ((NOT var_3518) OR var_4972) AND (var_3521 OR (NOT var_4077)) AND ((NOT var_3521) OR var_4077) AND (var_3524 OR (NOT var_5226)) AND ((NOT var_3524) OR var_5226) AND (var_3527 OR (NOT var_4150)) AND ((NOT var_3527) OR var_4150) AND (var_3530 OR (NOT var_5484)) AND ((NOT var_3530) OR var_5484) AND (var_3533 OR (NOT var_4290)) AND ((NOT var_3533) OR var_4290) AND (var_3536 OR (NOT var_4560)) AND ((NOT var_3536) OR var_4560) AND (var_3539 OR (NOT var_4361)) AND ((NOT var_3539) OR var_4361) AND (var_3542 OR (NOT var_6140)) AND ((NOT var_3542) OR var_6140) AND (var_3545 OR (NOT var_4425)) AND ((NOT var_3545) OR var_4425) AND (var_3548 OR (NOT var_6392)) AND ((NOT var_3548) OR var_6392) AND (var_3551 OR (NOT var_4492)) AND ((NOT var_3551) OR var_4492) AND (var_3554 OR (NOT var_6644)) AND ((NOT var_3554) OR var_6644) AND (var_3557 OR (NOT var_4624)) AND ((NOT var_3557) OR var_4624) AND (var_3560 OR (NOT var_5035)) AND ((NOT var_3560) OR var_5035) AND (var_3563 OR (NOT var_4692)) AND ((NOT var_3563) OR var_4692) AND (var_3566 OR (NOT var_7022)) AND ((NOT var_3566) OR var_7022) AND (var_3569 OR (NOT var_4765)) AND ((NOT var_3569) OR var_4765) AND (var_3572 OR (NOT var_5289)) AND ((NOT var_3572) OR var_5289) AND (var_3575 OR (NOT var_4836)) AND ((NOT var_3575) OR var_4836) AND (var_3578 OR (NOT var_7146)) AND ((NOT var_3578) OR var_7146) AND (var_3581 OR (NOT var_4901)) AND ((NOT var_3581) OR var_4901) AND (var_3584 OR (NOT var_5547)) AND ((NOT var_3584) OR var_5547) AND (var_3587 OR (NOT var_5098)) AND ((NOT var_3587) OR var_5098) AND (var_3590 OR (NOT var_7270)) AND ((NOT var_3590) OR var_7270) AND (var_3593 OR (NOT var_5160)) AND ((NOT var_3593) OR var_5160) AND (var_3596 OR (NOT var_5742)) AND ((NOT var_3596) OR var_5742) AND (var_3599 OR (NOT var_5351)) AND ((NOT var_3599) OR var_5351) AND (var_3602 OR (NOT var_7522)) AND ((NOT var_3602) OR var_7522) AND (var_3605 OR (NOT var_5418)) AND ((NOT var_3605) OR var_5418) AND (var_3608 OR (NOT var_5878)) AND ((NOT var_3608) OR var_5878) AND (var_3611 OR (NOT var_5609)) AND ((NOT var_3611) OR var_5609) AND (var_3614 OR (NOT var_7774)) AND ((NOT var_3614) OR var_7774) AND (var_3617 OR (NOT var_5676)) AND ((NOT var_3617) OR var_5676) AND (var_3620 OR (NOT var_8026)) AND ((NOT var_3620) OR var_8026) AND (var_3623 OR (NOT var_5807)) AND ((NOT var_3623) OR var_5807) AND (var_3626 OR (NOT var_8150)) AND ((NOT var_3626) OR var_8150) AND (var_3629 OR (NOT var_5943)) AND ((NOT var_3629) OR var_5943) AND (var_3632 OR (NOT var_6203)) AND ((NOT var_3632) OR var_6203) AND (var_3635 OR (NOT var_6014)) AND ((NOT var_3635) OR var_6014) AND (var_3638 OR (NOT var_6455)) AND ((NOT var_3638) OR var_6455) AND (var_3641 OR (NOT var_6077)) AND ((NOT var_3641) OR var_6077) AND (var_3644 OR (NOT var_6707)) AND ((NOT var_3644) OR var_6707) AND (var_3647 OR (NOT var_6264)) AND ((NOT var_3647) OR var_6264) AND (var_3650 OR (NOT var_8274)) AND ((NOT var_3650) OR var_8274) AND (var_3653 OR (NOT var_6326)) AND ((NOT var_3653) OR var_6326) AND (var_3656 OR (NOT var_6896)) AND ((NOT var_3656) OR var_6896) AND (var_3659 OR (NOT var_6516)) AND ((NOT var_3659) OR var_6516) AND (var_3662 OR (NOT var_8398)) AND ((NOT var_3662) OR var_8398) AND (var_3665 OR (NOT var_6578)) AND ((NOT var_3665) OR var_6578) AND (var_3668 OR (NOT var_6959)) AND ((NOT var_3668) OR var_6959) AND (var_3671 OR (NOT var_6768)) AND ((NOT var_3671) OR var_6768) AND (var_3674 OR (NOT var_8461)) AND ((NOT var_3674) OR var_8461) AND (var_3677 OR (NOT var_6830)) AND ((NOT var_3677) OR var_6830) AND (var_3680 OR (NOT var_7333)) AND ((NOT var_3680) OR var_7333) AND (var_3683 OR (NOT var_7085)) AND ((NOT var_3683) OR var_7085) AND (var_3686 OR (NOT var_7585)) AND ((NOT var_3686) OR var_7585) AND (var_3689 OR (NOT var_7209)) AND ((NOT var_3689) OR var_7209) AND (var_3692 OR (NOT var_7837)) AND ((NOT var_3692) OR var_7837) AND (var_3695 OR (NOT var_7394)) AND ((NOT var_3695) OR var_7394) AND (var_3698 OR (NOT var_8585)) AND ((NOT var_3698) OR var_8585) AND (var_3701 OR (NOT var_7456)) AND ((NOT var_3701) OR var_7456) AND (var_3704 OR (NOT var_8089)) AND ((NOT var_3704) OR var_8089) AND (var_3707 OR (NOT var_7646)) AND ((NOT var_3707) OR var_7646) AND (var_3710 OR (NOT var_8709)) AND ((NOT var_3710) OR var_8709) AND (var_3713 OR (NOT var_7708)) AND ((NOT var_3713) OR var_7708) AND (var_3716 OR (NOT var_8213)) AND ((NOT var_3716) OR var_8213) AND (var_3719 OR (NOT var_7898)) AND ((NOT var_3719) OR var_7898) AND (var_3722 OR (NOT var_8772)) AND ((NOT var_3722) OR var_8772) AND (var_3725 OR (NOT var_7960)) AND ((NOT var_3725) OR var_7960) AND (var_3728 OR (NOT var_8524)) AND ((NOT var_3728) OR var_8524) AND (var_3731 OR (NOT var_8337)) AND ((NOT var_3731) OR var_8337) AND (var_3734 OR (NOT var_8835)) AND ((NOT var_3734) OR var_8835) AND (var_3737 OR (NOT var_8648)) AND ((NOT var_3737) OR var_8648) AND (((var_4031 OR (NOT var_4035)) OR var_98) OR var_143) AND ((((NOT var_4031) OR var_4035) OR var_237) OR var_732) AND ((var_3980 OR (NOT var_4009)) OR var_188) AND (((((NOT var_3980) OR var_4009) OR var_102) OR var_237) OR var_912) AND (((var_3987 OR (NOT var_4018)) OR var_233) OR var_278) AND ((((NOT var_3987) OR var_4018) OR var_102) OR var_1092) AND (((var_4057 OR (NOT var_4085)) OR var_323) OR var_368) AND ((((((NOT var_4057) OR var_4085) OR var_147) OR var_462) OR var_732) OR var_1542) AND ((var_4130 OR (NOT var_4158)) OR var_413) AND (((((((NOT var_4130) OR var_4158) OR var_192) OR var_327) OR var_462) OR var_912) OR var_1722) AND (((var_4270 OR (NOT var_4298)) OR var_458) OR var_503) AND ((((((NOT var_4270) OR var_4298) OR var_282) OR var_327) OR var_1092) OR var_1902) AND (((var_4720 OR (NOT var_4724)) OR var_548) OR var_593) AND ((((NOT var_4720) OR var_4724) OR var_777) OR var_2172) AND (((var_4672 OR (NOT var_4700)) OR var_638) OR var_683) AND ((((((NOT var_4672) OR var_4700) OR var_552) OR var_777) OR var_957) OR var_2262) AND (((((var_4064 OR (NOT var_4094)) OR var_728) OR var_773) OR var_818) OR var_863) AND ((((((((((NOT var_4064) OR var_4094) OR var_147) OR var_372) OR var_552) OR var_642) OR var_957) OR var_1137) OR var_1542) OR var_2352) AND (((((var_4137 OR (NOT var_4167)) OR var_908) OR var_953) OR var_998) OR var_1043) AND ((((((((((NOT var_4137) OR var_4167) OR var_192) OR var_417) OR var_642) OR var_822) OR var_1137) OR var_1272) OR var_1722) OR var_2532) AND (((((var_4277 OR (NOT var_4307)) OR var_1088) OR var_1133) OR var_1178) OR var_1223) AND ((((((((((NOT var_4277) OR var_4307) OR var_282) OR var_507) OR var_822) OR var_1002) OR var_1272) OR var_1362) OR var_1902) OR var_2712) AND (((var_5338 OR (NOT var_5365)) OR var_1268) OR var_1313) AND ((((((NOT var_5338) OR var_5365) OR var_1002) OR var_1182) OR var_1362) OR var_2892) AND (((var_5596 OR (NOT var_5623)) OR var_1358) OR var_1403) AND ((((NOT var_5596) OR var_5623) OR var_1182) OR var_2982) AND ((var_4745 OR (NOT var_4773)) OR var_1448) AND (((((NOT var_4745) OR var_4773) OR var_597) OR var_1587) OR var_2172) AND ((var_4881 OR (NOT var_4909)) OR var_1493) AND (((((((NOT var_4881) OR var_4909) OR var_687) OR var_1452) OR var_1587) OR var_1767) OR var_2262) AND (((((var_4412 OR (NOT var_4439)) OR var_1538) OR var_1583) OR var_1628) OR var_1673) AND ((((((((((NOT var_4412) OR var_4439) OR var_372) OR var_867) OR var_1452) OR var_1497) OR var_1767) OR var_1947) OR var_2352) OR var_3072) AND (((((var_4479 OR (NOT var_4506)) OR var_1718) OR var_1763) OR var_1808) OR var_1853) AND ((((((((((NOT var_4479) OR var_4506) OR var_417) OR var_1047) OR var_1497) OR var_1632) OR var_1947) OR var_2082) OR var_2532) OR var_3162) AND (((((var_4611 OR (NOT var_4638)) OR var_1898) OR var_1943) OR var_1988) OR var_2033) AND ((((((((((NOT var_4611) OR var_4638) OR var_507) OR var_1227) OR var_1632) OR var_1812) OR var_2082) OR var_2127) OR var_2712) OR var_3207) AND ((var_5787 OR (NOT var_5815)) OR var_2078) AND (((((((NOT var_5787) OR var_5815) OR var_1317) OR var_1812) OR var_1992) OR var_2127) OR var_2892) AND ((var_5923 OR (NOT var_5951)) OR var_2123) AND (((((NOT var_5923) OR var_5951) OR var_1407) OR var_1992) OR var_2982) AND (((var_4752 OR (NOT var_4782)) OR var_2168) OR var_2213) AND ((((NOT var_4752) OR var_4782) OR var_597) OR var_2397) AND (((var_4888 OR (NOT var_4918)) OR var_2258) OR var_2303) AND ((((((NOT var_4888) OR var_4918) OR var_687) OR var_2217) OR var_2397) OR var_2577) AND (((((var_5147 OR (NOT var_5174)) OR var_2348) OR var_2393) OR var_2438) OR var_2483) AND ((((((((((NOT var_5147) OR var_5174) OR var_867) OR var_1677) OR var_2217) OR var_2307) OR var_2577) OR var_2757) OR var_3072) OR var_3297) AND (((((var_5405 OR (NOT var_5432)) OR var_2528) OR var_2573) OR var_2618) OR var_2663) AND ((((((((((NOT var_5405) OR var_5432) OR var_1047) OR var_1857) OR var_2307) OR var_2442) OR var_2757) OR var_2937) OR var_3162) OR var_3387) AND (((((var_5663 OR (NOT var_5690)) OR var_2708) OR var_2753) OR var_2798) OR var_2843) AND ((((((((((NOT var_5663) OR var_5690) OR var_1227) OR var_2037) OR var_2442) OR var_2622) OR var_2937) OR var_3027) OR var_3207) OR var_3432) AND (((var_5794 OR (NOT var_5824)) OR var_2888) OR var_2933) AND ((((((NOT var_5794) OR var_5824) OR var_1317) OR var_2622) OR var_2802) OR var_3027) AND (((var_5930 OR (NOT var_5960)) OR var_2978) OR var_3023) AND ((((NOT var_5930) OR var_5960) OR var_1407) OR var_2802) AND (((var_6313 OR (NOT var_6340)) OR var_3068) OR var_3113) AND ((((((NOT var_6313) OR var_6340) OR var_1677) OR var_2487) OR var_3252) OR var_3297) AND ((var_6565 OR (NOT var_6592)) OR var_3158) AND (((((((NOT var_6565) OR var_6592) OR var_1857) OR var_2667) OR var_3117) OR var_3252) OR var_3387) AND (((var_6817 OR (NOT var_6844)) OR var_3203) OR var_3248) AND ((((((NOT var_6817) OR var_6844) OR var_2037) OR var_2847) OR var_3117) OR var_3432) AND (((var_7443 OR (NOT var_7470)) OR var_3293) OR var_3338) AND ((((NOT var_7443) OR var_7470) OR var_2487) OR var_3477) AND ((var_7695 OR (NOT var_7722)) OR var_3383) AND (((((NOT var_7695) OR var_7722) OR var_2667) OR var_3342) OR var_3477) AND (((var_7947 OR (NOT var_7974)) OR var_3428) OR var_3473) AND ((((NOT var_7947) OR var_7974) OR var_2847) OR var_3342) AND (((var_3994 OR (NOT var_3971)) OR var_233) OR var_728) AND ((((NOT var_3994) OR var_3971) OR var_102) OR var_147) AND ((((var_4039 OR (NOT var_3974)) OR var_98) OR var_233) OR var_908) AND (((NOT var_4039) OR var_3974) OR var_192) AND (((var_4046 OR (NOT var_4050)) OR var_98) OR var_1088) AND ((((NOT var_4046) OR var_4050) OR var_237) OR var_282) AND (((((var_4111 OR (NOT var_4115)) OR var_143) OR var_458) OR var_728) OR var_1538) AND ((((NOT var_4111) OR var_4115) OR var_327) OR var_372) AND ((((((var_4186 OR (NOT var_4190)) OR var_188) OR var_323) OR var_458) OR var_908) OR var_1718) AND (((NOT var_4186) OR var_4190) OR var_417) AND (((((var_4324 OR (NOT var_4328)) OR var_278) OR var_323) OR var_1088) OR var_1898) AND ((((NOT var_4324) OR var_4328) OR var_462) OR var_507) AND (((var_4685 OR (NOT var_4715)) OR var_773) OR var_2168) AND ((((NOT var_4685) OR var_4715) OR var_552) OR var_597) AND (((((var_4728 OR (NOT var_4732)) OR var_548) OR var_773) OR var_953) OR var_2258) AND ((((NOT var_4728) OR var_4732) OR var_642) OR var_687) AND (((((((((var_4119 OR (NOT var_4123)) OR var_143) OR var_368) OR var_548) OR var_638) OR var_953) OR var_1133) OR var_1538) OR var_2348) AND ((((((NOT var_4119) OR var_4123) OR var_732) OR var_777) OR var_822) OR var_867) AND (((((((((var_4194 OR (NOT var_4198)) OR var_188) OR var_413) OR var_638) OR var_818) OR var_1133) OR var_1268) OR var_1718) OR var_2528) AND ((((((NOT var_4194) OR var_4198) OR var_912) OR var_957) OR var_1002) OR var_1047) AND (((((((((var_4332 OR (NOT var_4336)) OR var_278) OR var_503) OR var_818) OR var_998) OR var_1268) OR var_1358) OR var_1898) OR var_2708) AND ((((((NOT var_4332) OR var_4336) OR var_1092) OR var_1137) OR var_1182) OR var_1227) AND (((((var_5388 OR (NOT var_5392)) OR var_998) OR var_1178) OR var_1358) OR var_2888) AND ((((NOT var_5388) OR var_5392) OR var_1272) OR var_1317) AND (((var_5646 OR (NOT var_5650)) OR var_1178) OR var_2978) AND ((((NOT var_5646) OR var_5650) OR var_1362) OR var_1407) AND ((((var_4799 OR (NOT var_4803)) OR var_593) OR var_1583) OR var_2168) AND (((NOT var_4799) OR var_4803) OR var_1452) AND ((((((var_4935 OR (NOT var_4939)) OR var_683) OR var_1448) OR var_1583) OR var_1763) OR var_2258) AND (((NOT var_4935) OR var_4939) OR var_1497) AND (((((((((var_4462 OR (NOT var_4466)) OR var_368) OR var_863) OR var_1448) OR var_1493) OR var_1763) OR var_1943) OR var_2348) OR var_3068) AND ((((((NOT var_4462) OR var_4466) OR var_1542) OR var_1587) OR var_1632) OR var_1677) AND (((((((((var_4531 OR (NOT var_4535)) OR var_413) OR var_1043) OR var_1493) OR var_1628) OR var_1943) OR var_2078) OR var_2528) OR var_3158) AND ((((((NOT var_4531) OR var_4535) OR var_1722) OR var_1767) OR var_1812) OR var_1857) AND (((((((((var_4661 OR (NOT var_4665)) OR var_503) OR var_1223) OR var_1628) OR var_1808) OR var_2078) OR var_2123) OR var_2708) OR var_3203) AND ((((((NOT var_4661) OR var_4665) OR var_1902) OR var_1947) OR var_1992) OR var_2037) AND ((((((var_5841 OR (NOT var_5845)) OR var_1313) OR var_1808) OR var_1988) OR var_2123) OR var_2888) AND (((NOT var_5841) OR var_5845) OR var_2082) AND ((((var_5977 OR (NOT var_5981)) OR var_1403) OR var_1988) OR var_2978) AND (((NOT var_5977) OR var_5981) OR var_2127) AND (((var_4807 OR (NOT var_4811)) OR var_593) OR var_2393) AND ((((NOT var_4807) OR var_4811) OR var_2172) OR var_2217) AND (((((var_4943 OR (NOT var_4947)) OR var_683) OR var_2213) OR var_2393) OR var_2573) AND ((((NOT var_4943) OR var_4947) OR var_2262) OR var_2307) AND (((((((((var_5197 OR (NOT var_5201)) OR var_863) OR var_1673) OR var_2213) OR var_2303) OR var_2573) OR var_2753) OR var_3068) OR var_3293) AND ((((((NOT var_5197) OR var_5201) OR var_2352) OR var_2397) OR var_2442) OR var_2487) AND (((((((((var_5455 OR (NOT var_5459)) OR var_1043) OR var_1853) OR var_2303) OR var_2438) OR var_2753) OR var_2933) OR var_3158) OR var_3383) AND ((((((NOT var_5455) OR var_5459) OR var_2532) OR var_2577) OR var_2622) OR var_2667) AND (((((((((var_5713 OR (NOT var_5717)) OR var_1223) OR var_2033) OR var_2438) OR var_2618) OR var_2933) OR var_3023) OR var_3203) OR var_3428) AND ((((((NOT var_5713) OR var_5717) OR var_2712) OR var_2757) OR var_2802) OR var_2847) AND (((((var_5849 OR (NOT var_5853)) OR var_1313) OR var_2618) OR var_2798) OR var_3023) AND ((((NOT var_5849) OR var_5853) OR var_2892) OR var_2937) AND (((var_5985 OR (NOT var_5989)) OR var_1403) OR var_2798) AND ((((NOT var_5985) OR var_5989) OR var_2982) OR var_3027) AND (((((var_6363 OR (NOT var_6367)) OR var_1673) OR var_2483) OR var_3248) OR var_3293) AND ((((NOT var_6363) OR var_6367) OR var_3072) OR var_3117) AND ((((((var_6615 OR (NOT var_6619)) OR var_1853) OR var_2663) OR var_3113) OR var_3248) OR var_3383) AND (((NOT var_6615) OR var_6619) OR var_3162) AND (((((var_6867 OR (NOT var_6871)) OR var_2033) OR var_2843) OR var_3113) OR var_3428) AND ((((NOT var_6867) OR var_6871) OR var_3207) OR var_3252) AND (((var_7493 OR (NOT var_7497)) OR var_2483) OR var_3473) AND ((((NOT var_7493) OR var_7497) OR var_3297) OR var_3342) AND ((((var_7745 OR (NOT var_7749)) OR var_2663) OR var_3338) OR var_3473) AND (((NOT var_7745) OR var_7749) OR var_3387) AND (((var_7997 OR (NOT var_8001)) OR var_2843) OR var_3338) AND ((((NOT var_7997) OR var_8001) OR var_3432) OR var_3477) AND (var_4223 OR (NOT var_11220)) AND ((NOT var_4223) OR var_11220) AND (var_4001 OR (NOT var_11228)) AND ((NOT var_4001) OR var_11228) AND (var_4972 OR (NOT var_11236)) AND ((NOT var_4972) OR var_11236) AND (var_4077 OR (NOT var_11244)) AND ((NOT var_4077) OR var_11244) AND (var_5226 OR (NOT var_11252)) AND ((NOT var_5226) OR var_11252) AND (var_4150 OR (NOT var_11260)) AND ((NOT var_4150) OR var_11260) AND (var_5484 OR (NOT var_11268)) AND ((NOT var_5484) OR var_11268) AND (var_4290 OR (NOT var_11276)) AND ((NOT var_4290) OR var_11276) AND (var_4560 OR (NOT var_11284)) AND ((NOT var_4560) OR var_11284) AND (var_4361 OR (NOT var_11292)) AND ((NOT var_4361) OR var_11292) AND (var_6140 OR (NOT var_11300)) AND ((NOT var_6140) OR var_11300) AND (var_4425 OR (NOT var_11308)) AND ((NOT var_4425) OR var_11308) AND (var_6392 OR (NOT var_11316)) AND ((NOT var_6392) OR var_11316) AND (var_4492 OR (NOT var_11324)) AND ((NOT var_4492) OR var_11324) AND (var_6644 OR (NOT var_11332)) AND ((NOT var_6644) OR var_11332) AND (var_4624 OR (NOT var_11340)) AND ((NOT var_4624) OR var_11340) AND (var_5035 OR (NOT var_11348)) AND ((NOT var_5035) OR var_11348) AND (var_4692 OR (NOT var_11356)) AND ((NOT var_4692) OR var_11356) AND (var_7022 OR (NOT var_11364)) AND ((NOT var_7022) OR var_11364) AND (var_4765 OR (NOT var_11372)) AND ((NOT var_4765) OR var_11372) AND (var_5289 OR (NOT var_11380)) AND ((NOT var_5289) OR var_11380) AND (var_4836 OR (NOT var_11388)) AND ((NOT var_4836) OR var_11388) AND (var_7146 OR (NOT var_11396)) AND ((NOT var_7146) OR var_11396) AND (var_4901 OR (NOT var_11404)) AND ((NOT var_4901) OR var_11404) AND (var_5547 OR (NOT var_11412)) AND ((NOT var_5547) OR var_11412) AND (var_5098 OR (NOT var_11420)) AND ((NOT var_5098) OR var_11420) AND (var_7270 OR (NOT var_11428)) AND ((NOT var_7270) OR var_11428) AND (var_5160 OR (NOT var_11436)) AND ((NOT var_5160) OR var_11436) AND (var_5742 OR (NOT var_11444)) AND ((NOT var_5742) OR var_11444) AND (var_5351 OR (NOT var_11452)) AND ((NOT var_5351) OR var_11452) AND (var_7522 OR (NOT var_11460)) AND ((NOT var_7522) OR var_11460) AND (var_5418 OR (NOT var_11468)) AND ((NOT var_5418) OR var_11468) AND (var_5878 OR (NOT var_11476)) AND ((NOT var_5878) OR var_11476) AND (var_5609 OR (NOT var_11484)) AND ((NOT var_5609) OR var_11484) AND (var_7774 OR (NOT var_11492)) AND ((NOT var_7774) OR var_11492) AND (var_5676 OR (NOT var_11500)) AND ((NOT var_5676) OR var_11500) AND (var_8026 OR (NOT var_11508)) AND ((NOT var_8026) OR var_11508) AND (var_5807 OR (NOT var_11516)) AND ((NOT var_5807) OR var_11516) AND (var_8150 OR (NOT var_11524)) AND ((NOT var_8150) OR var_11524) AND (var_5943 OR (NOT var_11532)) AND ((NOT var_5943) OR var_11532) AND (var_6203 OR (NOT var_11540)) AND ((NOT var_6203) OR var_11540) AND (var_6014 OR (NOT var_11548)) AND ((NOT var_6014) OR var_11548) AND (var_6455 OR (NOT var_11556)) AND ((NOT var_6455) OR var_11556) AND (var_6077 OR (NOT var_11564)) AND ((NOT var_6077) OR var_11564) AND (var_6707 OR (NOT var_11572)) AND ((NOT var_6707) OR var_11572) AND (var_6264 OR (NOT var_11580)) AND ((NOT var_6264) OR var_11580) AND (var_8274 OR (NOT var_11588)) AND ((NOT var_8274) OR var_11588) AND (var_6326 OR (NOT var_11596)) AND ((NOT var_6326) OR var_11596) AND (var_6896 OR (NOT var_11604)) AND ((NOT var_6896) OR var_11604) AND (var_6516 OR (NOT var_11612)) AND ((NOT var_6516) OR var_11612) AND (var_8398 OR (NOT var_11620)) AND ((NOT var_8398) OR var_11620) AND (var_6578 OR (NOT var_11628)) AND ((NOT var_6578) OR var_11628) AND (var_6959 OR (NOT var_11636)) AND ((NOT var_6959) OR var_11636) AND (var_6768 OR (NOT var_11644)) AND ((NOT var_6768) OR var_11644) AND (var_8461 OR (NOT var_11652)) AND ((NOT var_8461) OR var_11652) AND (var_6830 OR (NOT var_11660)) AND ((NOT var_6830) OR var_11660) AND (var_7333 OR (NOT var_11668)) AND ((NOT var_7333) OR var_11668) AND (var_7085 OR (NOT var_11676)) AND ((NOT var_7085) OR var_11676) AND (var_7585 OR (NOT var_11684)) AND ((NOT var_7585) OR var_11684) AND (var_7209 OR (NOT var_11692)) AND ((NOT var_7209) OR var_11692) AND (var_7837 OR (NOT var_11700)) AND ((NOT var_7837) OR var_11700) AND (var_7394 OR (NOT var_11708)) AND ((NOT var_7394) OR var_11708) AND (var_8585 OR (NOT var_11716)) AND ((NOT var_8585) OR var_11716) AND (var_7456 OR (NOT var_11724)) AND ((NOT var_7456) OR var_11724) AND (var_8089 OR (NOT var_11732)) AND ((NOT var_8089) OR var_11732) AND (var_7646 OR (NOT var_11740)) AND ((NOT var_7646) OR var_11740) AND (var_8709 OR (NOT var_11748)) AND ((NOT var_8709) OR var_11748) AND (var_7708 OR (NOT var_11756)) AND ((NOT var_7708) OR var_11756) AND (var_8213 OR (NOT var_11764)) AND ((NOT var_8213) OR var_11764) AND (var_7898 OR (NOT var_11772)) AND ((NOT var_7898) OR var_11772) AND (var_8772 OR (NOT var_11780)) AND ((NOT var_8772) OR var_11780) AND (var_7960 OR (NOT var_11788)) AND ((NOT var_7960) OR var_11788) AND (var_8524 OR (NOT var_11796)) AND ((NOT var_8524) OR var_11796) AND (var_8337 OR (NOT var_11804)) AND ((NOT var_8337) OR var_11804) AND (var_8835 OR (NOT var_11812)) AND ((NOT var_8835) OR var_11812) AND (var_8648 OR (NOT var_11820)) AND ((NOT var_8648) OR var_11820) AND ((NOT var_241) OR (NOT var_736)) AND ((NOT var_237) OR (NOT var_732)) AND ((NOT var_736) OR (NOT var_241)) AND ((NOT var_732) OR (NOT var_237)) AND ((NOT var_106) OR (NOT var_241)) AND ((NOT var_102) OR (NOT var_237)) AND ((NOT var_106) OR (NOT var_916)) AND ((NOT var_102) OR (NOT var_912)) AND ((NOT var_241) OR (NOT var_106)) AND ((NOT var_237) OR (NOT var_102)) AND ((NOT var_241) OR (NOT var_916)) AND ((NOT var_237) OR (NOT var_912)) AND ((NOT var_916) OR (NOT var_106)) AND ((NOT var_912) OR (NOT var_102)) AND ((NOT var_916) OR (NOT var_241)) AND ((NOT var_912) OR (NOT var_237)) AND ((NOT var_106) OR (NOT var_1096)) AND ((NOT var_102) OR (NOT var_1092)) AND ((NOT var_1096) OR (NOT var_106)) AND ((NOT var_1092) OR (NOT var_102)) AND ((NOT var_151) OR (NOT var_466)) AND ((NOT var_147) OR (NOT var_462)) AND ((NOT var_151) OR (NOT var_736)) AND ((NOT var_147) OR (NOT var_732)) AND _let_0 AND _let_1 AND ((NOT var_466) OR (NOT var_151)) AND ((NOT var_462) OR (NOT var_147)) AND ((NOT var_466) OR (NOT var_736)) AND ((NOT var_462) OR (NOT var_732)) AND ((NOT var_466) OR (NOT var_1546)) AND ((NOT var_462) OR (NOT var_1542)) AND ((NOT var_736) OR (NOT var_151)) AND ((NOT var_732) OR (NOT var_147)) AND ((NOT var_736) OR (NOT var_466)) AND ((NOT var_732) OR (NOT var_462)) AND ((NOT var_736) OR (NOT var_1546)) AND ((NOT var_732) OR (NOT var_1542)) AND _let_2 AND _let_3 AND ((NOT var_1546) OR (NOT var_466)) AND ((NOT var_1542) OR (NOT var_462)) AND ((NOT var_1546) OR (NOT var_736)) AND ((NOT var_1542) OR (NOT var_732)) AND ((NOT var_196) OR (NOT var_331)) AND ((NOT var_192) OR (NOT var_327)) AND ((NOT var_196) OR (NOT var_466)) AND ((NOT var_192) OR (NOT var_462)) AND ((NOT var_196) OR (NOT var_916)) AND ((NOT var_192) OR (NOT var_912)) AND _let_4 AND _let_5 AND ((NOT var_331) OR (NOT var_196)) AND ((NOT var_327) OR (NOT var_192)) AND ((NOT var_331) OR (NOT var_466)) AND ((NOT var_327) OR (NOT var_462)) AND ((NOT var_331) OR (NOT var_916)) AND ((NOT var_327) OR (NOT var_912)) AND ((NOT var_331) OR (NOT var_1726)) AND ((NOT var_327) OR (NOT var_1722)) AND ((NOT var_466) OR (NOT var_196)) AND ((NOT var_462) OR (NOT var_192)) AND ((NOT var_466) OR (NOT var_331)) AND ((NOT var_462) OR (NOT var_327)) AND ((NOT var_466) OR (NOT var_916)) AND ((NOT var_462) OR (NOT var_912)) AND ((NOT var_466) OR (NOT var_1726)) AND ((NOT var_462) OR (NOT var_1722)) AND ((NOT var_916) OR (NOT var_196)) AND ((NOT var_912) OR (NOT var_192)) AND ((NOT var_916) OR (NOT var_331)) AND ((NOT var_912) OR (NOT var_327)) AND ((NOT var_916) OR (NOT var_466)) AND ((NOT var_912) OR (NOT var_462)) AND ((NOT var_916) OR (NOT var_1726)) AND ((NOT var_912) OR (NOT var_1722)) AND _let_6 AND _let_7 AND ((NOT var_1726) OR (NOT var_331)) AND ((NOT var_1722) OR (NOT var_327)) AND ((NOT var_1726) OR (NOT var_466)) AND ((NOT var_1722) OR (NOT var_462)) AND ((NOT var_1726) OR (NOT var_916)) AND ((NOT var_1722) OR (NOT var_912)) AND ((NOT var_286) OR (NOT var_331)) AND ((NOT var_282) OR (NOT var_327)) AND ((NOT var_286) OR (NOT var_1096)) AND ((NOT var_282) OR (NOT var_1092)) AND _let_8 AND _let_9 AND ((NOT var_331) OR (NOT var_286)) AND ((NOT var_327) OR (NOT var_282)) AND ((NOT var_331) OR (NOT var_1096)) AND ((NOT var_327) OR (NOT var_1092)) AND ((NOT var_331) OR (NOT var_1906)) AND ((NOT var_327) OR (NOT var_1902)) AND ((NOT var_1096) OR (NOT var_286)) AND ((NOT var_1092) OR (NOT var_282)) AND ((NOT var_1096) OR (NOT var_331)) AND ((NOT var_1092) OR (NOT var_327)) AND ((NOT var_1096) OR (NOT var_1906)) AND ((NOT var_1092) OR (NOT var_1902)) AND _let_10 AND _let_11 AND ((NOT var_1906) OR (NOT var_331)) AND ((NOT var_1902) OR (NOT var_327)) AND ((NOT var_1906) OR (NOT var_1096)) AND ((NOT var_1902) OR (NOT var_1092)) AND ((NOT var_781) OR (NOT var_2176)) AND ((NOT var_777) OR (NOT var_2172)) AND ((NOT var_2176) OR (NOT var_781)) AND ((NOT var_2172) OR (NOT var_777)) AND ((NOT var_556) OR (NOT var_781)) AND ((NOT var_552) OR (NOT var_777)) AND _let_12 AND _let_13 AND ((NOT var_556) OR (NOT var_2266)) AND ((NOT var_552) OR (NOT var_2262)) AND ((NOT var_781) OR (NOT var_556)) AND ((NOT var_777) OR (NOT var_552)) AND ((NOT var_781) OR (NOT var_961)) AND ((NOT var_777) OR (NOT var_957)) AND ((NOT var_781) OR (NOT var_2266)) AND ((NOT var_777) OR (NOT var_2262)) AND _let_14 AND _let_15 AND ((NOT var_961) OR (NOT var_781)) AND ((NOT var_957) OR (NOT var_777)) AND ((NOT var_961) OR (NOT var_2266)) AND ((NOT var_957) OR (NOT var_2262)) AND ((NOT var_2266) OR (NOT var_556)) AND ((NOT var_2262) OR (NOT var_552)) AND ((NOT var_2266) OR (NOT var_781)) AND ((NOT var_2262) OR (NOT var_777)) AND ((NOT var_2266) OR (NOT var_961)) AND ((NOT var_2262) OR (NOT var_957)) AND ((NOT var_151) OR (NOT var_376)) AND ((NOT var_147) OR (NOT var_372)) AND ((NOT var_151) OR (NOT var_556)) AND ((NOT var_147) OR (NOT var_552)) AND ((NOT var_151) OR (NOT var_646)) AND ((NOT var_147) OR (NOT var_642)) AND ((NOT var_151) OR (NOT var_961)) AND ((NOT var_147) OR (NOT var_957)) AND ((NOT var_151) OR (NOT var_1141)) AND ((NOT var_147) OR (NOT var_1137)) AND _let_0 AND _let_1 AND ((NOT var_151) OR (NOT var_2356)) AND ((NOT var_147) OR (NOT var_2352)) AND ((NOT var_376) OR (NOT var_151)) AND ((NOT var_372) OR (NOT var_147)) AND ((NOT var_376) OR (NOT var_556)) AND ((NOT var_372) OR (NOT var_552)) AND ((NOT var_376) OR (NOT var_646)) AND ((NOT var_372) OR (NOT var_642)) AND ((NOT var_376) OR (NOT var_961)) AND ((NOT var_372) OR (NOT var_957)) AND ((NOT var_376) OR (NOT var_1141)) AND ((NOT var_372) OR (NOT var_1137)) AND ((NOT var_376) OR (NOT var_1546)) AND ((NOT var_372) OR (NOT var_1542)) AND _let_16 AND _let_17 AND ((NOT var_556) OR (NOT var_151)) AND ((NOT var_552) OR (NOT var_147)) AND ((NOT var_556) OR (NOT var_376)) AND ((NOT var_552) OR (NOT var_372)) AND ((NOT var_556) OR (NOT var_646)) AND ((NOT var_552) OR (NOT var_642)) AND _let_12 AND _let_13 AND ((NOT var_556) OR (NOT var_1141)) AND ((NOT var_552) OR (NOT var_1137)) AND ((NOT var_556) OR (NOT var_1546)) AND ((NOT var_552) OR (NOT var_1542)) AND ((NOT var_556) OR (NOT var_2356)) AND ((NOT var_552) OR (NOT var_2352)) AND ((NOT var_646) OR (NOT var_151)) AND ((NOT var_642) OR (NOT var_147)) AND ((NOT var_646) OR (NOT var_376)) AND ((NOT var_642) OR (NOT var_372)) AND ((NOT var_646) OR (NOT var_556)) AND ((NOT var_642) OR (NOT var_552)) AND ((NOT var_646) OR (NOT var_961)) AND ((NOT var_642) OR (NOT var_957)) AND _let_18 AND _let_19 AND ((NOT var_646) OR (NOT var_1546)) AND ((NOT var_642) OR (NOT var_1542)) AND ((NOT var_646) OR (NOT var_2356)) AND ((NOT var_642) OR (NOT var_2352)) AND ((NOT var_961) OR (NOT var_151)) AND ((NOT var_957) OR (NOT var_147)) AND ((NOT var_961) OR (NOT var_376)) AND ((NOT var_957) OR (NOT var_372)) AND _let_14 AND _let_15 AND ((NOT var_961) OR (NOT var_646)) AND ((NOT var_957) OR (NOT var_642)) AND ((NOT var_961) OR (NOT var_1141)) AND ((NOT var_957) OR (NOT var_1137)) AND ((NOT var_961) OR (NOT var_1546)) AND ((NOT var_957) OR (NOT var_1542)) AND ((NOT var_961) OR (NOT var_2356)) AND ((NOT var_957) OR (NOT var_2352)) AND ((NOT var_1141) OR (NOT var_151)) AND ((NOT var_1137) OR (NOT var_147)) AND ((NOT var_1141) OR (NOT var_376)) AND ((NOT var_1137) OR (NOT var_372)) AND ((NOT var_1141) OR (NOT var_556)) AND ((NOT var_1137) OR (NOT var_552)) AND _let_20 AND _let_21 AND ((NOT var_1141) OR (NOT var_961)) AND ((NOT var_1137) OR (NOT var_957)) AND ((NOT var_1141) OR (NOT var_1546)) AND ((NOT var_1137) OR (NOT var_1542)) AND ((NOT var_1141) OR (NOT var_2356)) AND ((NOT var_1137) OR (NOT var_2352)) AND _let_2 AND _let_3 AND ((NOT var_1546) OR (NOT var_376)) AND ((NOT var_1542) OR (NOT var_372)) AND ((NOT var_1546) OR (NOT var_556)) AND ((NOT var_1542) OR (NOT var_552)) AND ((NOT var_1546) OR (NOT var_646)) AND ((NOT var_1542) OR (NOT var_642)) AND ((NOT var_1546) OR (NOT var_961)) AND ((NOT var_1542) OR (NOT var_957)) AND ((NOT var_1546) OR (NOT var_1141)) AND ((NOT var_1542) OR (NOT var_1137)) AND ((NOT var_1546) OR (NOT var_2356)) AND ((NOT var_1542) OR (NOT var_2352)) AND ((NOT var_2356) OR (NOT var_151)) AND ((NOT var_2352) OR (NOT var_147)) AND _let_22 AND _let_23 AND ((NOT var_2356) OR (NOT var_556)) AND ((NOT var_2352) OR (NOT var_552)) AND ((NOT var_2356) OR (NOT var_646)) AND ((NOT var_2352) OR (NOT var_642)) AND ((NOT var_2356) OR (NOT var_961)) AND ((NOT var_2352) OR (NOT var_957)) AND ((NOT var_2356) OR (NOT var_1141)) AND ((NOT var_2352) OR (NOT var_1137)) AND ((NOT var_2356) OR (NOT var_1546)) AND ((NOT var_2352) OR (NOT var_1542)) AND ((NOT var_196) OR (NOT var_421)) AND ((NOT var_192) OR (NOT var_417)) AND ((NOT var_196) OR (NOT var_646)) AND ((NOT var_192) OR (NOT var_642)) AND ((NOT var_196) OR (NOT var_826)) AND ((NOT var_192) OR (NOT var_822)) AND ((NOT var_196) OR (NOT var_1141)) AND ((NOT var_192) OR (NOT var_1137)) AND ((NOT var_196) OR (NOT var_1276)) AND ((NOT var_192) OR (NOT var_1272)) AND _let_4 AND _let_5 AND ((NOT var_196) OR (NOT var_2536)) AND ((NOT var_192) OR (NOT var_2532)) AND ((NOT var_421) OR (NOT var_196)) AND ((NOT var_417) OR (NOT var_192)) AND ((NOT var_421) OR (NOT var_646)) AND ((NOT var_417) OR (NOT var_642)) AND ((NOT var_421) OR (NOT var_826)) AND ((NOT var_417) OR (NOT var_822)) AND ((NOT var_421) OR (NOT var_1141)) AND ((NOT var_417) OR (NOT var_1137)) AND ((NOT var_421) OR (NOT var_1276)) AND ((NOT var_417) OR (NOT var_1272)) AND ((NOT var_421) OR (NOT var_1726)) AND ((NOT var_417) OR (NOT var_1722)) AND _let_24 AND _let_25 AND ((NOT var_646) OR (NOT var_196)) AND ((NOT var_642) OR (NOT var_192)) AND ((NOT var_646) OR (NOT var_421)) AND ((NOT var_642) OR (NOT var_417)) AND ((NOT var_646) OR (NOT var_826)) AND ((NOT var_642) OR (NOT var_822)) AND _let_18 AND _let_19 AND ((NOT var_646) OR (NOT var_1276)) AND ((NOT var_642) OR (NOT var_1272)) AND ((NOT var_646) OR (NOT var_1726)) AND ((NOT var_642) OR (NOT var_1722)) AND ((NOT var_646) OR (NOT var_2536)) AND ((NOT var_642) OR (NOT var_2532)) AND ((NOT var_826) OR (NOT var_196)) AND ((NOT var_822) OR (NOT var_192)) AND ((NOT var_826) OR (NOT var_421)) AND ((NOT var_822) OR (NOT var_417)) AND ((NOT var_826) OR (NOT var_646)) AND ((NOT var_822) OR (NOT var_642)) AND ((NOT var_826) OR (NOT var_1141)) AND ((NOT var_822) OR (NOT var_1137)) AND _let_26 AND _let_27 AND ((NOT var_826) OR (NOT var_1726)) AND ((NOT var_822) OR (NOT var_1722)) AND ((NOT var_826) OR (NOT var_2536)) AND ((NOT var_822) OR (NOT var_2532)) AND ((NOT var_1141) OR (NOT var_196)) AND ((NOT var_1137) OR (NOT var_192)) AND ((NOT var_1141) OR (NOT var_421)) AND ((NOT var_1137) OR (NOT var_417)) AND _let_20 AND _let_21 AND ((NOT var_1141) OR (NOT var_826)) AND ((NOT var_1137) OR (NOT var_822)) AND ((NOT var_1141) OR (NOT var_1276)) AND ((NOT var_1137) OR (NOT var_1272)) AND ((NOT var_1141) OR (NOT var_1726)) AND ((NOT var_1137) OR (NOT var_1722)) AND ((NOT var_1141) OR (NOT var_2536)) AND ((NOT var_1137) OR (NOT var_2532)) AND ((NOT var_1276) OR (NOT var_196)) AND ((NOT var_1272) OR (NOT var_192)) AND ((NOT var_1276) OR (NOT var_421)) AND ((NOT var_1272) OR (NOT var_417)) AND ((NOT var_1276) OR (NOT var_646)) AND ((NOT var_1272) OR (NOT var_642)) AND _let_28 AND _let_29 AND ((NOT var_1276) OR (NOT var_1141)) AND ((NOT var_1272) OR (NOT var_1137)) AND ((NOT var_1276) OR (NOT var_1726)) AND ((NOT var_1272) OR (NOT var_1722)) AND ((NOT var_1276) OR (NOT var_2536)) AND ((NOT var_1272) OR (NOT var_2532)) AND _let_6 AND _let_7 AND ((NOT var_1726) OR (NOT var_421)) AND ((NOT var_1722) OR (NOT var_417)) AND ((NOT var_1726) OR (NOT var_646)) AND ((NOT var_1722) OR (NOT var_642)) AND ((NOT var_1726) OR (NOT var_826)) AND ((NOT var_1722) OR (NOT var_822)) AND ((NOT var_1726) OR (NOT var_1141)) AND ((NOT var_1722) OR (NOT var_1137)) AND ((NOT var_1726) OR (NOT var_1276)) AND ((NOT var_1722) OR (NOT var_1272)) AND ((NOT var_1726) OR (NOT var_2536)) AND ((NOT var_1722) OR (NOT var_2532)) AND ((NOT var_2536) OR (NOT var_196)) AND ((NOT var_2532) OR (NOT var_192)) AND _let_30 AND _let_31 AND ((NOT var_2536) OR (NOT var_646)) AND ((NOT var_2532) OR (NOT var_642)) AND ((NOT var_2536) OR (NOT var_826)) AND ((NOT var_2532) OR (NOT var_822)) AND ((NOT var_2536) OR (NOT var_1141)) AND ((NOT var_2532) OR (NOT var_1137)) AND ((NOT var_2536) OR (NOT var_1276)) AND ((NOT var_2532) OR (NOT var_1272)) AND ((NOT var_2536) OR (NOT var_1726)) AND ((NOT var_2532) OR (NOT var_1722)) AND ((NOT var_286) OR (NOT var_511)) AND ((NOT var_282) OR (NOT var_507)) AND ((NOT var_286) OR (NOT var_826)) AND ((NOT var_282) OR (NOT var_822)) AND ((NOT var_286) OR (NOT var_1006)) AND ((NOT var_282) OR (NOT var_1002)) AND ((NOT var_286) OR (NOT var_1276)) AND ((NOT var_282) OR (NOT var_1272)) AND ((NOT var_286) OR (NOT var_1366)) AND ((NOT var_282) OR (NOT var_1362)) AND _let_8 AND _let_9 AND ((NOT var_286) OR (NOT var_2716)) AND ((NOT var_282) OR (NOT var_2712)) AND ((NOT var_511) OR (NOT var_286)) AND ((NOT var_507) OR (NOT var_282)) AND ((NOT var_511) OR (NOT var_826)) AND ((NOT var_507) OR (NOT var_822)) AND ((NOT var_511) OR (NOT var_1006)) AND ((NOT var_507) OR (NOT var_1002)) AND ((NOT var_511) OR (NOT var_1276)) AND ((NOT var_507) OR (NOT var_1272)) AND ((NOT var_511) OR (NOT var_1366)) AND ((NOT var_507) OR (NOT var_1362)) AND ((NOT var_511) OR (NOT var_1906)) AND ((NOT var_507) OR (NOT var_1902)) AND _let_32 AND _let_33 AND ((NOT var_826) OR (NOT var_286)) AND ((NOT var_822) OR (NOT var_282)) AND ((NOT var_826) OR (NOT var_511)) AND ((NOT var_822) OR (NOT var_507)) AND ((NOT var_826) OR (NOT var_1006)) AND ((NOT var_822) OR (NOT var_1002)) AND _let_26 AND _let_27 AND ((NOT var_826) OR (NOT var_1366)) AND ((NOT var_822) OR (NOT var_1362)) AND ((NOT var_826) OR (NOT var_1906)) AND ((NOT var_822) OR (NOT var_1902)) AND ((NOT var_826) OR (NOT var_2716)) AND ((NOT var_822) OR (NOT var_2712)) AND ((NOT var_1006) OR (NOT var_286)) AND ((NOT var_1002) OR (NOT var_282)) AND ((NOT var_1006) OR (NOT var_511)) AND ((NOT var_1002) OR (NOT var_507)) AND ((NOT var_1006) OR (NOT var_826)) AND ((NOT var_1002) OR (NOT var_822)) AND ((NOT var_1006) OR (NOT var_1276)) AND ((NOT var_1002) OR (NOT var_1272)) AND _let_34 AND _let_35 AND ((NOT var_1006) OR (NOT var_1906)) AND ((NOT var_1002) OR (NOT var_1902)) AND ((NOT var_1006) OR (NOT var_2716)) AND ((NOT var_1002) OR (NOT var_2712)) AND ((NOT var_1276) OR (NOT var_286)) AND ((NOT var_1272) OR (NOT var_282)) AND ((NOT var_1276) OR (NOT var_511)) AND ((NOT var_1272) OR (NOT var_507)) AND _let_28 AND _let_29 AND ((NOT var_1276) OR (NOT var_1006)) AND ((NOT var_1272) OR (NOT var_1002)) AND ((NOT var_1276) OR (NOT var_1366)) AND ((NOT var_1272) OR (NOT var_1362)) AND ((NOT var_1276) OR (NOT var_1906)) AND ((NOT var_1272) OR (NOT var_1902)) AND ((NOT var_1276) OR (NOT var_2716)) AND ((NOT var_1272) OR (NOT var_2712)) AND ((NOT var_1366) OR (NOT var_286)) AND ((NOT var_1362) OR (NOT var_282)) AND ((NOT var_1366) OR (NOT var_511)) AND ((NOT var_1362) OR (NOT var_507)) AND ((NOT var_1366) OR (NOT var_826)) AND ((NOT var_1362) OR (NOT var_822)) AND _let_36 AND _let_37 AND ((NOT var_1366) OR (NOT var_1276)) AND ((NOT var_1362) OR (NOT var_1272)) AND ((NOT var_1366) OR (NOT var_1906)) AND ((NOT var_1362) OR (NOT var_1902)) AND ((NOT var_1366) OR (NOT var_2716)) AND ((NOT var_1362) OR (NOT var_2712)) AND _let_10 AND _let_11 AND ((NOT var_1906) OR (NOT var_511)) AND ((NOT var_1902) OR (NOT var_507)) AND ((NOT var_1906) OR (NOT var_826)) AND ((NOT var_1902) OR (NOT var_822)) AND ((NOT var_1906) OR (NOT var_1006)) AND ((NOT var_1902) OR (NOT var_1002)) AND ((NOT var_1906) OR (NOT var_1276)) AND ((NOT var_1902) OR (NOT var_1272)) AND ((NOT var_1906) OR (NOT var_1366)) AND ((NOT var_1902) OR (NOT var_1362)) AND ((NOT var_1906) OR (NOT var_2716)) AND ((NOT var_1902) OR (NOT var_2712)) AND ((NOT var_2716) OR (NOT var_286)) AND ((NOT var_2712) OR (NOT var_282)) AND _let_38 AND _let_39 AND ((NOT var_2716) OR (NOT var_826)) AND ((NOT var_2712) OR (NOT var_822)) AND ((NOT var_2716) OR (NOT var_1006)) AND ((NOT var_2712) OR (NOT var_1002)) AND ((NOT var_2716) OR (NOT var_1276)) AND ((NOT var_2712) OR (NOT var_1272)) AND ((NOT var_2716) OR (NOT var_1366)) AND ((NOT var_2712) OR (NOT var_1362)) AND ((NOT var_2716) OR (NOT var_1906)) AND ((NOT var_2712) OR (NOT var_1902)) AND ((NOT var_1006) OR (NOT var_1186)) AND ((NOT var_1002) OR (NOT var_1182)) AND _let_34 AND _let_35 AND ((NOT var_1006) OR (NOT var_2896)) AND ((NOT var_1002) OR (NOT var_2892)) AND ((NOT var_1186) OR (NOT var_1006)) AND ((NOT var_1182) OR (NOT var_1002)) AND ((NOT var_1186) OR (NOT var_1366)) AND ((NOT var_1182) OR (NOT var_1362)) AND ((NOT var_1186) OR (NOT var_2896)) AND ((NOT var_1182) OR (NOT var_2892)) AND _let_36 AND _let_37 AND ((NOT var_1366) OR (NOT var_1186)) AND ((NOT var_1362) OR (NOT var_1182)) AND ((NOT var_1366) OR (NOT var_2896)) AND ((NOT var_1362) OR (NOT var_2892)) AND ((NOT var_2896) OR (NOT var_1006)) AND ((NOT var_2892) OR (NOT var_1002)) AND ((NOT var_2896) OR (NOT var_1186)) AND ((NOT var_2892) OR (NOT var_1182)) AND ((NOT var_2896) OR (NOT var_1366)) AND ((NOT var_2892) OR (NOT var_1362)) AND ((NOT var_1186) OR (NOT var_2986)) AND ((NOT var_1182) OR (NOT var_2982)) AND ((NOT var_2986) OR (NOT var_1186)) AND ((NOT var_2982) OR (NOT var_1182)) AND ((NOT var_601) OR (NOT var_1591)) AND ((NOT var_597) OR (NOT var_1587)) AND ((NOT var_601) OR (NOT var_2176)) AND ((NOT var_597) OR (NOT var_2172)) AND ((NOT var_1591) OR (NOT var_601)) AND ((NOT var_1587) OR (NOT var_597)) AND ((NOT var_1591) OR (NOT var_2176)) AND ((NOT var_1587) OR (NOT var_2172)) AND ((NOT var_2176) OR (NOT var_601)) AND ((NOT var_2172) OR (NOT var_597)) AND ((NOT var_2176) OR (NOT var_1591)) AND ((NOT var_2172) OR (NOT var_1587)) AND ((NOT var_691) OR (NOT var_1456)) AND ((NOT var_687) OR (NOT var_1452)) AND ((NOT var_691) OR (NOT var_1591)) AND ((NOT var_687) OR (NOT var_1587)) AND ((NOT var_691) OR (NOT var_1771)) AND ((NOT var_687) OR (NOT var_1767)) AND ((NOT var_691) OR (NOT var_2266)) AND ((NOT var_687) OR (NOT var_2262)) AND ((NOT var_1456) OR (NOT var_691)) AND ((NOT var_1452) OR (NOT var_687)) AND ((NOT var_1456) OR (NOT var_1591)) AND ((NOT var_1452) OR (NOT var_1587)) AND _let_40 AND _let_41 AND ((NOT var_1456) OR (NOT var_2266)) AND ((NOT var_1452) OR (NOT var_2262)) AND ((NOT var_1591) OR (NOT var_691)) AND ((NOT var_1587) OR (NOT var_687)) AND ((NOT var_1591) OR (NOT var_1456)) AND ((NOT var_1587) OR (NOT var_1452)) AND ((NOT var_1591) OR (NOT var_1771)) AND ((NOT var_1587) OR (NOT var_1767)) AND ((NOT var_1591) OR (NOT var_2266)) AND ((NOT var_1587) OR (NOT var_2262)) AND ((NOT var_1771) OR (NOT var_691)) AND ((NOT var_1767) OR (NOT var_687)) AND _let_42 AND _let_43 AND ((NOT var_1771) OR (NOT var_1591)) AND ((NOT var_1767) OR (NOT var_1587)) AND ((NOT var_1771) OR (NOT var_2266)) AND ((NOT var_1767) OR (NOT var_2262)) AND ((NOT var_2266) OR (NOT var_691)) AND ((NOT var_2262) OR (NOT var_687)) AND ((NOT var_2266) OR (NOT var_1456)) AND ((NOT var_2262) OR (NOT var_1452)) AND ((NOT var_2266) OR (NOT var_1591)) AND ((NOT var_2262) OR (NOT var_1587)) AND ((NOT var_2266) OR (NOT var_1771)) AND ((NOT var_2262) OR (NOT var_1767)) AND ((NOT var_376) OR (NOT var_871)) AND ((NOT var_372) OR (NOT var_867)) AND ((NOT var_376) OR (NOT var_1456)) AND ((NOT var_372) OR (NOT var_1452)) AND ((NOT var_376) OR (NOT var_1501)) AND ((NOT var_372) OR (NOT var_1497)) AND ((NOT var_376) OR (NOT var_1771)) AND ((NOT var_372) OR (NOT var_1767)) AND ((NOT var_376) OR (NOT var_1951)) AND ((NOT var_372) OR (NOT var_1947)) AND _let_16 AND _let_17 AND ((NOT var_376) OR (NOT var_3076)) AND ((NOT var_372) OR (NOT var_3072)) AND ((NOT var_871) OR (NOT var_376)) AND ((NOT var_867) OR (NOT var_372)) AND ((NOT var_871) OR (NOT var_1456)) AND ((NOT var_867) OR (NOT var_1452)) AND ((NOT var_871) OR (NOT var_1501)) AND ((NOT var_867) OR (NOT var_1497)) AND ((NOT var_871) OR (NOT var_1771)) AND ((NOT var_867) OR (NOT var_1767)) AND ((NOT var_871) OR (NOT var_1951)) AND ((NOT var_867) OR (NOT var_1947)) AND ((NOT var_871) OR (NOT var_2356)) AND ((NOT var_867) OR (NOT var_2352)) AND _let_44 AND _let_45 AND ((NOT var_1456) OR (NOT var_376)) AND ((NOT var_1452) OR (NOT var_372)) AND ((NOT var_1456) OR (NOT var_871)) AND ((NOT var_1452) OR (NOT var_867)) AND ((NOT var_1456) OR (NOT var_1501)) AND ((NOT var_1452) OR (NOT var_1497)) AND _let_40 AND _let_41 AND ((NOT var_1456) OR (NOT var_1951)) AND ((NOT var_1452) OR (NOT var_1947)) AND ((NOT var_1456) OR (NOT var_2356)) AND ((NOT var_1452) OR (NOT var_2352)) AND ((NOT var_1456) OR (NOT var_3076)) AND ((NOT var_1452) OR (NOT var_3072)) AND ((NOT var_1501) OR (NOT var_376)) AND ((NOT var_1497) OR (NOT var_372)) AND ((NOT var_1501) OR (NOT var_871)) AND ((NOT var_1497) OR (NOT var_867)) AND ((NOT var_1501) OR (NOT var_1456)) AND ((NOT var_1497) OR (NOT var_1452)) AND ((NOT var_1501) OR (NOT var_1771)) AND ((NOT var_1497) OR (NOT var_1767)) AND _let_46 AND _let_47 AND ((NOT var_1501) OR (NOT var_2356)) AND ((NOT var_1497) OR (NOT var_2352)) AND ((NOT var_1501) OR (NOT var_3076)) AND ((NOT var_1497) OR (NOT var_3072)) AND ((NOT var_1771) OR (NOT var_376)) AND ((NOT var_1767) OR (NOT var_372)) AND ((NOT var_1771) OR (NOT var_871)) AND ((NOT var_1767) OR (NOT var_867)) AND _let_42 AND _let_43 AND ((NOT var_1771) OR (NOT var_1501)) AND ((NOT var_1767) OR (NOT var_1497)) AND ((NOT var_1771) OR (NOT var_1951)) AND ((NOT var_1767) OR (NOT var_1947)) AND ((NOT var_1771) OR (NOT var_2356)) AND ((NOT var_1767) OR (NOT var_2352)) AND ((NOT var_1771) OR (NOT var_3076)) AND ((NOT var_1767) OR (NOT var_3072)) AND ((NOT var_1951) OR (NOT var_376)) AND ((NOT var_1947) OR (NOT var_372)) AND ((NOT var_1951) OR (NOT var_871)) AND ((NOT var_1947) OR (NOT var_867)) AND ((NOT var_1951) OR (NOT var_1456)) AND ((NOT var_1947) OR (NOT var_1452)) AND _let_48 AND _let_49 AND ((NOT var_1951) OR (NOT var_1771)) AND ((NOT var_1947) OR (NOT var_1767)) AND ((NOT var_1951) OR (NOT var_2356)) AND ((NOT var_1947) OR (NOT var_2352)) AND ((NOT var_1951) OR (NOT var_3076)) AND ((NOT var_1947) OR (NOT var_3072)) AND _let_22 AND _let_23 AND ((NOT var_2356) OR (NOT var_871)) AND ((NOT var_2352) OR (NOT var_867)) AND ((NOT var_2356) OR (NOT var_1456)) AND ((NOT var_2352) OR (NOT var_1452)) AND ((NOT var_2356) OR (NOT var_1501)) AND ((NOT var_2352) OR (NOT var_1497)) AND ((NOT var_2356) OR (NOT var_1771)) AND ((NOT var_2352) OR (NOT var_1767)) AND ((NOT var_2356) OR (NOT var_1951)) AND ((NOT var_2352) OR (NOT var_1947)) AND ((NOT var_2356) OR (NOT var_3076)) AND ((NOT var_2352) OR (NOT var_3072)) AND ((NOT var_3076) OR (NOT var_376)) AND ((NOT var_3072) OR (NOT var_372)) AND _let_50 AND _let_51 AND ((NOT var_3076) OR (NOT var_1456)) AND ((NOT var_3072) OR (NOT var_1452)) AND ((NOT var_3076) OR (NOT var_1501)) AND ((NOT var_3072) OR (NOT var_1497)) AND ((NOT var_3076) OR (NOT var_1771)) AND ((NOT var_3072) OR (NOT var_1767)) AND ((NOT var_3076) OR (NOT var_1951)) AND ((NOT var_3072) OR (NOT var_1947)) AND ((NOT var_3076) OR (NOT var_2356)) AND ((NOT var_3072) OR (NOT var_2352)) AND ((NOT var_421) OR (NOT var_1051)) AND ((NOT var_417) OR (NOT var_1047)) AND ((NOT var_421) OR (NOT var_1501)) AND ((NOT var_417) OR (NOT var_1497)) AND ((NOT var_421) OR (NOT var_1636)) AND ((NOT var_417) OR (NOT var_1632)) AND ((NOT var_421) OR (NOT var_1951)) AND ((NOT var_417) OR (NOT var_1947)) AND ((NOT var_421) OR (NOT var_2086)) AND ((NOT var_417) OR (NOT var_2082)) AND _let_24 AND _let_25 AND ((NOT var_421) OR (NOT var_3166)) AND ((NOT var_417) OR (NOT var_3162)) AND ((NOT var_1051) OR (NOT var_421)) AND ((NOT var_1047) OR (NOT var_417)) AND ((NOT var_1051) OR (NOT var_1501)) AND ((NOT var_1047) OR (NOT var_1497)) AND ((NOT var_1051) OR (NOT var_1636)) AND ((NOT var_1047) OR (NOT var_1632)) AND ((NOT var_1051) OR (NOT var_1951)) AND ((NOT var_1047) OR (NOT var_1947)) AND ((NOT var_1051) OR (NOT var_2086)) AND ((NOT var_1047) OR (NOT var_2082)) AND ((NOT var_1051) OR (NOT var_2536)) AND ((NOT var_1047) OR (NOT var_2532)) AND _let_52 AND _let_53 AND ((NOT var_1501) OR (NOT var_421)) AND ((NOT var_1497) OR (NOT var_417)) AND ((NOT var_1501) OR (NOT var_1051)) AND ((NOT var_1497) OR (NOT var_1047)) AND ((NOT var_1501) OR (NOT var_1636)) AND ((NOT var_1497) OR (NOT var_1632)) AND _let_46 AND _let_47 AND ((NOT var_1501) OR (NOT var_2086)) AND ((NOT var_1497) OR (NOT var_2082)) AND ((NOT var_1501) OR (NOT var_2536)) AND ((NOT var_1497) OR (NOT var_2532)) AND ((NOT var_1501) OR (NOT var_3166)) AND ((NOT var_1497) OR (NOT var_3162)) AND ((NOT var_1636) OR (NOT var_421)) AND ((NOT var_1632) OR (NOT var_417)) AND ((NOT var_1636) OR (NOT var_1051)) AND ((NOT var_1632) OR (NOT var_1047)) AND ((NOT var_1636) OR (NOT var_1501)) AND ((NOT var_1632) OR (NOT var_1497)) AND ((NOT var_1636) OR (NOT var_1951)) AND ((NOT var_1632) OR (NOT var_1947)) AND _let_54 AND _let_55 AND ((NOT var_1636) OR (NOT var_2536)) AND ((NOT var_1632) OR (NOT var_2532)) AND ((NOT var_1636) OR (NOT var_3166)) AND ((NOT var_1632) OR (NOT var_3162)) AND ((NOT var_1951) OR (NOT var_421)) AND ((NOT var_1947) OR (NOT var_417)) AND ((NOT var_1951) OR (NOT var_1051)) AND ((NOT var_1947) OR (NOT var_1047)) AND _let_48 AND _let_49 AND ((NOT var_1951) OR (NOT var_1636)) AND ((NOT var_1947) OR (NOT var_1632)) AND ((NOT var_1951) OR (NOT var_2086)) AND ((NOT var_1947) OR (NOT var_2082)) AND ((NOT var_1951) OR (NOT var_2536)) AND ((NOT var_1947) OR (NOT var_2532)) AND ((NOT var_1951) OR (NOT var_3166)) AND ((NOT var_1947) OR (NOT var_3162)) AND ((NOT var_2086) OR (NOT var_421)) AND ((NOT var_2082) OR (NOT var_417)) AND ((NOT var_2086) OR (NOT var_1051)) AND ((NOT var_2082) OR (NOT var_1047)) AND ((NOT var_2086) OR (NOT var_1501)) AND ((NOT var_2082) OR (NOT var_1497)) AND _let_56 AND _let_57 AND ((NOT var_2086) OR (NOT var_1951)) AND ((NOT var_2082) OR (NOT var_1947)) AND ((NOT var_2086) OR (NOT var_2536)) AND ((NOT var_2082) OR (NOT var_2532)) AND ((NOT var_2086) OR (NOT var_3166)) AND ((NOT var_2082) OR (NOT var_3162)) AND _let_30 AND _let_31 AND ((NOT var_2536) OR (NOT var_1051)) AND ((NOT var_2532) OR (NOT var_1047)) AND ((NOT var_2536) OR (NOT var_1501)) AND ((NOT var_2532) OR (NOT var_1497)) AND ((NOT var_2536) OR (NOT var_1636)) AND ((NOT var_2532) OR (NOT var_1632)) AND ((NOT var_2536) OR (NOT var_1951)) AND ((NOT var_2532) OR (NOT var_1947)) AND ((NOT var_2536) OR (NOT var_2086)) AND ((NOT var_2532) OR (NOT var_2082)) AND ((NOT var_2536) OR (NOT var_3166)) AND ((NOT var_2532) OR (NOT var_3162)) AND ((NOT var_3166) OR (NOT var_421)) AND ((NOT var_3162) OR (NOT var_417)) AND _let_58 AND _let_59 AND ((NOT var_3166) OR (NOT var_1501)) AND ((NOT var_3162) OR (NOT var_1497)) AND ((NOT var_3166) OR (NOT var_1636)) AND ((NOT var_3162) OR (NOT var_1632)) AND ((NOT var_3166) OR (NOT var_1951)) AND ((NOT var_3162) OR (NOT var_1947)) AND ((NOT var_3166) OR (NOT var_2086)) AND ((NOT var_3162) OR (NOT var_2082)) AND ((NOT var_3166) OR (NOT var_2536)) AND ((NOT var_3162) OR (NOT var_2532)) AND ((NOT var_511) OR (NOT var_1231)) AND ((NOT var_507) OR (NOT var_1227)) AND ((NOT var_511) OR (NOT var_1636)) AND ((NOT var_507) OR (NOT var_1632)) AND ((NOT var_511) OR (NOT var_1816)) AND ((NOT var_507) OR (NOT var_1812)) AND ((NOT var_511) OR (NOT var_2086)) AND ((NOT var_507) OR (NOT var_2082)) AND ((NOT var_511) OR (NOT var_2131)) AND ((NOT var_507) OR (NOT var_2127)) AND _let_32 AND _let_33 AND ((NOT var_511) OR (NOT var_3211)) AND ((NOT var_507) OR (NOT var_3207)) AND ((NOT var_1231) OR (NOT var_511)) AND ((NOT var_1227) OR (NOT var_507)) AND ((NOT var_1231) OR (NOT var_1636)) AND ((NOT var_1227) OR (NOT var_1632)) AND ((NOT var_1231) OR (NOT var_1816)) AND ((NOT var_1227) OR (NOT var_1812)) AND ((NOT var_1231) OR (NOT var_2086)) AND ((NOT var_1227) OR (NOT var_2082)) AND ((NOT var_1231) OR (NOT var_2131)) AND ((NOT var_1227) OR (NOT var_2127)) AND ((NOT var_1231) OR (NOT var_2716)) AND ((NOT var_1227) OR (NOT var_2712)) AND _let_60 AND _let_61 AND ((NOT var_1636) OR (NOT var_511)) AND ((NOT var_1632) OR (NOT var_507)) AND ((NOT var_1636) OR (NOT var_1231)) AND ((NOT var_1632) OR (NOT var_1227)) AND ((NOT var_1636) OR (NOT var_1816)) AND ((NOT var_1632) OR (NOT var_1812)) AND _let_54 AND _let_55 AND ((NOT var_1636) OR (NOT var_2131)) AND ((NOT var_1632) OR (NOT var_2127)) AND ((NOT var_1636) OR (NOT var_2716)) AND ((NOT var_1632) OR (NOT var_2712)) AND ((NOT var_1636) OR (NOT var_3211)) AND ((NOT var_1632) OR (NOT var_3207)) AND ((NOT var_1816) OR (NOT var_511)) AND ((NOT var_1812) OR (NOT var_507)) AND ((NOT var_1816) OR (NOT var_1231)) AND ((NOT var_1812) OR (NOT var_1227)) AND ((NOT var_1816) OR (NOT var_1636)) AND ((NOT var_1812) OR (NOT var_1632)) AND ((NOT var_1816) OR (NOT var_2086)) AND ((NOT var_1812) OR (NOT var_2082)) AND _let_62 AND _let_63 AND ((NOT var_1816) OR (NOT var_2716)) AND ((NOT var_1812) OR (NOT var_2712)) AND ((NOT var_1816) OR (NOT var_3211)) AND ((NOT var_1812) OR (NOT var_3207)) AND ((NOT var_2086) OR (NOT var_511)) AND ((NOT var_2082) OR (NOT var_507)) AND ((NOT var_2086) OR (NOT var_1231)) AND ((NOT var_2082) OR (NOT var_1227)) AND _let_56 AND _let_57 AND ((NOT var_2086) OR (NOT var_1816)) AND ((NOT var_2082) OR (NOT var_1812)) AND ((NOT var_2086) OR (NOT var_2131)) AND ((NOT var_2082) OR (NOT var_2127)) AND ((NOT var_2086) OR (NOT var_2716)) AND ((NOT var_2082) OR (NOT var_2712)) AND ((NOT var_2086) OR (NOT var_3211)) AND ((NOT var_2082) OR (NOT var_3207)) AND ((NOT var_2131) OR (NOT var_511)) AND ((NOT var_2127) OR (NOT var_507)) AND ((NOT var_2131) OR (NOT var_1231)) AND ((NOT var_2127) OR (NOT var_1227)) AND ((NOT var_2131) OR (NOT var_1636)) AND ((NOT var_2127) OR (NOT var_1632)) AND _let_64 AND _let_65 AND ((NOT var_2131) OR (NOT var_2086)) AND ((NOT var_2127) OR (NOT var_2082)) AND ((NOT var_2131) OR (NOT var_2716)) AND ((NOT var_2127) OR (NOT var_2712)) AND ((NOT var_2131) OR (NOT var_3211)) AND ((NOT var_2127) OR (NOT var_3207)) AND _let_38 AND _let_39 AND ((NOT var_2716) OR (NOT var_1231)) AND ((NOT var_2712) OR (NOT var_1227)) AND ((NOT var_2716) OR (NOT var_1636)) AND ((NOT var_2712) OR (NOT var_1632)) AND ((NOT var_2716) OR (NOT var_1816)) AND ((NOT var_2712) OR (NOT var_1812)) AND ((NOT var_2716) OR (NOT var_2086)) AND ((NOT var_2712) OR (NOT var_2082)) AND ((NOT var_2716) OR (NOT var_2131)) AND ((NOT var_2712) OR (NOT var_2127)) AND ((NOT var_2716) OR (NOT var_3211)) AND ((NOT var_2712) OR (NOT var_3207)) AND ((NOT var_3211) OR (NOT var_511)) AND ((NOT var_3207) OR (NOT var_507)) AND _let_66 AND _let_67 AND ((NOT var_3211) OR (NOT var_1636)) AND ((NOT var_3207) OR (NOT var_1632)) AND ((NOT var_3211) OR (NOT var_1816)) AND ((NOT var_3207) OR (NOT var_1812)) AND ((NOT var_3211) OR (NOT var_2086)) AND ((NOT var_3207) OR (NOT var_2082)) AND ((NOT var_3211) OR (NOT var_2131)) AND ((NOT var_3207) OR (NOT var_2127)) AND ((NOT var_3211) OR (NOT var_2716)) AND ((NOT var_3207) OR (NOT var_2712)) AND ((NOT var_1321) OR (NOT var_1816)) AND ((NOT var_1317) OR (NOT var_1812)) AND ((NOT var_1321) OR (NOT var_1996)) AND ((NOT var_1317) OR (NOT var_1992)) AND ((NOT var_1321) OR (NOT var_2131)) AND ((NOT var_1317) OR (NOT var_2127)) AND ((NOT var_1321) OR (NOT var_2896)) AND ((NOT var_1317) OR (NOT var_2892)) AND ((NOT var_1816) OR (NOT var_1321)) AND ((NOT var_1812) OR (NOT var_1317)) AND ((NOT var_1816) OR (NOT var_1996)) AND ((NOT var_1812) OR (NOT var_1992)) AND _let_62 AND _let_63 AND ((NOT var_1816) OR (NOT var_2896)) AND ((NOT var_1812) OR (NOT var_2892)) AND ((NOT var_1996) OR (NOT var_1321)) AND ((NOT var_1992) OR (NOT var_1317)) AND ((NOT var_1996) OR (NOT var_1816)) AND ((NOT var_1992) OR (NOT var_1812)) AND ((NOT var_1996) OR (NOT var_2131)) AND ((NOT var_1992) OR (NOT var_2127)) AND ((NOT var_1996) OR (NOT var_2896)) AND ((NOT var_1992) OR (NOT var_2892)) AND ((NOT var_2131) OR (NOT var_1321)) AND ((NOT var_2127) OR (NOT var_1317)) AND _let_64 AND _let_65 AND ((NOT var_2131) OR (NOT var_1996)) AND ((NOT var_2127) OR (NOT var_1992)) AND ((NOT var_2131) OR (NOT var_2896)) AND ((NOT var_2127) OR (NOT var_2892)) AND ((NOT var_2896) OR (NOT var_1321)) AND ((NOT var_2892) OR (NOT var_1317)) AND ((NOT var_2896) OR (NOT var_1816)) AND ((NOT var_2892) OR (NOT var_1812)) AND ((NOT var_2896) OR (NOT var_1996)) AND ((NOT var_2892) OR (NOT var_1992)) AND ((NOT var_2896) OR (NOT var_2131)) AND ((NOT var_2892) OR (NOT var_2127)) AND ((NOT var_1411) OR (NOT var_1996)) AND ((NOT var_1407) OR (NOT var_1992)) AND ((NOT var_1411) OR (NOT var_2986)) AND ((NOT var_1407) OR (NOT var_2982)) AND ((NOT var_1996) OR (NOT var_1411)) AND ((NOT var_1992) OR (NOT var_1407)) AND ((NOT var_1996) OR (NOT var_2986)) AND ((NOT var_1992) OR (NOT var_2982)) AND ((NOT var_2986) OR (NOT var_1411)) AND ((NOT var_2982) OR (NOT var_1407)) AND ((NOT var_2986) OR (NOT var_1996)) AND ((NOT var_2982) OR (NOT var_1992)) AND ((NOT var_601) OR (NOT var_2401)) AND ((NOT var_597) OR (NOT var_2397)) AND ((NOT var_2401) OR (NOT var_601)) AND ((NOT var_2397) OR (NOT var_597)) AND ((NOT var_691) OR (NOT var_2221)) AND ((NOT var_687) OR (NOT var_2217)) AND ((NOT var_691) OR (NOT var_2401)) AND ((NOT var_687) OR (NOT var_2397)) AND ((NOT var_691) OR (NOT var_2581)) AND ((NOT var_687) OR (NOT var_2577)) AND ((NOT var_2221) OR (NOT var_691)) AND ((NOT var_2217) OR (NOT var_687)) AND ((NOT var_2221) OR (NOT var_2401)) AND ((NOT var_2217) OR (NOT var_2397)) AND _let_68 AND _let_69 AND ((NOT var_2401) OR (NOT var_691)) AND ((NOT var_2397) OR (NOT var_687)) AND ((NOT var_2401) OR (NOT var_2221)) AND ((NOT var_2397) OR (NOT var_2217)) AND ((NOT var_2401) OR (NOT var_2581)) AND ((NOT var_2397) OR (NOT var_2577)) AND ((NOT var_2581) OR (NOT var_691)) AND ((NOT var_2577) OR (NOT var_687)) AND _let_70 AND _let_71 AND ((NOT var_2581) OR (NOT var_2401)) AND ((NOT var_2577) OR (NOT var_2397)) AND ((NOT var_871) OR (NOT var_1681)) AND ((NOT var_867) OR (NOT var_1677)) AND ((NOT var_871) OR (NOT var_2221)) AND ((NOT var_867) OR (NOT var_2217)) AND ((NOT var_871) OR (NOT var_2311)) AND ((NOT var_867) OR (NOT var_2307)) AND ((NOT var_871) OR (NOT var_2581)) AND ((NOT var_867) OR (NOT var_2577)) AND ((NOT var_871) OR (NOT var_2761)) AND ((NOT var_867) OR (NOT var_2757)) AND _let_44 AND _let_45 AND ((NOT var_871) OR (NOT var_3301)) AND ((NOT var_867) OR (NOT var_3297)) AND ((NOT var_1681) OR (NOT var_871)) AND ((NOT var_1677) OR (NOT var_867)) AND ((NOT var_1681) OR (NOT var_2221)) AND ((NOT var_1677) OR (NOT var_2217)) AND ((NOT var_1681) OR (NOT var_2311)) AND ((NOT var_1677) OR (NOT var_2307)) AND ((NOT var_1681) OR (NOT var_2581)) AND ((NOT var_1677) OR (NOT var_2577)) AND ((NOT var_1681) OR (NOT var_2761)) AND ((NOT var_1677) OR (NOT var_2757)) AND ((NOT var_1681) OR (NOT var_3076)) AND ((NOT var_1677) OR (NOT var_3072)) AND _let_72 AND _let_73 AND ((NOT var_2221) OR (NOT var_871)) AND ((NOT var_2217) OR (NOT var_867)) AND ((NOT var_2221) OR (NOT var_1681)) AND ((NOT var_2217) OR (NOT var_1677)) AND ((NOT var_2221) OR (NOT var_2311)) AND ((NOT var_2217) OR (NOT var_2307)) AND _let_68 AND _let_69 AND ((NOT var_2221) OR (NOT var_2761)) AND ((NOT var_2217) OR (NOT var_2757)) AND ((NOT var_2221) OR (NOT var_3076)) AND ((NOT var_2217) OR (NOT var_3072)) AND ((NOT var_2221) OR (NOT var_3301)) AND ((NOT var_2217) OR (NOT var_3297)) AND ((NOT var_2311) OR (NOT var_871)) AND ((NOT var_2307) OR (NOT var_867)) AND ((NOT var_2311) OR (NOT var_1681)) AND ((NOT var_2307) OR (NOT var_1677)) AND ((NOT var_2311) OR (NOT var_2221)) AND ((NOT var_2307) OR (NOT var_2217)) AND ((NOT var_2311) OR (NOT var_2581)) AND ((NOT var_2307) OR (NOT var_2577)) AND _let_74 AND _let_75 AND ((NOT var_2311) OR (NOT var_3076)) AND ((NOT var_2307) OR (NOT var_3072)) AND ((NOT var_2311) OR (NOT var_3301)) AND ((NOT var_2307) OR (NOT var_3297)) AND ((NOT var_2581) OR (NOT var_871)) AND ((NOT var_2577) OR (NOT var_867)) AND ((NOT var_2581) OR (NOT var_1681)) AND ((NOT var_2577) OR (NOT var_1677)) AND _let_70 AND _let_71 AND ((NOT var_2581) OR (NOT var_2311)) AND ((NOT var_2577) OR (NOT var_2307)) AND ((NOT var_2581) OR (NOT var_2761)) AND ((NOT var_2577) OR (NOT var_2757)) AND ((NOT var_2581) OR (NOT var_3076)) AND ((NOT var_2577) OR (NOT var_3072)) AND ((NOT var_2581) OR (NOT var_3301)) AND ((NOT var_2577) OR (NOT var_3297)) AND ((NOT var_2761) OR (NOT var_871)) AND ((NOT var_2757) OR (NOT var_867)) AND ((NOT var_2761) OR (NOT var_1681)) AND ((NOT var_2757) OR (NOT var_1677)) AND ((NOT var_2761) OR (NOT var_2221)) AND ((NOT var_2757) OR (NOT var_2217)) AND _let_76 AND _let_77 AND ((NOT var_2761) OR (NOT var_2581)) AND ((NOT var_2757) OR (NOT var_2577)) AND ((NOT var_2761) OR (NOT var_3076)) AND ((NOT var_2757) OR (NOT var_3072)) AND ((NOT var_2761) OR (NOT var_3301)) AND ((NOT var_2757) OR (NOT var_3297)) AND _let_50 AND _let_51 AND ((NOT var_3076) OR (NOT var_1681)) AND ((NOT var_3072) OR (NOT var_1677)) AND ((NOT var_3076) OR (NOT var_2221)) AND ((NOT var_3072) OR (NOT var_2217)) AND ((NOT var_3076) OR (NOT var_2311)) AND ((NOT var_3072) OR (NOT var_2307)) AND ((NOT var_3076) OR (NOT var_2581)) AND ((NOT var_3072) OR (NOT var_2577)) AND ((NOT var_3076) OR (NOT var_2761)) AND ((NOT var_3072) OR (NOT var_2757)) AND ((NOT var_3076) OR (NOT var_3301)) AND ((NOT var_3072) OR (NOT var_3297)) AND ((NOT var_3301) OR (NOT var_871)) AND ((NOT var_3297) OR (NOT var_867)) AND _let_78 AND _let_79 AND ((NOT var_3301) OR (NOT var_2221)) AND ((NOT var_3297) OR (NOT var_2217)) AND ((NOT var_3301) OR (NOT var_2311)) AND ((NOT var_3297) OR (NOT var_2307)) AND ((NOT var_3301) OR (NOT var_2581)) AND ((NOT var_3297) OR (NOT var_2577)) AND ((NOT var_3301) OR (NOT var_2761)) AND ((NOT var_3297) OR (NOT var_2757)) AND ((NOT var_3301) OR (NOT var_3076)) AND ((NOT var_3297) OR (NOT var_3072)) AND ((NOT var_1051) OR (NOT var_1861)) AND ((NOT var_1047) OR (NOT var_1857)) AND ((NOT var_1051) OR (NOT var_2311)) AND ((NOT var_1047) OR (NOT var_2307)) AND ((NOT var_1051) OR (NOT var_2446)) AND ((NOT var_1047) OR (NOT var_2442)) AND ((NOT var_1051) OR (NOT var_2761)) AND ((NOT var_1047) OR (NOT var_2757)) AND ((NOT var_1051) OR (NOT var_2941)) AND ((NOT var_1047) OR (NOT var_2937)) AND _let_52 AND _let_53 AND ((NOT var_1051) OR (NOT var_3391)) AND ((NOT var_1047) OR (NOT var_3387)) AND ((NOT var_1861) OR (NOT var_1051)) AND ((NOT var_1857) OR (NOT var_1047)) AND ((NOT var_1861) OR (NOT var_2311)) AND ((NOT var_1857) OR (NOT var_2307)) AND ((NOT var_1861) OR (NOT var_2446)) AND ((NOT var_1857) OR (NOT var_2442)) AND ((NOT var_1861) OR (NOT var_2761)) AND ((NOT var_1857) OR (NOT var_2757)) AND ((NOT var_1861) OR (NOT var_2941)) AND ((NOT var_1857) OR (NOT var_2937)) AND ((NOT var_1861) OR (NOT var_3166)) AND ((NOT var_1857) OR (NOT var_3162)) AND _let_80 AND _let_81 AND ((NOT var_2311) OR (NOT var_1051)) AND ((NOT var_2307) OR (NOT var_1047)) AND ((NOT var_2311) OR (NOT var_1861)) AND ((NOT var_2307) OR (NOT var_1857)) AND ((NOT var_2311) OR (NOT var_2446)) AND ((NOT var_2307) OR (NOT var_2442)) AND _let_74 AND _let_75 AND ((NOT var_2311) OR (NOT var_2941)) AND ((NOT var_2307) OR (NOT var_2937)) AND ((NOT var_2311) OR (NOT var_3166)) AND ((NOT var_2307) OR (NOT var_3162)) AND ((NOT var_2311) OR (NOT var_3391)) AND ((NOT var_2307) OR (NOT var_3387)) AND ((NOT var_2446) OR (NOT var_1051)) AND ((NOT var_2442) OR (NOT var_1047)) AND ((NOT var_2446) OR (NOT var_1861)) AND ((NOT var_2442) OR (NOT var_1857)) AND ((NOT var_2446) OR (NOT var_2311)) AND ((NOT var_2442) OR (NOT var_2307)) AND ((NOT var_2446) OR (NOT var_2761)) AND ((NOT var_2442) OR (NOT var_2757)) AND _let_82 AND _let_83 AND ((NOT var_2446) OR (NOT var_3166)) AND ((NOT var_2442) OR (NOT var_3162)) AND ((NOT var_2446) OR (NOT var_3391)) AND ((NOT var_2442) OR (NOT var_3387)) AND ((NOT var_2761) OR (NOT var_1051)) AND ((NOT var_2757) OR (NOT var_1047)) AND ((NOT var_2761) OR (NOT var_1861)) AND ((NOT var_2757) OR (NOT var_1857)) AND _let_76 AND _let_77 AND ((NOT var_2761) OR (NOT var_2446)) AND ((NOT var_2757) OR (NOT var_2442)) AND ((NOT var_2761) OR (NOT var_2941)) AND ((NOT var_2757) OR (NOT var_2937)) AND ((NOT var_2761) OR (NOT var_3166)) AND ((NOT var_2757) OR (NOT var_3162)) AND ((NOT var_2761) OR (NOT var_3391)) AND ((NOT var_2757) OR (NOT var_3387)) AND ((NOT var_2941) OR (NOT var_1051)) AND ((NOT var_2937) OR (NOT var_1047)) AND ((NOT var_2941) OR (NOT var_1861)) AND ((NOT var_2937) OR (NOT var_1857)) AND ((NOT var_2941) OR (NOT var_2311)) AND ((NOT var_2937) OR (NOT var_2307)) AND _let_84 AND _let_85 AND ((NOT var_2941) OR (NOT var_2761)) AND ((NOT var_2937) OR (NOT var_2757)) AND ((NOT var_2941) OR (NOT var_3166)) AND ((NOT var_2937) OR (NOT var_3162)) AND ((NOT var_2941) OR (NOT var_3391)) AND ((NOT var_2937) OR (NOT var_3387)) AND _let_58 AND _let_59 AND ((NOT var_3166) OR (NOT var_1861)) AND ((NOT var_3162) OR (NOT var_1857)) AND ((NOT var_3166) OR (NOT var_2311)) AND ((NOT var_3162) OR (NOT var_2307)) AND ((NOT var_3166) OR (NOT var_2446)) AND ((NOT var_3162) OR (NOT var_2442)) AND ((NOT var_3166) OR (NOT var_2761)) AND ((NOT var_3162) OR (NOT var_2757)) AND ((NOT var_3166) OR (NOT var_2941)) AND ((NOT var_3162) OR (NOT var_2937)) AND ((NOT var_3166) OR (NOT var_3391)) AND ((NOT var_3162) OR (NOT var_3387)) AND ((NOT var_3391) OR (NOT var_1051)) AND ((NOT var_3387) OR (NOT var_1047)) AND _let_86 AND _let_87 AND ((NOT var_3391) OR (NOT var_2311)) AND ((NOT var_3387) OR (NOT var_2307)) AND ((NOT var_3391) OR (NOT var_2446)) AND ((NOT var_3387) OR (NOT var_2442)) AND ((NOT var_3391) OR (NOT var_2761)) AND ((NOT var_3387) OR (NOT var_2757)) AND ((NOT var_3391) OR (NOT var_2941)) AND ((NOT var_3387) OR (NOT var_2937)) AND ((NOT var_3391) OR (NOT var_3166)) AND ((NOT var_3387) OR (NOT var_3162)) AND ((NOT var_1231) OR (NOT var_2041)) AND ((NOT var_1227) OR (NOT var_2037)) AND ((NOT var_1231) OR (NOT var_2446)) AND ((NOT var_1227) OR (NOT var_2442)) AND ((NOT var_1231) OR (NOT var_2626)) AND ((NOT var_1227) OR (NOT var_2622)) AND ((NOT var_1231) OR (NOT var_2941)) AND ((NOT var_1227) OR (NOT var_2937)) AND ((NOT var_1231) OR (NOT var_3031)) AND ((NOT var_1227) OR (NOT var_3027)) AND _let_60 AND _let_61 AND ((NOT var_1231) OR (NOT var_3436)) AND ((NOT var_1227) OR (NOT var_3432)) AND ((NOT var_2041) OR (NOT var_1231)) AND ((NOT var_2037) OR (NOT var_1227)) AND ((NOT var_2041) OR (NOT var_2446)) AND ((NOT var_2037) OR (NOT var_2442)) AND ((NOT var_2041) OR (NOT var_2626)) AND ((NOT var_2037) OR (NOT var_2622)) AND ((NOT var_2041) OR (NOT var_2941)) AND ((NOT var_2037) OR (NOT var_2937)) AND ((NOT var_2041) OR (NOT var_3031)) AND ((NOT var_2037) OR (NOT var_3027)) AND ((NOT var_2041) OR (NOT var_3211)) AND ((NOT var_2037) OR (NOT var_3207)) AND _let_88 AND _let_89 AND ((NOT var_2446) OR (NOT var_1231)) AND ((NOT var_2442) OR (NOT var_1227)) AND ((NOT var_2446) OR (NOT var_2041)) AND ((NOT var_2442) OR (NOT var_2037)) AND ((NOT var_2446) OR (NOT var_2626)) AND ((NOT var_2442) OR (NOT var_2622)) AND _let_82 AND _let_83 AND ((NOT var_2446) OR (NOT var_3031)) AND ((NOT var_2442) OR (NOT var_3027)) AND ((NOT var_2446) OR (NOT var_3211)) AND ((NOT var_2442) OR (NOT var_3207)) AND ((NOT var_2446) OR (NOT var_3436)) AND ((NOT var_2442) OR (NOT var_3432)) AND ((NOT var_2626) OR (NOT var_1231)) AND ((NOT var_2622) OR (NOT var_1227)) AND ((NOT var_2626) OR (NOT var_2041)) AND ((NOT var_2622) OR (NOT var_2037)) AND ((NOT var_2626) OR (NOT var_2446)) AND ((NOT var_2622) OR (NOT var_2442)) AND ((NOT var_2626) OR (NOT var_2941)) AND ((NOT var_2622) OR (NOT var_2937)) AND _let_90 AND _let_91 AND ((NOT var_2626) OR (NOT var_3211)) AND ((NOT var_2622) OR (NOT var_3207)) AND ((NOT var_2626) OR (NOT var_3436)) AND ((NOT var_2622) OR (NOT var_3432)) AND ((NOT var_2941) OR (NOT var_1231)) AND ((NOT var_2937) OR (NOT var_1227)) AND ((NOT var_2941) OR (NOT var_2041)) AND ((NOT var_2937) OR (NOT var_2037)) AND _let_84 AND _let_85 AND ((NOT var_2941) OR (NOT var_2626)) AND ((NOT var_2937) OR (NOT var_2622)) AND ((NOT var_2941) OR (NOT var_3031)) AND ((NOT var_2937) OR (NOT var_3027)) AND ((NOT var_2941) OR (NOT var_3211)) AND ((NOT var_2937) OR (NOT var_3207)) AND ((NOT var_2941) OR (NOT var_3436)) AND ((NOT var_2937) OR (NOT var_3432)) AND ((NOT var_3031) OR (NOT var_1231)) AND ((NOT var_3027) OR (NOT var_1227)) AND ((NOT var_3031) OR (NOT var_2041)) AND ((NOT var_3027) OR (NOT var_2037)) AND ((NOT var_3031) OR (NOT var_2446)) AND ((NOT var_3027) OR (NOT var_2442)) AND _let_92 AND _let_93 AND ((NOT var_3031) OR (NOT var_2941)) AND ((NOT var_3027) OR (NOT var_2937)) AND ((NOT var_3031) OR (NOT var_3211)) AND ((NOT var_3027) OR (NOT var_3207)) AND ((NOT var_3031) OR (NOT var_3436)) AND ((NOT var_3027) OR (NOT var_3432)) AND _let_66 AND _let_67 AND ((NOT var_3211) OR (NOT var_2041)) AND ((NOT var_3207) OR (NOT var_2037)) AND ((NOT var_3211) OR (NOT var_2446)) AND ((NOT var_3207) OR (NOT var_2442)) AND ((NOT var_3211) OR (NOT var_2626)) AND ((NOT var_3207) OR (NOT var_2622)) AND ((NOT var_3211) OR (NOT var_2941)) AND ((NOT var_3207) OR (NOT var_2937)) AND ((NOT var_3211) OR (NOT var_3031)) AND ((NOT var_3207) OR (NOT var_3027)) AND ((NOT var_3211) OR (NOT var_3436)) AND ((NOT var_3207) OR (NOT var_3432)) AND ((NOT var_3436) OR (NOT var_1231)) AND ((NOT var_3432) OR (NOT var_1227)) AND _let_94 AND _let_95 AND ((NOT var_3436) OR (NOT var_2446)) AND ((NOT var_3432) OR (NOT var_2442)) AND ((NOT var_3436) OR (NOT var_2626)) AND ((NOT var_3432) OR (NOT var_2622)) AND ((NOT var_3436) OR (NOT var_2941)) AND ((NOT var_3432) OR (NOT var_2937)) AND ((NOT var_3436) OR (NOT var_3031)) AND ((NOT var_3432) OR (NOT var_3027)) AND ((NOT var_3436) OR (NOT var_3211)) AND ((NOT var_3432) OR (NOT var_3207)) AND ((NOT var_1321) OR (NOT var_2626)) AND ((NOT var_1317) OR (NOT var_2622)) AND ((NOT var_1321) OR (NOT var_2806)) AND ((NOT var_1317) OR (NOT var_2802)) AND ((NOT var_1321) OR (NOT var_3031)) AND ((NOT var_1317) OR (NOT var_3027)) AND ((NOT var_2626) OR (NOT var_1321)) AND ((NOT var_2622) OR (NOT var_1317)) AND ((NOT var_2626) OR (NOT var_2806)) AND ((NOT var_2622) OR (NOT var_2802)) AND _let_90 AND _let_91 AND ((NOT var_2806) OR (NOT var_1321)) AND ((NOT var_2802) OR (NOT var_1317)) AND ((NOT var_2806) OR (NOT var_2626)) AND ((NOT var_2802) OR (NOT var_2622)) AND ((NOT var_2806) OR (NOT var_3031)) AND ((NOT var_2802) OR (NOT var_3027)) AND ((NOT var_3031) OR (NOT var_1321)) AND ((NOT var_3027) OR (NOT var_1317)) AND _let_92 AND _let_93 AND ((NOT var_3031) OR (NOT var_2806)) AND ((NOT var_3027) OR (NOT var_2802)) AND ((NOT var_1411) OR (NOT var_2806)) AND ((NOT var_1407) OR (NOT var_2802)) AND ((NOT var_2806) OR (NOT var_1411)) AND ((NOT var_2802) OR (NOT var_1407)) AND ((NOT var_1681) OR (NOT var_2491)) AND ((NOT var_1677) OR (NOT var_2487)) AND ((NOT var_1681) OR (NOT var_3256)) AND ((NOT var_1677) OR (NOT var_3252)) AND _let_72 AND _let_73 AND ((NOT var_2491) OR (NOT var_1681)) AND ((NOT var_2487) OR (NOT var_1677)) AND ((NOT var_2491) OR (NOT var_3256)) AND ((NOT var_2487) OR (NOT var_3252)) AND ((NOT var_2491) OR (NOT var_3301)) AND ((NOT var_2487) OR (NOT var_3297)) AND ((NOT var_3256) OR (NOT var_1681)) AND ((NOT var_3252) OR (NOT var_1677)) AND ((NOT var_3256) OR (NOT var_2491)) AND ((NOT var_3252) OR (NOT var_2487)) AND ((NOT var_3256) OR (NOT var_3301)) AND ((NOT var_3252) OR (NOT var_3297)) AND _let_78 AND _let_79 AND ((NOT var_3301) OR (NOT var_2491)) AND ((NOT var_3297) OR (NOT var_2487)) AND ((NOT var_3301) OR (NOT var_3256)) AND ((NOT var_3297) OR (NOT var_3252)) AND ((NOT var_1861) OR (NOT var_2671)) AND ((NOT var_1857) OR (NOT var_2667)) AND ((NOT var_1861) OR (NOT var_3121)) AND ((NOT var_1857) OR (NOT var_3117)) AND ((NOT var_1861) OR (NOT var_3256)) AND ((NOT var_1857) OR (NOT var_3252)) AND _let_80 AND _let_81 AND ((NOT var_2671) OR (NOT var_1861)) AND ((NOT var_2667) OR (NOT var_1857)) AND ((NOT var_2671) OR (NOT var_3121)) AND ((NOT var_2667) OR (NOT var_3117)) AND ((NOT var_2671) OR (NOT var_3256)) AND ((NOT var_2667) OR (NOT var_3252)) AND ((NOT var_2671) OR (NOT var_3391)) AND ((NOT var_2667) OR (NOT var_3387)) AND ((NOT var_3121) OR (NOT var_1861)) AND ((NOT var_3117) OR (NOT var_1857)) AND ((NOT var_3121) OR (NOT var_2671)) AND ((NOT var_3117) OR (NOT var_2667)) AND ((NOT var_3121) OR (NOT var_3256)) AND ((NOT var_3117) OR (NOT var_3252)) AND ((NOT var_3121) OR (NOT var_3391)) AND ((NOT var_3117) OR (NOT var_3387)) AND ((NOT var_3256) OR (NOT var_1861)) AND ((NOT var_3252) OR (NOT var_1857)) AND ((NOT var_3256) OR (NOT var_2671)) AND ((NOT var_3252) OR (NOT var_2667)) AND ((NOT var_3256) OR (NOT var_3121)) AND ((NOT var_3252) OR (NOT var_3117)) AND ((NOT var_3256) OR (NOT var_3391)) AND ((NOT var_3252) OR (NOT var_3387)) AND _let_86 AND _let_87 AND ((NOT var_3391) OR (NOT var_2671)) AND ((NOT var_3387) OR (NOT var_2667)) AND ((NOT var_3391) OR (NOT var_3121)) AND ((NOT var_3387) OR (NOT var_3117)) AND ((NOT var_3391) OR (NOT var_3256)) AND ((NOT var_3387) OR (NOT var_3252)) AND ((NOT var_2041) OR (NOT var_2851)) AND ((NOT var_2037) OR (NOT var_2847)) AND ((NOT var_2041) OR (NOT var_3121)) AND ((NOT var_2037) OR (NOT var_3117)) AND _let_88 AND _let_89 AND ((NOT var_2851) OR (NOT var_2041)) AND ((NOT var_2847) OR (NOT var_2037)) AND ((NOT var_2851) OR (NOT var_3121)) AND ((NOT var_2847) OR (NOT var_3117)) AND ((NOT var_2851) OR (NOT var_3436)) AND ((NOT var_2847) OR (NOT var_3432)) AND ((NOT var_3121) OR (NOT var_2041)) AND ((NOT var_3117) OR (NOT var_2037)) AND ((NOT var_3121) OR (NOT var_2851)) AND ((NOT var_3117) OR (NOT var_2847)) AND ((NOT var_3121) OR (NOT var_3436)) AND ((NOT var_3117) OR (NOT var_3432)) AND _let_94 AND _let_95 AND ((NOT var_3436) OR (NOT var_2851)) AND ((NOT var_3432) OR (NOT var_2847)) AND ((NOT var_3436) OR (NOT var_3121)) AND ((NOT var_3432) OR (NOT var_3117)) AND ((NOT var_2491) OR (NOT var_3481)) AND ((NOT var_2487) OR (NOT var_3477)) AND ((NOT var_3481) OR (NOT var_2491)) AND ((NOT var_3477) OR (NOT var_2487)) AND ((NOT var_2671) OR (NOT var_3346)) AND ((NOT var_2667) OR (NOT var_3342)) AND ((NOT var_2671) OR (NOT var_3481)) AND ((NOT var_2667) OR (NOT var_3477)) AND ((NOT var_3346) OR (NOT var_2671)) AND ((NOT var_3342) OR (NOT var_2667)) AND ((NOT var_3346) OR (NOT var_3481)) AND ((NOT var_3342) OR (NOT var_3477)) AND ((NOT var_3481) OR (NOT var_2671)) AND ((NOT var_3477) OR (NOT var_2667)) AND ((NOT var_3481) OR (NOT var_3346)) AND ((NOT var_3477) OR (NOT var_3342)) AND ((NOT var_2851) OR (NOT var_3346)) AND ((NOT var_2847) OR (NOT var_3342)) AND ((NOT var_3346) OR (NOT var_2851)) AND ((NOT var_3342) OR (NOT var_2847)) AND ((NOT var_106) OR (NOT var_151)) AND ((NOT var_102) OR (NOT var_147)) AND ((NOT var_151) OR (NOT var_106)) AND ((NOT var_147) OR (NOT var_102)) AND ((NOT var_241) OR (NOT var_286)) AND ((NOT var_237) OR (NOT var_282)) AND ((NOT var_286) OR (NOT var_241)) AND ((NOT var_282) OR (NOT var_237)) AND ((NOT var_331) OR (NOT var_376)) AND ((NOT var_327) OR (NOT var_372)) AND ((NOT var_376) OR (NOT var_331)) AND ((NOT var_372) OR (NOT var_327)) AND ((NOT var_466) OR (NOT var_511)) AND ((NOT var_462) OR (NOT var_507)) AND ((NOT var_511) OR (NOT var_466)) AND ((NOT var_507) OR (NOT var_462)) AND ((NOT var_556) OR (NOT var_601)) AND ((NOT var_552) OR (NOT var_597)) AND ((NOT var_601) OR (NOT var_556)) AND ((NOT var_597) OR (NOT var_552)) AND ((NOT var_646) OR (NOT var_691)) AND ((NOT var_642) OR (NOT var_687)) AND ((NOT var_691) OR (NOT var_646)) AND ((NOT var_687) OR (NOT var_642)) AND ((NOT var_736) OR (NOT var_781)) AND ((NOT var_732) OR (NOT var_777)) AND ((NOT var_736) OR (NOT var_826)) AND ((NOT var_732) OR (NOT var_822)) AND ((NOT var_736) OR (NOT var_871)) AND ((NOT var_732) OR (NOT var_867)) AND ((NOT var_781) OR (NOT var_736)) AND ((NOT var_777) OR (NOT var_732)) AND ((NOT var_781) OR (NOT var_826)) AND ((NOT var_777) OR (NOT var_822)) AND ((NOT var_781) OR (NOT var_871)) AND ((NOT var_777) OR (NOT var_867)) AND ((NOT var_826) OR (NOT var_736)) AND ((NOT var_822) OR (NOT var_732)) AND ((NOT var_826) OR (NOT var_781)) AND ((NOT var_822) OR (NOT var_777)) AND ((NOT var_826) OR (NOT var_871)) AND ((NOT var_822) OR (NOT var_867)) AND ((NOT var_871) OR (NOT var_736)) AND ((NOT var_867) OR (NOT var_732)) AND ((NOT var_871) OR (NOT var_781)) AND ((NOT var_867) OR (NOT var_777)) AND ((NOT var_871) OR (NOT var_826)) AND ((NOT var_867) OR (NOT var_822)) AND ((NOT var_916) OR (NOT var_961)) AND ((NOT var_912) OR (NOT var_957)) AND ((NOT var_916) OR (NOT var_1006)) AND ((NOT var_912) OR (NOT var_1002)) AND ((NOT var_916) OR (NOT var_1051)) AND ((NOT var_912) OR (NOT var_1047)) AND ((NOT var_961) OR (NOT var_916)) AND ((NOT var_957) OR (NOT var_912)) AND ((NOT var_961) OR (NOT var_1006)) AND ((NOT var_957) OR (NOT var_1002)) AND ((NOT var_961) OR (NOT var_1051)) AND ((NOT var_957) OR (NOT var_1047)) AND ((NOT var_1006) OR (NOT var_916)) AND ((NOT var_1002) OR (NOT var_912)) AND ((NOT var_1006) OR (NOT var_961)) AND ((NOT var_1002) OR (NOT var_957)) AND ((NOT var_1006) OR (NOT var_1051)) AND ((NOT var_1002) OR (NOT var_1047)) AND ((NOT var_1051) OR (NOT var_916)) AND ((NOT var_1047) OR (NOT var_912)) AND ((NOT var_1051) OR (NOT var_961)) AND ((NOT var_1047) OR (NOT var_957)) AND ((NOT var_1051) OR (NOT var_1006)) AND ((NOT var_1047) OR (NOT var_1002)) AND ((NOT var_1096) OR (NOT var_1141)) AND ((NOT var_1092) OR (NOT var_1137)) AND ((NOT var_1096) OR (NOT var_1186)) AND ((NOT var_1092) OR (NOT var_1182)) AND ((NOT var_1096) OR (NOT var_1231)) AND ((NOT var_1092) OR (NOT var_1227)) AND ((NOT var_1141) OR (NOT var_1096)) AND ((NOT var_1137) OR (NOT var_1092)) AND ((NOT var_1141) OR (NOT var_1186)) AND ((NOT var_1137) OR (NOT var_1182)) AND ((NOT var_1141) OR (NOT var_1231)) AND ((NOT var_1137) OR (NOT var_1227)) AND ((NOT var_1186) OR (NOT var_1096)) AND ((NOT var_1182) OR (NOT var_1092)) AND ((NOT var_1186) OR (NOT var_1141)) AND ((NOT var_1182) OR (NOT var_1137)) AND ((NOT var_1186) OR (NOT var_1231)) AND ((NOT var_1182) OR (NOT var_1227)) AND ((NOT var_1231) OR (NOT var_1096)) AND ((NOT var_1227) OR (NOT var_1092)) AND ((NOT var_1231) OR (NOT var_1141)) AND ((NOT var_1227) OR (NOT var_1137)) AND ((NOT var_1231) OR (NOT var_1186)) AND ((NOT var_1227) OR (NOT var_1182)) AND ((NOT var_1276) OR (NOT var_1321)) AND ((NOT var_1272) OR (NOT var_1317)) AND ((NOT var_1321) OR (NOT var_1276)) AND ((NOT var_1317) OR (NOT var_1272)) AND ((NOT var_1366) OR (NOT var_1411)) AND ((NOT var_1362) OR (NOT var_1407)) AND ((NOT var_1411) OR (NOT var_1366)) AND ((NOT var_1407) OR (NOT var_1362)) AND ((NOT var_1546) OR (NOT var_1591)) AND ((NOT var_1542) OR (NOT var_1587)) AND ((NOT var_1546) OR (NOT var_1636)) AND ((NOT var_1542) OR (NOT var_1632)) AND ((NOT var_1546) OR (NOT var_1681)) AND ((NOT var_1542) OR (NOT var_1677)) AND ((NOT var_1591) OR (NOT var_1546)) AND ((NOT var_1587) OR (NOT var_1542)) AND ((NOT var_1591) OR (NOT var_1636)) AND ((NOT var_1587) OR (NOT var_1632)) AND ((NOT var_1591) OR (NOT var_1681)) AND ((NOT var_1587) OR (NOT var_1677)) AND ((NOT var_1636) OR (NOT var_1546)) AND ((NOT var_1632) OR (NOT var_1542)) AND ((NOT var_1636) OR (NOT var_1591)) AND ((NOT var_1632) OR (NOT var_1587)) AND ((NOT var_1636) OR (NOT var_1681)) AND ((NOT var_1632) OR (NOT var_1677)) AND ((NOT var_1681) OR (NOT var_1546)) AND ((NOT var_1677) OR (NOT var_1542)) AND ((NOT var_1681) OR (NOT var_1591)) AND ((NOT var_1677) OR (NOT var_1587)) AND ((NOT var_1681) OR (NOT var_1636)) AND ((NOT var_1677) OR (NOT var_1632)) AND ((NOT var_1726) OR (NOT var_1771)) AND ((NOT var_1722) OR (NOT var_1767)) AND ((NOT var_1726) OR (NOT var_1816)) AND ((NOT var_1722) OR (NOT var_1812)) AND ((NOT var_1726) OR (NOT var_1861)) AND ((NOT var_1722) OR (NOT var_1857)) AND ((NOT var_1771) OR (NOT var_1726)) AND ((NOT var_1767) OR (NOT var_1722)) AND ((NOT var_1771) OR (NOT var_1816)) AND ((NOT var_1767) OR (NOT var_1812)) AND ((NOT var_1771) OR (NOT var_1861)) AND ((NOT var_1767) OR (NOT var_1857)) AND ((NOT var_1816) OR (NOT var_1726)) AND ((NOT var_1812) OR (NOT var_1722)) AND ((NOT var_1816) OR (NOT var_1771)) AND ((NOT var_1812) OR (NOT var_1767)) AND ((NOT var_1816) OR (NOT var_1861)) AND ((NOT var_1812) OR (NOT var_1857)) AND ((NOT var_1861) OR (NOT var_1726)) AND ((NOT var_1857) OR (NOT var_1722)) AND ((NOT var_1861) OR (NOT var_1771)) AND ((NOT var_1857) OR (NOT var_1767)) AND ((NOT var_1861) OR (NOT var_1816)) AND ((NOT var_1857) OR (NOT var_1812)) AND ((NOT var_1906) OR (NOT var_1951)) AND ((NOT var_1902) OR (NOT var_1947)) AND ((NOT var_1906) OR (NOT var_1996)) AND ((NOT var_1902) OR (NOT var_1992)) AND ((NOT var_1906) OR (NOT var_2041)) AND ((NOT var_1902) OR (NOT var_2037)) AND ((NOT var_1951) OR (NOT var_1906)) AND ((NOT var_1947) OR (NOT var_1902)) AND ((NOT var_1951) OR (NOT var_1996)) AND ((NOT var_1947) OR (NOT var_1992)) AND ((NOT var_1951) OR (NOT var_2041)) AND ((NOT var_1947) OR (NOT var_2037)) AND ((NOT var_1996) OR (NOT var_1906)) AND ((NOT var_1992) OR (NOT var_1902)) AND ((NOT var_1996) OR (NOT var_1951)) AND ((NOT var_1992) OR (NOT var_1947)) AND ((NOT var_1996) OR (NOT var_2041)) AND ((NOT var_1992) OR (NOT var_2037)) AND ((NOT var_2041) OR (NOT var_1906)) AND ((NOT var_2037) OR (NOT var_1902)) AND ((NOT var_2041) OR (NOT var_1951)) AND ((NOT var_2037) OR (NOT var_1947)) AND ((NOT var_2041) OR (NOT var_1996)) AND ((NOT var_2037) OR (NOT var_1992)) AND ((NOT var_2176) OR (NOT var_2221)) AND ((NOT var_2172) OR (NOT var_2217)) AND ((NOT var_2221) OR (NOT var_2176)) AND ((NOT var_2217) OR (NOT var_2172)) AND ((NOT var_2266) OR (NOT var_2311)) AND ((NOT var_2262) OR (NOT var_2307)) AND ((NOT var_2311) OR (NOT var_2266)) AND ((NOT var_2307) OR (NOT var_2262)) AND ((NOT var_2356) OR (NOT var_2401)) AND ((NOT var_2352) OR (NOT var_2397)) AND ((NOT var_2356) OR (NOT var_2446)) AND ((NOT var_2352) OR (NOT var_2442)) AND ((NOT var_2356) OR (NOT var_2491)) AND ((NOT var_2352) OR (NOT var_2487)) AND ((NOT var_2401) OR (NOT var_2356)) AND ((NOT var_2397) OR (NOT var_2352)) AND ((NOT var_2401) OR (NOT var_2446)) AND ((NOT var_2397) OR (NOT var_2442)) AND ((NOT var_2401) OR (NOT var_2491)) AND ((NOT var_2397) OR (NOT var_2487)) AND ((NOT var_2446) OR (NOT var_2356)) AND ((NOT var_2442) OR (NOT var_2352)) AND ((NOT var_2446) OR (NOT var_2401)) AND ((NOT var_2442) OR (NOT var_2397)) AND ((NOT var_2446) OR (NOT var_2491)) AND ((NOT var_2442) OR (NOT var_2487)) AND ((NOT var_2491) OR (NOT var_2356)) AND ((NOT var_2487) OR (NOT var_2352)) AND ((NOT var_2491) OR (NOT var_2401)) AND ((NOT var_2487) OR (NOT var_2397)) AND ((NOT var_2491) OR (NOT var_2446)) AND ((NOT var_2487) OR (NOT var_2442)) AND ((NOT var_2536) OR (NOT var_2581)) AND ((NOT var_2532) OR (NOT var_2577)) AND ((NOT var_2536) OR (NOT var_2626)) AND ((NOT var_2532) OR (NOT var_2622)) AND ((NOT var_2536) OR (NOT var_2671)) AND ((NOT var_2532) OR (NOT var_2667)) AND ((NOT var_2581) OR (NOT var_2536)) AND ((NOT var_2577) OR (NOT var_2532)) AND ((NOT var_2581) OR (NOT var_2626)) AND ((NOT var_2577) OR (NOT var_2622)) AND ((NOT var_2581) OR (NOT var_2671)) AND ((NOT var_2577) OR (NOT var_2667)) AND ((NOT var_2626) OR (NOT var_2536)) AND ((NOT var_2622) OR (NOT var_2532)) AND ((NOT var_2626) OR (NOT var_2581)) AND ((NOT var_2622) OR (NOT var_2577)) AND ((NOT var_2626) OR (NOT var_2671)) AND ((NOT var_2622) OR (NOT var_2667)) AND ((NOT var_2671) OR (NOT var_2536)) AND ((NOT var_2667) OR (NOT var_2532)) AND ((NOT var_2671) OR (NOT var_2581)) AND ((NOT var_2667) OR (NOT var_2577)) AND ((NOT var_2671) OR (NOT var_2626)) AND ((NOT var_2667) OR (NOT var_2622)) AND ((NOT var_2716) OR (NOT var_2761)) AND ((NOT var_2712) OR (NOT var_2757)) AND ((NOT var_2716) OR (NOT var_2806)) AND ((NOT var_2712) OR (NOT var_2802)) AND ((NOT var_2716) OR (NOT var_2851)) AND ((NOT var_2712) OR (NOT var_2847)) AND ((NOT var_2761) OR (NOT var_2716)) AND ((NOT var_2757) OR (NOT var_2712)) AND ((NOT var_2761) OR (NOT var_2806)) AND ((NOT var_2757) OR (NOT var_2802)) AND ((NOT var_2761) OR (NOT var_2851)) AND ((NOT var_2757) OR (NOT var_2847)) AND ((NOT var_2806) OR (NOT var_2716)) AND ((NOT var_2802) OR (NOT var_2712)) AND ((NOT var_2806) OR (NOT var_2761)) AND ((NOT var_2802) OR (NOT var_2757)) AND ((NOT var_2806) OR (NOT var_2851)) AND ((NOT var_2802) OR (NOT var_2847)) AND ((NOT var_2851) OR (NOT var_2716)) AND ((NOT var_2847) OR (NOT var_2712)) AND ((NOT var_2851) OR (NOT var_2761)) AND ((NOT var_2847) OR (NOT var_2757)) AND ((NOT var_2851) OR (NOT var_2806)) AND ((NOT var_2847) OR (NOT var_2802)) AND ((NOT var_2896) OR (NOT var_2941)) AND ((NOT var_2892) OR (NOT var_2937)) AND ((NOT var_2941) OR (NOT var_2896)) AND ((NOT var_2937) OR (NOT var_2892)) AND ((NOT var_2986) OR (NOT var_3031)) AND ((NOT var_2982) OR (NOT var_3027)) AND ((NOT var_3031) OR (NOT var_2986)) AND ((NOT var_3027) OR (NOT var_2982)) AND ((NOT var_3076) OR (NOT var_3121)) AND ((NOT var_3072) OR (NOT var_3117)) AND ((NOT var_3121) OR (NOT var_3076)) AND ((NOT var_3117) OR (NOT var_3072)) AND ((NOT var_3211) OR (NOT var_3256)) AND ((NOT var_3207) OR (NOT var_3252)) AND ((NOT var_3256) OR (NOT var_3211)) AND ((NOT var_3252) OR (NOT var_3207)) AND ((NOT var_3301) OR (NOT var_3346)) AND ((NOT var_3297) OR (NOT var_3342)) AND ((NOT var_3346) OR (NOT var_3301)) AND ((NOT var_3342) OR (NOT var_3297)) AND ((NOT var_3436) OR (NOT var_3481)) AND ((NOT var_3432) OR (NOT var_3477)) AND ((NOT var_3481) OR (NOT var_3436)) AND ((NOT var_3477) OR (NOT var_3432));
-CHECKSAT;
--- /dev/null
+; EXPECT: sat
+(set-logic ALL)
+(set-option :incremental false)
+(declare-fun var_92 () Bool)
+(declare-fun var_96 () Bool)
+(declare-fun var_98 () Bool)
+(declare-fun var_102 () Bool)
+(declare-fun var_106 () Bool)
+(declare-fun var_111 () Bool)
+(declare-fun var_137 () Bool)
+(declare-fun var_141 () Bool)
+(declare-fun var_143 () Bool)
+(declare-fun var_147 () Bool)
+(declare-fun var_151 () Bool)
+(declare-fun var_156 () Bool)
+(declare-fun var_182 () Bool)
+(declare-fun var_186 () Bool)
+(declare-fun var_188 () Bool)
+(declare-fun var_192 () Bool)
+(declare-fun var_196 () Bool)
+(declare-fun var_201 () Bool)
+(declare-fun var_227 () Bool)
+(declare-fun var_231 () Bool)
+(declare-fun var_233 () Bool)
+(declare-fun var_237 () Bool)
+(declare-fun var_241 () Bool)
+(declare-fun var_246 () Bool)
+(declare-fun var_272 () Bool)
+(declare-fun var_276 () Bool)
+(declare-fun var_278 () Bool)
+(declare-fun var_282 () Bool)
+(declare-fun var_286 () Bool)
+(declare-fun var_291 () Bool)
+(declare-fun var_317 () Bool)
+(declare-fun var_321 () Bool)
+(declare-fun var_323 () Bool)
+(declare-fun var_327 () Bool)
+(declare-fun var_331 () Bool)
+(declare-fun var_336 () Bool)
+(declare-fun var_362 () Bool)
+(declare-fun var_366 () Bool)
+(declare-fun var_368 () Bool)
+(declare-fun var_372 () Bool)
+(declare-fun var_376 () Bool)
+(declare-fun var_381 () Bool)
+(declare-fun var_407 () Bool)
+(declare-fun var_411 () Bool)
+(declare-fun var_413 () Bool)
+(declare-fun var_417 () Bool)
+(declare-fun var_421 () Bool)
+(declare-fun var_426 () Bool)
+(declare-fun var_452 () Bool)
+(declare-fun var_456 () Bool)
+(declare-fun var_458 () Bool)
+(declare-fun var_462 () Bool)
+(declare-fun var_466 () Bool)
+(declare-fun var_471 () Bool)
+(declare-fun var_497 () Bool)
+(declare-fun var_501 () Bool)
+(declare-fun var_503 () Bool)
+(declare-fun var_507 () Bool)
+(declare-fun var_511 () Bool)
+(declare-fun var_516 () Bool)
+(declare-fun var_542 () Bool)
+(declare-fun var_546 () Bool)
+(declare-fun var_548 () Bool)
+(declare-fun var_552 () Bool)
+(declare-fun var_556 () Bool)
+(declare-fun var_561 () Bool)
+(declare-fun var_587 () Bool)
+(declare-fun var_591 () Bool)
+(declare-fun var_593 () Bool)
+(declare-fun var_597 () Bool)
+(declare-fun var_601 () Bool)
+(declare-fun var_606 () Bool)
+(declare-fun var_632 () Bool)
+(declare-fun var_636 () Bool)
+(declare-fun var_638 () Bool)
+(declare-fun var_642 () Bool)
+(declare-fun var_646 () Bool)
+(declare-fun var_651 () Bool)
+(declare-fun var_677 () Bool)
+(declare-fun var_681 () Bool)
+(declare-fun var_683 () Bool)
+(declare-fun var_687 () Bool)
+(declare-fun var_691 () Bool)
+(declare-fun var_696 () Bool)
+(declare-fun var_722 () Bool)
+(declare-fun var_726 () Bool)
+(declare-fun var_728 () Bool)
+(declare-fun var_732 () Bool)
+(declare-fun var_736 () Bool)
+(declare-fun var_741 () Bool)
+(declare-fun var_767 () Bool)
+(declare-fun var_771 () Bool)
+(declare-fun var_773 () Bool)
+(declare-fun var_777 () Bool)
+(declare-fun var_781 () Bool)
+(declare-fun var_786 () Bool)
+(declare-fun var_812 () Bool)
+(declare-fun var_816 () Bool)
+(declare-fun var_818 () Bool)
+(declare-fun var_822 () Bool)
+(declare-fun var_826 () Bool)
+(declare-fun var_831 () Bool)
+(declare-fun var_857 () Bool)
+(declare-fun var_861 () Bool)
+(declare-fun var_863 () Bool)
+(declare-fun var_867 () Bool)
+(declare-fun var_871 () Bool)
+(declare-fun var_876 () Bool)
+(declare-fun var_902 () Bool)
+(declare-fun var_906 () Bool)
+(declare-fun var_908 () Bool)
+(declare-fun var_912 () Bool)
+(declare-fun var_916 () Bool)
+(declare-fun var_921 () Bool)
+(declare-fun var_947 () Bool)
+(declare-fun var_951 () Bool)
+(declare-fun var_953 () Bool)
+(declare-fun var_957 () Bool)
+(declare-fun var_961 () Bool)
+(declare-fun var_966 () Bool)
+(declare-fun var_992 () Bool)
+(declare-fun var_996 () Bool)
+(declare-fun var_998 () Bool)
+(declare-fun var_1002 () Bool)
+(declare-fun var_1006 () Bool)
+(declare-fun var_1011 () Bool)
+(declare-fun var_1037 () Bool)
+(declare-fun var_1041 () Bool)
+(declare-fun var_1043 () Bool)
+(declare-fun var_1047 () Bool)
+(declare-fun var_1051 () Bool)
+(declare-fun var_1056 () Bool)
+(declare-fun var_1082 () Bool)
+(declare-fun var_1086 () Bool)
+(declare-fun var_1088 () Bool)
+(declare-fun var_1092 () Bool)
+(declare-fun var_1096 () Bool)
+(declare-fun var_1101 () Bool)
+(declare-fun var_1127 () Bool)
+(declare-fun var_1131 () Bool)
+(declare-fun var_1133 () Bool)
+(declare-fun var_1137 () Bool)
+(declare-fun var_1141 () Bool)
+(declare-fun var_1146 () Bool)
+(declare-fun var_1172 () Bool)
+(declare-fun var_1176 () Bool)
+(declare-fun var_1178 () Bool)
+(declare-fun var_1182 () Bool)
+(declare-fun var_1186 () Bool)
+(declare-fun var_1191 () Bool)
+(declare-fun var_1217 () Bool)
+(declare-fun var_1221 () Bool)
+(declare-fun var_1223 () Bool)
+(declare-fun var_1227 () Bool)
+(declare-fun var_1231 () Bool)
+(declare-fun var_1236 () Bool)
+(declare-fun var_1262 () Bool)
+(declare-fun var_1266 () Bool)
+(declare-fun var_1268 () Bool)
+(declare-fun var_1272 () Bool)
+(declare-fun var_1276 () Bool)
+(declare-fun var_1281 () Bool)
+(declare-fun var_1307 () Bool)
+(declare-fun var_1311 () Bool)
+(declare-fun var_1313 () Bool)
+(declare-fun var_1317 () Bool)
+(declare-fun var_1321 () Bool)
+(declare-fun var_1326 () Bool)
+(declare-fun var_1352 () Bool)
+(declare-fun var_1356 () Bool)
+(declare-fun var_1358 () Bool)
+(declare-fun var_1362 () Bool)
+(declare-fun var_1366 () Bool)
+(declare-fun var_1371 () Bool)
+(declare-fun var_1397 () Bool)
+(declare-fun var_1401 () Bool)
+(declare-fun var_1403 () Bool)
+(declare-fun var_1407 () Bool)
+(declare-fun var_1411 () Bool)
+(declare-fun var_1416 () Bool)
+(declare-fun var_1442 () Bool)
+(declare-fun var_1446 () Bool)
+(declare-fun var_1448 () Bool)
+(declare-fun var_1452 () Bool)
+(declare-fun var_1456 () Bool)
+(declare-fun var_1461 () Bool)
+(declare-fun var_1487 () Bool)
+(declare-fun var_1491 () Bool)
+(declare-fun var_1493 () Bool)
+(declare-fun var_1497 () Bool)
+(declare-fun var_1501 () Bool)
+(declare-fun var_1506 () Bool)
+(declare-fun var_1532 () Bool)
+(declare-fun var_1536 () Bool)
+(declare-fun var_1538 () Bool)
+(declare-fun var_1542 () Bool)
+(declare-fun var_1546 () Bool)
+(declare-fun var_1551 () Bool)
+(declare-fun var_1577 () Bool)
+(declare-fun var_1581 () Bool)
+(declare-fun var_1583 () Bool)
+(declare-fun var_1587 () Bool)
+(declare-fun var_1591 () Bool)
+(declare-fun var_1596 () Bool)
+(declare-fun var_1622 () Bool)
+(declare-fun var_1626 () Bool)
+(declare-fun var_1628 () Bool)
+(declare-fun var_1632 () Bool)
+(declare-fun var_1636 () Bool)
+(declare-fun var_1641 () Bool)
+(declare-fun var_1667 () Bool)
+(declare-fun var_1671 () Bool)
+(declare-fun var_1673 () Bool)
+(declare-fun var_1677 () Bool)
+(declare-fun var_1681 () Bool)
+(declare-fun var_1686 () Bool)
+(declare-fun var_1712 () Bool)
+(declare-fun var_1716 () Bool)
+(declare-fun var_1718 () Bool)
+(declare-fun var_1722 () Bool)
+(declare-fun var_1726 () Bool)
+(declare-fun var_1731 () Bool)
+(declare-fun var_1757 () Bool)
+(declare-fun var_1761 () Bool)
+(declare-fun var_1763 () Bool)
+(declare-fun var_1767 () Bool)
+(declare-fun var_1771 () Bool)
+(declare-fun var_1776 () Bool)
+(declare-fun var_1802 () Bool)
+(declare-fun var_1806 () Bool)
+(declare-fun var_1808 () Bool)
+(declare-fun var_1812 () Bool)
+(declare-fun var_1816 () Bool)
+(declare-fun var_1821 () Bool)
+(declare-fun var_1847 () Bool)
+(declare-fun var_1851 () Bool)
+(declare-fun var_1853 () Bool)
+(declare-fun var_1857 () Bool)
+(declare-fun var_1861 () Bool)
+(declare-fun var_1866 () Bool)
+(declare-fun var_1892 () Bool)
+(declare-fun var_1896 () Bool)
+(declare-fun var_1898 () Bool)
+(declare-fun var_1902 () Bool)
+(declare-fun var_1906 () Bool)
+(declare-fun var_1911 () Bool)
+(declare-fun var_1937 () Bool)
+(declare-fun var_1941 () Bool)
+(declare-fun var_1943 () Bool)
+(declare-fun var_1947 () Bool)
+(declare-fun var_1951 () Bool)
+(declare-fun var_1956 () Bool)
+(declare-fun var_1982 () Bool)
+(declare-fun var_1986 () Bool)
+(declare-fun var_1988 () Bool)
+(declare-fun var_1992 () Bool)
+(declare-fun var_1996 () Bool)
+(declare-fun var_2001 () Bool)
+(declare-fun var_2027 () Bool)
+(declare-fun var_2031 () Bool)
+(declare-fun var_2033 () Bool)
+(declare-fun var_2037 () Bool)
+(declare-fun var_2041 () Bool)
+(declare-fun var_2046 () Bool)
+(declare-fun var_2072 () Bool)
+(declare-fun var_2076 () Bool)
+(declare-fun var_2078 () Bool)
+(declare-fun var_2082 () Bool)
+(declare-fun var_2086 () Bool)
+(declare-fun var_2091 () Bool)
+(declare-fun var_2117 () Bool)
+(declare-fun var_2121 () Bool)
+(declare-fun var_2123 () Bool)
+(declare-fun var_2127 () Bool)
+(declare-fun var_2131 () Bool)
+(declare-fun var_2136 () Bool)
+(declare-fun var_2162 () Bool)
+(declare-fun var_2166 () Bool)
+(declare-fun var_2168 () Bool)
+(declare-fun var_2172 () Bool)
+(declare-fun var_2176 () Bool)
+(declare-fun var_2181 () Bool)
+(declare-fun var_2207 () Bool)
+(declare-fun var_2211 () Bool)
+(declare-fun var_2213 () Bool)
+(declare-fun var_2217 () Bool)
+(declare-fun var_2221 () Bool)
+(declare-fun var_2226 () Bool)
+(declare-fun var_2252 () Bool)
+(declare-fun var_2256 () Bool)
+(declare-fun var_2258 () Bool)
+(declare-fun var_2262 () Bool)
+(declare-fun var_2266 () Bool)
+(declare-fun var_2271 () Bool)
+(declare-fun var_2297 () Bool)
+(declare-fun var_2301 () Bool)
+(declare-fun var_2303 () Bool)
+(declare-fun var_2307 () Bool)
+(declare-fun var_2311 () Bool)
+(declare-fun var_2316 () Bool)
+(declare-fun var_2342 () Bool)
+(declare-fun var_2346 () Bool)
+(declare-fun var_2348 () Bool)
+(declare-fun var_2352 () Bool)
+(declare-fun var_2356 () Bool)
+(declare-fun var_2361 () Bool)
+(declare-fun var_2387 () Bool)
+(declare-fun var_2391 () Bool)
+(declare-fun var_2393 () Bool)
+(declare-fun var_2397 () Bool)
+(declare-fun var_2401 () Bool)
+(declare-fun var_2406 () Bool)
+(declare-fun var_2432 () Bool)
+(declare-fun var_2436 () Bool)
+(declare-fun var_2438 () Bool)
+(declare-fun var_2442 () Bool)
+(declare-fun var_2446 () Bool)
+(declare-fun var_2451 () Bool)
+(declare-fun var_2477 () Bool)
+(declare-fun var_2481 () Bool)
+(declare-fun var_2483 () Bool)
+(declare-fun var_2487 () Bool)
+(declare-fun var_2491 () Bool)
+(declare-fun var_2496 () Bool)
+(declare-fun var_2522 () Bool)
+(declare-fun var_2526 () Bool)
+(declare-fun var_2528 () Bool)
+(declare-fun var_2532 () Bool)
+(declare-fun var_2536 () Bool)
+(declare-fun var_2541 () Bool)
+(declare-fun var_2567 () Bool)
+(declare-fun var_2571 () Bool)
+(declare-fun var_2573 () Bool)
+(declare-fun var_2577 () Bool)
+(declare-fun var_2581 () Bool)
+(declare-fun var_2586 () Bool)
+(declare-fun var_2612 () Bool)
+(declare-fun var_2616 () Bool)
+(declare-fun var_2618 () Bool)
+(declare-fun var_2622 () Bool)
+(declare-fun var_2626 () Bool)
+(declare-fun var_2631 () Bool)
+(declare-fun var_2657 () Bool)
+(declare-fun var_2661 () Bool)
+(declare-fun var_2663 () Bool)
+(declare-fun var_2667 () Bool)
+(declare-fun var_2671 () Bool)
+(declare-fun var_2676 () Bool)
+(declare-fun var_2702 () Bool)
+(declare-fun var_2706 () Bool)
+(declare-fun var_2708 () Bool)
+(declare-fun var_2712 () Bool)
+(declare-fun var_2716 () Bool)
+(declare-fun var_2721 () Bool)
+(declare-fun var_2747 () Bool)
+(declare-fun var_2751 () Bool)
+(declare-fun var_2753 () Bool)
+(declare-fun var_2757 () Bool)
+(declare-fun var_2761 () Bool)
+(declare-fun var_2766 () Bool)
+(declare-fun var_2792 () Bool)
+(declare-fun var_2796 () Bool)
+(declare-fun var_2798 () Bool)
+(declare-fun var_2802 () Bool)
+(declare-fun var_2806 () Bool)
+(declare-fun var_2811 () Bool)
+(declare-fun var_2837 () Bool)
+(declare-fun var_2841 () Bool)
+(declare-fun var_2843 () Bool)
+(declare-fun var_2847 () Bool)
+(declare-fun var_2851 () Bool)
+(declare-fun var_2856 () Bool)
+(declare-fun var_2882 () Bool)
+(declare-fun var_2886 () Bool)
+(declare-fun var_2888 () Bool)
+(declare-fun var_2892 () Bool)
+(declare-fun var_2896 () Bool)
+(declare-fun var_2901 () Bool)
+(declare-fun var_2927 () Bool)
+(declare-fun var_2931 () Bool)
+(declare-fun var_2933 () Bool)
+(declare-fun var_2937 () Bool)
+(declare-fun var_2941 () Bool)
+(declare-fun var_2946 () Bool)
+(declare-fun var_2972 () Bool)
+(declare-fun var_2976 () Bool)
+(declare-fun var_2978 () Bool)
+(declare-fun var_2982 () Bool)
+(declare-fun var_2986 () Bool)
+(declare-fun var_2991 () Bool)
+(declare-fun var_3017 () Bool)
+(declare-fun var_3021 () Bool)
+(declare-fun var_3023 () Bool)
+(declare-fun var_3027 () Bool)
+(declare-fun var_3031 () Bool)
+(declare-fun var_3036 () Bool)
+(declare-fun var_3062 () Bool)
+(declare-fun var_3066 () Bool)
+(declare-fun var_3068 () Bool)
+(declare-fun var_3072 () Bool)
+(declare-fun var_3076 () Bool)
+(declare-fun var_3081 () Bool)
+(declare-fun var_3107 () Bool)
+(declare-fun var_3111 () Bool)
+(declare-fun var_3113 () Bool)
+(declare-fun var_3117 () Bool)
+(declare-fun var_3121 () Bool)
+(declare-fun var_3126 () Bool)
+(declare-fun var_3152 () Bool)
+(declare-fun var_3156 () Bool)
+(declare-fun var_3158 () Bool)
+(declare-fun var_3162 () Bool)
+(declare-fun var_3166 () Bool)
+(declare-fun var_3171 () Bool)
+(declare-fun var_3197 () Bool)
+(declare-fun var_3201 () Bool)
+(declare-fun var_3203 () Bool)
+(declare-fun var_3207 () Bool)
+(declare-fun var_3211 () Bool)
+(declare-fun var_3216 () Bool)
+(declare-fun var_3242 () Bool)
+(declare-fun var_3246 () Bool)
+(declare-fun var_3248 () Bool)
+(declare-fun var_3252 () Bool)
+(declare-fun var_3256 () Bool)
+(declare-fun var_3261 () Bool)
+(declare-fun var_3287 () Bool)
+(declare-fun var_3291 () Bool)
+(declare-fun var_3293 () Bool)
+(declare-fun var_3297 () Bool)
+(declare-fun var_3301 () Bool)
+(declare-fun var_3306 () Bool)
+(declare-fun var_3332 () Bool)
+(declare-fun var_3336 () Bool)
+(declare-fun var_3338 () Bool)
+(declare-fun var_3342 () Bool)
+(declare-fun var_3346 () Bool)
+(declare-fun var_3351 () Bool)
+(declare-fun var_3377 () Bool)
+(declare-fun var_3381 () Bool)
+(declare-fun var_3383 () Bool)
+(declare-fun var_3387 () Bool)
+(declare-fun var_3391 () Bool)
+(declare-fun var_3396 () Bool)
+(declare-fun var_3422 () Bool)
+(declare-fun var_3426 () Bool)
+(declare-fun var_3428 () Bool)
+(declare-fun var_3432 () Bool)
+(declare-fun var_3436 () Bool)
+(declare-fun var_3441 () Bool)
+(declare-fun var_3467 () Bool)
+(declare-fun var_3471 () Bool)
+(declare-fun var_3473 () Bool)
+(declare-fun var_3477 () Bool)
+(declare-fun var_3481 () Bool)
+(declare-fun var_3486 () Bool)
+(declare-fun var_3512 () Bool)
+(declare-fun var_3515 () Bool)
+(declare-fun var_3518 () Bool)
+(declare-fun var_3521 () Bool)
+(declare-fun var_3524 () Bool)
+(declare-fun var_3527 () Bool)
+(declare-fun var_3530 () Bool)
+(declare-fun var_3533 () Bool)
+(declare-fun var_3536 () Bool)
+(declare-fun var_3539 () Bool)
+(declare-fun var_3542 () Bool)
+(declare-fun var_3545 () Bool)
+(declare-fun var_3548 () Bool)
+(declare-fun var_3551 () Bool)
+(declare-fun var_3554 () Bool)
+(declare-fun var_3557 () Bool)
+(declare-fun var_3560 () Bool)
+(declare-fun var_3563 () Bool)
+(declare-fun var_3566 () Bool)
+(declare-fun var_3569 () Bool)
+(declare-fun var_3572 () Bool)
+(declare-fun var_3575 () Bool)
+(declare-fun var_3578 () Bool)
+(declare-fun var_3581 () Bool)
+(declare-fun var_3584 () Bool)
+(declare-fun var_3587 () Bool)
+(declare-fun var_3590 () Bool)
+(declare-fun var_3593 () Bool)
+(declare-fun var_3596 () Bool)
+(declare-fun var_3599 () Bool)
+(declare-fun var_3602 () Bool)
+(declare-fun var_3605 () Bool)
+(declare-fun var_3608 () Bool)
+(declare-fun var_3611 () Bool)
+(declare-fun var_3614 () Bool)
+(declare-fun var_3617 () Bool)
+(declare-fun var_3620 () Bool)
+(declare-fun var_3623 () Bool)
+(declare-fun var_3626 () Bool)
+(declare-fun var_3629 () Bool)
+(declare-fun var_3632 () Bool)
+(declare-fun var_3635 () Bool)
+(declare-fun var_3638 () Bool)
+(declare-fun var_3641 () Bool)
+(declare-fun var_3644 () Bool)
+(declare-fun var_3647 () Bool)
+(declare-fun var_3650 () Bool)
+(declare-fun var_3653 () Bool)
+(declare-fun var_3656 () Bool)
+(declare-fun var_3659 () Bool)
+(declare-fun var_3662 () Bool)
+(declare-fun var_3665 () Bool)
+(declare-fun var_3668 () Bool)
+(declare-fun var_3671 () Bool)
+(declare-fun var_3674 () Bool)
+(declare-fun var_3677 () Bool)
+(declare-fun var_3680 () Bool)
+(declare-fun var_3683 () Bool)
+(declare-fun var_3686 () Bool)
+(declare-fun var_3689 () Bool)
+(declare-fun var_3692 () Bool)
+(declare-fun var_3695 () Bool)
+(declare-fun var_3698 () Bool)
+(declare-fun var_3701 () Bool)
+(declare-fun var_3704 () Bool)
+(declare-fun var_3707 () Bool)
+(declare-fun var_3710 () Bool)
+(declare-fun var_3713 () Bool)
+(declare-fun var_3716 () Bool)
+(declare-fun var_3719 () Bool)
+(declare-fun var_3722 () Bool)
+(declare-fun var_3725 () Bool)
+(declare-fun var_3728 () Bool)
+(declare-fun var_3731 () Bool)
+(declare-fun var_3734 () Bool)
+(declare-fun var_3737 () Bool)
+(declare-fun var_3740 () Bool)
+(declare-fun var_3743 () Bool)
+(declare-fun var_3746 () Bool)
+(declare-fun var_3749 () Bool)
+(declare-fun var_3752 () Bool)
+(declare-fun var_3755 () Bool)
+(declare-fun var_3758 () Bool)
+(declare-fun var_3761 () Bool)
+(declare-fun var_3764 () Bool)
+(declare-fun var_3767 () Bool)
+(declare-fun var_3770 () Bool)
+(declare-fun var_3773 () Bool)
+(declare-fun var_3776 () Bool)
+(declare-fun var_3779 () Bool)
+(declare-fun var_3782 () Bool)
+(declare-fun var_3785 () Bool)
+(declare-fun var_3788 () Bool)
+(declare-fun var_3791 () Bool)
+(declare-fun var_3794 () Bool)
+(declare-fun var_3797 () Bool)
+(declare-fun var_3800 () Bool)
+(declare-fun var_3803 () Bool)
+(declare-fun var_3806 () Bool)
+(declare-fun var_3809 () Bool)
+(declare-fun var_3812 () Bool)
+(declare-fun var_3815 () Bool)
+(declare-fun var_3818 () Bool)
+(declare-fun var_3821 () Bool)
+(declare-fun var_3824 () Bool)
+(declare-fun var_3827 () Bool)
+(declare-fun var_3830 () Bool)
+(declare-fun var_3833 () Bool)
+(declare-fun var_3836 () Bool)
+(declare-fun var_3839 () Bool)
+(declare-fun var_3843 () Bool)
+(declare-fun var_3847 () Bool)
+(declare-fun var_3851 () Bool)
+(declare-fun var_3855 () Bool)
+(declare-fun var_3859 () Bool)
+(declare-fun var_3863 () Bool)
+(declare-fun var_3867 () Bool)
+(declare-fun var_3871 () Bool)
+(declare-fun var_3875 () Bool)
+(declare-fun var_3879 () Bool)
+(declare-fun var_3883 () Bool)
+(declare-fun var_3887 () Bool)
+(declare-fun var_3891 () Bool)
+(declare-fun var_3895 () Bool)
+(declare-fun var_3899 () Bool)
+(declare-fun var_3903 () Bool)
+(declare-fun var_3907 () Bool)
+(declare-fun var_3911 () Bool)
+(declare-fun var_3915 () Bool)
+(declare-fun var_3919 () Bool)
+(declare-fun var_3923 () Bool)
+(declare-fun var_3927 () Bool)
+(declare-fun var_3931 () Bool)
+(declare-fun var_3935 () Bool)
+(declare-fun var_3939 () Bool)
+(declare-fun var_3943 () Bool)
+(declare-fun var_3947 () Bool)
+(declare-fun var_3951 () Bool)
+(declare-fun var_3955 () Bool)
+(declare-fun var_3959 () Bool)
+(declare-fun var_3963 () Bool)
+(declare-fun var_3967 () Bool)
+(declare-fun var_3971 () Bool)
+(declare-fun var_3974 () Bool)
+(declare-fun var_3980 () Bool)
+(declare-fun var_3987 () Bool)
+(declare-fun var_3994 () Bool)
+(declare-fun var_4001 () Bool)
+(declare-fun var_4009 () Bool)
+(declare-fun var_4018 () Bool)
+(declare-fun var_4031 () Bool)
+(declare-fun var_4035 () Bool)
+(declare-fun var_4039 () Bool)
+(declare-fun var_4046 () Bool)
+(declare-fun var_4050 () Bool)
+(declare-fun var_4057 () Bool)
+(declare-fun var_4064 () Bool)
+(declare-fun var_4077 () Bool)
+(declare-fun var_4085 () Bool)
+(declare-fun var_4094 () Bool)
+(declare-fun var_4111 () Bool)
+(declare-fun var_4115 () Bool)
+(declare-fun var_4119 () Bool)
+(declare-fun var_4123 () Bool)
+(declare-fun var_4130 () Bool)
+(declare-fun var_4137 () Bool)
+(declare-fun var_4150 () Bool)
+(declare-fun var_4158 () Bool)
+(declare-fun var_4167 () Bool)
+(declare-fun var_4186 () Bool)
+(declare-fun var_4190 () Bool)
+(declare-fun var_4194 () Bool)
+(declare-fun var_4198 () Bool)
+(declare-fun var_4223 () Bool)
+(declare-fun var_4270 () Bool)
+(declare-fun var_4277 () Bool)
+(declare-fun var_4290 () Bool)
+(declare-fun var_4298 () Bool)
+(declare-fun var_4307 () Bool)
+(declare-fun var_4324 () Bool)
+(declare-fun var_4328 () Bool)
+(declare-fun var_4332 () Bool)
+(declare-fun var_4336 () Bool)
+(declare-fun var_4361 () Bool)
+(declare-fun var_4412 () Bool)
+(declare-fun var_4425 () Bool)
+(declare-fun var_4439 () Bool)
+(declare-fun var_4462 () Bool)
+(declare-fun var_4466 () Bool)
+(declare-fun var_4479 () Bool)
+(declare-fun var_4492 () Bool)
+(declare-fun var_4506 () Bool)
+(declare-fun var_4531 () Bool)
+(declare-fun var_4535 () Bool)
+(declare-fun var_4560 () Bool)
+(declare-fun var_4611 () Bool)
+(declare-fun var_4624 () Bool)
+(declare-fun var_4638 () Bool)
+(declare-fun var_4661 () Bool)
+(declare-fun var_4665 () Bool)
+(declare-fun var_4672 () Bool)
+(declare-fun var_4685 () Bool)
+(declare-fun var_4692 () Bool)
+(declare-fun var_4700 () Bool)
+(declare-fun var_4715 () Bool)
+(declare-fun var_4720 () Bool)
+(declare-fun var_4724 () Bool)
+(declare-fun var_4728 () Bool)
+(declare-fun var_4732 () Bool)
+(declare-fun var_4745 () Bool)
+(declare-fun var_4752 () Bool)
+(declare-fun var_4765 () Bool)
+(declare-fun var_4773 () Bool)
+(declare-fun var_4782 () Bool)
+(declare-fun var_4799 () Bool)
+(declare-fun var_4803 () Bool)
+(declare-fun var_4807 () Bool)
+(declare-fun var_4811 () Bool)
+(declare-fun var_4836 () Bool)
+(declare-fun var_4881 () Bool)
+(declare-fun var_4888 () Bool)
+(declare-fun var_4901 () Bool)
+(declare-fun var_4909 () Bool)
+(declare-fun var_4918 () Bool)
+(declare-fun var_4935 () Bool)
+(declare-fun var_4939 () Bool)
+(declare-fun var_4943 () Bool)
+(declare-fun var_4947 () Bool)
+(declare-fun var_4972 () Bool)
+(declare-fun var_5035 () Bool)
+(declare-fun var_5098 () Bool)
+(declare-fun var_5147 () Bool)
+(declare-fun var_5160 () Bool)
+(declare-fun var_5174 () Bool)
+(declare-fun var_5197 () Bool)
+(declare-fun var_5201 () Bool)
+(declare-fun var_5226 () Bool)
+(declare-fun var_5289 () Bool)
+(declare-fun var_5338 () Bool)
+(declare-fun var_5351 () Bool)
+(declare-fun var_5365 () Bool)
+(declare-fun var_5388 () Bool)
+(declare-fun var_5392 () Bool)
+(declare-fun var_5405 () Bool)
+(declare-fun var_5418 () Bool)
+(declare-fun var_5432 () Bool)
+(declare-fun var_5455 () Bool)
+(declare-fun var_5459 () Bool)
+(declare-fun var_5484 () Bool)
+(declare-fun var_5547 () Bool)
+(declare-fun var_5596 () Bool)
+(declare-fun var_5609 () Bool)
+(declare-fun var_5623 () Bool)
+(declare-fun var_5646 () Bool)
+(declare-fun var_5650 () Bool)
+(declare-fun var_5663 () Bool)
+(declare-fun var_5676 () Bool)
+(declare-fun var_5690 () Bool)
+(declare-fun var_5713 () Bool)
+(declare-fun var_5717 () Bool)
+(declare-fun var_5742 () Bool)
+(declare-fun var_5787 () Bool)
+(declare-fun var_5794 () Bool)
+(declare-fun var_5807 () Bool)
+(declare-fun var_5815 () Bool)
+(declare-fun var_5824 () Bool)
+(declare-fun var_5841 () Bool)
+(declare-fun var_5845 () Bool)
+(declare-fun var_5849 () Bool)
+(declare-fun var_5853 () Bool)
+(declare-fun var_5878 () Bool)
+(declare-fun var_5923 () Bool)
+(declare-fun var_5930 () Bool)
+(declare-fun var_5943 () Bool)
+(declare-fun var_5951 () Bool)
+(declare-fun var_5960 () Bool)
+(declare-fun var_5977 () Bool)
+(declare-fun var_5981 () Bool)
+(declare-fun var_5985 () Bool)
+(declare-fun var_5989 () Bool)
+(declare-fun var_6014 () Bool)
+(declare-fun var_6077 () Bool)
+(declare-fun var_6140 () Bool)
+(declare-fun var_6203 () Bool)
+(declare-fun var_6264 () Bool)
+(declare-fun var_6313 () Bool)
+(declare-fun var_6326 () Bool)
+(declare-fun var_6340 () Bool)
+(declare-fun var_6363 () Bool)
+(declare-fun var_6367 () Bool)
+(declare-fun var_6392 () Bool)
+(declare-fun var_6455 () Bool)
+(declare-fun var_6516 () Bool)
+(declare-fun var_6565 () Bool)
+(declare-fun var_6578 () Bool)
+(declare-fun var_6592 () Bool)
+(declare-fun var_6615 () Bool)
+(declare-fun var_6619 () Bool)
+(declare-fun var_6644 () Bool)
+(declare-fun var_6707 () Bool)
+(declare-fun var_6768 () Bool)
+(declare-fun var_6817 () Bool)
+(declare-fun var_6830 () Bool)
+(declare-fun var_6844 () Bool)
+(declare-fun var_6867 () Bool)
+(declare-fun var_6871 () Bool)
+(declare-fun var_6896 () Bool)
+(declare-fun var_6959 () Bool)
+(declare-fun var_7022 () Bool)
+(declare-fun var_7085 () Bool)
+(declare-fun var_7146 () Bool)
+(declare-fun var_7209 () Bool)
+(declare-fun var_7270 () Bool)
+(declare-fun var_7333 () Bool)
+(declare-fun var_7394 () Bool)
+(declare-fun var_7443 () Bool)
+(declare-fun var_7456 () Bool)
+(declare-fun var_7470 () Bool)
+(declare-fun var_7493 () Bool)
+(declare-fun var_7497 () Bool)
+(declare-fun var_7522 () Bool)
+(declare-fun var_7585 () Bool)
+(declare-fun var_7646 () Bool)
+(declare-fun var_7695 () Bool)
+(declare-fun var_7708 () Bool)
+(declare-fun var_7722 () Bool)
+(declare-fun var_7745 () Bool)
+(declare-fun var_7749 () Bool)
+(declare-fun var_7774 () Bool)
+(declare-fun var_7837 () Bool)
+(declare-fun var_7898 () Bool)
+(declare-fun var_7947 () Bool)
+(declare-fun var_7960 () Bool)
+(declare-fun var_7974 () Bool)
+(declare-fun var_7997 () Bool)
+(declare-fun var_8001 () Bool)
+(declare-fun var_8026 () Bool)
+(declare-fun var_8089 () Bool)
+(declare-fun var_8150 () Bool)
+(declare-fun var_8213 () Bool)
+(declare-fun var_8274 () Bool)
+(declare-fun var_8337 () Bool)
+(declare-fun var_8398 () Bool)
+(declare-fun var_8461 () Bool)
+(declare-fun var_8524 () Bool)
+(declare-fun var_8585 () Bool)
+(declare-fun var_8648 () Bool)
+(declare-fun var_8709 () Bool)
+(declare-fun var_8772 () Bool)
+(declare-fun var_8835 () Bool)
+(declare-fun var_11220 () Bool)
+(declare-fun var_11228 () Bool)
+(declare-fun var_11236 () Bool)
+(declare-fun var_11244 () Bool)
+(declare-fun var_11252 () Bool)
+(declare-fun var_11260 () Bool)
+(declare-fun var_11268 () Bool)
+(declare-fun var_11276 () Bool)
+(declare-fun var_11284 () Bool)
+(declare-fun var_11292 () Bool)
+(declare-fun var_11300 () Bool)
+(declare-fun var_11308 () Bool)
+(declare-fun var_11316 () Bool)
+(declare-fun var_11324 () Bool)
+(declare-fun var_11332 () Bool)
+(declare-fun var_11340 () Bool)
+(declare-fun var_11348 () Bool)
+(declare-fun var_11356 () Bool)
+(declare-fun var_11364 () Bool)
+(declare-fun var_11372 () Bool)
+(declare-fun var_11380 () Bool)
+(declare-fun var_11388 () Bool)
+(declare-fun var_11396 () Bool)
+(declare-fun var_11404 () Bool)
+(declare-fun var_11412 () Bool)
+(declare-fun var_11420 () Bool)
+(declare-fun var_11428 () Bool)
+(declare-fun var_11436 () Bool)
+(declare-fun var_11444 () Bool)
+(declare-fun var_11452 () Bool)
+(declare-fun var_11460 () Bool)
+(declare-fun var_11468 () Bool)
+(declare-fun var_11476 () Bool)
+(declare-fun var_11484 () Bool)
+(declare-fun var_11492 () Bool)
+(declare-fun var_11500 () Bool)
+(declare-fun var_11508 () Bool)
+(declare-fun var_11516 () Bool)
+(declare-fun var_11524 () Bool)
+(declare-fun var_11532 () Bool)
+(declare-fun var_11540 () Bool)
+(declare-fun var_11548 () Bool)
+(declare-fun var_11556 () Bool)
+(declare-fun var_11564 () Bool)
+(declare-fun var_11572 () Bool)
+(declare-fun var_11580 () Bool)
+(declare-fun var_11588 () Bool)
+(declare-fun var_11596 () Bool)
+(declare-fun var_11604 () Bool)
+(declare-fun var_11612 () Bool)
+(declare-fun var_11620 () Bool)
+(declare-fun var_11628 () Bool)
+(declare-fun var_11636 () Bool)
+(declare-fun var_11644 () Bool)
+(declare-fun var_11652 () Bool)
+(declare-fun var_11660 () Bool)
+(declare-fun var_11668 () Bool)
+(declare-fun var_11676 () Bool)
+(declare-fun var_11684 () Bool)
+(declare-fun var_11692 () Bool)
+(declare-fun var_11700 () Bool)
+(declare-fun var_11708 () Bool)
+(declare-fun var_11716 () Bool)
+(declare-fun var_11724 () Bool)
+(declare-fun var_11732 () Bool)
+(declare-fun var_11740 () Bool)
+(declare-fun var_11748 () Bool)
+(declare-fun var_11756 () Bool)
+(declare-fun var_11764 () Bool)
+(declare-fun var_11772 () Bool)
+(declare-fun var_11780 () Bool)
+(declare-fun var_11788 () Bool)
+(declare-fun var_11796 () Bool)
+(declare-fun var_11804 () Bool)
+(declare-fun var_11812 () Bool)
+(declare-fun var_11820 () Bool)
+(assert (let ((_let_1 (not var_3432))) (let ((_let_2 (not var_3477))) (let ((_let_3 (not var_3436))) (let ((_let_4 (not var_3481))) (let ((_let_5 (not var_3297))) (let ((_let_6 (not var_3342))) (let ((_let_7 (not var_3301))) (let ((_let_8 (not var_3346))) (let ((_let_9 (not var_3207))) (let ((_let_10 (not var_3252))) (let ((_let_11 (not var_3211))) (let ((_let_12 (not var_3256))) (let ((_let_13 (not var_3072))) (let ((_let_14 (not var_3117))) (let ((_let_15 (not var_3076))) (let ((_let_16 (not var_3121))) (let ((_let_17 (not var_2982))) (let ((_let_18 (not var_3027))) (let ((_let_19 (not var_2986))) (let ((_let_20 (not var_3031))) (let ((_let_21 (not var_2892))) (let ((_let_22 (not var_2937))) (let ((_let_23 (not var_2896))) (let ((_let_24 (not var_2941))) (let ((_let_25 (not var_2802))) (let ((_let_26 (not var_2847))) (let ((_let_27 (not var_2806))) (let ((_let_28 (not var_2851))) (let ((_let_29 (not var_2757))) (let ((_let_30 (not var_2761))) (let ((_let_31 (not var_2712))) (let ((_let_32 (not var_2716))) (let ((_let_33 (not var_2622))) (let ((_let_34 (not var_2667))) (let ((_let_35 (not var_2626))) (let ((_let_36 (not var_2671))) (let ((_let_37 (not var_2577))) (let ((_let_38 (not var_2581))) (let ((_let_39 (not var_2532))) (let ((_let_40 (not var_2536))) (let ((_let_41 (not var_2442))) (let ((_let_42 (not var_2487))) (let ((_let_43 (not var_2446))) (let ((_let_44 (not var_2491))) (let ((_let_45 (not var_2397))) (let ((_let_46 (not var_2401))) (let ((_let_47 (not var_2352))) (let ((_let_48 (not var_2356))) (let ((_let_49 (not var_2262))) (let ((_let_50 (not var_2307))) (let ((_let_51 (not var_2266))) (let ((_let_52 (not var_2311))) (let ((_let_53 (not var_2172))) (let ((_let_54 (not var_2217))) (let ((_let_55 (not var_2176))) (let ((_let_56 (not var_2221))) (let ((_let_57 (not var_1992))) (let ((_let_58 (not var_2037))) (let ((_let_59 (not var_1996))) (let ((_let_60 (not var_2041))) (let ((_let_61 (not var_1947))) (let ((_let_62 (not var_1951))) (let ((_let_63 (not var_1902))) (let ((_let_64 (not var_1906))) (let ((_let_65 (not var_1812))) (let ((_let_66 (not var_1857))) (let ((_let_67 (not var_1816))) (let ((_let_68 (not var_1861))) (let ((_let_69 (not var_1767))) (let ((_let_70 (not var_1771))) (let ((_let_71 (not var_1722))) (let ((_let_72 (not var_1726))) (let ((_let_73 (not var_1632))) (let ((_let_74 (not var_1677))) (let ((_let_75 (not var_1636))) (let ((_let_76 (not var_1681))) (let ((_let_77 (not var_1587))) (let ((_let_78 (not var_1591))) (let ((_let_79 (not var_1542))) (let ((_let_80 (not var_1546))) (let ((_let_81 (not var_1362))) (let ((_let_82 (not var_1407))) (let ((_let_83 (not var_1366))) (let ((_let_84 (not var_1411))) (let ((_let_85 (not var_1272))) (let ((_let_86 (not var_1317))) (let ((_let_87 (not var_1276))) (let ((_let_88 (not var_1321))) (let ((_let_89 (not var_1182))) (let ((_let_90 (not var_1227))) (let ((_let_91 (not var_1186))) (let ((_let_92 (not var_1231))) (let ((_let_93 (not var_1137))) (let ((_let_94 (not var_1141))) (let ((_let_95 (not var_1092))) (let ((_let_96 (not var_1096))) (let ((_let_97 (not var_1002))) (let ((_let_98 (not var_1047))) (let ((_let_99 (not var_1006))) (let ((_let_100 (not var_1051))) (let ((_let_101 (not var_957))) (let ((_let_102 (not var_961))) (let ((_let_103 (not var_912))) (let ((_let_104 (not var_916))) (let ((_let_105 (not var_822))) (let ((_let_106 (not var_867))) (let ((_let_107 (not var_826))) (let ((_let_108 (not var_871))) (let ((_let_109 (not var_777))) (let ((_let_110 (not var_781))) (let ((_let_111 (not var_732))) (let ((_let_112 (not var_736))) (let ((_let_113 (not var_642))) (let ((_let_114 (not var_687))) (let ((_let_115 (not var_646))) (let ((_let_116 (not var_691))) (let ((_let_117 (not var_552))) (let ((_let_118 (not var_597))) (let ((_let_119 (not var_556))) (let ((_let_120 (not var_601))) (let ((_let_121 (not var_462))) (let ((_let_122 (not var_507))) (let ((_let_123 (not var_466))) (let ((_let_124 (not var_511))) (let ((_let_125 (not var_327))) (let ((_let_126 (not var_372))) (let ((_let_127 (not var_331))) (let ((_let_128 (not var_376))) (let ((_let_129 (not var_237))) (let ((_let_130 (not var_282))) (let ((_let_131 (not var_241))) (let ((_let_132 (not var_286))) (let ((_let_133 (not var_102))) (let ((_let_134 (not var_147))) (let ((_let_135 (not var_106))) (let ((_let_136 (not var_151))) (let ((_let_137 (or _let_1 _let_58))) (let ((_let_138 (or _let_3 _let_60))) (let ((_let_139 (or _let_58 _let_1))) (let ((_let_140 (or _let_60 _let_3))) (let ((_let_141 (not var_3387))) (let ((_let_142 (not var_3391))) (let ((_let_143 (or _let_141 _let_66))) (let ((_let_144 (or _let_142 _let_68))) (let ((_let_145 (or _let_66 _let_141))) (let ((_let_146 (or _let_68 _let_142))) (let ((_let_147 (or _let_5 _let_74))) (let ((_let_148 (or _let_7 _let_76))) (let ((_let_149 (or _let_74 _let_5))) (let ((_let_150 (or _let_76 _let_7))) (let ((_let_151 (or _let_18 _let_33))) (let ((_let_152 (or _let_20 _let_35))) (let ((_let_153 (or _let_33 _let_18))) (let ((_let_154 (or _let_35 _let_20))) (let ((_let_155 (or _let_9 _let_90))) (let ((_let_156 (or _let_11 _let_92))) (let ((_let_157 (or _let_22 _let_41))) (let ((_let_158 (or _let_24 _let_43))) (let ((_let_159 (or _let_41 _let_22))) (let ((_let_160 (or _let_43 _let_24))) (let ((_let_161 (or _let_90 _let_9))) (let ((_let_162 (or _let_92 _let_11))) (let ((_let_163 (not var_3162))) (let ((_let_164 (not var_3166))) (let ((_let_165 (or _let_163 _let_98))) (let ((_let_166 (or _let_164 _let_100))) (let ((_let_167 (or _let_29 _let_50))) (let ((_let_168 (or _let_30 _let_52))) (let ((_let_169 (or _let_50 _let_29))) (let ((_let_170 (or _let_52 _let_30))) (let ((_let_171 (or _let_98 _let_163))) (let ((_let_172 (or _let_100 _let_164))) (let ((_let_173 (or _let_13 _let_106))) (let ((_let_174 (or _let_15 _let_108))) (let ((_let_175 (or _let_37 _let_54))) (let ((_let_176 (or _let_38 _let_56))) (let ((_let_177 (or _let_54 _let_37))) (let ((_let_178 (or _let_56 _let_38))) (let ((_let_179 (or _let_106 _let_13))) (let ((_let_180 (or _let_108 _let_15))) (let ((_let_181 (not var_2127))) (let ((_let_182 (not var_2131))) (let ((_let_183 (or _let_181 _let_65))) (let ((_let_184 (or _let_182 _let_67))) (let ((_let_185 (or _let_65 _let_181))) (let ((_let_186 (or _let_67 _let_182))) (let ((_let_187 (not var_2082))) (let ((_let_188 (not var_2086))) (let ((_let_189 (or _let_31 _let_122))) (let ((_let_190 (or _let_32 _let_124))) (let ((_let_191 (or _let_187 _let_73))) (let ((_let_192 (or _let_188 _let_75))) (let ((_let_193 (or _let_73 _let_187))) (let ((_let_194 (or _let_75 _let_188))) (let ((_let_195 (or _let_122 _let_31))) (let ((_let_196 (or _let_124 _let_32))) (let ((_let_197 (not var_1497))) (let ((_let_198 (not var_1501))) (let ((_let_199 (not var_417))) (let ((_let_200 (not var_421))) (let ((_let_201 (or _let_39 _let_199))) (let ((_let_202 (or _let_40 _let_200))) (let ((_let_203 (or _let_61 _let_197))) (let ((_let_204 (or _let_62 _let_198))) (let ((_let_205 (or _let_197 _let_61))) (let ((_let_206 (or _let_198 _let_62))) (let ((_let_207 (or _let_199 _let_39))) (let ((_let_208 (or _let_200 _let_40))) (let ((_let_209 (not var_1452))) (let ((_let_210 (not var_1456))) (let ((_let_211 (or _let_47 _let_126))) (let ((_let_212 (or _let_48 _let_128))) (let ((_let_213 (or _let_69 _let_209))) (let ((_let_214 (or _let_70 _let_210))) (let ((_let_215 (or _let_209 _let_69))) (let ((_let_216 (or _let_210 _let_70))) (let ((_let_217 (or _let_126 _let_47))) (let ((_let_218 (or _let_128 _let_48))) (let ((_let_219 (or _let_81 _let_97))) (let ((_let_220 (or _let_83 _let_99))) (let ((_let_221 (or _let_97 _let_81))) (let ((_let_222 (or _let_99 _let_83))) (let ((_let_223 (or _let_63 _let_130))) (let ((_let_224 (or _let_64 _let_132))) (let ((_let_225 (or _let_85 _let_105))) (let ((_let_226 (or _let_87 _let_107))) (let ((_let_227 (or _let_105 _let_85))) (let ((_let_228 (or _let_107 _let_87))) (let ((_let_229 (or _let_130 _let_63))) (let ((_let_230 (or _let_132 _let_64))) (let ((_let_231 (not var_192))) (let ((_let_232 (not var_196))) (let ((_let_233 (or _let_71 _let_231))) (let ((_let_234 (or _let_72 _let_232))) (let ((_let_235 (or _let_93 _let_113))) (let ((_let_236 (or _let_94 _let_115))) (let ((_let_237 (or _let_113 _let_93))) (let ((_let_238 (or _let_115 _let_94))) (let ((_let_239 (or _let_231 _let_71))) (let ((_let_240 (or _let_232 _let_72))) (let ((_let_241 (or _let_79 _let_134))) (let ((_let_242 (or _let_80 _let_136))) (let ((_let_243 (or _let_101 _let_117))) (let ((_let_244 (or _let_102 _let_119))) (let ((_let_245 (or _let_117 _let_101))) (let ((_let_246 (or _let_119 _let_102))) (let ((_let_247 (or _let_134 _let_79))) (let ((_let_248 (or _let_136 _let_80))) (let ((_let_249 (not var_8648))) (let ((_let_250 (not var_8835))) (let ((_let_251 (not var_8337))) (let ((_let_252 (not var_8524))) (let ((_let_253 (not var_7960))) (let ((_let_254 (not var_8772))) (let ((_let_255 (not var_7898))) (let ((_let_256 (not var_8213))) (let ((_let_257 (not var_7708))) (let ((_let_258 (not var_8709))) (let ((_let_259 (not var_7646))) (let ((_let_260 (not var_8089))) (let ((_let_261 (not var_7456))) (let ((_let_262 (not var_8585))) (let ((_let_263 (not var_7394))) (let ((_let_264 (not var_7837))) (let ((_let_265 (not var_7209))) (let ((_let_266 (not var_7585))) (let ((_let_267 (not var_7085))) (let ((_let_268 (not var_7333))) (let ((_let_269 (not var_6830))) (let ((_let_270 (not var_8461))) (let ((_let_271 (not var_6768))) (let ((_let_272 (not var_6959))) (let ((_let_273 (not var_6578))) (let ((_let_274 (not var_8398))) (let ((_let_275 (not var_6516))) (let ((_let_276 (not var_6896))) (let ((_let_277 (not var_6326))) (let ((_let_278 (not var_8274))) (let ((_let_279 (not var_6264))) (let ((_let_280 (not var_6707))) (let ((_let_281 (not var_6077))) (let ((_let_282 (not var_6455))) (let ((_let_283 (not var_6014))) (let ((_let_284 (not var_6203))) (let ((_let_285 (not var_5943))) (let ((_let_286 (not var_8150))) (let ((_let_287 (not var_5807))) (let ((_let_288 (not var_8026))) (let ((_let_289 (not var_5676))) (let ((_let_290 (not var_7774))) (let ((_let_291 (not var_5609))) (let ((_let_292 (not var_5878))) (let ((_let_293 (not var_5418))) (let ((_let_294 (not var_7522))) (let ((_let_295 (not var_5351))) (let ((_let_296 (not var_5742))) (let ((_let_297 (not var_5160))) (let ((_let_298 (not var_7270))) (let ((_let_299 (not var_5098))) (let ((_let_300 (not var_5547))) (let ((_let_301 (not var_4901))) (let ((_let_302 (not var_7146))) (let ((_let_303 (not var_4836))) (let ((_let_304 (not var_5289))) (let ((_let_305 (not var_4765))) (let ((_let_306 (not var_7022))) (let ((_let_307 (not var_4692))) (let ((_let_308 (not var_5035))) (let ((_let_309 (not var_4624))) (let ((_let_310 (not var_6644))) (let ((_let_311 (not var_4492))) (let ((_let_312 (not var_6392))) (let ((_let_313 (not var_4425))) (let ((_let_314 (not var_6140))) (let ((_let_315 (not var_4361))) (let ((_let_316 (not var_4560))) (let ((_let_317 (not var_4290))) (let ((_let_318 (not var_5484))) (let ((_let_319 (not var_4150))) (let ((_let_320 (not var_5226))) (let ((_let_321 (not var_4077))) (let ((_let_322 (not var_4972))) (let ((_let_323 (not var_4001))) (let ((_let_324 (not var_4223))) (let ((_let_325 (not var_7997))) (let ((_let_326 (not var_8001))) (let ((_let_327 (not var_7745))) (let ((_let_328 (not var_7749))) (let ((_let_329 (not var_7493))) (let ((_let_330 (not var_7497))) (let ((_let_331 (not var_6867))) (let ((_let_332 (not var_6871))) (let ((_let_333 (not var_6615))) (let ((_let_334 (not var_6619))) (let ((_let_335 (not var_6363))) (let ((_let_336 (not var_6367))) (let ((_let_337 (not var_5985))) (let ((_let_338 (not var_5989))) (let ((_let_339 (not var_5849))) (let ((_let_340 (not var_5853))) (let ((_let_341 (not var_5713))) (let ((_let_342 (not var_5717))) (let ((_let_343 (not var_5455))) (let ((_let_344 (not var_5459))) (let ((_let_345 (not var_5197))) (let ((_let_346 (not var_5201))) (let ((_let_347 (not var_4943))) (let ((_let_348 (not var_4947))) (let ((_let_349 (not var_4807))) (let ((_let_350 (not var_4811))) (let ((_let_351 (not var_5977))) (let ((_let_352 (not var_5981))) (let ((_let_353 (not var_5841))) (let ((_let_354 (not var_5845))) (let ((_let_355 (not var_4661))) (let ((_let_356 (not var_4665))) (let ((_let_357 (not var_4531))) (let ((_let_358 (not var_4535))) (let ((_let_359 (not var_4462))) (let ((_let_360 (not var_4466))) (let ((_let_361 (not var_4935))) (let ((_let_362 (not var_4939))) (let ((_let_363 (not var_4799))) (let ((_let_364 (not var_4803))) (let ((_let_365 (not var_5646))) (let ((_let_366 (not var_5650))) (let ((_let_367 (not var_5388))) (let ((_let_368 (not var_5392))) (let ((_let_369 (not var_4332))) (let ((_let_370 (not var_4336))) (let ((_let_371 (not var_4194))) (let ((_let_372 (not var_4198))) (let ((_let_373 (not var_4119))) (let ((_let_374 (not var_4123))) (let ((_let_375 (not var_4728))) (let ((_let_376 (not var_4732))) (let ((_let_377 (not var_4685))) (let ((_let_378 (not var_4715))) (let ((_let_379 (not var_4324))) (let ((_let_380 (not var_4328))) (let ((_let_381 (not var_4186))) (let ((_let_382 (not var_4190))) (let ((_let_383 (not var_4111))) (let ((_let_384 (not var_4115))) (let ((_let_385 (not var_4046))) (let ((_let_386 (not var_4050))) (let ((_let_387 (not var_4039))) (let ((_let_388 (not var_3974))) (let ((_let_389 (not var_3994))) (let ((_let_390 (not var_3971))) (let ((_let_391 (not var_7947))) (let ((_let_392 (not var_7974))) (let ((_let_393 (not var_7695))) (let ((_let_394 (not var_7722))) (let ((_let_395 (not var_7443))) (let ((_let_396 (not var_7470))) (let ((_let_397 (not var_6817))) (let ((_let_398 (not var_6844))) (let ((_let_399 (not var_6565))) (let ((_let_400 (not var_6592))) (let ((_let_401 (not var_6313))) (let ((_let_402 (not var_6340))) (let ((_let_403 (not var_5930))) (let ((_let_404 (not var_5960))) (let ((_let_405 (not var_5794))) (let ((_let_406 (not var_5824))) (let ((_let_407 (not var_5663))) (let ((_let_408 (not var_5690))) (let ((_let_409 (not var_5405))) (let ((_let_410 (not var_5432))) (let ((_let_411 (not var_5147))) (let ((_let_412 (not var_5174))) (let ((_let_413 (not var_4888))) (let ((_let_414 (not var_4918))) (let ((_let_415 (not var_4752))) (let ((_let_416 (not var_4782))) (let ((_let_417 (not var_5923))) (let ((_let_418 (not var_5951))) (let ((_let_419 (not var_5787))) (let ((_let_420 (not var_5815))) (let ((_let_421 (not var_4611))) (let ((_let_422 (not var_4638))) (let ((_let_423 (not var_4479))) (let ((_let_424 (not var_4506))) (let ((_let_425 (not var_4412))) (let ((_let_426 (not var_4439))) (let ((_let_427 (not var_4881))) (let ((_let_428 (not var_4909))) (let ((_let_429 (not var_4745))) (let ((_let_430 (not var_4773))) (let ((_let_431 (not var_5596))) (let ((_let_432 (not var_5623))) (let ((_let_433 (not var_5338))) (let ((_let_434 (not var_5365))) (let ((_let_435 (not var_4277))) (let ((_let_436 (not var_4307))) (let ((_let_437 (not var_4137))) (let ((_let_438 (not var_4167))) (let ((_let_439 (not var_4064))) (let ((_let_440 (not var_4094))) (let ((_let_441 (not var_4672))) (let ((_let_442 (not var_4700))) (let ((_let_443 (not var_4720))) (let ((_let_444 (not var_4724))) (let ((_let_445 (not var_4270))) (let ((_let_446 (not var_4298))) (let ((_let_447 (not var_4130))) (let ((_let_448 (not var_4158))) (let ((_let_449 (not var_4057))) (let ((_let_450 (not var_4085))) (let ((_let_451 (not var_3987))) (let ((_let_452 (not var_4018))) (let ((_let_453 (not var_3980))) (let ((_let_454 (not var_4009))) (let ((_let_455 (not var_4031))) (let ((_let_456 (not var_4035))) (let ((_let_457 (not var_3967))) (let ((_let_458 (not var_3963))) (let ((_let_459 (not var_3959))) (let ((_let_460 (not var_3955))) (let ((_let_461 (not var_3951))) (let ((_let_462 (not var_3947))) (let ((_let_463 (not var_3943))) (let ((_let_464 (not var_3939))) (let ((_let_465 (not var_3935))) (let ((_let_466 (not var_3931))) (let ((_let_467 (not var_3927))) (let ((_let_468 (not var_3923))) (let ((_let_469 (not var_3919))) (let ((_let_470 (not var_3915))) (let ((_let_471 (not var_3911))) (let ((_let_472 (not var_3907))) (let ((_let_473 (not var_3903))) (let ((_let_474 (not var_3899))) (let ((_let_475 (not var_3895))) (let ((_let_476 (not var_3891))) (let ((_let_477 (not var_3887))) (let ((_let_478 (not var_3883))) (let ((_let_479 (not var_3879))) (let ((_let_480 (not var_3875))) (let ((_let_481 (not var_3871))) (let ((_let_482 (not var_3867))) (let ((_let_483 (not var_3863))) (let ((_let_484 (not var_3859))) (let ((_let_485 (not var_3855))) (let ((_let_486 (not var_3851))) (let ((_let_487 (not var_3847))) (let ((_let_488 (not var_3843))) (let ((_let_489 (not var_3839))) (let ((_let_490 (not var_3473))) (let ((_let_491 (not var_3486))) (let ((_let_492 (not var_3428))) (let ((_let_493 (not var_3441))) (let ((_let_494 (not var_3383))) (let ((_let_495 (not var_3396))) (let ((_let_496 (not var_3338))) (let ((_let_497 (not var_3351))) (let ((_let_498 (not var_3293))) (let ((_let_499 (not var_3306))) (let ((_let_500 (not var_3248))) (let ((_let_501 (not var_3261))) (let ((_let_502 (not var_3203))) (let ((_let_503 (not var_3216))) (let ((_let_504 (not var_3158))) (let ((_let_505 (not var_3171))) (let ((_let_506 (not var_3113))) (let ((_let_507 (not var_3126))) (let ((_let_508 (not var_3068))) (let ((_let_509 (not var_3081))) (let ((_let_510 (not var_3023))) (let ((_let_511 (not var_3036))) (let ((_let_512 (not var_2978))) (let ((_let_513 (not var_2991))) (let ((_let_514 (not var_2933))) (let ((_let_515 (not var_2946))) (let ((_let_516 (not var_2888))) (let ((_let_517 (not var_2901))) (let ((_let_518 (not var_2843))) (let ((_let_519 (not var_2856))) (let ((_let_520 (not var_2798))) (let ((_let_521 (not var_2811))) (let ((_let_522 (not var_2753))) (let ((_let_523 (not var_2766))) (let ((_let_524 (not var_2708))) (let ((_let_525 (not var_2721))) (let ((_let_526 (not var_2663))) (let ((_let_527 (not var_2676))) (let ((_let_528 (not var_2618))) (let ((_let_529 (not var_2631))) (let ((_let_530 (not var_2573))) (let ((_let_531 (not var_2586))) (let ((_let_532 (not var_2528))) (let ((_let_533 (not var_2541))) (let ((_let_534 (not var_2483))) (let ((_let_535 (not var_2496))) (let ((_let_536 (not var_2438))) (let ((_let_537 (not var_2451))) (let ((_let_538 (not var_2393))) (let ((_let_539 (not var_2406))) (let ((_let_540 (not var_2348))) (let ((_let_541 (not var_2361))) (let ((_let_542 (not var_2303))) (let ((_let_543 (not var_2316))) (let ((_let_544 (not var_2258))) (let ((_let_545 (not var_2271))) (let ((_let_546 (not var_2213))) (let ((_let_547 (not var_2226))) (let ((_let_548 (not var_2168))) (let ((_let_549 (not var_2181))) (let ((_let_550 (not var_2123))) (let ((_let_551 (not var_2136))) (let ((_let_552 (not var_2078))) (let ((_let_553 (not var_2091))) (let ((_let_554 (not var_2033))) (let ((_let_555 (not var_2046))) (let ((_let_556 (not var_1988))) (let ((_let_557 (not var_2001))) (let ((_let_558 (not var_1943))) (let ((_let_559 (not var_1956))) (let ((_let_560 (not var_1898))) (let ((_let_561 (not var_1911))) (let ((_let_562 (not var_1853))) (let ((_let_563 (not var_1866))) (let ((_let_564 (not var_1808))) (let ((_let_565 (not var_1821))) (let ((_let_566 (not var_1763))) (let ((_let_567 (not var_1776))) (let ((_let_568 (not var_1718))) (let ((_let_569 (not var_1731))) (let ((_let_570 (not var_1673))) (let ((_let_571 (not var_1686))) (let ((_let_572 (not var_1628))) (let ((_let_573 (not var_1641))) (let ((_let_574 (not var_1583))) (let ((_let_575 (not var_1596))) (let ((_let_576 (not var_1538))) (let ((_let_577 (not var_1551))) (let ((_let_578 (not var_1493))) (let ((_let_579 (not var_1506))) (let ((_let_580 (not var_1448))) (let ((_let_581 (not var_1461))) (let ((_let_582 (not var_1403))) (let ((_let_583 (not var_1416))) (let ((_let_584 (not var_1358))) (let ((_let_585 (not var_1371))) (let ((_let_586 (not var_1313))) (let ((_let_587 (not var_1326))) (let ((_let_588 (not var_1268))) (let ((_let_589 (not var_1281))) (let ((_let_590 (not var_1223))) (let ((_let_591 (not var_1236))) (let ((_let_592 (not var_1178))) (let ((_let_593 (not var_1191))) (let ((_let_594 (not var_1133))) (let ((_let_595 (not var_1146))) (let ((_let_596 (not var_1088))) (let ((_let_597 (not var_1101))) (let ((_let_598 (not var_1043))) (let ((_let_599 (not var_1056))) (let ((_let_600 (not var_998))) (let ((_let_601 (not var_1011))) (let ((_let_602 (not var_953))) (let ((_let_603 (not var_966))) (let ((_let_604 (not var_908))) (let ((_let_605 (not var_921))) (let ((_let_606 (not var_863))) (let ((_let_607 (not var_876))) (let ((_let_608 (not var_818))) (let ((_let_609 (not var_831))) (let ((_let_610 (not var_773))) (let ((_let_611 (not var_786))) (let ((_let_612 (not var_728))) (let ((_let_613 (not var_741))) (let ((_let_614 (not var_683))) (let ((_let_615 (not var_696))) (let ((_let_616 (not var_638))) (let ((_let_617 (not var_651))) (let ((_let_618 (not var_593))) (let ((_let_619 (not var_606))) (let ((_let_620 (not var_548))) (let ((_let_621 (not var_561))) (let ((_let_622 (not var_503))) (let ((_let_623 (not var_516))) (let ((_let_624 (not var_458))) (let ((_let_625 (not var_471))) (let ((_let_626 (not var_413))) (let ((_let_627 (not var_426))) (let ((_let_628 (not var_368))) (let ((_let_629 (not var_381))) (let ((_let_630 (not var_323))) (let ((_let_631 (not var_336))) (let ((_let_632 (not var_278))) (let ((_let_633 (not var_291))) (let ((_let_634 (not var_233))) (let ((_let_635 (not var_246))) (let ((_let_636 (not var_188))) (let ((_let_637 (not var_201))) (let ((_let_638 (not var_143))) (let ((_let_639 (not var_156))) (let ((_let_640 (not var_98))) (let ((_let_641 (not var_111))) (let ((_let_642 (not var_3471))) (let ((_let_643 (not var_3467))) (let ((_let_644 (not var_3426))) (let ((_let_645 (not var_3422))) (let ((_let_646 (not var_3381))) (let ((_let_647 (not var_3377))) (let ((_let_648 (not var_3336))) (let ((_let_649 (not var_3332))) (let ((_let_650 (not var_3291))) (let ((_let_651 (not var_3287))) (let ((_let_652 (not var_3246))) (let ((_let_653 (not var_3242))) (let ((_let_654 (not var_3201))) (let ((_let_655 (not var_3197))) (let ((_let_656 (not var_3156))) (let ((_let_657 (not var_3152))) (let ((_let_658 (not var_3111))) (let ((_let_659 (not var_3107))) (let ((_let_660 (not var_3066))) (let ((_let_661 (not var_3062))) (let ((_let_662 (not var_3021))) (let ((_let_663 (not var_3017))) (let ((_let_664 (not var_2976))) (let ((_let_665 (not var_2972))) (let ((_let_666 (not var_2931))) (let ((_let_667 (not var_2927))) (let ((_let_668 (not var_2886))) (let ((_let_669 (not var_2882))) (let ((_let_670 (not var_2841))) (let ((_let_671 (not var_2837))) (let ((_let_672 (not var_2796))) (let ((_let_673 (not var_2792))) (let ((_let_674 (not var_2751))) (let ((_let_675 (not var_2747))) (let ((_let_676 (not var_2706))) (let ((_let_677 (not var_2702))) (let ((_let_678 (not var_2661))) (let ((_let_679 (not var_2657))) (let ((_let_680 (not var_2616))) (let ((_let_681 (not var_2612))) (let ((_let_682 (not var_2571))) (let ((_let_683 (not var_2567))) (let ((_let_684 (not var_2526))) (let ((_let_685 (not var_2522))) (let ((_let_686 (not var_2481))) (let ((_let_687 (not var_2477))) (let ((_let_688 (not var_2436))) (let ((_let_689 (not var_2432))) (let ((_let_690 (not var_2391))) (let ((_let_691 (not var_2387))) (let ((_let_692 (not var_2346))) (let ((_let_693 (not var_2342))) (let ((_let_694 (not var_2301))) (let ((_let_695 (not var_2297))) (let ((_let_696 (not var_2256))) (let ((_let_697 (not var_2252))) (let ((_let_698 (not var_2211))) (let ((_let_699 (not var_2207))) (let ((_let_700 (not var_2166))) (let ((_let_701 (not var_2162))) (let ((_let_702 (not var_2121))) (let ((_let_703 (not var_2117))) (let ((_let_704 (not var_2076))) (let ((_let_705 (not var_2072))) (let ((_let_706 (not var_2031))) (let ((_let_707 (not var_2027))) (let ((_let_708 (not var_1986))) (let ((_let_709 (not var_1982))) (let ((_let_710 (not var_1941))) (let ((_let_711 (not var_1937))) (let ((_let_712 (not var_1896))) (let ((_let_713 (not var_1892))) (let ((_let_714 (not var_1851))) (let ((_let_715 (not var_1847))) (let ((_let_716 (not var_1806))) (let ((_let_717 (not var_1802))) (let ((_let_718 (not var_1761))) (let ((_let_719 (not var_1757))) (let ((_let_720 (not var_1716))) (let ((_let_721 (not var_1712))) (let ((_let_722 (not var_1671))) (let ((_let_723 (not var_1667))) (let ((_let_724 (not var_1626))) (let ((_let_725 (not var_1622))) (let ((_let_726 (not var_1581))) (let ((_let_727 (not var_1577))) (let ((_let_728 (not var_1536))) (let ((_let_729 (not var_1532))) (let ((_let_730 (not var_1491))) (let ((_let_731 (not var_1487))) (let ((_let_732 (not var_1446))) (let ((_let_733 (not var_1442))) (let ((_let_734 (not var_1401))) (let ((_let_735 (not var_1397))) (let ((_let_736 (not var_1356))) (let ((_let_737 (not var_1352))) (let ((_let_738 (not var_1311))) (let ((_let_739 (not var_1307))) (let ((_let_740 (not var_1266))) (let ((_let_741 (not var_1262))) (let ((_let_742 (not var_1221))) (let ((_let_743 (not var_1217))) (let ((_let_744 (not var_1176))) (let ((_let_745 (not var_1172))) (let ((_let_746 (not var_1131))) (let ((_let_747 (not var_1127))) (let ((_let_748 (not var_1086))) (let ((_let_749 (not var_1082))) (let ((_let_750 (not var_1041))) (let ((_let_751 (not var_1037))) (let ((_let_752 (not var_996))) (let ((_let_753 (not var_992))) (let ((_let_754 (not var_951))) (let ((_let_755 (not var_947))) (let ((_let_756 (not var_906))) (let ((_let_757 (not var_902))) (let ((_let_758 (not var_861))) (let ((_let_759 (not var_857))) (let ((_let_760 (not var_816))) (let ((_let_761 (not var_812))) (let ((_let_762 (not var_771))) (let ((_let_763 (not var_767))) (let ((_let_764 (not var_726))) (let ((_let_765 (not var_722))) (let ((_let_766 (not var_681))) (let ((_let_767 (not var_677))) (let ((_let_768 (not var_636))) (let ((_let_769 (not var_632))) (let ((_let_770 (not var_591))) (let ((_let_771 (not var_587))) (let ((_let_772 (not var_546))) (let ((_let_773 (not var_542))) (let ((_let_774 (not var_501))) (let ((_let_775 (not var_497))) (let ((_let_776 (not var_456))) (let ((_let_777 (not var_452))) (let ((_let_778 (not var_411))) (let ((_let_779 (not var_407))) (let ((_let_780 (not var_366))) (let ((_let_781 (not var_362))) (let ((_let_782 (not var_321))) (let ((_let_783 (not var_317))) (let ((_let_784 (not var_276))) (let ((_let_785 (not var_272))) (let ((_let_786 (not var_231))) (let ((_let_787 (not var_227))) (let ((_let_788 (not var_186))) (let ((_let_789 (not var_182))) (let ((_let_790 (not var_141))) (let ((_let_791 (not var_137))) (let ((_let_792 (not var_96))) (let ((_let_793 (not var_92))) (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and _let_793 (or _let_792 var_98)) _let_133) (or _let_135 _let_793)) (or _let_641 var_92)) (or _let_133 _let_792)) (or _let_640 var_96)) (or _let_135 var_96)) (or _let_641 _let_792)) (or (or _let_793 var_96) var_111)) (or (or var_92 _let_792) var_106)) _let_791) (or _let_790 var_143)) _let_134) (or _let_136 _let_791)) (or _let_639 var_137)) (or _let_134 _let_790)) (or _let_638 var_141)) (or _let_136 var_141)) (or _let_639 _let_790)) (or (or _let_791 var_141) var_156)) (or (or var_137 _let_790) var_151)) _let_789) (or _let_788 var_188)) _let_231) (or _let_232 _let_789)) (or _let_637 var_182)) (or _let_231 _let_788)) (or _let_636 var_186)) (or _let_232 var_186)) (or _let_637 _let_788)) (or (or _let_789 var_186) var_201)) (or (or var_182 _let_788) var_196)) _let_787) (or _let_786 var_233)) _let_129) (or _let_131 _let_787)) (or _let_635 var_227)) (or _let_129 _let_786)) (or _let_634 var_231)) (or _let_131 var_231)) (or _let_635 _let_786)) (or (or _let_787 var_231) var_246)) (or (or var_227 _let_786) var_241)) _let_785) (or _let_784 var_278)) _let_130) (or _let_132 _let_785)) (or _let_633 var_272)) (or _let_130 _let_784)) (or _let_632 var_276)) (or _let_132 var_276)) (or _let_633 _let_784)) (or (or _let_785 var_276) var_291)) (or (or var_272 _let_784) var_286)) _let_783) (or _let_782 var_323)) _let_125) (or _let_127 _let_783)) (or _let_631 var_317)) (or _let_125 _let_782)) (or _let_630 var_321)) (or _let_127 var_321)) (or _let_631 _let_782)) (or (or _let_783 var_321) var_336)) (or (or var_317 _let_782) var_331)) _let_781) (or _let_780 var_368)) _let_126) (or _let_128 _let_781)) (or _let_629 var_362)) (or _let_126 _let_780)) (or _let_628 var_366)) (or _let_128 var_366)) (or _let_629 _let_780)) (or (or _let_781 var_366) var_381)) (or (or var_362 _let_780) var_376)) _let_779) (or _let_778 var_413)) _let_199) (or _let_200 _let_779)) (or _let_627 var_407)) (or _let_199 _let_778)) (or _let_626 var_411)) (or _let_200 var_411)) (or _let_627 _let_778)) (or (or _let_779 var_411) var_426)) (or (or var_407 _let_778) var_421)) _let_777) (or _let_776 var_458)) _let_121) (or _let_123 _let_777)) (or _let_625 var_452)) (or _let_121 _let_776)) (or _let_624 var_456)) (or _let_123 var_456)) (or _let_625 _let_776)) (or (or _let_777 var_456) var_471)) (or (or var_452 _let_776) var_466)) _let_775) (or _let_774 var_503)) _let_122) (or _let_124 _let_775)) (or _let_623 var_497)) (or _let_122 _let_774)) (or _let_622 var_501)) (or _let_124 var_501)) (or _let_623 _let_774)) (or (or _let_775 var_501) var_516)) (or (or var_497 _let_774) var_511)) _let_773) (or _let_772 var_548)) _let_117) (or _let_119 _let_773)) (or _let_621 var_542)) (or _let_117 _let_772)) (or _let_620 var_546)) (or _let_119 var_546)) (or _let_621 _let_772)) (or (or _let_773 var_546) var_561)) (or (or var_542 _let_772) var_556)) _let_771) (or _let_770 var_593)) _let_118) (or _let_120 _let_771)) (or _let_619 var_587)) (or _let_118 _let_770)) (or _let_618 var_591)) (or _let_120 var_591)) (or _let_619 _let_770)) (or (or _let_771 var_591) var_606)) (or (or var_587 _let_770) var_601)) _let_769) (or _let_768 var_638)) _let_113) (or _let_115 _let_769)) (or _let_617 var_632)) (or _let_113 _let_768)) (or _let_616 var_636)) (or _let_115 var_636)) (or _let_617 _let_768)) (or (or _let_769 var_636) var_651)) (or (or var_632 _let_768) var_646)) _let_767) (or _let_766 var_683)) _let_114) (or _let_116 _let_767)) (or _let_615 var_677)) (or _let_114 _let_766)) (or _let_614 var_681)) (or _let_116 var_681)) (or _let_615 _let_766)) (or (or _let_767 var_681) var_696)) (or (or var_677 _let_766) var_691)) _let_765) (or _let_764 var_728)) _let_111) (or _let_112 _let_765)) (or _let_613 var_722)) (or _let_111 _let_764)) (or _let_612 var_726)) (or _let_112 var_726)) (or _let_613 _let_764)) (or (or _let_765 var_726) var_741)) (or (or var_722 _let_764) var_736)) _let_763) (or _let_762 var_773)) _let_109) (or _let_110 _let_763)) (or _let_611 var_767)) (or _let_109 _let_762)) (or _let_610 var_771)) (or _let_110 var_771)) (or _let_611 _let_762)) (or (or _let_763 var_771) var_786)) (or (or var_767 _let_762) var_781)) _let_761) (or _let_760 var_818)) _let_105) (or _let_107 _let_761)) (or _let_609 var_812)) (or _let_105 _let_760)) (or _let_608 var_816)) (or _let_107 var_816)) (or _let_609 _let_760)) (or (or _let_761 var_816) var_831)) (or (or var_812 _let_760) var_826)) _let_759) (or _let_758 var_863)) _let_106) (or _let_108 _let_759)) (or _let_607 var_857)) (or _let_106 _let_758)) (or _let_606 var_861)) (or _let_108 var_861)) (or _let_607 _let_758)) (or (or _let_759 var_861) var_876)) (or (or var_857 _let_758) var_871)) _let_757) (or _let_756 var_908)) _let_103) (or _let_104 _let_757)) (or _let_605 var_902)) (or _let_103 _let_756)) (or _let_604 var_906)) (or _let_104 var_906)) (or _let_605 _let_756)) (or (or _let_757 var_906) var_921)) (or (or var_902 _let_756) var_916)) _let_755) (or _let_754 var_953)) _let_101) (or _let_102 _let_755)) (or _let_603 var_947)) (or _let_101 _let_754)) (or _let_602 var_951)) (or _let_102 var_951)) (or _let_603 _let_754)) (or (or _let_755 var_951) var_966)) (or (or var_947 _let_754) var_961)) _let_753) (or _let_752 var_998)) _let_97) (or _let_99 _let_753)) (or _let_601 var_992)) (or _let_97 _let_752)) (or _let_600 var_996)) (or _let_99 var_996)) (or _let_601 _let_752)) (or (or _let_753 var_996) var_1011)) (or (or var_992 _let_752) var_1006)) _let_751) (or _let_750 var_1043)) _let_98) (or _let_100 _let_751)) (or _let_599 var_1037)) (or _let_98 _let_750)) (or _let_598 var_1041)) (or _let_100 var_1041)) (or _let_599 _let_750)) (or (or _let_751 var_1041) var_1056)) (or (or var_1037 _let_750) var_1051)) _let_749) (or _let_748 var_1088)) _let_95) (or _let_96 _let_749)) (or _let_597 var_1082)) (or _let_95 _let_748)) (or _let_596 var_1086)) (or _let_96 var_1086)) (or _let_597 _let_748)) (or (or _let_749 var_1086) var_1101)) (or (or var_1082 _let_748) var_1096)) _let_747) (or _let_746 var_1133)) _let_93) (or _let_94 _let_747)) (or _let_595 var_1127)) (or _let_93 _let_746)) (or _let_594 var_1131)) (or _let_94 var_1131)) (or _let_595 _let_746)) (or (or _let_747 var_1131) var_1146)) (or (or var_1127 _let_746) var_1141)) _let_745) (or _let_744 var_1178)) _let_89) (or _let_91 _let_745)) (or _let_593 var_1172)) (or _let_89 _let_744)) (or _let_592 var_1176)) (or _let_91 var_1176)) (or _let_593 _let_744)) (or (or _let_745 var_1176) var_1191)) (or (or var_1172 _let_744) var_1186)) _let_743) (or _let_742 var_1223)) _let_90) (or _let_92 _let_743)) (or _let_591 var_1217)) (or _let_90 _let_742)) (or _let_590 var_1221)) (or _let_92 var_1221)) (or _let_591 _let_742)) (or (or _let_743 var_1221) var_1236)) (or (or var_1217 _let_742) var_1231)) _let_741) (or _let_740 var_1268)) _let_85) (or _let_87 _let_741)) (or _let_589 var_1262)) (or _let_85 _let_740)) (or _let_588 var_1266)) (or _let_87 var_1266)) (or _let_589 _let_740)) (or (or _let_741 var_1266) var_1281)) (or (or var_1262 _let_740) var_1276)) _let_739) (or _let_738 var_1313)) _let_86) (or _let_88 _let_739)) (or _let_587 var_1307)) (or _let_86 _let_738)) (or _let_586 var_1311)) (or _let_88 var_1311)) (or _let_587 _let_738)) (or (or _let_739 var_1311) var_1326)) (or (or var_1307 _let_738) var_1321)) _let_737) (or _let_736 var_1358)) _let_81) (or _let_83 _let_737)) (or _let_585 var_1352)) (or _let_81 _let_736)) (or _let_584 var_1356)) (or _let_83 var_1356)) (or _let_585 _let_736)) (or (or _let_737 var_1356) var_1371)) (or (or var_1352 _let_736) var_1366)) _let_735) (or _let_734 var_1403)) _let_82) (or _let_84 _let_735)) (or _let_583 var_1397)) (or _let_82 _let_734)) (or _let_582 var_1401)) (or _let_84 var_1401)) (or _let_583 _let_734)) (or (or _let_735 var_1401) var_1416)) (or (or var_1397 _let_734) var_1411)) _let_733) (or _let_732 var_1448)) _let_209) (or _let_210 _let_733)) (or _let_581 var_1442)) (or _let_209 _let_732)) (or _let_580 var_1446)) (or _let_210 var_1446)) (or _let_581 _let_732)) (or (or _let_733 var_1446) var_1461)) (or (or var_1442 _let_732) var_1456)) _let_731) (or _let_730 var_1493)) _let_197) (or _let_198 _let_731)) (or _let_579 var_1487)) (or _let_197 _let_730)) (or _let_578 var_1491)) (or _let_198 var_1491)) (or _let_579 _let_730)) (or (or _let_731 var_1491) var_1506)) (or (or var_1487 _let_730) var_1501)) _let_729) (or _let_728 var_1538)) _let_79) (or _let_80 _let_729)) (or _let_577 var_1532)) (or _let_79 _let_728)) (or _let_576 var_1536)) (or _let_80 var_1536)) (or _let_577 _let_728)) (or (or _let_729 var_1536) var_1551)) (or (or var_1532 _let_728) var_1546)) _let_727) (or _let_726 var_1583)) _let_77) (or _let_78 _let_727)) (or _let_575 var_1577)) (or _let_77 _let_726)) (or _let_574 var_1581)) (or _let_78 var_1581)) (or _let_575 _let_726)) (or (or _let_727 var_1581) var_1596)) (or (or var_1577 _let_726) var_1591)) _let_725) (or _let_724 var_1628)) _let_73) (or _let_75 _let_725)) (or _let_573 var_1622)) (or _let_73 _let_724)) (or _let_572 var_1626)) (or _let_75 var_1626)) (or _let_573 _let_724)) (or (or _let_725 var_1626) var_1641)) (or (or var_1622 _let_724) var_1636)) _let_723) (or _let_722 var_1673)) _let_74) (or _let_76 _let_723)) (or _let_571 var_1667)) (or _let_74 _let_722)) (or _let_570 var_1671)) (or _let_76 var_1671)) (or _let_571 _let_722)) (or (or _let_723 var_1671) var_1686)) (or (or var_1667 _let_722) var_1681)) _let_721) (or _let_720 var_1718)) _let_71) (or _let_72 _let_721)) (or _let_569 var_1712)) (or _let_71 _let_720)) (or _let_568 var_1716)) (or _let_72 var_1716)) (or _let_569 _let_720)) (or (or _let_721 var_1716) var_1731)) (or (or var_1712 _let_720) var_1726)) _let_719) (or _let_718 var_1763)) _let_69) (or _let_70 _let_719)) (or _let_567 var_1757)) (or _let_69 _let_718)) (or _let_566 var_1761)) (or _let_70 var_1761)) (or _let_567 _let_718)) (or (or _let_719 var_1761) var_1776)) (or (or var_1757 _let_718) var_1771)) _let_717) (or _let_716 var_1808)) _let_65) (or _let_67 _let_717)) (or _let_565 var_1802)) (or _let_65 _let_716)) (or _let_564 var_1806)) (or _let_67 var_1806)) (or _let_565 _let_716)) (or (or _let_717 var_1806) var_1821)) (or (or var_1802 _let_716) var_1816)) _let_715) (or _let_714 var_1853)) _let_66) (or _let_68 _let_715)) (or _let_563 var_1847)) (or _let_66 _let_714)) (or _let_562 var_1851)) (or _let_68 var_1851)) (or _let_563 _let_714)) (or (or _let_715 var_1851) var_1866)) (or (or var_1847 _let_714) var_1861)) _let_713) (or _let_712 var_1898)) _let_63) (or _let_64 _let_713)) (or _let_561 var_1892)) (or _let_63 _let_712)) (or _let_560 var_1896)) (or _let_64 var_1896)) (or _let_561 _let_712)) (or (or _let_713 var_1896) var_1911)) (or (or var_1892 _let_712) var_1906)) _let_711) (or _let_710 var_1943)) _let_61) (or _let_62 _let_711)) (or _let_559 var_1937)) (or _let_61 _let_710)) (or _let_558 var_1941)) (or _let_62 var_1941)) (or _let_559 _let_710)) (or (or _let_711 var_1941) var_1956)) (or (or var_1937 _let_710) var_1951)) _let_709) (or _let_708 var_1988)) _let_57) (or _let_59 _let_709)) (or _let_557 var_1982)) (or _let_57 _let_708)) (or _let_556 var_1986)) (or _let_59 var_1986)) (or _let_557 _let_708)) (or (or _let_709 var_1986) var_2001)) (or (or var_1982 _let_708) var_1996)) _let_707) (or _let_706 var_2033)) _let_58) (or _let_60 _let_707)) (or _let_555 var_2027)) (or _let_58 _let_706)) (or _let_554 var_2031)) (or _let_60 var_2031)) (or _let_555 _let_706)) (or (or _let_707 var_2031) var_2046)) (or (or var_2027 _let_706) var_2041)) _let_705) (or _let_704 var_2078)) _let_187) (or _let_188 _let_705)) (or _let_553 var_2072)) (or _let_187 _let_704)) (or _let_552 var_2076)) (or _let_188 var_2076)) (or _let_553 _let_704)) (or (or _let_705 var_2076) var_2091)) (or (or var_2072 _let_704) var_2086)) _let_703) (or _let_702 var_2123)) _let_181) (or _let_182 _let_703)) (or _let_551 var_2117)) (or _let_181 _let_702)) (or _let_550 var_2121)) (or _let_182 var_2121)) (or _let_551 _let_702)) (or (or _let_703 var_2121) var_2136)) (or (or var_2117 _let_702) var_2131)) _let_701) (or _let_700 var_2168)) _let_53) (or _let_55 _let_701)) (or _let_549 var_2162)) (or _let_53 _let_700)) (or _let_548 var_2166)) (or _let_55 var_2166)) (or _let_549 _let_700)) (or (or _let_701 var_2166) var_2181)) (or (or var_2162 _let_700) var_2176)) _let_699) (or _let_698 var_2213)) _let_54) (or _let_56 _let_699)) (or _let_547 var_2207)) (or _let_54 _let_698)) (or _let_546 var_2211)) (or _let_56 var_2211)) (or _let_547 _let_698)) (or (or _let_699 var_2211) var_2226)) (or (or var_2207 _let_698) var_2221)) _let_697) (or _let_696 var_2258)) _let_49) (or _let_51 _let_697)) (or _let_545 var_2252)) (or _let_49 _let_696)) (or _let_544 var_2256)) (or _let_51 var_2256)) (or _let_545 _let_696)) (or (or _let_697 var_2256) var_2271)) (or (or var_2252 _let_696) var_2266)) _let_695) (or _let_694 var_2303)) _let_50) (or _let_52 _let_695)) (or _let_543 var_2297)) (or _let_50 _let_694)) (or _let_542 var_2301)) (or _let_52 var_2301)) (or _let_543 _let_694)) (or (or _let_695 var_2301) var_2316)) (or (or var_2297 _let_694) var_2311)) _let_693) (or _let_692 var_2348)) _let_47) (or _let_48 _let_693)) (or _let_541 var_2342)) (or _let_47 _let_692)) (or _let_540 var_2346)) (or _let_48 var_2346)) (or _let_541 _let_692)) (or (or _let_693 var_2346) var_2361)) (or (or var_2342 _let_692) var_2356)) _let_691) (or _let_690 var_2393)) _let_45) (or _let_46 _let_691)) (or _let_539 var_2387)) (or _let_45 _let_690)) (or _let_538 var_2391)) (or _let_46 var_2391)) (or _let_539 _let_690)) (or (or _let_691 var_2391) var_2406)) (or (or var_2387 _let_690) var_2401)) _let_689) (or _let_688 var_2438)) _let_41) (or _let_43 _let_689)) (or _let_537 var_2432)) (or _let_41 _let_688)) (or _let_536 var_2436)) (or _let_43 var_2436)) (or _let_537 _let_688)) (or (or _let_689 var_2436) var_2451)) (or (or var_2432 _let_688) var_2446)) _let_687) (or _let_686 var_2483)) _let_42) (or _let_44 _let_687)) (or _let_535 var_2477)) (or _let_42 _let_686)) (or _let_534 var_2481)) (or _let_44 var_2481)) (or _let_535 _let_686)) (or (or _let_687 var_2481) var_2496)) (or (or var_2477 _let_686) var_2491)) _let_685) (or _let_684 var_2528)) _let_39) (or _let_40 _let_685)) (or _let_533 var_2522)) (or _let_39 _let_684)) (or _let_532 var_2526)) (or _let_40 var_2526)) (or _let_533 _let_684)) (or (or _let_685 var_2526) var_2541)) (or (or var_2522 _let_684) var_2536)) _let_683) (or _let_682 var_2573)) _let_37) (or _let_38 _let_683)) (or _let_531 var_2567)) (or _let_37 _let_682)) (or _let_530 var_2571)) (or _let_38 var_2571)) (or _let_531 _let_682)) (or (or _let_683 var_2571) var_2586)) (or (or var_2567 _let_682) var_2581)) _let_681) (or _let_680 var_2618)) _let_33) (or _let_35 _let_681)) (or _let_529 var_2612)) (or _let_33 _let_680)) (or _let_528 var_2616)) (or _let_35 var_2616)) (or _let_529 _let_680)) (or (or _let_681 var_2616) var_2631)) (or (or var_2612 _let_680) var_2626)) _let_679) (or _let_678 var_2663)) _let_34) (or _let_36 _let_679)) (or _let_527 var_2657)) (or _let_34 _let_678)) (or _let_526 var_2661)) (or _let_36 var_2661)) (or _let_527 _let_678)) (or (or _let_679 var_2661) var_2676)) (or (or var_2657 _let_678) var_2671)) _let_677) (or _let_676 var_2708)) _let_31) (or _let_32 _let_677)) (or _let_525 var_2702)) (or _let_31 _let_676)) (or _let_524 var_2706)) (or _let_32 var_2706)) (or _let_525 _let_676)) (or (or _let_677 var_2706) var_2721)) (or (or var_2702 _let_676) var_2716)) _let_675) (or _let_674 var_2753)) _let_29) (or _let_30 _let_675)) (or _let_523 var_2747)) (or _let_29 _let_674)) (or _let_522 var_2751)) (or _let_30 var_2751)) (or _let_523 _let_674)) (or (or _let_675 var_2751) var_2766)) (or (or var_2747 _let_674) var_2761)) _let_673) (or _let_672 var_2798)) _let_25) (or _let_27 _let_673)) (or _let_521 var_2792)) (or _let_25 _let_672)) (or _let_520 var_2796)) (or _let_27 var_2796)) (or _let_521 _let_672)) (or (or _let_673 var_2796) var_2811)) (or (or var_2792 _let_672) var_2806)) _let_671) (or _let_670 var_2843)) _let_26) (or _let_28 _let_671)) (or _let_519 var_2837)) (or _let_26 _let_670)) (or _let_518 var_2841)) (or _let_28 var_2841)) (or _let_519 _let_670)) (or (or _let_671 var_2841) var_2856)) (or (or var_2837 _let_670) var_2851)) _let_669) (or _let_668 var_2888)) _let_21) (or _let_23 _let_669)) (or _let_517 var_2882)) (or _let_21 _let_668)) (or _let_516 var_2886)) (or _let_23 var_2886)) (or _let_517 _let_668)) (or (or _let_669 var_2886) var_2901)) (or (or var_2882 _let_668) var_2896)) _let_667) (or _let_666 var_2933)) _let_22) (or _let_24 _let_667)) (or _let_515 var_2927)) (or _let_22 _let_666)) (or _let_514 var_2931)) (or _let_24 var_2931)) (or _let_515 _let_666)) (or (or _let_667 var_2931) var_2946)) (or (or var_2927 _let_666) var_2941)) _let_665) (or _let_664 var_2978)) _let_17) (or _let_19 _let_665)) (or _let_513 var_2972)) (or _let_17 _let_664)) (or _let_512 var_2976)) (or _let_19 var_2976)) (or _let_513 _let_664)) (or (or _let_665 var_2976) var_2991)) (or (or var_2972 _let_664) var_2986)) _let_663) (or _let_662 var_3023)) _let_18) (or _let_20 _let_663)) (or _let_511 var_3017)) (or _let_18 _let_662)) (or _let_510 var_3021)) (or _let_20 var_3021)) (or _let_511 _let_662)) (or (or _let_663 var_3021) var_3036)) (or (or var_3017 _let_662) var_3031)) _let_661) (or _let_660 var_3068)) _let_13) (or _let_15 _let_661)) (or _let_509 var_3062)) (or _let_13 _let_660)) (or _let_508 var_3066)) (or _let_15 var_3066)) (or _let_509 _let_660)) (or (or _let_661 var_3066) var_3081)) (or (or var_3062 _let_660) var_3076)) _let_659) (or _let_658 var_3113)) _let_14) (or _let_16 _let_659)) (or _let_507 var_3107)) (or _let_14 _let_658)) (or _let_506 var_3111)) (or _let_16 var_3111)) (or _let_507 _let_658)) (or (or _let_659 var_3111) var_3126)) (or (or var_3107 _let_658) var_3121)) _let_657) (or _let_656 var_3158)) _let_163) (or _let_164 _let_657)) (or _let_505 var_3152)) (or _let_163 _let_656)) (or _let_504 var_3156)) (or _let_164 var_3156)) (or _let_505 _let_656)) (or (or _let_657 var_3156) var_3171)) (or (or var_3152 _let_656) var_3166)) _let_655) (or _let_654 var_3203)) _let_9) (or _let_11 _let_655)) (or _let_503 var_3197)) (or _let_9 _let_654)) (or _let_502 var_3201)) (or _let_11 var_3201)) (or _let_503 _let_654)) (or (or _let_655 var_3201) var_3216)) (or (or var_3197 _let_654) var_3211)) _let_653) (or _let_652 var_3248)) _let_10) (or _let_12 _let_653)) (or _let_501 var_3242)) (or _let_10 _let_652)) (or _let_500 var_3246)) (or _let_12 var_3246)) (or _let_501 _let_652)) (or (or _let_653 var_3246) var_3261)) (or (or var_3242 _let_652) var_3256)) _let_651) (or _let_650 var_3293)) _let_5) (or _let_7 _let_651)) (or _let_499 var_3287)) (or _let_5 _let_650)) (or _let_498 var_3291)) (or _let_7 var_3291)) (or _let_499 _let_650)) (or (or _let_651 var_3291) var_3306)) (or (or var_3287 _let_650) var_3301)) _let_649) (or _let_648 var_3338)) _let_6) (or _let_8 _let_649)) (or _let_497 var_3332)) (or _let_6 _let_648)) (or _let_496 var_3336)) (or _let_8 var_3336)) (or _let_497 _let_648)) (or (or _let_649 var_3336) var_3351)) (or (or var_3332 _let_648) var_3346)) _let_647) (or _let_646 var_3383)) _let_141) (or _let_142 _let_647)) (or _let_495 var_3377)) (or _let_141 _let_646)) (or _let_494 var_3381)) (or _let_142 var_3381)) (or _let_495 _let_646)) (or (or _let_647 var_3381) var_3396)) (or (or var_3377 _let_646) var_3391)) _let_645) (or _let_644 var_3428)) _let_1) (or _let_3 _let_645)) (or _let_493 var_3422)) (or _let_1 _let_644)) (or _let_492 var_3426)) (or _let_3 var_3426)) (or _let_493 _let_644)) (or (or _let_645 var_3426) var_3441)) (or (or var_3422 _let_644) var_3436)) _let_643) (or _let_642 var_3473)) _let_2) (or _let_4 _let_643)) (or _let_491 var_3467)) (or _let_2 _let_642)) (or _let_490 var_3471)) (or _let_4 var_3471)) (or _let_491 _let_642)) (or (or _let_643 var_3471) var_3486)) (or (or var_3467 _let_642) var_3481)) var_3512) var_3515) var_3518) var_3521) var_3524) var_3527) var_3530) var_3533) var_3536) var_3539) var_3542) var_3545) var_3548) var_3551) var_3554) var_3557) var_3560) var_3563) var_3566) var_3569) var_3572) var_3575) var_3578) var_3581) var_3584) var_3587) var_3590) var_3593) var_3596) var_3599) var_3602) var_3605) var_3608) var_3611) var_3614) var_3617) var_3620) var_3623) var_3626) var_3629) var_3632) var_3635) var_3638) var_3641) var_3644) var_3647) var_3650) var_3653) var_3656) var_3659) var_3662) var_3665) var_3668) var_3671) var_3674) var_3677) var_3680) var_3683) var_3686) var_3689) var_3692) var_3695) var_3698) var_3701) var_3704) var_3707) var_3710) var_3713) var_3716) var_3719) var_3722) var_3725) var_3728) var_3731) var_3734) var_3737) var_3740) var_3743) var_3746) var_3749) var_3752) var_3755) var_3758) var_3761) var_3764) var_3767) var_3770) var_3773) var_3776) var_3779) var_3782) var_3785) var_3788) var_3791) var_3794) var_3797) var_3800) var_3803) var_3806) var_3809) var_3812) var_3815) var_3818) var_3821) var_3824) var_3827) var_3830) var_3833) var_3836) _let_489) _let_488) _let_487) _let_486) _let_485) _let_484) _let_483) _let_482) _let_481) _let_480) _let_479) _let_478) _let_477) _let_476) _let_475) _let_474) _let_473) _let_472) _let_471) _let_470) _let_469) _let_468) _let_467) _let_466) _let_465) _let_464) _let_463) _let_462) _let_461) _let_460) _let_459) _let_458) _let_457) var_3971) var_3974) (or _let_135 var_3791)) (or _let_133 var_3980)) (or _let_135 var_3843)) (or _let_133 var_3987)) (or _let_135 var_3740)) (or _let_133 var_3994)) (or _let_135 var_3515)) (or _let_133 var_4001)) (or _let_135 _let_453)) (or _let_133 _let_454)) (or _let_135 _let_451)) (or _let_133 _let_452)) (or _let_135 _let_389)) (or _let_133 _let_390)) (or _let_641 var_4031)) (or _let_640 var_4035)) (or _let_641 var_4039)) (or _let_640 var_3974)) (or _let_641 var_4046)) (or _let_640 var_4050)) (or _let_136 var_3847)) (or _let_134 var_4057)) (or _let_136 var_3855)) (or _let_134 var_4064)) (or _let_136 var_3740)) (or _let_134 var_3994)) (or _let_136 var_3521)) (or _let_134 var_4077)) (or _let_136 _let_449)) (or _let_134 _let_450)) (or _let_136 _let_439)) (or _let_134 _let_440)) (or _let_136 _let_389)) (or _let_134 _let_390)) (or _let_639 var_4031)) (or _let_638 var_4035)) (or _let_639 var_4111)) (or _let_638 var_4115)) (or _let_639 var_4119)) (or _let_638 var_4123)) (or _let_232 var_3794)) (or _let_231 var_4130)) (or _let_232 var_3859)) (or _let_231 var_4137)) (or _let_232 var_3907)) (or _let_231 var_4039)) (or _let_232 var_3527)) (or _let_231 var_4150)) (or _let_232 _let_447)) (or _let_231 _let_448)) (or _let_232 _let_437)) (or _let_231 _let_438)) (or _let_232 _let_387)) (or _let_231 _let_388)) (or _let_637 var_3980)) (or _let_636 var_4009)) (or _let_637 var_4186)) (or _let_636 var_4190)) (or _let_637 var_4194)) (or _let_636 var_4198)) (or _let_131 var_3839)) (or _let_129 var_4031)) (or _let_131 var_3791)) (or _let_129 var_3980)) (or _let_131 var_3743)) (or _let_129 var_4046)) (or _let_131 var_3512)) (or _let_129 var_4223)) (or _let_131 _let_455)) (or _let_129 _let_456)) (or _let_131 _let_453)) (or _let_129 _let_454)) (or _let_131 _let_385)) (or _let_129 _let_386)) (or _let_635 var_3987)) (or _let_634 var_4018)) (or _let_635 var_3994)) (or _let_634 var_3971)) (or _let_635 var_4039)) (or _let_634 var_3974)) (or _let_132 var_3851)) (or _let_130 var_4270)) (or _let_132 var_3863)) (or _let_130 var_4277)) (or _let_132 var_3743)) (or _let_130 var_4046)) (or _let_132 var_3533)) (or _let_130 var_4290)) (or _let_132 _let_445)) (or _let_130 _let_446)) (or _let_132 _let_435)) (or _let_130 _let_436)) (or _let_132 _let_385)) (or _let_130 _let_386)) (or _let_633 var_3987)) (or _let_632 var_4018)) (or _let_633 var_4324)) (or _let_632 var_4328)) (or _let_633 var_4332)) (or _let_632 var_4336)) (or _let_127 var_3794)) (or _let_125 var_4130)) (or _let_127 var_3851)) (or _let_125 var_4270)) (or _let_127 var_3746)) (or _let_125 var_4111)) (or _let_127 var_3539)) (or _let_125 var_4361)) (or _let_127 _let_447)) (or _let_125 _let_448)) (or _let_127 _let_445)) (or _let_125 _let_446)) (or _let_127 _let_383)) (or _let_125 _let_384)) (or _let_631 var_4057)) (or _let_630 var_4085)) (or _let_631 var_4186)) (or _let_630 var_4190)) (or _let_631 var_4324)) (or _let_630 var_4328)) (or _let_128 var_3855)) (or _let_126 var_4064)) (or _let_128 var_3809)) (or _let_126 var_4412)) (or _let_128 var_3746)) (or _let_126 var_4111)) (or _let_128 var_3545)) (or _let_126 var_4425)) (or _let_128 _let_439)) (or _let_126 _let_440)) (or _let_128 _let_425)) (or _let_126 _let_426)) (or _let_128 _let_383)) (or _let_126 _let_384)) (or _let_629 var_4057)) (or _let_628 var_4085)) (or _let_629 var_4119)) (or _let_628 var_4123)) (or _let_629 var_4462)) (or _let_628 var_4466)) (or _let_200 var_3859)) (or _let_199 var_4137)) (or _let_200 var_3875)) (or _let_199 var_4479)) (or _let_200 var_3911)) (or _let_199 var_4186)) (or _let_200 var_3551)) (or _let_199 var_4492)) (or _let_200 _let_437)) (or _let_199 _let_438)) (or _let_200 _let_423)) (or _let_199 _let_424)) (or _let_200 _let_381)) (or _let_199 _let_382)) (or _let_627 var_4130)) (or _let_626 var_4158)) (or _let_627 var_4194)) (or _let_626 var_4198)) (or _let_627 var_4531)) (or _let_626 var_4535)) (or _let_123 var_3847)) (or _let_121 var_4057)) (or _let_123 var_3794)) (or _let_121 var_4130)) (or _let_123 var_3749)) (or _let_121 var_4324)) (or _let_123 var_3536)) (or _let_121 var_4560)) (or _let_123 _let_449)) (or _let_121 _let_450)) (or _let_123 _let_447)) (or _let_121 _let_448)) (or _let_123 _let_379)) (or _let_121 _let_380)) (or _let_625 var_4270)) (or _let_624 var_4298)) (or _let_625 var_4111)) (or _let_624 var_4115)) (or _let_625 var_4186)) (or _let_624 var_4190)) (or _let_124 var_3863)) (or _let_122 var_4277)) (or _let_124 var_3812)) (or _let_122 var_4611)) (or _let_124 var_3749)) (or _let_122 var_4324)) (or _let_124 var_3557)) (or _let_122 var_4624)) (or _let_124 _let_435)) (or _let_122 _let_436)) (or _let_124 _let_421)) (or _let_122 _let_422)) (or _let_124 _let_379)) (or _let_122 _let_380)) (or _let_623 var_4270)) (or _let_622 var_4298)) (or _let_623 var_4332)) (or _let_622 var_4336)) (or _let_623 var_4661)) (or _let_622 var_4665)) (or _let_119 var_3800)) (or _let_117 var_4672)) (or _let_119 var_3855)) (or _let_117 var_4064)) (or _let_119 var_3915)) (or _let_117 var_4685)) (or _let_119 var_3563)) (or _let_117 var_4692)) (or _let_119 _let_441)) (or _let_117 _let_442)) (or _let_119 _let_439)) (or _let_117 _let_440)) (or _let_119 _let_377)) (or _let_117 _let_378)) (or _let_621 var_4720)) (or _let_620 var_4724)) (or _let_621 var_4728)) (or _let_620 var_4732)) (or _let_621 var_4119)) (or _let_620 var_4123)) (or _let_120 var_3871)) (or _let_118 var_4745)) (or _let_120 var_3821)) (or _let_118 var_4752)) (or _let_120 var_3915)) (or _let_118 var_4685)) (or _let_120 var_3569)) (or _let_118 var_4765)) (or _let_120 _let_429)) (or _let_118 _let_430)) (or _let_120 _let_415)) (or _let_118 _let_416)) (or _let_120 _let_377)) (or _let_118 _let_378)) (or _let_619 var_4720)) (or _let_618 var_4724)) (or _let_619 var_4799)) (or _let_618 var_4803)) (or _let_619 var_4807)) (or _let_618 var_4811)) (or _let_115 var_3855)) (or _let_113 var_4064)) (or _let_115 var_3859)) (or _let_113 var_4137)) (or _let_115 var_3919)) (or _let_113 var_4728)) (or _let_115 var_3575)) (or _let_113 var_4836)) (or _let_115 _let_439)) (or _let_113 _let_440)) (or _let_115 _let_437)) (or _let_113 _let_438)) (or _let_115 _let_375)) (or _let_113 _let_376)) (or _let_617 var_4672)) (or _let_616 var_4700)) (or _let_617 var_4119)) (or _let_616 var_4123)) (or _let_617 var_4194)) (or _let_616 var_4198)) (or _let_116 var_3806)) (or _let_114 var_4881)) (or _let_116 var_3824)) (or _let_114 var_4888)) (or _let_116 var_3919)) (or _let_114 var_4728)) (or _let_116 var_3581)) (or _let_114 var_4901)) (or _let_116 _let_427)) (or _let_114 _let_428)) (or _let_116 _let_413)) (or _let_114 _let_414)) (or _let_116 _let_375)) (or _let_114 _let_376)) (or _let_615 var_4672)) (or _let_614 var_4700)) (or _let_615 var_4935)) (or _let_614 var_4939)) (or _let_615 var_4943)) (or _let_614 var_4947)) (or _let_112 var_3839)) (or _let_111 var_4031)) (or _let_112 var_3847)) (or _let_111 var_4057)) (or _let_112 var_3752)) (or _let_111 var_4119)) (or _let_112 var_3518)) (or _let_111 var_4972)) (or _let_112 _let_455)) (or _let_111 _let_456)) (or _let_112 _let_449)) (or _let_111 _let_450)) (or _let_112 _let_373)) (or _let_111 _let_374)) (or _let_613 var_4064)) (or _let_612 var_4094)) (or _let_613 var_3994)) (or _let_612 var_3971)) (or _let_613 var_4111)) (or _let_612 var_4115)) (or _let_110 var_3797)) (or _let_109 var_4720)) (or _let_110 var_3800)) (or _let_109 var_4672)) (or _let_110 var_3752)) (or _let_109 var_4119)) (or _let_110 var_3560)) (or _let_109 var_5035)) (or _let_110 _let_443)) (or _let_109 _let_444)) (or _let_110 _let_441)) (or _let_109 _let_442)) (or _let_110 _let_373)) (or _let_109 _let_374)) (or _let_611 var_4064)) (or _let_610 var_4094)) (or _let_611 var_4685)) (or _let_610 var_4715)) (or _let_611 var_4728)) (or _let_610 var_4732)) (or _let_107 var_3859)) (or _let_105 var_4137)) (or _let_107 var_3863)) (or _let_105 var_4277)) (or _let_107 var_3752)) (or _let_105 var_4119)) (or _let_107 var_3587)) (or _let_105 var_5098)) (or _let_107 _let_437)) (or _let_105 _let_438)) (or _let_107 _let_435)) (or _let_105 _let_436)) (or _let_107 _let_373)) (or _let_105 _let_374)) (or _let_609 var_4064)) (or _let_608 var_4094)) (or _let_609 var_4194)) (or _let_608 var_4198)) (or _let_609 var_4332)) (or _let_608 var_4336)) (or _let_108 var_3809)) (or _let_106 var_4412)) (or _let_108 var_3879)) (or _let_106 var_5147)) (or _let_108 var_3752)) (or _let_106 var_4119)) (or _let_108 var_3593)) (or _let_106 var_5160)) (or _let_108 _let_425)) (or _let_106 _let_426)) (or _let_108 _let_411)) (or _let_106 _let_412)) (or _let_108 _let_373)) (or _let_106 _let_374)) (or _let_607 var_4064)) (or _let_606 var_4094)) (or _let_607 var_4462)) (or _let_606 var_4466)) (or _let_607 var_5197)) (or _let_606 var_5201)) (or _let_104 var_3791)) (or _let_103 var_3980)) (or _let_104 var_3794)) (or _let_103 var_4130)) (or _let_104 var_3755)) (or _let_103 var_4194)) (or _let_104 var_3524)) (or _let_103 var_5226)) (or _let_104 _let_453)) (or _let_103 _let_454)) (or _let_104 _let_447)) (or _let_103 _let_448)) (or _let_104 _let_371)) (or _let_103 _let_372)) (or _let_605 var_4137)) (or _let_604 var_4167)) (or _let_605 var_4039)) (or _let_604 var_3974)) (or _let_605 var_4186)) (or _let_604 var_4190)) (or _let_102 var_3800)) (or _let_101 var_4672)) (or _let_102 var_3855)) (or _let_101 var_4064)) (or _let_102 var_3755)) (or _let_101 var_4194)) (or _let_102 var_3572)) (or _let_101 var_5289)) (or _let_102 _let_441)) (or _let_101 _let_442)) (or _let_102 _let_439)) (or _let_101 _let_440)) (or _let_102 _let_371)) (or _let_101 _let_372)) (or _let_603 var_4137)) (or _let_602 var_4167)) (or _let_603 var_4728)) (or _let_602 var_4732)) (or _let_603 var_4119)) (or _let_602 var_4123)) (or _let_99 var_3863)) (or _let_97 var_4277)) (or _let_99 var_3803)) (or _let_97 var_5338)) (or _let_99 var_3755)) (or _let_97 var_4194)) (or _let_99 var_3599)) (or _let_97 var_5351)) (or _let_99 _let_435)) (or _let_97 _let_436)) (or _let_99 _let_433)) (or _let_97 _let_434)) (or _let_99 _let_371)) (or _let_97 _let_372)) (or _let_601 var_4137)) (or _let_600 var_4167)) (or _let_601 var_4332)) (or _let_600 var_4336)) (or _let_601 var_5388)) (or _let_600 var_5392)) (or _let_100 var_3875)) (or _let_98 var_4479)) (or _let_100 var_3827)) (or _let_98 var_5405)) (or _let_100 var_3755)) (or _let_98 var_4194)) (or _let_100 var_3605)) (or _let_98 var_5418)) (or _let_100 _let_423)) (or _let_98 _let_424)) (or _let_100 _let_409)) (or _let_98 _let_410)) (or _let_100 _let_371)) (or _let_98 _let_372)) (or _let_599 var_4137)) (or _let_598 var_4167)) (or _let_599 var_4531)) (or _let_598 var_4535)) (or _let_599 var_5455)) (or _let_598 var_5459)) (or _let_96 var_3843)) (or _let_95 var_3987)) (or _let_96 var_3851)) (or _let_95 var_4270)) (or _let_96 var_3758)) (or _let_95 var_4332)) (or _let_96 var_3530)) (or _let_95 var_5484)) (or _let_96 _let_451)) (or _let_95 _let_452)) (or _let_96 _let_445)) (or _let_95 _let_446)) (or _let_96 _let_369)) (or _let_95 _let_370)) (or _let_597 var_4277)) (or _let_596 var_4307)) (or _let_597 var_4046)) (or _let_596 var_4050)) (or _let_597 var_4324)) (or _let_596 var_4328)) (or _let_94 var_3855)) (or _let_93 var_4064)) (or _let_94 var_3859)) (or _let_93 var_4137)) (or _let_94 var_3758)) (or _let_93 var_4332)) (or _let_94 var_3584)) (or _let_93 var_5547)) (or _let_94 _let_439)) (or _let_93 _let_440)) (or _let_94 _let_437)) (or _let_93 _let_438)) (or _let_94 _let_369)) (or _let_93 _let_370)) (or _let_595 var_4277)) (or _let_594 var_4307)) (or _let_595 var_4119)) (or _let_594 var_4123)) (or _let_595 var_4194)) (or _let_594 var_4198)) (or _let_91 var_3803)) (or _let_89 var_5338)) (or _let_91 var_3867)) (or _let_89 var_5596)) (or _let_91 var_3758)) (or _let_89 var_4332)) (or _let_91 var_3611)) (or _let_89 var_5609)) (or _let_91 _let_433)) (or _let_89 _let_434)) (or _let_91 _let_431)) (or _let_89 _let_432)) (or _let_91 _let_369)) (or _let_89 _let_370)) (or _let_593 var_4277)) (or _let_592 var_4307)) (or _let_593 var_5388)) (or _let_592 var_5392)) (or _let_593 var_5646)) (or _let_592 var_5650)) (or _let_92 var_3812)) (or _let_90 var_4611)) (or _let_92 var_3883)) (or _let_90 var_5663)) (or _let_92 var_3758)) (or _let_90 var_4332)) (or _let_92 var_3617)) (or _let_90 var_5676)) (or _let_92 _let_421)) (or _let_90 _let_422)) (or _let_92 _let_407)) (or _let_90 _let_408)) (or _let_92 _let_369)) (or _let_90 _let_370)) (or _let_591 var_4277)) (or _let_590 var_4307)) (or _let_591 var_4661)) (or _let_590 var_4665)) (or _let_591 var_5713)) (or _let_590 var_5717)) (or _let_87 var_3859)) (or _let_85 var_4137)) (or _let_87 var_3863)) (or _let_85 var_4277)) (or _let_87 var_3923)) (or _let_85 var_5388)) (or _let_87 var_3596)) (or _let_85 var_5742)) (or _let_87 _let_437)) (or _let_85 _let_438)) (or _let_87 _let_435)) (or _let_85 _let_436)) (or _let_87 _let_367)) (or _let_85 _let_368)) (or _let_589 var_5338)) (or _let_588 var_5365)) (or _let_589 var_4194)) (or _let_588 var_4198)) (or _let_589 var_4332)) (or _let_588 var_4336)) (or _let_88 var_3815)) (or _let_86 var_5787)) (or _let_88 var_3830)) (or _let_86 var_5794)) (or _let_88 var_3923)) (or _let_86 var_5388)) (or _let_88 var_3623)) (or _let_86 var_5807)) (or _let_88 _let_419)) (or _let_86 _let_420)) (or _let_88 _let_405)) (or _let_86 _let_406)) (or _let_88 _let_367)) (or _let_86 _let_368)) (or _let_587 var_5338)) (or _let_586 var_5365)) (or _let_587 var_5841)) (or _let_586 var_5845)) (or _let_587 var_5849)) (or _let_586 var_5853)) (or _let_83 var_3863)) (or _let_81 var_4277)) (or _let_83 var_3803)) (or _let_81 var_5338)) (or _let_83 var_3761)) (or _let_81 var_5646)) (or _let_83 var_3608)) (or _let_81 var_5878)) (or _let_83 _let_435)) (or _let_81 _let_436)) (or _let_83 _let_433)) (or _let_81 _let_434)) (or _let_83 _let_365)) (or _let_81 _let_366)) (or _let_585 var_5596)) (or _let_584 var_5623)) (or _let_585 var_4332)) (or _let_584 var_4336)) (or _let_585 var_5388)) (or _let_584 var_5392)) (or _let_84 var_3818)) (or _let_82 var_5923)) (or _let_84 var_3887)) (or _let_82 var_5930)) (or _let_84 var_3761)) (or _let_82 var_5646)) (or _let_84 var_3629)) (or _let_82 var_5943)) (or _let_84 _let_417)) (or _let_82 _let_418)) (or _let_84 _let_403)) (or _let_82 _let_404)) (or _let_84 _let_365)) (or _let_82 _let_366)) (or _let_583 var_5596)) (or _let_582 var_5623)) (or _let_583 var_5977)) (or _let_582 var_5981)) (or _let_583 var_5985)) (or _let_582 var_5989)) (or _let_210 var_3806)) (or _let_209 var_4881)) (or _let_210 var_3809)) (or _let_209 var_4412)) (or _let_210 var_3764)) (or _let_209 var_4799)) (or _let_210 var_3635)) (or _let_209 var_6014)) (or _let_210 _let_427)) (or _let_209 _let_428)) (or _let_210 _let_425)) (or _let_209 _let_426)) (or _let_210 _let_363)) (or _let_209 _let_364)) (or _let_581 var_4745)) (or _let_580 var_4773)) (or _let_581 var_4935)) (or _let_580 var_4939)) (or _let_581 var_4462)) (or _let_580 var_4466)) (or _let_198 var_3809)) (or _let_197 var_4412)) (or _let_198 var_3875)) (or _let_197 var_4479)) (or _let_198 var_3927)) (or _let_197 var_4935)) (or _let_198 var_3641)) (or _let_197 var_6077)) (or _let_198 _let_425)) (or _let_197 _let_426)) (or _let_198 _let_423)) (or _let_197 _let_424)) (or _let_198 _let_361)) (or _let_197 _let_362)) (or _let_579 var_4881)) (or _let_578 var_4909)) (or _let_579 var_4462)) (or _let_578 var_4466)) (or _let_579 var_4531)) (or _let_578 var_4535)) (or _let_80 var_3847)) (or _let_79 var_4057)) (or _let_80 var_3855)) (or _let_79 var_4064)) (or _let_80 var_3931)) (or _let_79 var_4462)) (or _let_80 var_3542)) (or _let_79 var_6140)) (or _let_80 _let_449)) (or _let_79 _let_450)) (or _let_80 _let_439)) (or _let_79 _let_440)) (or _let_80 _let_359)) (or _let_79 _let_360)) (or _let_577 var_4412)) (or _let_576 var_4439)) (or _let_577 var_4111)) (or _let_576 var_4115)) (or _let_577 var_4119)) (or _let_576 var_4123)) (or _let_78 var_3871)) (or _let_77 var_4745)) (or _let_78 var_3806)) (or _let_77 var_4881)) (or _let_78 var_3931)) (or _let_77 var_4462)) (or _let_78 var_3632)) (or _let_77 var_6203)) (or _let_78 _let_429)) (or _let_77 _let_430)) (or _let_78 _let_427)) (or _let_77 _let_428)) (or _let_78 _let_359)) (or _let_77 _let_360)) (or _let_575 var_4412)) (or _let_574 var_4439)) (or _let_575 var_4799)) (or _let_574 var_4803)) (or _let_575 var_4935)) (or _let_574 var_4939)) (or _let_75 var_3875)) (or _let_73 var_4479)) (or _let_75 var_3812)) (or _let_73 var_4611)) (or _let_75 var_3931)) (or _let_73 var_4462)) (or _let_75 var_3647)) (or _let_73 var_6264)) (or _let_75 _let_423)) (or _let_73 _let_424)) (or _let_75 _let_421)) (or _let_73 _let_422)) (or _let_75 _let_359)) (or _let_73 _let_360)) (or _let_573 var_4412)) (or _let_572 var_4439)) (or _let_573 var_4531)) (or _let_572 var_4535)) (or _let_573 var_4661)) (or _let_572 var_4665)) (or _let_76 var_3879)) (or _let_74 var_5147)) (or _let_76 var_3891)) (or _let_74 var_6313)) (or _let_76 var_3931)) (or _let_74 var_4462)) (or _let_76 var_3653)) (or _let_74 var_6326)) (or _let_76 _let_411)) (or _let_74 _let_412)) (or _let_76 _let_401)) (or _let_74 _let_402)) (or _let_76 _let_359)) (or _let_74 _let_360)) (or _let_571 var_4412)) (or _let_570 var_4439)) (or _let_571 var_5197)) (or _let_570 var_5201)) (or _let_571 var_6363)) (or _let_570 var_6367)) (or _let_72 var_3794)) (or _let_71 var_4130)) (or _let_72 var_3859)) (or _let_71 var_4137)) (or _let_72 var_3767)) (or _let_71 var_4531)) (or _let_72 var_3548)) (or _let_71 var_6392)) (or _let_72 _let_447)) (or _let_71 _let_448)) (or _let_72 _let_437)) (or _let_71 _let_438)) (or _let_72 _let_357)) (or _let_71 _let_358)) (or _let_569 var_4479)) (or _let_568 var_4506)) (or _let_569 var_4186)) (or _let_568 var_4190)) (or _let_569 var_4194)) (or _let_568 var_4198)) (or _let_70 var_3806)) (or _let_69 var_4881)) (or _let_70 var_3809)) (or _let_69 var_4412)) (or _let_70 var_3767)) (or _let_69 var_4531)) (or _let_70 var_3638)) (or _let_69 var_6455)) (or _let_70 _let_427)) (or _let_69 _let_428)) (or _let_70 _let_425)) (or _let_69 _let_426)) (or _let_70 _let_357)) (or _let_69 _let_358)) (or _let_567 var_4479)) (or _let_566 var_4506)) (or _let_567 var_4935)) (or _let_566 var_4939)) (or _let_567 var_4462)) (or _let_566 var_4466)) (or _let_67 var_3812)) (or _let_65 var_4611)) (or _let_67 var_3815)) (or _let_65 var_5787)) (or _let_67 var_3767)) (or _let_65 var_4531)) (or _let_67 var_3659)) (or _let_65 var_6516)) (or _let_67 _let_421)) (or _let_65 _let_422)) (or _let_67 _let_419)) (or _let_65 _let_420)) (or _let_67 _let_357)) (or _let_65 _let_358)) (or _let_565 var_4479)) (or _let_564 var_4506)) (or _let_565 var_4661)) (or _let_564 var_4665)) (or _let_565 var_5841)) (or _let_564 var_5845)) (or _let_68 var_3827)) (or _let_66 var_5405)) (or _let_68 var_3833)) (or _let_66 var_6565)) (or _let_68 var_3767)) (or _let_66 var_4531)) (or _let_68 var_3665)) (or _let_66 var_6578)) (or _let_68 _let_409)) (or _let_66 _let_410)) (or _let_68 _let_399)) (or _let_66 _let_400)) (or _let_68 _let_357)) (or _let_66 _let_358)) (or _let_563 var_4479)) (or _let_562 var_4506)) (or _let_563 var_5455)) (or _let_562 var_5459)) (or _let_563 var_6615)) (or _let_562 var_6619)) (or _let_64 var_3851)) (or _let_63 var_4270)) (or _let_64 var_3863)) (or _let_63 var_4277)) (or _let_64 var_3935)) (or _let_63 var_4661)) (or _let_64 var_3554)) (or _let_63 var_6644)) (or _let_64 _let_445)) (or _let_63 _let_446)) (or _let_64 _let_435)) (or _let_63 _let_436)) (or _let_64 _let_355)) (or _let_63 _let_356)) (or _let_561 var_4611)) (or _let_560 var_4638)) (or _let_561 var_4324)) (or _let_560 var_4328)) (or _let_561 var_4332)) (or _let_560 var_4336)) (or _let_62 var_3809)) (or _let_61 var_4412)) (or _let_62 var_3875)) (or _let_61 var_4479)) (or _let_62 var_3935)) (or _let_61 var_4661)) (or _let_62 var_3644)) (or _let_61 var_6707)) (or _let_62 _let_425)) (or _let_61 _let_426)) (or _let_62 _let_423)) (or _let_61 _let_424)) (or _let_62 _let_355)) (or _let_61 _let_356)) (or _let_559 var_4611)) (or _let_558 var_4638)) (or _let_559 var_4462)) (or _let_558 var_4466)) (or _let_559 var_4531)) (or _let_558 var_4535)) (or _let_59 var_3815)) (or _let_57 var_5787)) (or _let_59 var_3818)) (or _let_57 var_5923)) (or _let_59 var_3935)) (or _let_57 var_4661)) (or _let_59 var_3671)) (or _let_57 var_6768)) (or _let_59 _let_419)) (or _let_57 _let_420)) (or _let_59 _let_417)) (or _let_57 _let_418)) (or _let_59 _let_355)) (or _let_57 _let_356)) (or _let_557 var_4611)) (or _let_556 var_4638)) (or _let_557 var_5841)) (or _let_556 var_5845)) (or _let_557 var_5977)) (or _let_556 var_5981)) (or _let_60 var_3883)) (or _let_58 var_5663)) (or _let_60 var_3895)) (or _let_58 var_6817)) (or _let_60 var_3935)) (or _let_58 var_4661)) (or _let_60 var_3677)) (or _let_58 var_6830)) (or _let_60 _let_407)) (or _let_58 _let_408)) (or _let_60 _let_397)) (or _let_58 _let_398)) (or _let_60 _let_355)) (or _let_58 _let_356)) (or _let_555 var_4611)) (or _let_554 var_4638)) (or _let_555 var_5713)) (or _let_554 var_5717)) (or _let_555 var_6867)) (or _let_554 var_6871)) (or _let_188 var_3875)) (or _let_187 var_4479)) (or _let_188 var_3812)) (or _let_187 var_4611)) (or _let_188 var_3939)) (or _let_187 var_5841)) (or _let_188 var_3656)) (or _let_187 var_6896)) (or _let_188 _let_423)) (or _let_187 _let_424)) (or _let_188 _let_421)) (or _let_187 _let_422)) (or _let_188 _let_353)) (or _let_187 _let_354)) (or _let_553 var_5787)) (or _let_552 var_5815)) (or _let_553 var_4531)) (or _let_552 var_4535)) (or _let_553 var_4661)) (or _let_552 var_4665)) (or _let_182 var_3812)) (or _let_181 var_4611)) (or _let_182 var_3815)) (or _let_181 var_5787)) (or _let_182 var_3943)) (or _let_181 var_5977)) (or _let_182 var_3668)) (or _let_181 var_6959)) (or _let_182 _let_421)) (or _let_181 _let_422)) (or _let_182 _let_419)) (or _let_181 _let_420)) (or _let_182 _let_351)) (or _let_181 _let_352)) (or _let_551 var_5923)) (or _let_550 var_5951)) (or _let_551 var_4661)) (or _let_550 var_4665)) (or _let_551 var_5841)) (or _let_550 var_5845)) (or _let_55 var_3797)) (or _let_53 var_4720)) (or _let_55 var_3871)) (or _let_53 var_4745)) (or _let_55 var_3947)) (or _let_53 var_4807)) (or _let_55 var_3566)) (or _let_53 var_7022)) (or _let_55 _let_443)) (or _let_53 _let_444)) (or _let_55 _let_429)) (or _let_53 _let_430)) (or _let_55 _let_349)) (or _let_53 _let_350)) (or _let_549 var_4752)) (or _let_548 var_4782)) (or _let_549 var_4685)) (or _let_548 var_4715)) (or _let_549 var_4799)) (or _let_548 var_4803)) (or _let_56 var_3824)) (or _let_54 var_4888)) (or _let_56 var_3879)) (or _let_54 var_5147)) (or _let_56 var_3947)) (or _let_54 var_4807)) (or _let_56 var_3683)) (or _let_54 var_7085)) (or _let_56 _let_413)) (or _let_54 _let_414)) (or _let_56 _let_411)) (or _let_54 _let_412)) (or _let_56 _let_349)) (or _let_54 _let_350)) (or _let_547 var_4752)) (or _let_546 var_4782)) (or _let_547 var_4943)) (or _let_546 var_4947)) (or _let_547 var_5197)) (or _let_546 var_5201)) (or _let_51 var_3800)) (or _let_49 var_4672)) (or _let_51 var_3806)) (or _let_49 var_4881)) (or _let_51 var_3951)) (or _let_49 var_4943)) (or _let_51 var_3578)) (or _let_49 var_7146)) (or _let_51 _let_441)) (or _let_49 _let_442)) (or _let_51 _let_427)) (or _let_49 _let_428)) (or _let_51 _let_347)) (or _let_49 _let_348)) (or _let_545 var_4888)) (or _let_544 var_4918)) (or _let_545 var_4728)) (or _let_544 var_4732)) (or _let_545 var_4935)) (or _let_544 var_4939)) (or _let_52 var_3879)) (or _let_50 var_5147)) (or _let_52 var_3827)) (or _let_50 var_5405)) (or _let_52 var_3951)) (or _let_50 var_4943)) (or _let_52 var_3689)) (or _let_50 var_7209)) (or _let_52 _let_411)) (or _let_50 _let_412)) (or _let_52 _let_409)) (or _let_50 _let_410)) (or _let_52 _let_347)) (or _let_50 _let_348)) (or _let_543 var_4888)) (or _let_542 var_4918)) (or _let_543 var_5197)) (or _let_542 var_5201)) (or _let_543 var_5455)) (or _let_542 var_5459)) (or _let_48 var_3855)) (or _let_47 var_4064)) (or _let_48 var_3809)) (or _let_47 var_4412)) (or _let_48 var_3770)) (or _let_47 var_5197)) (or _let_48 var_3590)) (or _let_47 var_7270)) (or _let_48 _let_439)) (or _let_47 _let_440)) (or _let_48 _let_425)) (or _let_47 _let_426)) (or _let_48 _let_345)) (or _let_47 _let_346)) (or _let_541 var_5147)) (or _let_540 var_5174)) (or _let_541 var_4119)) (or _let_540 var_4123)) (or _let_541 var_4462)) (or _let_540 var_4466)) (or _let_46 var_3821)) (or _let_45 var_4752)) (or _let_46 var_3824)) (or _let_45 var_4888)) (or _let_46 var_3770)) (or _let_45 var_5197)) (or _let_46 var_3680)) (or _let_45 var_7333)) (or _let_46 _let_415)) (or _let_45 _let_416)) (or _let_46 _let_413)) (or _let_45 _let_414)) (or _let_46 _let_345)) (or _let_45 _let_346)) (or _let_539 var_5147)) (or _let_538 var_5174)) (or _let_539 var_4807)) (or _let_538 var_4811)) (or _let_539 var_4943)) (or _let_538 var_4947)) (or _let_43 var_3827)) (or _let_41 var_5405)) (or _let_43 var_3883)) (or _let_41 var_5663)) (or _let_43 var_3770)) (or _let_41 var_5197)) (or _let_43 var_3695)) (or _let_41 var_7394)) (or _let_43 _let_409)) (or _let_41 _let_410)) (or _let_43 _let_407)) (or _let_41 _let_408)) (or _let_43 _let_345)) (or _let_41 _let_346)) (or _let_537 var_5147)) (or _let_536 var_5174)) (or _let_537 var_5455)) (or _let_536 var_5459)) (or _let_537 var_5713)) (or _let_536 var_5717)) (or _let_44 var_3891)) (or _let_42 var_6313)) (or _let_44 var_3899)) (or _let_42 var_7443)) (or _let_44 var_3770)) (or _let_42 var_5197)) (or _let_44 var_3701)) (or _let_42 var_7456)) (or _let_44 _let_401)) (or _let_42 _let_402)) (or _let_44 _let_395)) (or _let_42 _let_396)) (or _let_44 _let_345)) (or _let_42 _let_346)) (or _let_535 var_5147)) (or _let_534 var_5174)) (or _let_535 var_6363)) (or _let_534 var_6367)) (or _let_535 var_7493)) (or _let_534 var_7497)) (or _let_40 var_3859)) (or _let_39 var_4137)) (or _let_40 var_3875)) (or _let_39 var_4479)) (or _let_40 var_3955)) (or _let_39 var_5455)) (or _let_40 var_3602)) (or _let_39 var_7522)) (or _let_40 _let_437)) (or _let_39 _let_438)) (or _let_40 _let_423)) (or _let_39 _let_424)) (or _let_40 _let_343)) (or _let_39 _let_344)) (or _let_533 var_5405)) (or _let_532 var_5432)) (or _let_533 var_4194)) (or _let_532 var_4198)) (or _let_533 var_4531)) (or _let_532 var_4535)) (or _let_38 var_3824)) (or _let_37 var_4888)) (or _let_38 var_3879)) (or _let_37 var_5147)) (or _let_38 var_3955)) (or _let_37 var_5455)) (or _let_38 var_3686)) (or _let_37 var_7585)) (or _let_38 _let_413)) (or _let_37 _let_414)) (or _let_38 _let_411)) (or _let_37 _let_412)) (or _let_38 _let_343)) (or _let_37 _let_344)) (or _let_531 var_5405)) (or _let_530 var_5432)) (or _let_531 var_4943)) (or _let_530 var_4947)) (or _let_531 var_5197)) (or _let_530 var_5201)) (or _let_35 var_3883)) (or _let_33 var_5663)) (or _let_35 var_3830)) (or _let_33 var_5794)) (or _let_35 var_3955)) (or _let_33 var_5455)) (or _let_35 var_3707)) (or _let_33 var_7646)) (or _let_35 _let_407)) (or _let_33 _let_408)) (or _let_35 _let_405)) (or _let_33 _let_406)) (or _let_35 _let_343)) (or _let_33 _let_344)) (or _let_529 var_5405)) (or _let_528 var_5432)) (or _let_529 var_5713)) (or _let_528 var_5717)) (or _let_529 var_5849)) (or _let_528 var_5853)) (or _let_36 var_3833)) (or _let_34 var_6565)) (or _let_36 var_3836)) (or _let_34 var_7695)) (or _let_36 var_3955)) (or _let_34 var_5455)) (or _let_36 var_3713)) (or _let_34 var_7708)) (or _let_36 _let_399)) (or _let_34 _let_400)) (or _let_36 _let_393)) (or _let_34 _let_394)) (or _let_36 _let_343)) (or _let_34 _let_344)) (or _let_527 var_5405)) (or _let_526 var_5432)) (or _let_527 var_6615)) (or _let_526 var_6619)) (or _let_527 var_7745)) (or _let_526 var_7749)) (or _let_32 var_3863)) (or _let_31 var_4277)) (or _let_32 var_3812)) (or _let_31 var_4611)) (or _let_32 var_3773)) (or _let_31 var_5713)) (or _let_32 var_3614)) (or _let_31 var_7774)) (or _let_32 _let_435)) (or _let_31 _let_436)) (or _let_32 _let_421)) (or _let_31 _let_422)) (or _let_32 _let_341)) (or _let_31 _let_342)) (or _let_525 var_5663)) (or _let_524 var_5690)) (or _let_525 var_4332)) (or _let_524 var_4336)) (or _let_525 var_4661)) (or _let_524 var_4665)) (or _let_30 var_3879)) (or _let_29 var_5147)) (or _let_30 var_3827)) (or _let_29 var_5405)) (or _let_30 var_3773)) (or _let_29 var_5713)) (or _let_30 var_3692)) (or _let_29 var_7837)) (or _let_30 _let_411)) (or _let_29 _let_412)) (or _let_30 _let_409)) (or _let_29 _let_410)) (or _let_30 _let_341)) (or _let_29 _let_342)) (or _let_523 var_5663)) (or _let_522 var_5690)) (or _let_523 var_5197)) (or _let_522 var_5201)) (or _let_523 var_5455)) (or _let_522 var_5459)) (or _let_27 var_3830)) (or _let_25 var_5794)) (or _let_27 var_3887)) (or _let_25 var_5930)) (or _let_27 var_3773)) (or _let_25 var_5713)) (or _let_27 var_3719)) (or _let_25 var_7898)) (or _let_27 _let_405)) (or _let_25 _let_406)) (or _let_27 _let_403)) (or _let_25 _let_404)) (or _let_27 _let_341)) (or _let_25 _let_342)) (or _let_521 var_5663)) (or _let_520 var_5690)) (or _let_521 var_5849)) (or _let_520 var_5853)) (or _let_521 var_5985)) (or _let_520 var_5989)) (or _let_28 var_3895)) (or _let_26 var_6817)) (or _let_28 var_3903)) (or _let_26 var_7947)) (or _let_28 var_3773)) (or _let_26 var_5713)) (or _let_28 var_3725)) (or _let_26 var_7960)) (or _let_28 _let_397)) (or _let_26 _let_398)) (or _let_28 _let_391)) (or _let_26 _let_392)) (or _let_28 _let_341)) (or _let_26 _let_342)) (or _let_519 var_5663)) (or _let_518 var_5690)) (or _let_519 var_6867)) (or _let_518 var_6871)) (or _let_519 var_7997)) (or _let_518 var_8001)) (or _let_23 var_3803)) (or _let_21 var_5338)) (or _let_23 var_3815)) (or _let_21 var_5787)) (or _let_23 var_3959)) (or _let_21 var_5849)) (or _let_23 var_3620)) (or _let_21 var_8026)) (or _let_23 _let_433)) (or _let_21 _let_434)) (or _let_23 _let_419)) (or _let_21 _let_420)) (or _let_23 _let_339)) (or _let_21 _let_340)) (or _let_517 var_5794)) (or _let_516 var_5824)) (or _let_517 var_5388)) (or _let_516 var_5392)) (or _let_517 var_5841)) (or _let_516 var_5845)) (or _let_24 var_3827)) (or _let_22 var_5405)) (or _let_24 var_3883)) (or _let_22 var_5663)) (or _let_24 var_3959)) (or _let_22 var_5849)) (or _let_24 var_3704)) (or _let_22 var_8089)) (or _let_24 _let_409)) (or _let_22 _let_410)) (or _let_24 _let_407)) (or _let_22 _let_408)) (or _let_24 _let_339)) (or _let_22 _let_340)) (or _let_515 var_5794)) (or _let_514 var_5824)) (or _let_515 var_5455)) (or _let_514 var_5459)) (or _let_515 var_5713)) (or _let_514 var_5717)) (or _let_19 var_3867)) (or _let_17 var_5596)) (or _let_19 var_3818)) (or _let_17 var_5923)) (or _let_19 var_3776)) (or _let_17 var_5985)) (or _let_19 var_3626)) (or _let_17 var_8150)) (or _let_19 _let_431)) (or _let_17 _let_432)) (or _let_19 _let_417)) (or _let_17 _let_418)) (or _let_19 _let_337)) (or _let_17 _let_338)) (or _let_513 var_5930)) (or _let_512 var_5960)) (or _let_513 var_5646)) (or _let_512 var_5650)) (or _let_513 var_5977)) (or _let_512 var_5981)) (or _let_20 var_3883)) (or _let_18 var_5663)) (or _let_20 var_3830)) (or _let_18 var_5794)) (or _let_20 var_3776)) (or _let_18 var_5985)) (or _let_20 var_3716)) (or _let_18 var_8213)) (or _let_20 _let_407)) (or _let_18 _let_408)) (or _let_20 _let_405)) (or _let_18 _let_406)) (or _let_20 _let_337)) (or _let_18 _let_338)) (or _let_511 var_5930)) (or _let_510 var_5960)) (or _let_511 var_5713)) (or _let_510 var_5717)) (or _let_511 var_5849)) (or _let_510 var_5853)) (or _let_15 var_3809)) (or _let_13 var_4412)) (or _let_15 var_3879)) (or _let_13 var_5147)) (or _let_15 var_3779)) (or _let_13 var_6363)) (or _let_15 var_3650)) (or _let_13 var_8274)) (or _let_15 _let_425)) (or _let_13 _let_426)) (or _let_15 _let_411)) (or _let_13 _let_412)) (or _let_15 _let_335)) (or _let_13 _let_336)) (or _let_509 var_6313)) (or _let_508 var_6340)) (or _let_509 var_4462)) (or _let_508 var_4466)) (or _let_509 var_5197)) (or _let_508 var_5201)) (or _let_16 var_3833)) (or _let_14 var_6565)) (or _let_16 var_3895)) (or _let_14 var_6817)) (or _let_16 var_3779)) (or _let_14 var_6363)) (or _let_16 var_3731)) (or _let_14 var_8337)) (or _let_16 _let_399)) (or _let_14 _let_400)) (or _let_16 _let_397)) (or _let_14 _let_398)) (or _let_16 _let_335)) (or _let_14 _let_336)) (or _let_507 var_6313)) (or _let_506 var_6340)) (or _let_507 var_6615)) (or _let_506 var_6619)) (or _let_507 var_6867)) (or _let_506 var_6871)) (or _let_164 var_3875)) (or _let_163 var_4479)) (or _let_164 var_3827)) (or _let_163 var_5405)) (or _let_164 var_3963)) (or _let_163 var_6615)) (or _let_164 var_3662)) (or _let_163 var_8398)) (or _let_164 _let_423)) (or _let_163 _let_424)) (or _let_164 _let_409)) (or _let_163 _let_410)) (or _let_164 _let_333)) (or _let_163 _let_334)) (or _let_505 var_6565)) (or _let_504 var_6592)) (or _let_505 var_4531)) (or _let_504 var_4535)) (or _let_505 var_5455)) (or _let_504 var_5459)) (or _let_11 var_3812)) (or _let_9 var_4611)) (or _let_11 var_3883)) (or _let_9 var_5663)) (or _let_11 var_3782)) (or _let_9 var_6867)) (or _let_11 var_3674)) (or _let_9 var_8461)) (or _let_11 _let_421)) (or _let_9 _let_422)) (or _let_11 _let_407)) (or _let_9 _let_408)) (or _let_11 _let_331)) (or _let_9 _let_332)) (or _let_503 var_6817)) (or _let_502 var_6844)) (or _let_503 var_4661)) (or _let_502 var_4665)) (or _let_503 var_5713)) (or _let_502 var_5717)) (or _let_12 var_3891)) (or _let_10 var_6313)) (or _let_12 var_3833)) (or _let_10 var_6565)) (or _let_12 var_3782)) (or _let_10 var_6867)) (or _let_12 var_3728)) (or _let_10 var_8524)) (or _let_12 _let_401)) (or _let_10 _let_402)) (or _let_12 _let_399)) (or _let_10 _let_400)) (or _let_12 _let_331)) (or _let_10 _let_332)) (or _let_501 var_6817)) (or _let_500 var_6844)) (or _let_501 var_6363)) (or _let_500 var_6367)) (or _let_501 var_6615)) (or _let_500 var_6619)) (or _let_7 var_3879)) (or _let_5 var_5147)) (or _let_7 var_3891)) (or _let_5 var_6313)) (or _let_7 var_3785)) (or _let_5 var_7493)) (or _let_7 var_3698)) (or _let_5 var_8585)) (or _let_7 _let_411)) (or _let_5 _let_412)) (or _let_7 _let_401)) (or _let_5 _let_402)) (or _let_7 _let_329)) (or _let_5 _let_330)) (or _let_499 var_7443)) (or _let_498 var_7470)) (or _let_499 var_5197)) (or _let_498 var_5201)) (or _let_499 var_6363)) (or _let_498 var_6367)) (or _let_8 var_3836)) (or _let_6 var_7695)) (or _let_8 var_3903)) (or _let_6 var_7947)) (or _let_8 var_3785)) (or _let_6 var_7493)) (or _let_8 var_3737)) (or _let_6 var_8648)) (or _let_8 _let_393)) (or _let_6 _let_394)) (or _let_8 _let_391)) (or _let_6 _let_392)) (or _let_8 _let_329)) (or _let_6 _let_330)) (or _let_497 var_7443)) (or _let_496 var_7470)) (or _let_497 var_7745)) (or _let_496 var_7749)) (or _let_497 var_7997)) (or _let_496 var_8001)) (or _let_142 var_3827)) (or _let_141 var_5405)) (or _let_142 var_3833)) (or _let_141 var_6565)) (or _let_142 var_3967)) (or _let_141 var_7745)) (or _let_142 var_3710)) (or _let_141 var_8709)) (or _let_142 _let_409)) (or _let_141 _let_410)) (or _let_142 _let_399)) (or _let_141 _let_400)) (or _let_142 _let_327)) (or _let_141 _let_328)) (or _let_495 var_7695)) (or _let_494 var_7722)) (or _let_495 var_5455)) (or _let_494 var_5459)) (or _let_495 var_6615)) (or _let_494 var_6619)) (or _let_3 var_3883)) (or _let_1 var_5663)) (or _let_3 var_3895)) (or _let_1 var_6817)) (or _let_3 var_3788)) (or _let_1 var_7997)) (or _let_3 var_3722)) (or _let_1 var_8772)) (or _let_3 _let_407)) (or _let_1 _let_408)) (or _let_3 _let_397)) (or _let_1 _let_398)) (or _let_3 _let_325)) (or _let_1 _let_326)) (or _let_493 var_7947)) (or _let_492 var_7974)) (or _let_493 var_5713)) (or _let_492 var_5717)) (or _let_493 var_6867)) (or _let_492 var_6871)) (or _let_4 var_3899)) (or _let_2 var_7443)) (or _let_4 var_3836)) (or _let_2 var_7695)) (or _let_4 var_3788)) (or _let_2 var_7997)) (or _let_4 var_3734)) (or _let_2 var_8835)) (or _let_4 _let_395)) (or _let_2 _let_396)) (or _let_4 _let_393)) (or _let_2 _let_394)) (or _let_4 _let_325)) (or _let_2 _let_326)) (or _let_491 var_7947)) (or _let_490 var_7974)) (or _let_491 var_7493)) (or _let_490 var_7497)) (or _let_491 var_7745)) (or _let_490 var_7749)) (or (or (or var_3839 _let_455) var_111) var_156)) (or (or (or _let_489 var_4031) var_241) var_736)) (or (or var_3791 _let_453) var_201)) (or (or (or (or (not var_3791) var_3980) var_106) var_241) var_916)) (or (or (or var_3843 _let_451) var_246) var_291)) (or (or (or _let_488 var_3987) var_106) var_1096)) (or (or (or var_3847 _let_449) var_336) var_381)) (or (or (or (or (or _let_487 var_4057) var_151) var_466) var_736) var_1546)) (or (or var_3794 _let_447) var_426)) (or (or (or (or (or (or (not var_3794) var_4130) var_196) var_331) var_466) var_916) var_1726)) (or (or (or var_3851 _let_445) var_471) var_516)) (or (or (or (or (or _let_486 var_4270) var_286) var_331) var_1096) var_1906)) (or (or (or var_3797 _let_443) var_561) var_606)) (or (or (or (not var_3797) var_4720) var_781) var_2176)) (or (or (or var_3800 _let_441) var_651) var_696)) (or (or (or (or (or (not var_3800) var_4672) var_556) var_781) var_961) var_2266)) (or (or (or (or (or var_3855 _let_439) var_741) var_786) var_831) var_876)) (or (or (or (or (or (or (or (or (or _let_485 var_4064) var_151) var_376) var_556) var_646) var_961) var_1141) var_1546) var_2356)) (or (or (or (or (or var_3859 _let_437) var_921) var_966) var_1011) var_1056)) (or (or (or (or (or (or (or (or (or _let_484 var_4137) var_196) var_421) var_646) var_826) var_1141) var_1276) var_1726) var_2536)) (or (or (or (or (or var_3863 _let_435) var_1101) var_1146) var_1191) var_1236)) (or (or (or (or (or (or (or (or (or _let_483 var_4277) var_286) var_511) var_826) var_1006) var_1276) var_1366) var_1906) var_2716)) (or (or (or var_3803 _let_433) var_1281) var_1326)) (or (or (or (or (or (not var_3803) var_5338) var_1006) var_1186) var_1366) var_2896)) (or (or (or var_3867 _let_431) var_1371) var_1416)) (or (or (or _let_482 var_5596) var_1186) var_2986)) (or (or var_3871 _let_429) var_1461)) (or (or (or (or _let_481 var_4745) var_601) var_1591) var_2176)) (or (or var_3806 _let_427) var_1506)) (or (or (or (or (or (or (not var_3806) var_4881) var_691) var_1456) var_1591) var_1771) var_2266)) (or (or (or (or (or var_3809 _let_425) var_1551) var_1596) var_1641) var_1686)) (or (or (or (or (or (or (or (or (or (not var_3809) var_4412) var_376) var_871) var_1456) var_1501) var_1771) var_1951) var_2356) var_3076)) (or (or (or (or (or var_3875 _let_423) var_1731) var_1776) var_1821) var_1866)) (or (or (or (or (or (or (or (or (or _let_480 var_4479) var_421) var_1051) var_1501) var_1636) var_1951) var_2086) var_2536) var_3166)) (or (or (or (or (or var_3812 _let_421) var_1911) var_1956) var_2001) var_2046)) (or (or (or (or (or (or (or (or (or (not var_3812) var_4611) var_511) var_1231) var_1636) var_1816) var_2086) var_2131) var_2716) var_3211)) (or (or var_3815 _let_419) var_2091)) (or (or (or (or (or (or (not var_3815) var_5787) var_1321) var_1816) var_1996) var_2131) var_2896)) (or (or var_3818 _let_417) var_2136)) (or (or (or (or (not var_3818) var_5923) var_1411) var_1996) var_2986)) (or (or (or var_3821 _let_415) var_2181) var_2226)) (or (or (or (not var_3821) var_4752) var_601) var_2401)) (or (or (or var_3824 _let_413) var_2271) var_2316)) (or (or (or (or (or (not var_3824) var_4888) var_691) var_2221) var_2401) var_2581)) (or (or (or (or (or var_3879 _let_411) var_2361) var_2406) var_2451) var_2496)) (or (or (or (or (or (or (or (or (or _let_479 var_5147) var_871) var_1681) var_2221) var_2311) var_2581) var_2761) var_3076) var_3301)) (or (or (or (or (or var_3827 _let_409) var_2541) var_2586) var_2631) var_2676)) (or (or (or (or (or (or (or (or (or (not var_3827) var_5405) var_1051) var_1861) var_2311) var_2446) var_2761) var_2941) var_3166) var_3391)) (or (or (or (or (or var_3883 _let_407) var_2721) var_2766) var_2811) var_2856)) (or (or (or (or (or (or (or (or (or _let_478 var_5663) var_1231) var_2041) var_2446) var_2626) var_2941) var_3031) var_3211) var_3436)) (or (or (or var_3830 _let_405) var_2901) var_2946)) (or (or (or (or (or (not var_3830) var_5794) var_1321) var_2626) var_2806) var_3031)) (or (or (or var_3887 _let_403) var_2991) var_3036)) (or (or (or _let_477 var_5930) var_1411) var_2806)) (or (or (or var_3891 _let_401) var_3081) var_3126)) (or (or (or (or (or _let_476 var_6313) var_1681) var_2491) var_3256) var_3301)) (or (or var_3833 _let_399) var_3171)) (or (or (or (or (or (or (not var_3833) var_6565) var_1861) var_2671) var_3121) var_3256) var_3391)) (or (or (or var_3895 _let_397) var_3216) var_3261)) (or (or (or (or (or _let_475 var_6817) var_2041) var_2851) var_3121) var_3436)) (or (or (or var_3899 _let_395) var_3306) var_3351)) (or (or (or _let_474 var_7443) var_2491) var_3481)) (or (or var_3836 _let_393) var_3396)) (or (or (or (or (not var_3836) var_7695) var_2671) var_3346) var_3481)) (or (or (or var_3903 _let_391) var_3441) var_3486)) (or (or (or _let_473 var_7947) var_2851) var_3346)) (or (or (or var_3740 _let_389) var_246) var_741)) (or (or (or (not var_3740) var_3994) var_106) var_151)) (or (or (or (or var_3907 _let_387) var_111) var_246) var_921)) (or (or _let_472 var_4039) var_196)) (or (or (or var_3743 _let_385) var_111) var_1101)) (or (or (or (not var_3743) var_4046) var_241) var_286)) (or (or (or (or (or var_3746 _let_383) var_156) var_471) var_741) var_1551)) (or (or (or (not var_3746) var_4111) var_331) var_376)) (or (or (or (or (or (or var_3911 _let_381) var_201) var_336) var_471) var_921) var_1731)) (or (or _let_471 var_4186) var_421)) (or (or (or (or (or var_3749 _let_379) var_291) var_336) var_1101) var_1911)) (or (or (or (not var_3749) var_4324) var_466) var_511)) (or (or (or var_3915 _let_377) var_786) var_2181)) (or (or (or _let_470 var_4685) var_556) var_601)) (or (or (or (or (or var_3919 _let_375) var_561) var_786) var_966) var_2271)) (or (or (or _let_469 var_4728) var_646) var_691)) (or (or (or (or (or (or (or (or (or var_3752 _let_373) var_156) var_381) var_561) var_651) var_966) var_1146) var_1551) var_2361)) (or (or (or (or (or (not var_3752) var_4119) var_736) var_781) var_826) var_871)) (or (or (or (or (or (or (or (or (or var_3755 _let_371) var_201) var_426) var_651) var_831) var_1146) var_1281) var_1731) var_2541)) (or (or (or (or (or (not var_3755) var_4194) var_916) var_961) var_1006) var_1051)) (or (or (or (or (or (or (or (or (or var_3758 _let_369) var_291) var_516) var_831) var_1011) var_1281) var_1371) var_1911) var_2721)) (or (or (or (or (or (not var_3758) var_4332) var_1096) var_1141) var_1186) var_1231)) (or (or (or (or (or var_3923 _let_367) var_1011) var_1191) var_1371) var_2901)) (or (or (or _let_468 var_5388) var_1276) var_1321)) (or (or (or var_3761 _let_365) var_1191) var_2991)) (or (or (or (not var_3761) var_5646) var_1366) var_1411)) (or (or (or (or var_3764 _let_363) var_606) var_1596) var_2181)) (or (or (not var_3764) var_4799) var_1456)) (or (or (or (or (or (or var_3927 _let_361) var_696) var_1461) var_1596) var_1776) var_2271)) (or (or _let_467 var_4935) var_1501)) (or (or (or (or (or (or (or (or (or var_3931 _let_359) var_381) var_876) var_1461) var_1506) var_1776) var_1956) var_2361) var_3081)) (or (or (or (or (or _let_466 var_4462) var_1546) var_1591) var_1636) var_1681)) (or (or (or (or (or (or (or (or (or var_3767 _let_357) var_426) var_1056) var_1506) var_1641) var_1956) var_2091) var_2541) var_3171)) (or (or (or (or (or (not var_3767) var_4531) var_1726) var_1771) var_1816) var_1861)) (or (or (or (or (or (or (or (or (or var_3935 _let_355) var_516) var_1236) var_1641) var_1821) var_2091) var_2136) var_2721) var_3216)) (or (or (or (or (or _let_465 var_4661) var_1906) var_1951) var_1996) var_2041)) (or (or (or (or (or (or var_3939 _let_353) var_1326) var_1821) var_2001) var_2136) var_2901)) (or (or _let_464 var_5841) var_2086)) (or (or (or (or var_3943 _let_351) var_1416) var_2001) var_2991)) (or (or _let_463 var_5977) var_2131)) (or (or (or var_3947 _let_349) var_606) var_2406)) (or (or (or _let_462 var_4807) var_2176) var_2221)) (or (or (or (or (or var_3951 _let_347) var_696) var_2226) var_2406) var_2586)) (or (or (or _let_461 var_4943) var_2266) var_2311)) (or (or (or (or (or (or (or (or (or var_3770 _let_345) var_876) var_1686) var_2226) var_2316) var_2586) var_2766) var_3081) var_3306)) (or (or (or (or (or (not var_3770) var_5197) var_2356) var_2401) var_2446) var_2491)) (or (or (or (or (or (or (or (or (or var_3955 _let_343) var_1056) var_1866) var_2316) var_2451) var_2766) var_2946) var_3171) var_3396)) (or (or (or (or (or _let_460 var_5455) var_2536) var_2581) var_2626) var_2671)) (or (or (or (or (or (or (or (or (or var_3773 _let_341) var_1236) var_2046) var_2451) var_2631) var_2946) var_3036) var_3216) var_3441)) (or (or (or (or (or (not var_3773) var_5713) var_2716) var_2761) var_2806) var_2851)) (or (or (or (or (or var_3959 _let_339) var_1326) var_2631) var_2811) var_3036)) (or (or (or _let_459 var_5849) var_2896) var_2941)) (or (or (or var_3776 _let_337) var_1416) var_2811)) (or (or (or (not var_3776) var_5985) var_2986) var_3031)) (or (or (or (or (or var_3779 _let_335) var_1686) var_2496) var_3261) var_3306)) (or (or (or (not var_3779) var_6363) var_3076) var_3121)) (or (or (or (or (or (or var_3963 _let_333) var_1866) var_2676) var_3126) var_3261) var_3396)) (or (or _let_458 var_6615) var_3166)) (or (or (or (or (or var_3782 _let_331) var_2046) var_2856) var_3126) var_3441)) (or (or (or (not var_3782) var_6867) var_3211) var_3256)) (or (or (or var_3785 _let_329) var_2496) var_3486)) (or (or (or (not var_3785) var_7493) var_3301) var_3346)) (or (or (or (or var_3967 _let_327) var_2676) var_3351) var_3486)) (or (or _let_457 var_7745) var_3391)) (or (or (or var_3788 _let_325) var_2856) var_3351)) (or (or (or (not var_3788) var_7997) var_3436) var_3481)) (or var_3512 _let_324)) (or (not var_3512) var_4223)) (or var_3515 _let_323)) (or (not var_3515) var_4001)) (or var_3518 _let_322)) (or (not var_3518) var_4972)) (or var_3521 _let_321)) (or (not var_3521) var_4077)) (or var_3524 _let_320)) (or (not var_3524) var_5226)) (or var_3527 _let_319)) (or (not var_3527) var_4150)) (or var_3530 _let_318)) (or (not var_3530) var_5484)) (or var_3533 _let_317)) (or (not var_3533) var_4290)) (or var_3536 _let_316)) (or (not var_3536) var_4560)) (or var_3539 _let_315)) (or (not var_3539) var_4361)) (or var_3542 _let_314)) (or (not var_3542) var_6140)) (or var_3545 _let_313)) (or (not var_3545) var_4425)) (or var_3548 _let_312)) (or (not var_3548) var_6392)) (or var_3551 _let_311)) (or (not var_3551) var_4492)) (or var_3554 _let_310)) (or (not var_3554) var_6644)) (or var_3557 _let_309)) (or (not var_3557) var_4624)) (or var_3560 _let_308)) (or (not var_3560) var_5035)) (or var_3563 _let_307)) (or (not var_3563) var_4692)) (or var_3566 _let_306)) (or (not var_3566) var_7022)) (or var_3569 _let_305)) (or (not var_3569) var_4765)) (or var_3572 _let_304)) (or (not var_3572) var_5289)) (or var_3575 _let_303)) (or (not var_3575) var_4836)) (or var_3578 _let_302)) (or (not var_3578) var_7146)) (or var_3581 _let_301)) (or (not var_3581) var_4901)) (or var_3584 _let_300)) (or (not var_3584) var_5547)) (or var_3587 _let_299)) (or (not var_3587) var_5098)) (or var_3590 _let_298)) (or (not var_3590) var_7270)) (or var_3593 _let_297)) (or (not var_3593) var_5160)) (or var_3596 _let_296)) (or (not var_3596) var_5742)) (or var_3599 _let_295)) (or (not var_3599) var_5351)) (or var_3602 _let_294)) (or (not var_3602) var_7522)) (or var_3605 _let_293)) (or (not var_3605) var_5418)) (or var_3608 _let_292)) (or (not var_3608) var_5878)) (or var_3611 _let_291)) (or (not var_3611) var_5609)) (or var_3614 _let_290)) (or (not var_3614) var_7774)) (or var_3617 _let_289)) (or (not var_3617) var_5676)) (or var_3620 _let_288)) (or (not var_3620) var_8026)) (or var_3623 _let_287)) (or (not var_3623) var_5807)) (or var_3626 _let_286)) (or (not var_3626) var_8150)) (or var_3629 _let_285)) (or (not var_3629) var_5943)) (or var_3632 _let_284)) (or (not var_3632) var_6203)) (or var_3635 _let_283)) (or (not var_3635) var_6014)) (or var_3638 _let_282)) (or (not var_3638) var_6455)) (or var_3641 _let_281)) (or (not var_3641) var_6077)) (or var_3644 _let_280)) (or (not var_3644) var_6707)) (or var_3647 _let_279)) (or (not var_3647) var_6264)) (or var_3650 _let_278)) (or (not var_3650) var_8274)) (or var_3653 _let_277)) (or (not var_3653) var_6326)) (or var_3656 _let_276)) (or (not var_3656) var_6896)) (or var_3659 _let_275)) (or (not var_3659) var_6516)) (or var_3662 _let_274)) (or (not var_3662) var_8398)) (or var_3665 _let_273)) (or (not var_3665) var_6578)) (or var_3668 _let_272)) (or (not var_3668) var_6959)) (or var_3671 _let_271)) (or (not var_3671) var_6768)) (or var_3674 _let_270)) (or (not var_3674) var_8461)) (or var_3677 _let_269)) (or (not var_3677) var_6830)) (or var_3680 _let_268)) (or (not var_3680) var_7333)) (or var_3683 _let_267)) (or (not var_3683) var_7085)) (or var_3686 _let_266)) (or (not var_3686) var_7585)) (or var_3689 _let_265)) (or (not var_3689) var_7209)) (or var_3692 _let_264)) (or (not var_3692) var_7837)) (or var_3695 _let_263)) (or (not var_3695) var_7394)) (or var_3698 _let_262)) (or (not var_3698) var_8585)) (or var_3701 _let_261)) (or (not var_3701) var_7456)) (or var_3704 _let_260)) (or (not var_3704) var_8089)) (or var_3707 _let_259)) (or (not var_3707) var_7646)) (or var_3710 _let_258)) (or (not var_3710) var_8709)) (or var_3713 _let_257)) (or (not var_3713) var_7708)) (or var_3716 _let_256)) (or (not var_3716) var_8213)) (or var_3719 _let_255)) (or (not var_3719) var_7898)) (or var_3722 _let_254)) (or (not var_3722) var_8772)) (or var_3725 _let_253)) (or (not var_3725) var_7960)) (or var_3728 _let_252)) (or (not var_3728) var_8524)) (or var_3731 _let_251)) (or (not var_3731) var_8337)) (or var_3734 _let_250)) (or (not var_3734) var_8835)) (or var_3737 _let_249)) (or (not var_3737) var_8648)) (or (or (or var_4031 _let_456) var_98) var_143)) (or (or (or _let_455 var_4035) var_237) var_732)) (or (or var_3980 _let_454) var_188)) (or (or (or (or _let_453 var_4009) var_102) var_237) var_912)) (or (or (or var_3987 _let_452) var_233) var_278)) (or (or (or _let_451 var_4018) var_102) var_1092)) (or (or (or var_4057 _let_450) var_323) var_368)) (or (or (or (or (or _let_449 var_4085) var_147) var_462) var_732) var_1542)) (or (or var_4130 _let_448) var_413)) (or (or (or (or (or (or _let_447 var_4158) var_192) var_327) var_462) var_912) var_1722)) (or (or (or var_4270 _let_446) var_458) var_503)) (or (or (or (or (or _let_445 var_4298) var_282) var_327) var_1092) var_1902)) (or (or (or var_4720 _let_444) var_548) var_593)) (or (or (or _let_443 var_4724) var_777) var_2172)) (or (or (or var_4672 _let_442) var_638) var_683)) (or (or (or (or (or _let_441 var_4700) var_552) var_777) var_957) var_2262)) (or (or (or (or (or var_4064 _let_440) var_728) var_773) var_818) var_863)) (or (or (or (or (or (or (or (or (or _let_439 var_4094) var_147) var_372) var_552) var_642) var_957) var_1137) var_1542) var_2352)) (or (or (or (or (or var_4137 _let_438) var_908) var_953) var_998) var_1043)) (or (or (or (or (or (or (or (or (or _let_437 var_4167) var_192) var_417) var_642) var_822) var_1137) var_1272) var_1722) var_2532)) (or (or (or (or (or var_4277 _let_436) var_1088) var_1133) var_1178) var_1223)) (or (or (or (or (or (or (or (or (or _let_435 var_4307) var_282) var_507) var_822) var_1002) var_1272) var_1362) var_1902) var_2712)) (or (or (or var_5338 _let_434) var_1268) var_1313)) (or (or (or (or (or _let_433 var_5365) var_1002) var_1182) var_1362) var_2892)) (or (or (or var_5596 _let_432) var_1358) var_1403)) (or (or (or _let_431 var_5623) var_1182) var_2982)) (or (or var_4745 _let_430) var_1448)) (or (or (or (or _let_429 var_4773) var_597) var_1587) var_2172)) (or (or var_4881 _let_428) var_1493)) (or (or (or (or (or (or _let_427 var_4909) var_687) var_1452) var_1587) var_1767) var_2262)) (or (or (or (or (or var_4412 _let_426) var_1538) var_1583) var_1628) var_1673)) (or (or (or (or (or (or (or (or (or _let_425 var_4439) var_372) var_867) var_1452) var_1497) var_1767) var_1947) var_2352) var_3072)) (or (or (or (or (or var_4479 _let_424) var_1718) var_1763) var_1808) var_1853)) (or (or (or (or (or (or (or (or (or _let_423 var_4506) var_417) var_1047) var_1497) var_1632) var_1947) var_2082) var_2532) var_3162)) (or (or (or (or (or var_4611 _let_422) var_1898) var_1943) var_1988) var_2033)) (or (or (or (or (or (or (or (or (or _let_421 var_4638) var_507) var_1227) var_1632) var_1812) var_2082) var_2127) var_2712) var_3207)) (or (or var_5787 _let_420) var_2078)) (or (or (or (or (or (or _let_419 var_5815) var_1317) var_1812) var_1992) var_2127) var_2892)) (or (or var_5923 _let_418) var_2123)) (or (or (or (or _let_417 var_5951) var_1407) var_1992) var_2982)) (or (or (or var_4752 _let_416) var_2168) var_2213)) (or (or (or _let_415 var_4782) var_597) var_2397)) (or (or (or var_4888 _let_414) var_2258) var_2303)) (or (or (or (or (or _let_413 var_4918) var_687) var_2217) var_2397) var_2577)) (or (or (or (or (or var_5147 _let_412) var_2348) var_2393) var_2438) var_2483)) (or (or (or (or (or (or (or (or (or _let_411 var_5174) var_867) var_1677) var_2217) var_2307) var_2577) var_2757) var_3072) var_3297)) (or (or (or (or (or var_5405 _let_410) var_2528) var_2573) var_2618) var_2663)) (or (or (or (or (or (or (or (or (or _let_409 var_5432) var_1047) var_1857) var_2307) var_2442) var_2757) var_2937) var_3162) var_3387)) (or (or (or (or (or var_5663 _let_408) var_2708) var_2753) var_2798) var_2843)) (or (or (or (or (or (or (or (or (or _let_407 var_5690) var_1227) var_2037) var_2442) var_2622) var_2937) var_3027) var_3207) var_3432)) (or (or (or var_5794 _let_406) var_2888) var_2933)) (or (or (or (or (or _let_405 var_5824) var_1317) var_2622) var_2802) var_3027)) (or (or (or var_5930 _let_404) var_2978) var_3023)) (or (or (or _let_403 var_5960) var_1407) var_2802)) (or (or (or var_6313 _let_402) var_3068) var_3113)) (or (or (or (or (or _let_401 var_6340) var_1677) var_2487) var_3252) var_3297)) (or (or var_6565 _let_400) var_3158)) (or (or (or (or (or (or _let_399 var_6592) var_1857) var_2667) var_3117) var_3252) var_3387)) (or (or (or var_6817 _let_398) var_3203) var_3248)) (or (or (or (or (or _let_397 var_6844) var_2037) var_2847) var_3117) var_3432)) (or (or (or var_7443 _let_396) var_3293) var_3338)) (or (or (or _let_395 var_7470) var_2487) var_3477)) (or (or var_7695 _let_394) var_3383)) (or (or (or (or _let_393 var_7722) var_2667) var_3342) var_3477)) (or (or (or var_7947 _let_392) var_3428) var_3473)) (or (or (or _let_391 var_7974) var_2847) var_3342)) (or (or (or var_3994 _let_390) var_233) var_728)) (or (or (or _let_389 var_3971) var_102) var_147)) (or (or (or (or var_4039 _let_388) var_98) var_233) var_908)) (or (or _let_387 var_3974) var_192)) (or (or (or var_4046 _let_386) var_98) var_1088)) (or (or (or _let_385 var_4050) var_237) var_282)) (or (or (or (or (or var_4111 _let_384) var_143) var_458) var_728) var_1538)) (or (or (or _let_383 var_4115) var_327) var_372)) (or (or (or (or (or (or var_4186 _let_382) var_188) var_323) var_458) var_908) var_1718)) (or (or _let_381 var_4190) var_417)) (or (or (or (or (or var_4324 _let_380) var_278) var_323) var_1088) var_1898)) (or (or (or _let_379 var_4328) var_462) var_507)) (or (or (or var_4685 _let_378) var_773) var_2168)) (or (or (or _let_377 var_4715) var_552) var_597)) (or (or (or (or (or var_4728 _let_376) var_548) var_773) var_953) var_2258)) (or (or (or _let_375 var_4732) var_642) var_687)) (or (or (or (or (or (or (or (or (or var_4119 _let_374) var_143) var_368) var_548) var_638) var_953) var_1133) var_1538) var_2348)) (or (or (or (or (or _let_373 var_4123) var_732) var_777) var_822) var_867)) (or (or (or (or (or (or (or (or (or var_4194 _let_372) var_188) var_413) var_638) var_818) var_1133) var_1268) var_1718) var_2528)) (or (or (or (or (or _let_371 var_4198) var_912) var_957) var_1002) var_1047)) (or (or (or (or (or (or (or (or (or var_4332 _let_370) var_278) var_503) var_818) var_998) var_1268) var_1358) var_1898) var_2708)) (or (or (or (or (or _let_369 var_4336) var_1092) var_1137) var_1182) var_1227)) (or (or (or (or (or var_5388 _let_368) var_998) var_1178) var_1358) var_2888)) (or (or (or _let_367 var_5392) var_1272) var_1317)) (or (or (or var_5646 _let_366) var_1178) var_2978)) (or (or (or _let_365 var_5650) var_1362) var_1407)) (or (or (or (or var_4799 _let_364) var_593) var_1583) var_2168)) (or (or _let_363 var_4803) var_1452)) (or (or (or (or (or (or var_4935 _let_362) var_683) var_1448) var_1583) var_1763) var_2258)) (or (or _let_361 var_4939) var_1497)) (or (or (or (or (or (or (or (or (or var_4462 _let_360) var_368) var_863) var_1448) var_1493) var_1763) var_1943) var_2348) var_3068)) (or (or (or (or (or _let_359 var_4466) var_1542) var_1587) var_1632) var_1677)) (or (or (or (or (or (or (or (or (or var_4531 _let_358) var_413) var_1043) var_1493) var_1628) var_1943) var_2078) var_2528) var_3158)) (or (or (or (or (or _let_357 var_4535) var_1722) var_1767) var_1812) var_1857)) (or (or (or (or (or (or (or (or (or var_4661 _let_356) var_503) var_1223) var_1628) var_1808) var_2078) var_2123) var_2708) var_3203)) (or (or (or (or (or _let_355 var_4665) var_1902) var_1947) var_1992) var_2037)) (or (or (or (or (or (or var_5841 _let_354) var_1313) var_1808) var_1988) var_2123) var_2888)) (or (or _let_353 var_5845) var_2082)) (or (or (or (or var_5977 _let_352) var_1403) var_1988) var_2978)) (or (or _let_351 var_5981) var_2127)) (or (or (or var_4807 _let_350) var_593) var_2393)) (or (or (or _let_349 var_4811) var_2172) var_2217)) (or (or (or (or (or var_4943 _let_348) var_683) var_2213) var_2393) var_2573)) (or (or (or _let_347 var_4947) var_2262) var_2307)) (or (or (or (or (or (or (or (or (or var_5197 _let_346) var_863) var_1673) var_2213) var_2303) var_2573) var_2753) var_3068) var_3293)) (or (or (or (or (or _let_345 var_5201) var_2352) var_2397) var_2442) var_2487)) (or (or (or (or (or (or (or (or (or var_5455 _let_344) var_1043) var_1853) var_2303) var_2438) var_2753) var_2933) var_3158) var_3383)) (or (or (or (or (or _let_343 var_5459) var_2532) var_2577) var_2622) var_2667)) (or (or (or (or (or (or (or (or (or var_5713 _let_342) var_1223) var_2033) var_2438) var_2618) var_2933) var_3023) var_3203) var_3428)) (or (or (or (or (or _let_341 var_5717) var_2712) var_2757) var_2802) var_2847)) (or (or (or (or (or var_5849 _let_340) var_1313) var_2618) var_2798) var_3023)) (or (or (or _let_339 var_5853) var_2892) var_2937)) (or (or (or var_5985 _let_338) var_1403) var_2798)) (or (or (or _let_337 var_5989) var_2982) var_3027)) (or (or (or (or (or var_6363 _let_336) var_1673) var_2483) var_3248) var_3293)) (or (or (or _let_335 var_6367) var_3072) var_3117)) (or (or (or (or (or (or var_6615 _let_334) var_1853) var_2663) var_3113) var_3248) var_3383)) (or (or _let_333 var_6619) var_3162)) (or (or (or (or (or var_6867 _let_332) var_2033) var_2843) var_3113) var_3428)) (or (or (or _let_331 var_6871) var_3207) var_3252)) (or (or (or var_7493 _let_330) var_2483) var_3473)) (or (or (or _let_329 var_7497) var_3297) var_3342)) (or (or (or (or var_7745 _let_328) var_2663) var_3338) var_3473)) (or (or _let_327 var_7749) var_3387)) (or (or (or var_7997 _let_326) var_2843) var_3338)) (or (or (or _let_325 var_8001) var_3432) var_3477)) (or var_4223 (not var_11220))) (or _let_324 var_11220)) (or var_4001 (not var_11228))) (or _let_323 var_11228)) (or var_4972 (not var_11236))) (or _let_322 var_11236)) (or var_4077 (not var_11244))) (or _let_321 var_11244)) (or var_5226 (not var_11252))) (or _let_320 var_11252)) (or var_4150 (not var_11260))) (or _let_319 var_11260)) (or var_5484 (not var_11268))) (or _let_318 var_11268)) (or var_4290 (not var_11276))) (or _let_317 var_11276)) (or var_4560 (not var_11284))) (or _let_316 var_11284)) (or var_4361 (not var_11292))) (or _let_315 var_11292)) (or var_6140 (not var_11300))) (or _let_314 var_11300)) (or var_4425 (not var_11308))) (or _let_313 var_11308)) (or var_6392 (not var_11316))) (or _let_312 var_11316)) (or var_4492 (not var_11324))) (or _let_311 var_11324)) (or var_6644 (not var_11332))) (or _let_310 var_11332)) (or var_4624 (not var_11340))) (or _let_309 var_11340)) (or var_5035 (not var_11348))) (or _let_308 var_11348)) (or var_4692 (not var_11356))) (or _let_307 var_11356)) (or var_7022 (not var_11364))) (or _let_306 var_11364)) (or var_4765 (not var_11372))) (or _let_305 var_11372)) (or var_5289 (not var_11380))) (or _let_304 var_11380)) (or var_4836 (not var_11388))) (or _let_303 var_11388)) (or var_7146 (not var_11396))) (or _let_302 var_11396)) (or var_4901 (not var_11404))) (or _let_301 var_11404)) (or var_5547 (not var_11412))) (or _let_300 var_11412)) (or var_5098 (not var_11420))) (or _let_299 var_11420)) (or var_7270 (not var_11428))) (or _let_298 var_11428)) (or var_5160 (not var_11436))) (or _let_297 var_11436)) (or var_5742 (not var_11444))) (or _let_296 var_11444)) (or var_5351 (not var_11452))) (or _let_295 var_11452)) (or var_7522 (not var_11460))) (or _let_294 var_11460)) (or var_5418 (not var_11468))) (or _let_293 var_11468)) (or var_5878 (not var_11476))) (or _let_292 var_11476)) (or var_5609 (not var_11484))) (or _let_291 var_11484)) (or var_7774 (not var_11492))) (or _let_290 var_11492)) (or var_5676 (not var_11500))) (or _let_289 var_11500)) (or var_8026 (not var_11508))) (or _let_288 var_11508)) (or var_5807 (not var_11516))) (or _let_287 var_11516)) (or var_8150 (not var_11524))) (or _let_286 var_11524)) (or var_5943 (not var_11532))) (or _let_285 var_11532)) (or var_6203 (not var_11540))) (or _let_284 var_11540)) (or var_6014 (not var_11548))) (or _let_283 var_11548)) (or var_6455 (not var_11556))) (or _let_282 var_11556)) (or var_6077 (not var_11564))) (or _let_281 var_11564)) (or var_6707 (not var_11572))) (or _let_280 var_11572)) (or var_6264 (not var_11580))) (or _let_279 var_11580)) (or var_8274 (not var_11588))) (or _let_278 var_11588)) (or var_6326 (not var_11596))) (or _let_277 var_11596)) (or var_6896 (not var_11604))) (or _let_276 var_11604)) (or var_6516 (not var_11612))) (or _let_275 var_11612)) (or var_8398 (not var_11620))) (or _let_274 var_11620)) (or var_6578 (not var_11628))) (or _let_273 var_11628)) (or var_6959 (not var_11636))) (or _let_272 var_11636)) (or var_6768 (not var_11644))) (or _let_271 var_11644)) (or var_8461 (not var_11652))) (or _let_270 var_11652)) (or var_6830 (not var_11660))) (or _let_269 var_11660)) (or var_7333 (not var_11668))) (or _let_268 var_11668)) (or var_7085 (not var_11676))) (or _let_267 var_11676)) (or var_7585 (not var_11684))) (or _let_266 var_11684)) (or var_7209 (not var_11692))) (or _let_265 var_11692)) (or var_7837 (not var_11700))) (or _let_264 var_11700)) (or var_7394 (not var_11708))) (or _let_263 var_11708)) (or var_8585 (not var_11716))) (or _let_262 var_11716)) (or var_7456 (not var_11724))) (or _let_261 var_11724)) (or var_8089 (not var_11732))) (or _let_260 var_11732)) (or var_7646 (not var_11740))) (or _let_259 var_11740)) (or var_8709 (not var_11748))) (or _let_258 var_11748)) (or var_7708 (not var_11756))) (or _let_257 var_11756)) (or var_8213 (not var_11764))) (or _let_256 var_11764)) (or var_7898 (not var_11772))) (or _let_255 var_11772)) (or var_8772 (not var_11780))) (or _let_254 var_11780)) (or var_7960 (not var_11788))) (or _let_253 var_11788)) (or var_8524 (not var_11796))) (or _let_252 var_11796)) (or var_8337 (not var_11804))) (or _let_251 var_11804)) (or var_8835 (not var_11812))) (or _let_250 var_11812)) (or var_8648 (not var_11820))) (or _let_249 var_11820)) (or _let_131 _let_112)) (or _let_129 _let_111)) (or _let_112 _let_131)) (or _let_111 _let_129)) (or _let_135 _let_131)) (or _let_133 _let_129)) (or _let_135 _let_104)) (or _let_133 _let_103)) (or _let_131 _let_135)) (or _let_129 _let_133)) (or _let_131 _let_104)) (or _let_129 _let_103)) (or _let_104 _let_135)) (or _let_103 _let_133)) (or _let_104 _let_131)) (or _let_103 _let_129)) (or _let_135 _let_96)) (or _let_133 _let_95)) (or _let_96 _let_135)) (or _let_95 _let_133)) (or _let_136 _let_123)) (or _let_134 _let_121)) (or _let_136 _let_112)) (or _let_134 _let_111)) _let_248) _let_247) (or _let_123 _let_136)) (or _let_121 _let_134)) (or _let_123 _let_112)) (or _let_121 _let_111)) (or _let_123 _let_80)) (or _let_121 _let_79)) (or _let_112 _let_136)) (or _let_111 _let_134)) (or _let_112 _let_123)) (or _let_111 _let_121)) (or _let_112 _let_80)) (or _let_111 _let_79)) _let_242) _let_241) (or _let_80 _let_123)) (or _let_79 _let_121)) (or _let_80 _let_112)) (or _let_79 _let_111)) (or _let_232 _let_127)) (or _let_231 _let_125)) (or _let_232 _let_123)) (or _let_231 _let_121)) (or _let_232 _let_104)) (or _let_231 _let_103)) _let_240) _let_239) (or _let_127 _let_232)) (or _let_125 _let_231)) (or _let_127 _let_123)) (or _let_125 _let_121)) (or _let_127 _let_104)) (or _let_125 _let_103)) (or _let_127 _let_72)) (or _let_125 _let_71)) (or _let_123 _let_232)) (or _let_121 _let_231)) (or _let_123 _let_127)) (or _let_121 _let_125)) (or _let_123 _let_104)) (or _let_121 _let_103)) (or _let_123 _let_72)) (or _let_121 _let_71)) (or _let_104 _let_232)) (or _let_103 _let_231)) (or _let_104 _let_127)) (or _let_103 _let_125)) (or _let_104 _let_123)) (or _let_103 _let_121)) (or _let_104 _let_72)) (or _let_103 _let_71)) _let_234) _let_233) (or _let_72 _let_127)) (or _let_71 _let_125)) (or _let_72 _let_123)) (or _let_71 _let_121)) (or _let_72 _let_104)) (or _let_71 _let_103)) (or _let_132 _let_127)) (or _let_130 _let_125)) (or _let_132 _let_96)) (or _let_130 _let_95)) _let_230) _let_229) (or _let_127 _let_132)) (or _let_125 _let_130)) (or _let_127 _let_96)) (or _let_125 _let_95)) (or _let_127 _let_64)) (or _let_125 _let_63)) (or _let_96 _let_132)) (or _let_95 _let_130)) (or _let_96 _let_127)) (or _let_95 _let_125)) (or _let_96 _let_64)) (or _let_95 _let_63)) _let_224) _let_223) (or _let_64 _let_127)) (or _let_63 _let_125)) (or _let_64 _let_96)) (or _let_63 _let_95)) (or _let_110 _let_55)) (or _let_109 _let_53)) (or _let_55 _let_110)) (or _let_53 _let_109)) (or _let_119 _let_110)) (or _let_117 _let_109)) _let_246) _let_245) (or _let_119 _let_51)) (or _let_117 _let_49)) (or _let_110 _let_119)) (or _let_109 _let_117)) (or _let_110 _let_102)) (or _let_109 _let_101)) (or _let_110 _let_51)) (or _let_109 _let_49)) _let_244) _let_243) (or _let_102 _let_110)) (or _let_101 _let_109)) (or _let_102 _let_51)) (or _let_101 _let_49)) (or _let_51 _let_119)) (or _let_49 _let_117)) (or _let_51 _let_110)) (or _let_49 _let_109)) (or _let_51 _let_102)) (or _let_49 _let_101)) (or _let_136 _let_128)) (or _let_134 _let_126)) (or _let_136 _let_119)) (or _let_134 _let_117)) (or _let_136 _let_115)) (or _let_134 _let_113)) (or _let_136 _let_102)) (or _let_134 _let_101)) (or _let_136 _let_94)) (or _let_134 _let_93)) _let_248) _let_247) (or _let_136 _let_48)) (or _let_134 _let_47)) (or _let_128 _let_136)) (or _let_126 _let_134)) (or _let_128 _let_119)) (or _let_126 _let_117)) (or _let_128 _let_115)) (or _let_126 _let_113)) (or _let_128 _let_102)) (or _let_126 _let_101)) (or _let_128 _let_94)) (or _let_126 _let_93)) (or _let_128 _let_80)) (or _let_126 _let_79)) _let_218) _let_217) (or _let_119 _let_136)) (or _let_117 _let_134)) (or _let_119 _let_128)) (or _let_117 _let_126)) (or _let_119 _let_115)) (or _let_117 _let_113)) _let_246) _let_245) (or _let_119 _let_94)) (or _let_117 _let_93)) (or _let_119 _let_80)) (or _let_117 _let_79)) (or _let_119 _let_48)) (or _let_117 _let_47)) (or _let_115 _let_136)) (or _let_113 _let_134)) (or _let_115 _let_128)) (or _let_113 _let_126)) (or _let_115 _let_119)) (or _let_113 _let_117)) (or _let_115 _let_102)) (or _let_113 _let_101)) _let_238) _let_237) (or _let_115 _let_80)) (or _let_113 _let_79)) (or _let_115 _let_48)) (or _let_113 _let_47)) (or _let_102 _let_136)) (or _let_101 _let_134)) (or _let_102 _let_128)) (or _let_101 _let_126)) _let_244) _let_243) (or _let_102 _let_115)) (or _let_101 _let_113)) (or _let_102 _let_94)) (or _let_101 _let_93)) (or _let_102 _let_80)) (or _let_101 _let_79)) (or _let_102 _let_48)) (or _let_101 _let_47)) (or _let_94 _let_136)) (or _let_93 _let_134)) (or _let_94 _let_128)) (or _let_93 _let_126)) (or _let_94 _let_119)) (or _let_93 _let_117)) _let_236) _let_235) (or _let_94 _let_102)) (or _let_93 _let_101)) (or _let_94 _let_80)) (or _let_93 _let_79)) (or _let_94 _let_48)) (or _let_93 _let_47)) _let_242) _let_241) (or _let_80 _let_128)) (or _let_79 _let_126)) (or _let_80 _let_119)) (or _let_79 _let_117)) (or _let_80 _let_115)) (or _let_79 _let_113)) (or _let_80 _let_102)) (or _let_79 _let_101)) (or _let_80 _let_94)) (or _let_79 _let_93)) (or _let_80 _let_48)) (or _let_79 _let_47)) (or _let_48 _let_136)) (or _let_47 _let_134)) _let_212) _let_211) (or _let_48 _let_119)) (or _let_47 _let_117)) (or _let_48 _let_115)) (or _let_47 _let_113)) (or _let_48 _let_102)) (or _let_47 _let_101)) (or _let_48 _let_94)) (or _let_47 _let_93)) (or _let_48 _let_80)) (or _let_47 _let_79)) (or _let_232 _let_200)) (or _let_231 _let_199)) (or _let_232 _let_115)) (or _let_231 _let_113)) (or _let_232 _let_107)) (or _let_231 _let_105)) (or _let_232 _let_94)) (or _let_231 _let_93)) (or _let_232 _let_87)) (or _let_231 _let_85)) _let_240) _let_239) (or _let_232 _let_40)) (or _let_231 _let_39)) (or _let_200 _let_232)) (or _let_199 _let_231)) (or _let_200 _let_115)) (or _let_199 _let_113)) (or _let_200 _let_107)) (or _let_199 _let_105)) (or _let_200 _let_94)) (or _let_199 _let_93)) (or _let_200 _let_87)) (or _let_199 _let_85)) (or _let_200 _let_72)) (or _let_199 _let_71)) _let_208) _let_207) (or _let_115 _let_232)) (or _let_113 _let_231)) (or _let_115 _let_200)) (or _let_113 _let_199)) (or _let_115 _let_107)) (or _let_113 _let_105)) _let_238) _let_237) (or _let_115 _let_87)) (or _let_113 _let_85)) (or _let_115 _let_72)) (or _let_113 _let_71)) (or _let_115 _let_40)) (or _let_113 _let_39)) (or _let_107 _let_232)) (or _let_105 _let_231)) (or _let_107 _let_200)) (or _let_105 _let_199)) (or _let_107 _let_115)) (or _let_105 _let_113)) (or _let_107 _let_94)) (or _let_105 _let_93)) _let_228) _let_227) (or _let_107 _let_72)) (or _let_105 _let_71)) (or _let_107 _let_40)) (or _let_105 _let_39)) (or _let_94 _let_232)) (or _let_93 _let_231)) (or _let_94 _let_200)) (or _let_93 _let_199)) _let_236) _let_235) (or _let_94 _let_107)) (or _let_93 _let_105)) (or _let_94 _let_87)) (or _let_93 _let_85)) (or _let_94 _let_72)) (or _let_93 _let_71)) (or _let_94 _let_40)) (or _let_93 _let_39)) (or _let_87 _let_232)) (or _let_85 _let_231)) (or _let_87 _let_200)) (or _let_85 _let_199)) (or _let_87 _let_115)) (or _let_85 _let_113)) _let_226) _let_225) (or _let_87 _let_94)) (or _let_85 _let_93)) (or _let_87 _let_72)) (or _let_85 _let_71)) (or _let_87 _let_40)) (or _let_85 _let_39)) _let_234) _let_233) (or _let_72 _let_200)) (or _let_71 _let_199)) (or _let_72 _let_115)) (or _let_71 _let_113)) (or _let_72 _let_107)) (or _let_71 _let_105)) (or _let_72 _let_94)) (or _let_71 _let_93)) (or _let_72 _let_87)) (or _let_71 _let_85)) (or _let_72 _let_40)) (or _let_71 _let_39)) (or _let_40 _let_232)) (or _let_39 _let_231)) _let_202) _let_201) (or _let_40 _let_115)) (or _let_39 _let_113)) (or _let_40 _let_107)) (or _let_39 _let_105)) (or _let_40 _let_94)) (or _let_39 _let_93)) (or _let_40 _let_87)) (or _let_39 _let_85)) (or _let_40 _let_72)) (or _let_39 _let_71)) (or _let_132 _let_124)) (or _let_130 _let_122)) (or _let_132 _let_107)) (or _let_130 _let_105)) (or _let_132 _let_99)) (or _let_130 _let_97)) (or _let_132 _let_87)) (or _let_130 _let_85)) (or _let_132 _let_83)) (or _let_130 _let_81)) _let_230) _let_229) (or _let_132 _let_32)) (or _let_130 _let_31)) (or _let_124 _let_132)) (or _let_122 _let_130)) (or _let_124 _let_107)) (or _let_122 _let_105)) (or _let_124 _let_99)) (or _let_122 _let_97)) (or _let_124 _let_87)) (or _let_122 _let_85)) (or _let_124 _let_83)) (or _let_122 _let_81)) (or _let_124 _let_64)) (or _let_122 _let_63)) _let_196) _let_195) (or _let_107 _let_132)) (or _let_105 _let_130)) (or _let_107 _let_124)) (or _let_105 _let_122)) (or _let_107 _let_99)) (or _let_105 _let_97)) _let_228) _let_227) (or _let_107 _let_83)) (or _let_105 _let_81)) (or _let_107 _let_64)) (or _let_105 _let_63)) (or _let_107 _let_32)) (or _let_105 _let_31)) (or _let_99 _let_132)) (or _let_97 _let_130)) (or _let_99 _let_124)) (or _let_97 _let_122)) (or _let_99 _let_107)) (or _let_97 _let_105)) (or _let_99 _let_87)) (or _let_97 _let_85)) _let_222) _let_221) (or _let_99 _let_64)) (or _let_97 _let_63)) (or _let_99 _let_32)) (or _let_97 _let_31)) (or _let_87 _let_132)) (or _let_85 _let_130)) (or _let_87 _let_124)) (or _let_85 _let_122)) _let_226) _let_225) (or _let_87 _let_99)) (or _let_85 _let_97)) (or _let_87 _let_83)) (or _let_85 _let_81)) (or _let_87 _let_64)) (or _let_85 _let_63)) (or _let_87 _let_32)) (or _let_85 _let_31)) (or _let_83 _let_132)) (or _let_81 _let_130)) (or _let_83 _let_124)) (or _let_81 _let_122)) (or _let_83 _let_107)) (or _let_81 _let_105)) _let_220) _let_219) (or _let_83 _let_87)) (or _let_81 _let_85)) (or _let_83 _let_64)) (or _let_81 _let_63)) (or _let_83 _let_32)) (or _let_81 _let_31)) _let_224) _let_223) (or _let_64 _let_124)) (or _let_63 _let_122)) (or _let_64 _let_107)) (or _let_63 _let_105)) (or _let_64 _let_99)) (or _let_63 _let_97)) (or _let_64 _let_87)) (or _let_63 _let_85)) (or _let_64 _let_83)) (or _let_63 _let_81)) (or _let_64 _let_32)) (or _let_63 _let_31)) (or _let_32 _let_132)) (or _let_31 _let_130)) _let_190) _let_189) (or _let_32 _let_107)) (or _let_31 _let_105)) (or _let_32 _let_99)) (or _let_31 _let_97)) (or _let_32 _let_87)) (or _let_31 _let_85)) (or _let_32 _let_83)) (or _let_31 _let_81)) (or _let_32 _let_64)) (or _let_31 _let_63)) (or _let_99 _let_91)) (or _let_97 _let_89)) _let_222) _let_221) (or _let_99 _let_23)) (or _let_97 _let_21)) (or _let_91 _let_99)) (or _let_89 _let_97)) (or _let_91 _let_83)) (or _let_89 _let_81)) (or _let_91 _let_23)) (or _let_89 _let_21)) _let_220) _let_219) (or _let_83 _let_91)) (or _let_81 _let_89)) (or _let_83 _let_23)) (or _let_81 _let_21)) (or _let_23 _let_99)) (or _let_21 _let_97)) (or _let_23 _let_91)) (or _let_21 _let_89)) (or _let_23 _let_83)) (or _let_21 _let_81)) (or _let_91 _let_19)) (or _let_89 _let_17)) (or _let_19 _let_91)) (or _let_17 _let_89)) (or _let_120 _let_78)) (or _let_118 _let_77)) (or _let_120 _let_55)) (or _let_118 _let_53)) (or _let_78 _let_120)) (or _let_77 _let_118)) (or _let_78 _let_55)) (or _let_77 _let_53)) (or _let_55 _let_120)) (or _let_53 _let_118)) (or _let_55 _let_78)) (or _let_53 _let_77)) (or _let_116 _let_210)) (or _let_114 _let_209)) (or _let_116 _let_78)) (or _let_114 _let_77)) (or _let_116 _let_70)) (or _let_114 _let_69)) (or _let_116 _let_51)) (or _let_114 _let_49)) (or _let_210 _let_116)) (or _let_209 _let_114)) (or _let_210 _let_78)) (or _let_209 _let_77)) _let_216) _let_215) (or _let_210 _let_51)) (or _let_209 _let_49)) (or _let_78 _let_116)) (or _let_77 _let_114)) (or _let_78 _let_210)) (or _let_77 _let_209)) (or _let_78 _let_70)) (or _let_77 _let_69)) (or _let_78 _let_51)) (or _let_77 _let_49)) (or _let_70 _let_116)) (or _let_69 _let_114)) _let_214) _let_213) (or _let_70 _let_78)) (or _let_69 _let_77)) (or _let_70 _let_51)) (or _let_69 _let_49)) (or _let_51 _let_116)) (or _let_49 _let_114)) (or _let_51 _let_210)) (or _let_49 _let_209)) (or _let_51 _let_78)) (or _let_49 _let_77)) (or _let_51 _let_70)) (or _let_49 _let_69)) (or _let_128 _let_108)) (or _let_126 _let_106)) (or _let_128 _let_210)) (or _let_126 _let_209)) (or _let_128 _let_198)) (or _let_126 _let_197)) (or _let_128 _let_70)) (or _let_126 _let_69)) (or _let_128 _let_62)) (or _let_126 _let_61)) _let_218) _let_217) (or _let_128 _let_15)) (or _let_126 _let_13)) (or _let_108 _let_128)) (or _let_106 _let_126)) (or _let_108 _let_210)) (or _let_106 _let_209)) (or _let_108 _let_198)) (or _let_106 _let_197)) (or _let_108 _let_70)) (or _let_106 _let_69)) (or _let_108 _let_62)) (or _let_106 _let_61)) (or _let_108 _let_48)) (or _let_106 _let_47)) _let_180) _let_179) (or _let_210 _let_128)) (or _let_209 _let_126)) (or _let_210 _let_108)) (or _let_209 _let_106)) (or _let_210 _let_198)) (or _let_209 _let_197)) _let_216) _let_215) (or _let_210 _let_62)) (or _let_209 _let_61)) (or _let_210 _let_48)) (or _let_209 _let_47)) (or _let_210 _let_15)) (or _let_209 _let_13)) (or _let_198 _let_128)) (or _let_197 _let_126)) (or _let_198 _let_108)) (or _let_197 _let_106)) (or _let_198 _let_210)) (or _let_197 _let_209)) (or _let_198 _let_70)) (or _let_197 _let_69)) _let_206) _let_205) (or _let_198 _let_48)) (or _let_197 _let_47)) (or _let_198 _let_15)) (or _let_197 _let_13)) (or _let_70 _let_128)) (or _let_69 _let_126)) (or _let_70 _let_108)) (or _let_69 _let_106)) _let_214) _let_213) (or _let_70 _let_198)) (or _let_69 _let_197)) (or _let_70 _let_62)) (or _let_69 _let_61)) (or _let_70 _let_48)) (or _let_69 _let_47)) (or _let_70 _let_15)) (or _let_69 _let_13)) (or _let_62 _let_128)) (or _let_61 _let_126)) (or _let_62 _let_108)) (or _let_61 _let_106)) (or _let_62 _let_210)) (or _let_61 _let_209)) _let_204) _let_203) (or _let_62 _let_70)) (or _let_61 _let_69)) (or _let_62 _let_48)) (or _let_61 _let_47)) (or _let_62 _let_15)) (or _let_61 _let_13)) _let_212) _let_211) (or _let_48 _let_108)) (or _let_47 _let_106)) (or _let_48 _let_210)) (or _let_47 _let_209)) (or _let_48 _let_198)) (or _let_47 _let_197)) (or _let_48 _let_70)) (or _let_47 _let_69)) (or _let_48 _let_62)) (or _let_47 _let_61)) (or _let_48 _let_15)) (or _let_47 _let_13)) (or _let_15 _let_128)) (or _let_13 _let_126)) _let_174) _let_173) (or _let_15 _let_210)) (or _let_13 _let_209)) (or _let_15 _let_198)) (or _let_13 _let_197)) (or _let_15 _let_70)) (or _let_13 _let_69)) (or _let_15 _let_62)) (or _let_13 _let_61)) (or _let_15 _let_48)) (or _let_13 _let_47)) (or _let_200 _let_100)) (or _let_199 _let_98)) (or _let_200 _let_198)) (or _let_199 _let_197)) (or _let_200 _let_75)) (or _let_199 _let_73)) (or _let_200 _let_62)) (or _let_199 _let_61)) (or _let_200 _let_188)) (or _let_199 _let_187)) _let_208) _let_207) (or _let_200 _let_164)) (or _let_199 _let_163)) (or _let_100 _let_200)) (or _let_98 _let_199)) (or _let_100 _let_198)) (or _let_98 _let_197)) (or _let_100 _let_75)) (or _let_98 _let_73)) (or _let_100 _let_62)) (or _let_98 _let_61)) (or _let_100 _let_188)) (or _let_98 _let_187)) (or _let_100 _let_40)) (or _let_98 _let_39)) _let_172) _let_171) (or _let_198 _let_200)) (or _let_197 _let_199)) (or _let_198 _let_100)) (or _let_197 _let_98)) (or _let_198 _let_75)) (or _let_197 _let_73)) _let_206) _let_205) (or _let_198 _let_188)) (or _let_197 _let_187)) (or _let_198 _let_40)) (or _let_197 _let_39)) (or _let_198 _let_164)) (or _let_197 _let_163)) (or _let_75 _let_200)) (or _let_73 _let_199)) (or _let_75 _let_100)) (or _let_73 _let_98)) (or _let_75 _let_198)) (or _let_73 _let_197)) (or _let_75 _let_62)) (or _let_73 _let_61)) _let_194) _let_193) (or _let_75 _let_40)) (or _let_73 _let_39)) (or _let_75 _let_164)) (or _let_73 _let_163)) (or _let_62 _let_200)) (or _let_61 _let_199)) (or _let_62 _let_100)) (or _let_61 _let_98)) _let_204) _let_203) (or _let_62 _let_75)) (or _let_61 _let_73)) (or _let_62 _let_188)) (or _let_61 _let_187)) (or _let_62 _let_40)) (or _let_61 _let_39)) (or _let_62 _let_164)) (or _let_61 _let_163)) (or _let_188 _let_200)) (or _let_187 _let_199)) (or _let_188 _let_100)) (or _let_187 _let_98)) (or _let_188 _let_198)) (or _let_187 _let_197)) _let_192) _let_191) (or _let_188 _let_62)) (or _let_187 _let_61)) (or _let_188 _let_40)) (or _let_187 _let_39)) (or _let_188 _let_164)) (or _let_187 _let_163)) _let_202) _let_201) (or _let_40 _let_100)) (or _let_39 _let_98)) (or _let_40 _let_198)) (or _let_39 _let_197)) (or _let_40 _let_75)) (or _let_39 _let_73)) (or _let_40 _let_62)) (or _let_39 _let_61)) (or _let_40 _let_188)) (or _let_39 _let_187)) (or _let_40 _let_164)) (or _let_39 _let_163)) (or _let_164 _let_200)) (or _let_163 _let_199)) _let_166) _let_165) (or _let_164 _let_198)) (or _let_163 _let_197)) (or _let_164 _let_75)) (or _let_163 _let_73)) (or _let_164 _let_62)) (or _let_163 _let_61)) (or _let_164 _let_188)) (or _let_163 _let_187)) (or _let_164 _let_40)) (or _let_163 _let_39)) (or _let_124 _let_92)) (or _let_122 _let_90)) (or _let_124 _let_75)) (or _let_122 _let_73)) (or _let_124 _let_67)) (or _let_122 _let_65)) (or _let_124 _let_188)) (or _let_122 _let_187)) (or _let_124 _let_182)) (or _let_122 _let_181)) _let_196) _let_195) (or _let_124 _let_11)) (or _let_122 _let_9)) (or _let_92 _let_124)) (or _let_90 _let_122)) (or _let_92 _let_75)) (or _let_90 _let_73)) (or _let_92 _let_67)) (or _let_90 _let_65)) (or _let_92 _let_188)) (or _let_90 _let_187)) (or _let_92 _let_182)) (or _let_90 _let_181)) (or _let_92 _let_32)) (or _let_90 _let_31)) _let_162) _let_161) (or _let_75 _let_124)) (or _let_73 _let_122)) (or _let_75 _let_92)) (or _let_73 _let_90)) (or _let_75 _let_67)) (or _let_73 _let_65)) _let_194) _let_193) (or _let_75 _let_182)) (or _let_73 _let_181)) (or _let_75 _let_32)) (or _let_73 _let_31)) (or _let_75 _let_11)) (or _let_73 _let_9)) (or _let_67 _let_124)) (or _let_65 _let_122)) (or _let_67 _let_92)) (or _let_65 _let_90)) (or _let_67 _let_75)) (or _let_65 _let_73)) (or _let_67 _let_188)) (or _let_65 _let_187)) _let_186) _let_185) (or _let_67 _let_32)) (or _let_65 _let_31)) (or _let_67 _let_11)) (or _let_65 _let_9)) (or _let_188 _let_124)) (or _let_187 _let_122)) (or _let_188 _let_92)) (or _let_187 _let_90)) _let_192) _let_191) (or _let_188 _let_67)) (or _let_187 _let_65)) (or _let_188 _let_182)) (or _let_187 _let_181)) (or _let_188 _let_32)) (or _let_187 _let_31)) (or _let_188 _let_11)) (or _let_187 _let_9)) (or _let_182 _let_124)) (or _let_181 _let_122)) (or _let_182 _let_92)) (or _let_181 _let_90)) (or _let_182 _let_75)) (or _let_181 _let_73)) _let_184) _let_183) (or _let_182 _let_188)) (or _let_181 _let_187)) (or _let_182 _let_32)) (or _let_181 _let_31)) (or _let_182 _let_11)) (or _let_181 _let_9)) _let_190) _let_189) (or _let_32 _let_92)) (or _let_31 _let_90)) (or _let_32 _let_75)) (or _let_31 _let_73)) (or _let_32 _let_67)) (or _let_31 _let_65)) (or _let_32 _let_188)) (or _let_31 _let_187)) (or _let_32 _let_182)) (or _let_31 _let_181)) (or _let_32 _let_11)) (or _let_31 _let_9)) (or _let_11 _let_124)) (or _let_9 _let_122)) _let_156) _let_155) (or _let_11 _let_75)) (or _let_9 _let_73)) (or _let_11 _let_67)) (or _let_9 _let_65)) (or _let_11 _let_188)) (or _let_9 _let_187)) (or _let_11 _let_182)) (or _let_9 _let_181)) (or _let_11 _let_32)) (or _let_9 _let_31)) (or _let_88 _let_67)) (or _let_86 _let_65)) (or _let_88 _let_59)) (or _let_86 _let_57)) (or _let_88 _let_182)) (or _let_86 _let_181)) (or _let_88 _let_23)) (or _let_86 _let_21)) (or _let_67 _let_88)) (or _let_65 _let_86)) (or _let_67 _let_59)) (or _let_65 _let_57)) _let_186) _let_185) (or _let_67 _let_23)) (or _let_65 _let_21)) (or _let_59 _let_88)) (or _let_57 _let_86)) (or _let_59 _let_67)) (or _let_57 _let_65)) (or _let_59 _let_182)) (or _let_57 _let_181)) (or _let_59 _let_23)) (or _let_57 _let_21)) (or _let_182 _let_88)) (or _let_181 _let_86)) _let_184) _let_183) (or _let_182 _let_59)) (or _let_181 _let_57)) (or _let_182 _let_23)) (or _let_181 _let_21)) (or _let_23 _let_88)) (or _let_21 _let_86)) (or _let_23 _let_67)) (or _let_21 _let_65)) (or _let_23 _let_59)) (or _let_21 _let_57)) (or _let_23 _let_182)) (or _let_21 _let_181)) (or _let_84 _let_59)) (or _let_82 _let_57)) (or _let_84 _let_19)) (or _let_82 _let_17)) (or _let_59 _let_84)) (or _let_57 _let_82)) (or _let_59 _let_19)) (or _let_57 _let_17)) (or _let_19 _let_84)) (or _let_17 _let_82)) (or _let_19 _let_59)) (or _let_17 _let_57)) (or _let_120 _let_46)) (or _let_118 _let_45)) (or _let_46 _let_120)) (or _let_45 _let_118)) (or _let_116 _let_56)) (or _let_114 _let_54)) (or _let_116 _let_46)) (or _let_114 _let_45)) (or _let_116 _let_38)) (or _let_114 _let_37)) (or _let_56 _let_116)) (or _let_54 _let_114)) (or _let_56 _let_46)) (or _let_54 _let_45)) _let_178) _let_177) (or _let_46 _let_116)) (or _let_45 _let_114)) (or _let_46 _let_56)) (or _let_45 _let_54)) (or _let_46 _let_38)) (or _let_45 _let_37)) (or _let_38 _let_116)) (or _let_37 _let_114)) _let_176) _let_175) (or _let_38 _let_46)) (or _let_37 _let_45)) (or _let_108 _let_76)) (or _let_106 _let_74)) (or _let_108 _let_56)) (or _let_106 _let_54)) (or _let_108 _let_52)) (or _let_106 _let_50)) (or _let_108 _let_38)) (or _let_106 _let_37)) (or _let_108 _let_30)) (or _let_106 _let_29)) _let_180) _let_179) (or _let_108 _let_7)) (or _let_106 _let_5)) (or _let_76 _let_108)) (or _let_74 _let_106)) (or _let_76 _let_56)) (or _let_74 _let_54)) (or _let_76 _let_52)) (or _let_74 _let_50)) (or _let_76 _let_38)) (or _let_74 _let_37)) (or _let_76 _let_30)) (or _let_74 _let_29)) (or _let_76 _let_15)) (or _let_74 _let_13)) _let_150) _let_149) (or _let_56 _let_108)) (or _let_54 _let_106)) (or _let_56 _let_76)) (or _let_54 _let_74)) (or _let_56 _let_52)) (or _let_54 _let_50)) _let_178) _let_177) (or _let_56 _let_30)) (or _let_54 _let_29)) (or _let_56 _let_15)) (or _let_54 _let_13)) (or _let_56 _let_7)) (or _let_54 _let_5)) (or _let_52 _let_108)) (or _let_50 _let_106)) (or _let_52 _let_76)) (or _let_50 _let_74)) (or _let_52 _let_56)) (or _let_50 _let_54)) (or _let_52 _let_38)) (or _let_50 _let_37)) _let_170) _let_169) (or _let_52 _let_15)) (or _let_50 _let_13)) (or _let_52 _let_7)) (or _let_50 _let_5)) (or _let_38 _let_108)) (or _let_37 _let_106)) (or _let_38 _let_76)) (or _let_37 _let_74)) _let_176) _let_175) (or _let_38 _let_52)) (or _let_37 _let_50)) (or _let_38 _let_30)) (or _let_37 _let_29)) (or _let_38 _let_15)) (or _let_37 _let_13)) (or _let_38 _let_7)) (or _let_37 _let_5)) (or _let_30 _let_108)) (or _let_29 _let_106)) (or _let_30 _let_76)) (or _let_29 _let_74)) (or _let_30 _let_56)) (or _let_29 _let_54)) _let_168) _let_167) (or _let_30 _let_38)) (or _let_29 _let_37)) (or _let_30 _let_15)) (or _let_29 _let_13)) (or _let_30 _let_7)) (or _let_29 _let_5)) _let_174) _let_173) (or _let_15 _let_76)) (or _let_13 _let_74)) (or _let_15 _let_56)) (or _let_13 _let_54)) (or _let_15 _let_52)) (or _let_13 _let_50)) (or _let_15 _let_38)) (or _let_13 _let_37)) (or _let_15 _let_30)) (or _let_13 _let_29)) (or _let_15 _let_7)) (or _let_13 _let_5)) (or _let_7 _let_108)) (or _let_5 _let_106)) _let_148) _let_147) (or _let_7 _let_56)) (or _let_5 _let_54)) (or _let_7 _let_52)) (or _let_5 _let_50)) (or _let_7 _let_38)) (or _let_5 _let_37)) (or _let_7 _let_30)) (or _let_5 _let_29)) (or _let_7 _let_15)) (or _let_5 _let_13)) (or _let_100 _let_68)) (or _let_98 _let_66)) (or _let_100 _let_52)) (or _let_98 _let_50)) (or _let_100 _let_43)) (or _let_98 _let_41)) (or _let_100 _let_30)) (or _let_98 _let_29)) (or _let_100 _let_24)) (or _let_98 _let_22)) _let_172) _let_171) (or _let_100 _let_142)) (or _let_98 _let_141)) (or _let_68 _let_100)) (or _let_66 _let_98)) (or _let_68 _let_52)) (or _let_66 _let_50)) (or _let_68 _let_43)) (or _let_66 _let_41)) (or _let_68 _let_30)) (or _let_66 _let_29)) (or _let_68 _let_24)) (or _let_66 _let_22)) (or _let_68 _let_164)) (or _let_66 _let_163)) _let_146) _let_145) (or _let_52 _let_100)) (or _let_50 _let_98)) (or _let_52 _let_68)) (or _let_50 _let_66)) (or _let_52 _let_43)) (or _let_50 _let_41)) _let_170) _let_169) (or _let_52 _let_24)) (or _let_50 _let_22)) (or _let_52 _let_164)) (or _let_50 _let_163)) (or _let_52 _let_142)) (or _let_50 _let_141)) (or _let_43 _let_100)) (or _let_41 _let_98)) (or _let_43 _let_68)) (or _let_41 _let_66)) (or _let_43 _let_52)) (or _let_41 _let_50)) (or _let_43 _let_30)) (or _let_41 _let_29)) _let_160) _let_159) (or _let_43 _let_164)) (or _let_41 _let_163)) (or _let_43 _let_142)) (or _let_41 _let_141)) (or _let_30 _let_100)) (or _let_29 _let_98)) (or _let_30 _let_68)) (or _let_29 _let_66)) _let_168) _let_167) (or _let_30 _let_43)) (or _let_29 _let_41)) (or _let_30 _let_24)) (or _let_29 _let_22)) (or _let_30 _let_164)) (or _let_29 _let_163)) (or _let_30 _let_142)) (or _let_29 _let_141)) (or _let_24 _let_100)) (or _let_22 _let_98)) (or _let_24 _let_68)) (or _let_22 _let_66)) (or _let_24 _let_52)) (or _let_22 _let_50)) _let_158) _let_157) (or _let_24 _let_30)) (or _let_22 _let_29)) (or _let_24 _let_164)) (or _let_22 _let_163)) (or _let_24 _let_142)) (or _let_22 _let_141)) _let_166) _let_165) (or _let_164 _let_68)) (or _let_163 _let_66)) (or _let_164 _let_52)) (or _let_163 _let_50)) (or _let_164 _let_43)) (or _let_163 _let_41)) (or _let_164 _let_30)) (or _let_163 _let_29)) (or _let_164 _let_24)) (or _let_163 _let_22)) (or _let_164 _let_142)) (or _let_163 _let_141)) (or _let_142 _let_100)) (or _let_141 _let_98)) _let_144) _let_143) (or _let_142 _let_52)) (or _let_141 _let_50)) (or _let_142 _let_43)) (or _let_141 _let_41)) (or _let_142 _let_30)) (or _let_141 _let_29)) (or _let_142 _let_24)) (or _let_141 _let_22)) (or _let_142 _let_164)) (or _let_141 _let_163)) (or _let_92 _let_60)) (or _let_90 _let_58)) (or _let_92 _let_43)) (or _let_90 _let_41)) (or _let_92 _let_35)) (or _let_90 _let_33)) (or _let_92 _let_24)) (or _let_90 _let_22)) (or _let_92 _let_20)) (or _let_90 _let_18)) _let_162) _let_161) (or _let_92 _let_3)) (or _let_90 _let_1)) (or _let_60 _let_92)) (or _let_58 _let_90)) (or _let_60 _let_43)) (or _let_58 _let_41)) (or _let_60 _let_35)) (or _let_58 _let_33)) (or _let_60 _let_24)) (or _let_58 _let_22)) (or _let_60 _let_20)) (or _let_58 _let_18)) (or _let_60 _let_11)) (or _let_58 _let_9)) _let_140) _let_139) (or _let_43 _let_92)) (or _let_41 _let_90)) (or _let_43 _let_60)) (or _let_41 _let_58)) (or _let_43 _let_35)) (or _let_41 _let_33)) _let_160) _let_159) (or _let_43 _let_20)) (or _let_41 _let_18)) (or _let_43 _let_11)) (or _let_41 _let_9)) (or _let_43 _let_3)) (or _let_41 _let_1)) (or _let_35 _let_92)) (or _let_33 _let_90)) (or _let_35 _let_60)) (or _let_33 _let_58)) (or _let_35 _let_43)) (or _let_33 _let_41)) (or _let_35 _let_24)) (or _let_33 _let_22)) _let_154) _let_153) (or _let_35 _let_11)) (or _let_33 _let_9)) (or _let_35 _let_3)) (or _let_33 _let_1)) (or _let_24 _let_92)) (or _let_22 _let_90)) (or _let_24 _let_60)) (or _let_22 _let_58)) _let_158) _let_157) (or _let_24 _let_35)) (or _let_22 _let_33)) (or _let_24 _let_20)) (or _let_22 _let_18)) (or _let_24 _let_11)) (or _let_22 _let_9)) (or _let_24 _let_3)) (or _let_22 _let_1)) (or _let_20 _let_92)) (or _let_18 _let_90)) (or _let_20 _let_60)) (or _let_18 _let_58)) (or _let_20 _let_43)) (or _let_18 _let_41)) _let_152) _let_151) (or _let_20 _let_24)) (or _let_18 _let_22)) (or _let_20 _let_11)) (or _let_18 _let_9)) (or _let_20 _let_3)) (or _let_18 _let_1)) _let_156) _let_155) (or _let_11 _let_60)) (or _let_9 _let_58)) (or _let_11 _let_43)) (or _let_9 _let_41)) (or _let_11 _let_35)) (or _let_9 _let_33)) (or _let_11 _let_24)) (or _let_9 _let_22)) (or _let_11 _let_20)) (or _let_9 _let_18)) (or _let_11 _let_3)) (or _let_9 _let_1)) (or _let_3 _let_92)) (or _let_1 _let_90)) _let_138) _let_137) (or _let_3 _let_43)) (or _let_1 _let_41)) (or _let_3 _let_35)) (or _let_1 _let_33)) (or _let_3 _let_24)) (or _let_1 _let_22)) (or _let_3 _let_20)) (or _let_1 _let_18)) (or _let_3 _let_11)) (or _let_1 _let_9)) (or _let_88 _let_35)) (or _let_86 _let_33)) (or _let_88 _let_27)) (or _let_86 _let_25)) (or _let_88 _let_20)) (or _let_86 _let_18)) (or _let_35 _let_88)) (or _let_33 _let_86)) (or _let_35 _let_27)) (or _let_33 _let_25)) _let_154) _let_153) (or _let_27 _let_88)) (or _let_25 _let_86)) (or _let_27 _let_35)) (or _let_25 _let_33)) (or _let_27 _let_20)) (or _let_25 _let_18)) (or _let_20 _let_88)) (or _let_18 _let_86)) _let_152) _let_151) (or _let_20 _let_27)) (or _let_18 _let_25)) (or _let_84 _let_27)) (or _let_82 _let_25)) (or _let_27 _let_84)) (or _let_25 _let_82)) (or _let_76 _let_44)) (or _let_74 _let_42)) (or _let_76 _let_12)) (or _let_74 _let_10)) _let_150) _let_149) (or _let_44 _let_76)) (or _let_42 _let_74)) (or _let_44 _let_12)) (or _let_42 _let_10)) (or _let_44 _let_7)) (or _let_42 _let_5)) (or _let_12 _let_76)) (or _let_10 _let_74)) (or _let_12 _let_44)) (or _let_10 _let_42)) (or _let_12 _let_7)) (or _let_10 _let_5)) _let_148) _let_147) (or _let_7 _let_44)) (or _let_5 _let_42)) (or _let_7 _let_12)) (or _let_5 _let_10)) (or _let_68 _let_36)) (or _let_66 _let_34)) (or _let_68 _let_16)) (or _let_66 _let_14)) (or _let_68 _let_12)) (or _let_66 _let_10)) _let_146) _let_145) (or _let_36 _let_68)) (or _let_34 _let_66)) (or _let_36 _let_16)) (or _let_34 _let_14)) (or _let_36 _let_12)) (or _let_34 _let_10)) (or _let_36 _let_142)) (or _let_34 _let_141)) (or _let_16 _let_68)) (or _let_14 _let_66)) (or _let_16 _let_36)) (or _let_14 _let_34)) (or _let_16 _let_12)) (or _let_14 _let_10)) (or _let_16 _let_142)) (or _let_14 _let_141)) (or _let_12 _let_68)) (or _let_10 _let_66)) (or _let_12 _let_36)) (or _let_10 _let_34)) (or _let_12 _let_16)) (or _let_10 _let_14)) (or _let_12 _let_142)) (or _let_10 _let_141)) _let_144) _let_143) (or _let_142 _let_36)) (or _let_141 _let_34)) (or _let_142 _let_16)) (or _let_141 _let_14)) (or _let_142 _let_12)) (or _let_141 _let_10)) (or _let_60 _let_28)) (or _let_58 _let_26)) (or _let_60 _let_16)) (or _let_58 _let_14)) _let_140) _let_139) (or _let_28 _let_60)) (or _let_26 _let_58)) (or _let_28 _let_16)) (or _let_26 _let_14)) (or _let_28 _let_3)) (or _let_26 _let_1)) (or _let_16 _let_60)) (or _let_14 _let_58)) (or _let_16 _let_28)) (or _let_14 _let_26)) (or _let_16 _let_3)) (or _let_14 _let_1)) _let_138) _let_137) (or _let_3 _let_28)) (or _let_1 _let_26)) (or _let_3 _let_16)) (or _let_1 _let_14)) (or _let_44 _let_4)) (or _let_42 _let_2)) (or _let_4 _let_44)) (or _let_2 _let_42)) (or _let_36 _let_8)) (or _let_34 _let_6)) (or _let_36 _let_4)) (or _let_34 _let_2)) (or _let_8 _let_36)) (or _let_6 _let_34)) (or _let_8 _let_4)) (or _let_6 _let_2)) (or _let_4 _let_36)) (or _let_2 _let_34)) (or _let_4 _let_8)) (or _let_2 _let_6)) (or _let_28 _let_8)) (or _let_26 _let_6)) (or _let_8 _let_28)) (or _let_6 _let_26)) (or _let_135 _let_136)) (or _let_133 _let_134)) (or _let_136 _let_135)) (or _let_134 _let_133)) (or _let_131 _let_132)) (or _let_129 _let_130)) (or _let_132 _let_131)) (or _let_130 _let_129)) (or _let_127 _let_128)) (or _let_125 _let_126)) (or _let_128 _let_127)) (or _let_126 _let_125)) (or _let_123 _let_124)) (or _let_121 _let_122)) (or _let_124 _let_123)) (or _let_122 _let_121)) (or _let_119 _let_120)) (or _let_117 _let_118)) (or _let_120 _let_119)) (or _let_118 _let_117)) (or _let_115 _let_116)) (or _let_113 _let_114)) (or _let_116 _let_115)) (or _let_114 _let_113)) (or _let_112 _let_110)) (or _let_111 _let_109)) (or _let_112 _let_107)) (or _let_111 _let_105)) (or _let_112 _let_108)) (or _let_111 _let_106)) (or _let_110 _let_112)) (or _let_109 _let_111)) (or _let_110 _let_107)) (or _let_109 _let_105)) (or _let_110 _let_108)) (or _let_109 _let_106)) (or _let_107 _let_112)) (or _let_105 _let_111)) (or _let_107 _let_110)) (or _let_105 _let_109)) (or _let_107 _let_108)) (or _let_105 _let_106)) (or _let_108 _let_112)) (or _let_106 _let_111)) (or _let_108 _let_110)) (or _let_106 _let_109)) (or _let_108 _let_107)) (or _let_106 _let_105)) (or _let_104 _let_102)) (or _let_103 _let_101)) (or _let_104 _let_99)) (or _let_103 _let_97)) (or _let_104 _let_100)) (or _let_103 _let_98)) (or _let_102 _let_104)) (or _let_101 _let_103)) (or _let_102 _let_99)) (or _let_101 _let_97)) (or _let_102 _let_100)) (or _let_101 _let_98)) (or _let_99 _let_104)) (or _let_97 _let_103)) (or _let_99 _let_102)) (or _let_97 _let_101)) (or _let_99 _let_100)) (or _let_97 _let_98)) (or _let_100 _let_104)) (or _let_98 _let_103)) (or _let_100 _let_102)) (or _let_98 _let_101)) (or _let_100 _let_99)) (or _let_98 _let_97)) (or _let_96 _let_94)) (or _let_95 _let_93)) (or _let_96 _let_91)) (or _let_95 _let_89)) (or _let_96 _let_92)) (or _let_95 _let_90)) (or _let_94 _let_96)) (or _let_93 _let_95)) (or _let_94 _let_91)) (or _let_93 _let_89)) (or _let_94 _let_92)) (or _let_93 _let_90)) (or _let_91 _let_96)) (or _let_89 _let_95)) (or _let_91 _let_94)) (or _let_89 _let_93)) (or _let_91 _let_92)) (or _let_89 _let_90)) (or _let_92 _let_96)) (or _let_90 _let_95)) (or _let_92 _let_94)) (or _let_90 _let_93)) (or _let_92 _let_91)) (or _let_90 _let_89)) (or _let_87 _let_88)) (or _let_85 _let_86)) (or _let_88 _let_87)) (or _let_86 _let_85)) (or _let_83 _let_84)) (or _let_81 _let_82)) (or _let_84 _let_83)) (or _let_82 _let_81)) (or _let_80 _let_78)) (or _let_79 _let_77)) (or _let_80 _let_75)) (or _let_79 _let_73)) (or _let_80 _let_76)) (or _let_79 _let_74)) (or _let_78 _let_80)) (or _let_77 _let_79)) (or _let_78 _let_75)) (or _let_77 _let_73)) (or _let_78 _let_76)) (or _let_77 _let_74)) (or _let_75 _let_80)) (or _let_73 _let_79)) (or _let_75 _let_78)) (or _let_73 _let_77)) (or _let_75 _let_76)) (or _let_73 _let_74)) (or _let_76 _let_80)) (or _let_74 _let_79)) (or _let_76 _let_78)) (or _let_74 _let_77)) (or _let_76 _let_75)) (or _let_74 _let_73)) (or _let_72 _let_70)) (or _let_71 _let_69)) (or _let_72 _let_67)) (or _let_71 _let_65)) (or _let_72 _let_68)) (or _let_71 _let_66)) (or _let_70 _let_72)) (or _let_69 _let_71)) (or _let_70 _let_67)) (or _let_69 _let_65)) (or _let_70 _let_68)) (or _let_69 _let_66)) (or _let_67 _let_72)) (or _let_65 _let_71)) (or _let_67 _let_70)) (or _let_65 _let_69)) (or _let_67 _let_68)) (or _let_65 _let_66)) (or _let_68 _let_72)) (or _let_66 _let_71)) (or _let_68 _let_70)) (or _let_66 _let_69)) (or _let_68 _let_67)) (or _let_66 _let_65)) (or _let_64 _let_62)) (or _let_63 _let_61)) (or _let_64 _let_59)) (or _let_63 _let_57)) (or _let_64 _let_60)) (or _let_63 _let_58)) (or _let_62 _let_64)) (or _let_61 _let_63)) (or _let_62 _let_59)) (or _let_61 _let_57)) (or _let_62 _let_60)) (or _let_61 _let_58)) (or _let_59 _let_64)) (or _let_57 _let_63)) (or _let_59 _let_62)) (or _let_57 _let_61)) (or _let_59 _let_60)) (or _let_57 _let_58)) (or _let_60 _let_64)) (or _let_58 _let_63)) (or _let_60 _let_62)) (or _let_58 _let_61)) (or _let_60 _let_59)) (or _let_58 _let_57)) (or _let_55 _let_56)) (or _let_53 _let_54)) (or _let_56 _let_55)) (or _let_54 _let_53)) (or _let_51 _let_52)) (or _let_49 _let_50)) (or _let_52 _let_51)) (or _let_50 _let_49)) (or _let_48 _let_46)) (or _let_47 _let_45)) (or _let_48 _let_43)) (or _let_47 _let_41)) (or _let_48 _let_44)) (or _let_47 _let_42)) (or _let_46 _let_48)) (or _let_45 _let_47)) (or _let_46 _let_43)) (or _let_45 _let_41)) (or _let_46 _let_44)) (or _let_45 _let_42)) (or _let_43 _let_48)) (or _let_41 _let_47)) (or _let_43 _let_46)) (or _let_41 _let_45)) (or _let_43 _let_44)) (or _let_41 _let_42)) (or _let_44 _let_48)) (or _let_42 _let_47)) (or _let_44 _let_46)) (or _let_42 _let_45)) (or _let_44 _let_43)) (or _let_42 _let_41)) (or _let_40 _let_38)) (or _let_39 _let_37)) (or _let_40 _let_35)) (or _let_39 _let_33)) (or _let_40 _let_36)) (or _let_39 _let_34)) (or _let_38 _let_40)) (or _let_37 _let_39)) (or _let_38 _let_35)) (or _let_37 _let_33)) (or _let_38 _let_36)) (or _let_37 _let_34)) (or _let_35 _let_40)) (or _let_33 _let_39)) (or _let_35 _let_38)) (or _let_33 _let_37)) (or _let_35 _let_36)) (or _let_33 _let_34)) (or _let_36 _let_40)) (or _let_34 _let_39)) (or _let_36 _let_38)) (or _let_34 _let_37)) (or _let_36 _let_35)) (or _let_34 _let_33)) (or _let_32 _let_30)) (or _let_31 _let_29)) (or _let_32 _let_27)) (or _let_31 _let_25)) (or _let_32 _let_28)) (or _let_31 _let_26)) (or _let_30 _let_32)) (or _let_29 _let_31)) (or _let_30 _let_27)) (or _let_29 _let_25)) (or _let_30 _let_28)) (or _let_29 _let_26)) (or _let_27 _let_32)) (or _let_25 _let_31)) (or _let_27 _let_30)) (or _let_25 _let_29)) (or _let_27 _let_28)) (or _let_25 _let_26)) (or _let_28 _let_32)) (or _let_26 _let_31)) (or _let_28 _let_30)) (or _let_26 _let_29)) (or _let_28 _let_27)) (or _let_26 _let_25)) (or _let_23 _let_24)) (or _let_21 _let_22)) (or _let_24 _let_23)) (or _let_22 _let_21)) (or _let_19 _let_20)) (or _let_17 _let_18)) (or _let_20 _let_19)) (or _let_18 _let_17)) (or _let_15 _let_16)) (or _let_13 _let_14)) (or _let_16 _let_15)) (or _let_14 _let_13)) (or _let_11 _let_12)) (or _let_9 _let_10)) (or _let_12 _let_11)) (or _let_10 _let_9)) (or _let_7 _let_8)) (or _let_5 _let_6)) (or _let_8 _let_7)) (or _let_6 _let_5)) (or _let_3 _let_4)) (or _let_1 _let_2)) (or _let_4 _let_3)) (or _let_2 _let_1))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))
+(check-sat)
+++ /dev/null
-% EXIT: 1
-% EXPECT: Array theory solver does not yet support write-chains connecting two different constant arrays
-% should be unsat
-all1, all2 : ARRAY INT OF INT;
-aa, bb : ARRAY INT OF INT;
-a, i : INT;
-ASSERT all1 = ARRAY(INT OF INT) : 1;
-ASSERT aa = all1 WITH [i] := 0;
-ASSERT all2 = ARRAY(INT OF INT) : 2;
-ASSERT bb = all2 WITH [i] := 0;
-ASSERT aa = bb;
-CHECKSAT;
--- /dev/null
+; EXIT: 1
+; EXPECT: (error "Array theory solver does not yet support write-chains connecting two different constant arrays")
+(set-logic ALL)
+(set-option :incremental false)
+(declare-fun all1 () (Array Int Int))
+(declare-fun all2 () (Array Int Int))
+(declare-fun aa () (Array Int Int))
+(declare-fun bb () (Array Int Int))
+(declare-fun a () Int)
+(declare-fun i () Int)
+(assert (= all1 ((as const (Array Int Int)) 1)))
+(assert (= aa (store all1 i 0)))
+(assert (= all2 ((as const (Array Int Int)) 2)))
+(assert (= bb (store all2 i 0)))
+(assert (= aa bb))
+(check-sat)
+++ /dev/null
-% REQUIRES: no-competition
-% EXPECT-ERROR: (error "Parse Error: foo already declared in this datatype")
-% EXIT: 1
-
-DATATYPE single_ctor = foo(bar:REAL) | foo(bar2:REAL) END;
-DATATYPE double_ctor = foo(bar:REAL) END;
+++ /dev/null
-% REQUIRES: no-competition
-% ERROR-SCRUBBER: sed -e '/^[[:space:]]*$/d'
-% EXPECT-ERROR: (error "Parse Error: error.cvc:7.8: Symbol 'BOOL' not declared as a type
-% EXPECT-ERROR: p : BOOL;
-% EXPECT-ERROR: ^
-% EXPECT-ERROR: ")
-p : BOOL;
-% EXIT: 1
+++ /dev/null
-% COMMAND-LINE:
-% EXPECT: sat
-OPTION "produce-models";
-OPTION "finite-model-find";
-
-f : (BITVECTOR(2),BITVECTOR(2)) ->ARRAY INT OF INT;
-f0 : BITVECTOR(2) -> ARRAY INT OF INT;
-
-td,td1,td2: ARRAY INT OF INT;
-ASSERT td1 = td WITH[0]:= 1;
-ASSERT td2 = td WITH[0]:= 2;
-ASSERT f(0bin01,0bin00)=td1;
-ASSERT f(0bin10,0bin00)=td2;
-%ASSERT FORALL(i:BITVECTOR(2)) : f0(i)=f(0bin00,i) ;
-%Artificial bypass of quantifier for f0 definition
-ASSERT f0(0bin00) = f(0bin00,0bin00);
-ASSERT f0(0bin01) = f(0bin00,0bin01);
-ASSERT f0(0bin10) = f(0bin00,0bin10);
-ASSERT f0(0bin11) = f(0bin00,0bin11);
-ASSERT FORALL(i:BITVECTOR(2)) : f0(i)=td2 ;
-
-CHECKSAT;
-
--- /dev/null
+; COMMAND-LINE:
+; EXPECT: sat
+(set-logic ALL)
+(set-option :incremental false)
+(set-option :produce-models true)
+(set-option :finite-model-find true)
+(declare-fun f ((_ BitVec 2) (_ BitVec 2)) (Array Int Int))
+(declare-fun f0 ((_ BitVec 2)) (Array Int Int))
+(declare-fun td () (Array Int Int))
+(declare-fun td1 () (Array Int Int))
+(declare-fun td2 () (Array Int Int))
+(assert (= td1 (store td 0 1)))
+(assert (= td2 (store td 0 2)))
+(assert (= (f #b01 #b00) td1))
+(assert (= (f #b10 #b00) td2))
+(assert (= (f0 #b00) (f #b00 #b00)))
+(assert (= (f0 #b01) (f #b00 #b01)))
+(assert (= (f0 #b10) (f #b00 #b10)))
+(assert (= (f0 #b11) (f #b00 #b11)))
+(assert (forall ((i (_ BitVec 2))) (= (f0 i) td2)))
+(check-sat)
+++ /dev/null
-% EXPECT: not_entailed
-OPTION "finite-model-find";
-OPTION "fmf-bound-int";
-OPTION "produce-models";
-
-X, Y : SET OF INT;
-
-ASSERT FORALL(x : INT): x IS_IN X => x > 0;
-QUERY ||X|| = 5 AND Y = X | {9} => ||Y|| <= 4;
-
--- /dev/null
+; EXPECT: sat
+(set-logic ALL)
+(set-option :incremental false)
+(set-option :finite-model-find true)
+(set-option :fmf-bound-int true)
+(set-option :produce-models true)
+(declare-fun X () (Set Int))
+(declare-fun Y () (Set Int))
+(assert (forall ((x Int)) (=> (member x X) (> x 0))))
+(check-sat-assuming ( (=> (and (= (card X) 5) (= Y (union X (singleton 9)))) (<= (card Y) 4)) ))
+++ /dev/null
-% COMMAND-LINE:
-% EXPECT: sat
-OPTION "produce-models";
-OPTION "fmf-bound";
-
-DATATYPE MOPERATION = R | W | M END;
-DATATYPE ORDER = I | SC | U END;
-DATATYPE ATOM = AT | NA END;
-
-DATATYPE BINT = I0 | I1 | I2 | I3 END;
-
-DATATYPE TEAR_TYPE = TEAR_TRUE | TEAR_FALSE END;
-SDBLOCK_TYPE: TYPE;
-VALUE_TYPE: TYPE;
-ADDRESS_TYPE: TYPE = SET OF BINT;
-
-MEM_OP_TYPE : TYPE = [# O:MOPERATION, T:TEAR_TYPE, R:ORDER, A:ATOM, B:SDBLOCK_TYPE, M:ADDRESS_TYPE, V:VALUE_TYPE #];
-EV_REL: TYPE = SET OF [MEM_OP_TYPE, MEM_OP_TYPE];
-THREAD_TYPE : TYPE = [# E:SET OF MEM_OP_TYPE, PO:EV_REL #];
-
-m1 : SDBLOCK_TYPE;
-
-ow1 : MEM_OP_TYPE;
-or2 : MEM_OP_TYPE;
-
-v1 : VALUE_TYPE;
-v2 : VALUE_TYPE;
-
-ASSERT (ow1.O = W) AND
- (ow1.T = TEAR_FALSE) AND
- (ow1.R = U) AND
- (ow1.A = NA) AND
- (ow1.B = m1) AND
- (ow1.M = {I0}) AND
- (ow1.V = v1);
-
-ASSERT (or2.O = R) AND
- (or2.T = TEAR_FALSE) AND
- (or2.R = U) AND
- (or2.A = NA) AND
- (or2.B = m1) AND
- (or2.M = {I0}) AND
- (or2.V = v2);
-
-ev_set : SET OF MEM_OP_TYPE;
-
-ASSERT ev_set = {ow1, or2};
-
-RF : EV_REL;
-
-ASSERT FORALL (r,w: MEM_OP_TYPE) : (((r IS_IN ev_set) AND (w IS_IN ev_set)) => (((r,w) IS_IN RF) <=> ((r.O = R) AND (w.O = W))));
-
-CHECKSAT;
--- /dev/null
+; COMMAND-LINE:
+; EXPECT: sat
+(set-logic ALL)
+(set-option :incremental false)
+(set-option :produce-models true)
+(set-option :fmf-bound true)
+(declare-datatypes ((MOPERATION 0)) (((R) (W) (M))))
+(declare-datatypes ((ORDER 0)) (((I) (SC) (U))))
+(declare-datatypes ((ATOM 0)) (((AT) (NA))))
+(declare-datatypes ((BINT 0)) (((I0) (I1) (I2) (I3))))
+(declare-datatypes ((TEAR_TYPE 0)) (((TEAR_TRUE) (TEAR_FALSE))))
+(declare-sort SDBLOCK_TYPE 0)
+(declare-sort VALUE_TYPE 0)
+
+(declare-datatypes ((|__cvc5_record_O_MOPERATION_T_TEAR_TYPE_R_ORDER_A_ATOM_B_SDBLOCK_TYPE_M_(Set BINT)_V_VALUE_TYPE| 0)) (((|__cvc5_record_O_MOPERATION_T_TEAR_TYPE_R_ORDER_A_ATOM_B_SDBLOCK_TYPE_M_(Set BINT)_V_VALUE_TYPE_ctor| (O MOPERATION) (T TEAR_TYPE) (RR ORDER) (A ATOM) (B SDBLOCK_TYPE) (M (Set BINT)) (V VALUE_TYPE)))))
+
+
+(declare-datatypes ((|__cvc5_record_E_(Set ___cvc5_record_O_MOPERATION_T_TEAR_TYPE_R_ORDER_A_ATOM_B_SDBLOCK_TYPE_M_(Set BINT)_V_VALUE_TYPE_)_PO_(Set (Tuple ___cvc5_record_O_MOPERATION_T_TEAR_TYPE_R_ORDER_A_ATOM_B_SDBLOCK_TYPE_M_(Set BINT)_V_VALUE_TYPE_ ___cvc5_record_O_MOPERATION_T_TEAR_TYPE_R_ORDER_A_ATOM_B_SDBLOCK_TYPE_M_(Set BINT)_V_VALUE_TYPE_))| 0)) (((|__cvc5_record_E_(Set ___cvc5_record_O_MOPERATION_T_TEAR_TYPE_R_ORDER_A_ATOM_B_SDBLOCK_TYPE_M_(Set BINT)_V_VALUE_TYPE_)_PO_(Set (Tuple ___cvc5_record_O_MOPERATION_T_TEAR_TYPE_R_ORDER_A_ATOM_B_SDBLOCK_TYPE_M_(Set BINT)_V_VALUE_TYPE_ ___cvc5_record_O_MOPERATION_T_TEAR_TYPE_R_ORDER_A_ATOM_B_SDBLOCK_TYPE_M_(Set BINT)_V_VALUE_TYPE_))_ctor| (E (Set |__cvc5_record_O_MOPERATION_T_TEAR_TYPE_R_ORDER_A_ATOM_B_SDBLOCK_TYPE_M_(Set BINT)_V_VALUE_TYPE|)) (PO (Set (Tuple |__cvc5_record_O_MOPERATION_T_TEAR_TYPE_R_ORDER_A_ATOM_B_SDBLOCK_TYPE_M_(Set BINT)_V_VALUE_TYPE| |__cvc5_record_O_MOPERATION_T_TEAR_TYPE_R_ORDER_A_ATOM_B_SDBLOCK_TYPE_M_(Set BINT)_V_VALUE_TYPE|)))))))
+
+(declare-fun m1 () SDBLOCK_TYPE)
+(declare-fun ow1 () |__cvc5_record_O_MOPERATION_T_TEAR_TYPE_R_ORDER_A_ATOM_B_SDBLOCK_TYPE_M_(Set BINT)_V_VALUE_TYPE|)
+(declare-fun or2 () |__cvc5_record_O_MOPERATION_T_TEAR_TYPE_R_ORDER_A_ATOM_B_SDBLOCK_TYPE_M_(Set BINT)_V_VALUE_TYPE|)
+(declare-fun v1 () VALUE_TYPE)
+(declare-fun v2 () VALUE_TYPE)
+(assert (and (and (and (and (and (and (= (O ow1) W) (= (T ow1) TEAR_FALSE)) (= (RR ow1) U)) (= (A ow1) NA)) (= (B ow1) m1)) (= (M ow1) (singleton I0))) (= (V ow1) v1)))
+(assert (and (and (and (and (and (and (= (O or2) R) (= (T or2) TEAR_FALSE)) (= (RR or2) U)) (= (A or2) NA)) (= (B or2) m1)) (= (M or2) (singleton I0))) (= (V or2) v2)))
+(declare-fun ev_set () (Set |__cvc5_record_O_MOPERATION_T_TEAR_TYPE_R_ORDER_A_ATOM_B_SDBLOCK_TYPE_M_(Set BINT)_V_VALUE_TYPE|))
+(assert (= ev_set (union (singleton ow1) (singleton or2))))
+(declare-fun RF () (Set (Tuple |__cvc5_record_O_MOPERATION_T_TEAR_TYPE_R_ORDER_A_ATOM_B_SDBLOCK_TYPE_M_(Set BINT)_V_VALUE_TYPE| |__cvc5_record_O_MOPERATION_T_TEAR_TYPE_R_ORDER_A_ATOM_B_SDBLOCK_TYPE_M_(Set BINT)_V_VALUE_TYPE|)))
+(assert (forall ((r |__cvc5_record_O_MOPERATION_T_TEAR_TYPE_R_ORDER_A_ATOM_B_SDBLOCK_TYPE_M_(Set BINT)_V_VALUE_TYPE|) (w |__cvc5_record_O_MOPERATION_T_TEAR_TYPE_R_ORDER_A_ATOM_B_SDBLOCK_TYPE_M_(Set BINT)_V_VALUE_TYPE|)) (=> (and (member r ev_set) (member w ev_set)) (= (member (mkTuple r w) RF) (and (= (O r) R) (= (O w) W))))))
+(check-sat)
+++ /dev/null
-% COMMAND-LINE: --no-check-proofs
-% EXPECT: entailed
-x_1 : BOOLEAN;
-x_2 : BOOLEAN;
-x_3 : BOOLEAN;
-x_4 : BOOLEAN;
-x_5 : BOOLEAN;
-x_6 : BOOLEAN;
-x_7 : BOOLEAN;
-x_8 : BOOLEAN;
-x_9 : BOOLEAN;
-x_10 : BOOLEAN;
-x_11 : BOOLEAN;
-x_12 : BOOLEAN;
-x_13 : BOOLEAN;
-x_14 : BOOLEAN;
-x_15 : BOOLEAN;
-x_16 : BOOLEAN;
-x_17 : BOOLEAN;
-x_18 : BOOLEAN;
-x_19 : BOOLEAN;
-x_20 : BOOLEAN;
-x_21 : BOOLEAN;
-x_22 : BOOLEAN;
-x_23 : BOOLEAN;
-x_24 : BOOLEAN;
-x_25 : BOOLEAN;
-x_26 : BOOLEAN;
-x_27 : BOOLEAN;
-x_28 : BOOLEAN;
-x_29 : BOOLEAN;
-x_30 : BOOLEAN;
-x_31 : BOOLEAN;
-x_32 : BOOLEAN;
-x_33 : BOOLEAN;
-x_34 : BOOLEAN;
-x_35 : BOOLEAN;
-x_36 : BOOLEAN;
-x_37 : BOOLEAN;
-x_38 : BOOLEAN;
-x_39 : BOOLEAN;
-x_40 : BOOLEAN;
-x_41 : BOOLEAN;
-x_42 : BOOLEAN;
-ASSERT NOT x_1 OR NOT x_7;
-ASSERT NOT x_1 OR NOT x_13;
-ASSERT NOT x_1 OR NOT x_19;
-ASSERT NOT x_1 OR NOT x_25;
-ASSERT NOT x_1 OR NOT x_31;
-ASSERT NOT x_1 OR NOT x_37;
-ASSERT NOT x_7 OR NOT x_13;
-ASSERT NOT x_7 OR NOT x_19;
-ASSERT NOT x_7 OR NOT x_25;
-ASSERT NOT x_7 OR NOT x_31;
-ASSERT NOT x_7 OR NOT x_37;
-ASSERT NOT x_13 OR NOT x_19;
-ASSERT NOT x_13 OR NOT x_25;
-ASSERT NOT x_13 OR NOT x_31;
-ASSERT NOT x_13 OR NOT x_37;
-ASSERT NOT x_19 OR NOT x_25;
-ASSERT NOT x_19 OR NOT x_31;
-ASSERT NOT x_19 OR NOT x_37;
-ASSERT NOT x_25 OR NOT x_31;
-ASSERT NOT x_25 OR NOT x_37;
-ASSERT NOT x_31 OR NOT x_37;
-ASSERT NOT x_2 OR NOT x_8;
-ASSERT NOT x_2 OR NOT x_14;
-ASSERT NOT x_2 OR NOT x_20;
-ASSERT NOT x_2 OR NOT x_26;
-ASSERT NOT x_2 OR NOT x_32;
-ASSERT NOT x_2 OR NOT x_38;
-ASSERT NOT x_8 OR NOT x_14;
-ASSERT NOT x_8 OR NOT x_20;
-ASSERT NOT x_8 OR NOT x_26;
-ASSERT NOT x_8 OR NOT x_32;
-ASSERT NOT x_8 OR NOT x_38;
-ASSERT NOT x_14 OR NOT x_20;
-ASSERT NOT x_14 OR NOT x_26;
-ASSERT NOT x_14 OR NOT x_32;
-ASSERT NOT x_14 OR NOT x_38;
-ASSERT NOT x_20 OR NOT x_26;
-ASSERT NOT x_20 OR NOT x_32;
-ASSERT NOT x_20 OR NOT x_38;
-ASSERT NOT x_26 OR NOT x_32;
-ASSERT NOT x_26 OR NOT x_38;
-ASSERT NOT x_32 OR NOT x_38;
-ASSERT NOT x_3 OR NOT x_9;
-ASSERT NOT x_3 OR NOT x_15;
-ASSERT NOT x_3 OR NOT x_21;
-ASSERT NOT x_3 OR NOT x_27;
-ASSERT NOT x_3 OR NOT x_33;
-ASSERT NOT x_3 OR NOT x_39;
-ASSERT NOT x_9 OR NOT x_15;
-ASSERT NOT x_9 OR NOT x_21;
-ASSERT NOT x_9 OR NOT x_27;
-ASSERT NOT x_9 OR NOT x_33;
-ASSERT NOT x_9 OR NOT x_39;
-ASSERT NOT x_15 OR NOT x_21;
-ASSERT NOT x_15 OR NOT x_27;
-ASSERT NOT x_15 OR NOT x_33;
-ASSERT NOT x_15 OR NOT x_39;
-ASSERT NOT x_21 OR NOT x_27;
-ASSERT NOT x_21 OR NOT x_33;
-ASSERT NOT x_21 OR NOT x_39;
-ASSERT NOT x_27 OR NOT x_33;
-ASSERT NOT x_27 OR NOT x_39;
-ASSERT NOT x_33 OR NOT x_39;
-ASSERT NOT x_4 OR NOT x_10;
-ASSERT NOT x_4 OR NOT x_16;
-ASSERT NOT x_4 OR NOT x_22;
-ASSERT NOT x_4 OR NOT x_28;
-ASSERT NOT x_4 OR NOT x_34;
-ASSERT NOT x_4 OR NOT x_40;
-ASSERT NOT x_10 OR NOT x_16;
-ASSERT NOT x_10 OR NOT x_22;
-ASSERT NOT x_10 OR NOT x_28;
-ASSERT NOT x_10 OR NOT x_34;
-ASSERT NOT x_10 OR NOT x_40;
-ASSERT NOT x_16 OR NOT x_22;
-ASSERT NOT x_16 OR NOT x_28;
-ASSERT NOT x_16 OR NOT x_34;
-ASSERT NOT x_16 OR NOT x_40;
-ASSERT NOT x_22 OR NOT x_28;
-ASSERT NOT x_22 OR NOT x_34;
-ASSERT NOT x_22 OR NOT x_40;
-ASSERT NOT x_28 OR NOT x_34;
-ASSERT NOT x_28 OR NOT x_40;
-ASSERT NOT x_34 OR NOT x_40;
-ASSERT NOT x_5 OR NOT x_11;
-ASSERT NOT x_5 OR NOT x_17;
-ASSERT NOT x_5 OR NOT x_23;
-ASSERT NOT x_5 OR NOT x_29;
-ASSERT NOT x_5 OR NOT x_35;
-ASSERT NOT x_5 OR NOT x_41;
-ASSERT NOT x_11 OR NOT x_17;
-ASSERT NOT x_11 OR NOT x_23;
-ASSERT NOT x_11 OR NOT x_29;
-ASSERT NOT x_11 OR NOT x_35;
-ASSERT NOT x_11 OR NOT x_41;
-ASSERT NOT x_17 OR NOT x_23;
-ASSERT NOT x_17 OR NOT x_29;
-ASSERT NOT x_17 OR NOT x_35;
-ASSERT NOT x_17 OR NOT x_41;
-ASSERT NOT x_23 OR NOT x_29;
-ASSERT NOT x_23 OR NOT x_35;
-ASSERT NOT x_23 OR NOT x_41;
-ASSERT NOT x_29 OR NOT x_35;
-ASSERT NOT x_29 OR NOT x_41;
-ASSERT NOT x_35 OR NOT x_41;
-ASSERT NOT x_6 OR NOT x_12;
-ASSERT NOT x_6 OR NOT x_18;
-ASSERT NOT x_6 OR NOT x_24;
-ASSERT NOT x_6 OR NOT x_30;
-ASSERT NOT x_6 OR NOT x_36;
-ASSERT NOT x_6 OR NOT x_42;
-ASSERT NOT x_12 OR NOT x_18;
-ASSERT NOT x_12 OR NOT x_24;
-ASSERT NOT x_12 OR NOT x_30;
-ASSERT NOT x_12 OR NOT x_36;
-ASSERT NOT x_12 OR NOT x_42;
-ASSERT NOT x_18 OR NOT x_24;
-ASSERT NOT x_18 OR NOT x_30;
-ASSERT NOT x_18 OR NOT x_36;
-ASSERT NOT x_18 OR NOT x_42;
-ASSERT NOT x_24 OR NOT x_30;
-ASSERT NOT x_24 OR NOT x_36;
-ASSERT NOT x_24 OR NOT x_42;
-ASSERT NOT x_30 OR NOT x_36;
-ASSERT NOT x_30 OR NOT x_42;
-ASSERT NOT x_36 OR NOT x_42;
-ASSERT x_6 OR x_5 OR x_4 OR x_3 OR x_2 OR x_1;
-ASSERT x_12 OR x_11 OR x_10 OR x_9 OR x_8 OR x_7;
-ASSERT x_18 OR x_17 OR x_16 OR x_15 OR x_14 OR x_13;
-ASSERT x_24 OR x_23 OR x_22 OR x_21 OR x_20 OR x_19;
-ASSERT x_30 OR x_29 OR x_28 OR x_27 OR x_26 OR x_25;
-ASSERT x_36 OR x_35 OR x_34 OR x_33 OR x_32 OR x_31;
-ASSERT x_42 OR x_41 OR x_40 OR x_39 OR x_38 OR x_37;
-
-
-QUERY FALSE;
--- /dev/null
+; COMMAND-LINE: --no-check-proofs
+; EXPECT: unsat
+(set-logic ALL)
+(set-option :incremental false)
+(declare-fun x_1 () Bool)
+(declare-fun x_2 () Bool)
+(declare-fun x_3 () Bool)
+(declare-fun x_4 () Bool)
+(declare-fun x_5 () Bool)
+(declare-fun x_6 () Bool)
+(declare-fun x_7 () Bool)
+(declare-fun x_8 () Bool)
+(declare-fun x_9 () Bool)
+(declare-fun x_10 () Bool)
+(declare-fun x_11 () Bool)
+(declare-fun x_12 () Bool)
+(declare-fun x_13 () Bool)
+(declare-fun x_14 () Bool)
+(declare-fun x_15 () Bool)
+(declare-fun x_16 () Bool)
+(declare-fun x_17 () Bool)
+(declare-fun x_18 () Bool)
+(declare-fun x_19 () Bool)
+(declare-fun x_20 () Bool)
+(declare-fun x_21 () Bool)
+(declare-fun x_22 () Bool)
+(declare-fun x_23 () Bool)
+(declare-fun x_24 () Bool)
+(declare-fun x_25 () Bool)
+(declare-fun x_26 () Bool)
+(declare-fun x_27 () Bool)
+(declare-fun x_28 () Bool)
+(declare-fun x_29 () Bool)
+(declare-fun x_30 () Bool)
+(declare-fun x_31 () Bool)
+(declare-fun x_32 () Bool)
+(declare-fun x_33 () Bool)
+(declare-fun x_34 () Bool)
+(declare-fun x_35 () Bool)
+(declare-fun x_36 () Bool)
+(declare-fun x_37 () Bool)
+(declare-fun x_38 () Bool)
+(declare-fun x_39 () Bool)
+(declare-fun x_40 () Bool)
+(declare-fun x_41 () Bool)
+(declare-fun x_42 () Bool)
+(assert (or (not x_1) (not x_7)))
+(assert (or (not x_1) (not x_13)))
+(assert (or (not x_1) (not x_19)))
+(assert (or (not x_1) (not x_25)))
+(assert (or (not x_1) (not x_31)))
+(assert (or (not x_1) (not x_37)))
+(assert (or (not x_7) (not x_13)))
+(assert (or (not x_7) (not x_19)))
+(assert (or (not x_7) (not x_25)))
+(assert (or (not x_7) (not x_31)))
+(assert (or (not x_7) (not x_37)))
+(assert (or (not x_13) (not x_19)))
+(assert (or (not x_13) (not x_25)))
+(assert (or (not x_13) (not x_31)))
+(assert (or (not x_13) (not x_37)))
+(assert (or (not x_19) (not x_25)))
+(assert (or (not x_19) (not x_31)))
+(assert (or (not x_19) (not x_37)))
+(assert (or (not x_25) (not x_31)))
+(assert (or (not x_25) (not x_37)))
+(assert (or (not x_31) (not x_37)))
+(assert (or (not x_2) (not x_8)))
+(assert (or (not x_2) (not x_14)))
+(assert (or (not x_2) (not x_20)))
+(assert (or (not x_2) (not x_26)))
+(assert (or (not x_2) (not x_32)))
+(assert (or (not x_2) (not x_38)))
+(assert (or (not x_8) (not x_14)))
+(assert (or (not x_8) (not x_20)))
+(assert (or (not x_8) (not x_26)))
+(assert (or (not x_8) (not x_32)))
+(assert (or (not x_8) (not x_38)))
+(assert (or (not x_14) (not x_20)))
+(assert (or (not x_14) (not x_26)))
+(assert (or (not x_14) (not x_32)))
+(assert (or (not x_14) (not x_38)))
+(assert (or (not x_20) (not x_26)))
+(assert (or (not x_20) (not x_32)))
+(assert (or (not x_20) (not x_38)))
+(assert (or (not x_26) (not x_32)))
+(assert (or (not x_26) (not x_38)))
+(assert (or (not x_32) (not x_38)))
+(assert (or (not x_3) (not x_9)))
+(assert (or (not x_3) (not x_15)))
+(assert (or (not x_3) (not x_21)))
+(assert (or (not x_3) (not x_27)))
+(assert (or (not x_3) (not x_33)))
+(assert (or (not x_3) (not x_39)))
+(assert (or (not x_9) (not x_15)))
+(assert (or (not x_9) (not x_21)))
+(assert (or (not x_9) (not x_27)))
+(assert (or (not x_9) (not x_33)))
+(assert (or (not x_9) (not x_39)))
+(assert (or (not x_15) (not x_21)))
+(assert (or (not x_15) (not x_27)))
+(assert (or (not x_15) (not x_33)))
+(assert (or (not x_15) (not x_39)))
+(assert (or (not x_21) (not x_27)))
+(assert (or (not x_21) (not x_33)))
+(assert (or (not x_21) (not x_39)))
+(assert (or (not x_27) (not x_33)))
+(assert (or (not x_27) (not x_39)))
+(assert (or (not x_33) (not x_39)))
+(assert (or (not x_4) (not x_10)))
+(assert (or (not x_4) (not x_16)))
+(assert (or (not x_4) (not x_22)))
+(assert (or (not x_4) (not x_28)))
+(assert (or (not x_4) (not x_34)))
+(assert (or (not x_4) (not x_40)))
+(assert (or (not x_10) (not x_16)))
+(assert (or (not x_10) (not x_22)))
+(assert (or (not x_10) (not x_28)))
+(assert (or (not x_10) (not x_34)))
+(assert (or (not x_10) (not x_40)))
+(assert (or (not x_16) (not x_22)))
+(assert (or (not x_16) (not x_28)))
+(assert (or (not x_16) (not x_34)))
+(assert (or (not x_16) (not x_40)))
+(assert (or (not x_22) (not x_28)))
+(assert (or (not x_22) (not x_34)))
+(assert (or (not x_22) (not x_40)))
+(assert (or (not x_28) (not x_34)))
+(assert (or (not x_28) (not x_40)))
+(assert (or (not x_34) (not x_40)))
+(assert (or (not x_5) (not x_11)))
+(assert (or (not x_5) (not x_17)))
+(assert (or (not x_5) (not x_23)))
+(assert (or (not x_5) (not x_29)))
+(assert (or (not x_5) (not x_35)))
+(assert (or (not x_5) (not x_41)))
+(assert (or (not x_11) (not x_17)))
+(assert (or (not x_11) (not x_23)))
+(assert (or (not x_11) (not x_29)))
+(assert (or (not x_11) (not x_35)))
+(assert (or (not x_11) (not x_41)))
+(assert (or (not x_17) (not x_23)))
+(assert (or (not x_17) (not x_29)))
+(assert (or (not x_17) (not x_35)))
+(assert (or (not x_17) (not x_41)))
+(assert (or (not x_23) (not x_29)))
+(assert (or (not x_23) (not x_35)))
+(assert (or (not x_23) (not x_41)))
+(assert (or (not x_29) (not x_35)))
+(assert (or (not x_29) (not x_41)))
+(assert (or (not x_35) (not x_41)))
+(assert (or (not x_6) (not x_12)))
+(assert (or (not x_6) (not x_18)))
+(assert (or (not x_6) (not x_24)))
+(assert (or (not x_6) (not x_30)))
+(assert (or (not x_6) (not x_36)))
+(assert (or (not x_6) (not x_42)))
+(assert (or (not x_12) (not x_18)))
+(assert (or (not x_12) (not x_24)))
+(assert (or (not x_12) (not x_30)))
+(assert (or (not x_12) (not x_36)))
+(assert (or (not x_12) (not x_42)))
+(assert (or (not x_18) (not x_24)))
+(assert (or (not x_18) (not x_30)))
+(assert (or (not x_18) (not x_36)))
+(assert (or (not x_18) (not x_42)))
+(assert (or (not x_24) (not x_30)))
+(assert (or (not x_24) (not x_36)))
+(assert (or (not x_24) (not x_42)))
+(assert (or (not x_30) (not x_36)))
+(assert (or (not x_30) (not x_42)))
+(assert (or (not x_36) (not x_42)))
+(assert (or (or (or (or (or x_6 x_5) x_4) x_3) x_2) x_1))
+(assert (or (or (or (or (or x_12 x_11) x_10) x_9) x_8) x_7))
+(assert (or (or (or (or (or x_18 x_17) x_16) x_15) x_14) x_13))
+(assert (or (or (or (or (or x_24 x_23) x_22) x_21) x_20) x_19))
+(assert (or (or (or (or (or x_30 x_29) x_28) x_27) x_26) x_25))
+(assert (or (or (or (or (or x_36 x_35) x_34) x_33) x_32) x_31))
+(assert (or (or (or (or (or x_42 x_41) x_40) x_39) x_38) x_37))
+(check-sat)
+++ /dev/null
-% Test for presentiation language parsing, some edge cases with cascading
-% store terms. Intended to put this part of the parser "through the ringer,"
-% hence the name.
-
-% COMMAND-LINE: --incremental
-% EXPECT: sat
-% EXPECT: sat
-% EXPECT: sat
-% EXPECT: sat
-% EXPECT: sat
-% EXPECT: sat
-% EXPECT: sat
-% EXPECT: sat
-% EXPECT: unsat
-% EXPECT: unsat
-% EXPECT: sat
-
-PUSH;
-
-x, y : ARRAY INT OF ARRAY INT OF ARRAY INT OF INT;
-
-% multidimensional arrays
-ASSERT x[0][0][0] = 0; %% select
-ASSERT y = x WITH [0][0][1] := 1; %% partial store
-
-CHECKSAT;
-
-% mixed stores: records of arrays of tuples, oh my
-z : [# x:ARRAY INT OF [# x:INT #], y:[ARRAY INT OF INT, ARRAY INT OF INT] #];
-
-arr1 : ARRAY INT OF [# x:INT #];
-arr2 : [ ARRAY INT OF INT, ARRAY INT OF INT ];
-
-ASSERT arr1[0].x = 0;
-ASSERT arr2.0[0] = 1;
-ASSERT arr2.1[0] = 5;
-
-ASSERT z.y.1[1] /= 1;
-ASSERT (# x:=arr1, y:=arr2 #) = z;
-
-CHECKSAT;
-
-ASSERT z.x[0].x /= z.y.0[5];
-
-CHECKSAT;
-
-ASSERT z.y.0[1] = z.x[5].x;
-
-CHECKSAT;
-
-ASSERT z.y.0[5] = z.x[-2].x;
-
-CHECKSAT;
-
-POP;
-
-a : ARRAY INT OF ARRAY INT OF INT;
-b : ARRAY INT OF INT;
-
-% ambiguity in presentation language, comma needs to bind to innermost WITH
-% causes type error if the [2]:=2 at the end is attached to the wrong WITH
-ASSERT a = a WITH [0]:=b WITH [1]:=1,[2]:=2;
-
-CHECKSAT;
-
-RESET;
-
-% more mixed stores, this time with constant arrays
-z : [# x:ARRAY INT OF [# x:INT #], y:[ARRAY INT OF INT, ARRAY INT OF INT] #];
-
-ASSERT z.y.1[1] /= 1;
-ASSERT (# x:=ARRAY(INT OF [# x:INT #]):(# x:=0 #), y:=(ARRAY(INT OF INT):1, ARRAY(INT OF INT):5) #) = z;
-
-CHECKSAT;
-
-ASSERT z.x[0].x /= z.y.0[5];
-
-CHECKSAT;
-
-ASSERT z.y.0[1] = z.x[5].x;
-
-CHECKSAT;
-
-ASSERT z.y.0[5] = z.x[-2].x;
-
-CHECKSAT;
-
-RESET;
-
-a : ARRAY INT OF INT;
-
-ASSERT a = a WITH [0]:=0, [1]:=1;
-
-CHECKSAT;
+++ /dev/null
-% EXPECT: unsat
-REC-FUN five : INT = 5;
-ASSERT five = 6;
-CHECKSAT;
--- /dev/null
+; EXPECT: unsat
+(set-logic ALL)
+(set-option :incremental false)
+(define-fun-rec five () Int 5)
+(assert (= five 6))
+(check-sat)
+++ /dev/null
-% EXPECT: unsat
-OPTION "fmf-fun";
-REC-FUN f : INT -> INT = LAMBDA (x : INT) : 1;
-x : INT;
-ASSERT NOT (f(7) = x);
-ASSERT f(8) = x;
-CHECKSAT;
--- /dev/null
+; EXPECT: unsat
+(set-logic ALL)
+(set-option :incremental false)
+(set-option :fmf-fun true)
+(define-fun-rec f ((x Int)) Int 1)
+(declare-fun x () Int)
+(assert (not (= (f 7) x)))
+(assert (= (f 8) x))
+(check-sat)
+++ /dev/null
-% EXPECT: unsat
-OPTION "fmf-fun";
-REC-FUN iseven : (INT) -> INT, isodd : (INT) -> INT, fact : INT -> INT =
-LAMBDA (x : INT): IF (x = 0) THEN 1 ELSE (IF (isodd(x - 1) = 0) THEN 1 ELSE 0 ENDIF) ENDIF,
-LAMBDA (y : INT): IF (y = 0) THEN 0 ELSE (IF (iseven(y - 1) = 0) THEN 1 ELSE 0 ENDIF) ENDIF,
-LAMBDA (x : INT): IF (x = 0) THEN 1 ELSE x * fact(x - 1) ENDIF;
-a,b,x,y,z : INT;
-ASSERT 1 = isodd(4);
-ASSERT 0 = iseven(4);
-ASSERT 0 = isodd(3);
-ASSERT 1 = iseven(3);
-ASSERT NOT (24 = fact(4));
-CHECKSAT;
-
--- /dev/null
+; EXPECT: unsat
+(set-logic ALL)
+(set-option :incremental false)
+(set-option :fmf-fun true)
+(define-funs-rec ((iseven ((x Int)) Int) (isodd ((y Int)) Int) (fact ((x Int)) Int)) ((ite (= x 0) 1 (ite (= (isodd (- x 1)) 0) 1 0)) (ite (= y 0) 0 (ite (= (iseven (- y 1)) 0) 1 0)) (ite (= x 0) 1 (* x (fact (- x 1))))))
+(declare-fun a () Int)
+(declare-fun b () Int)
+(declare-fun x () Int)
+(declare-fun y () Int)
+(declare-fun z () Int)
+(assert (= 1 (isodd 4)))
+(assert (= 0 (iseven 4)))
+(assert (= 0 (isodd 3)))
+(assert (= 1 (iseven 3)))
+(assert (not (= 24 (fact 4))))
+(check-sat)
+++ /dev/null
-% EXPECT: unsat
-OPTION "fmf-fun";
-x : INT;
-REC-FUN fact : (INT) -> INT = LAMBDA (x : INT) : IF (x > 0) THEN x * fact (x - 1) ELSE 1 ENDIF;
-ASSERT fact(0) = 2;
-ASSERT x = fact(3);
-CHECKSAT;
--- /dev/null
+; EXPECT: unsat
+(set-logic ALL)
+(set-option :incremental false)
+(set-option :fmf-fun true)
+(declare-fun x () Int)
+(define-fun-rec fact ((x Int)) Int (ite (> x 0) (* x (fact (- x 1))) 1))
+(assert (= (fact 0) 2))
+(assert (= x (fact 3)))
+(check-sat)
+++ /dev/null
-% EXPECT: entailed
-OPTION "finite-model-find";
-OPTION "fmf-bound-int";
-
-X : SET OF INT;
-
-ASSERT CARD(X) = 3;
-ASSERT FORALL(z: INT): z IS_IN X => (z > 0 AND z < 2); % 1
-
-QUERY FORALL(z: INT): z IS_IN X => z > 0;
--- /dev/null
+; EXPECT: unsat
+(set-logic ALL)
+(set-option :incremental false)
+(set-option :finite-model-find true)
+(set-option :fmf-bound-int true)
+(declare-fun X () (Set Int))
+(assert (= (card X) 3))
+(assert (forall ((z Int)) (=> (member z X) (and (> z 0) (< z 2)))))
+(check-sat-assuming ( (forall ((z Int)) (=> (member z X) (> z 0))) ))
+++ /dev/null
-% EXPECT: unsat
-OPTION "logic" "ALL";
-Atom : TYPE;
-AtomTup : TYPE = [Atom];
-AtomBinTup : TYPE = [Atom, Atom];
-AtomTerTup : TYPE = [Atom, Atom, Atom];
-Target: SET OF AtomTup;
-
-Name: SET OF AtomTup;
-Addr: SET OF AtomTup;
-Book: SET OF AtomTup;
-names: SET OF AtomBinTup;
-addr: SET OF AtomTerTup;
-
-b1: Atom;
-b1_tup : AtomTup;
-ASSERT b1_tup = TUPLE(b1);
-ASSERT b1_tup IS_IN Book;
-
-b2: Atom;
-b2_tup : AtomTup;
-ASSERT b2_tup = TUPLE(b2);
-ASSERT b2_tup IS_IN Book;
-
-b3: Atom;
-b3_tup : AtomTup;
-ASSERT b3_tup = TUPLE(b3);
-ASSERT b3_tup IS_IN Book;
-
-m: Atom;
-m_tup : AtomTup;
-ASSERT m_tup = TUPLE(m);
-ASSERT m_tup IS_IN Name;
-
-t: Atom;
-t_tup : AtomTup;
-ASSERT t_tup = TUPLE(t);
-ASSERT t_tup IS_IN Target;
-
-ASSERT ({m_tup} JOIN ({b1_tup} JOIN addr)) = {}::SET OF AtomTup;
-ASSERT ({b2_tup} JOIN addr) = ({b1_tup} JOIN addr) | {(m,t)};
-ASSERT ({b3_tup} JOIN addr) = ({b2_tup} JOIN addr) - {(m,t)};
-ASSERT NOT (({b1_tup} JOIN addr) = ({b3_tup} JOIN addr));
-
-CHECKSAT;
\ No newline at end of file
--- /dev/null
+; EXPECT: unsat
+(set-option :incremental false)
+(set-logic ALL)
+(declare-sort Atom 0)
+
+
+
+(declare-fun Target () (Set (Tuple Atom)))
+(declare-fun Name () (Set (Tuple Atom)))
+(declare-fun Addr () (Set (Tuple Atom)))
+(declare-fun Book () (Set (Tuple Atom)))
+(declare-fun names () (Set (Tuple Atom Atom)))
+(declare-fun addr () (Set (Tuple Atom Atom Atom)))
+(declare-fun b1 () Atom)
+(declare-fun b1_tup () (Tuple Atom))
+(assert (= b1_tup (mkTuple b1)))
+(assert (member b1_tup Book))
+(declare-fun b2 () Atom)
+(declare-fun b2_tup () (Tuple Atom))
+(assert (= b2_tup (mkTuple b2)))
+(assert (member b2_tup Book))
+(declare-fun b3 () Atom)
+(declare-fun b3_tup () (Tuple Atom))
+(assert (= b3_tup (mkTuple b3)))
+(assert (member b3_tup Book))
+(declare-fun m () Atom)
+(declare-fun m_tup () (Tuple Atom))
+(assert (= m_tup (mkTuple m)))
+(assert (member m_tup Name))
+(declare-fun t () Atom)
+(declare-fun t_tup () (Tuple Atom))
+(assert (= t_tup (mkTuple t)))
+(assert (member t_tup Target))
+(assert (= (join (singleton m_tup) (join (singleton b1_tup) addr)) (as emptyset (Set (Tuple Atom)))))
+(assert (= (join (singleton b2_tup) addr) (union (join (singleton b1_tup) addr) (singleton (mkTuple m t)))))
+(assert (= (join (singleton b3_tup) addr) (setminus (join (singleton b2_tup) addr) (singleton (mkTuple m t)))))
+(assert (not (= (join (singleton b1_tup) addr) (join (singleton b3_tup) addr))))
+(check-sat)
+++ /dev/null
-% EXPECT: sat
-OPTION "logic" "ALL";
-Atom : TYPE;
-AtomTup : TYPE = [Atom];
-AtomBinTup : TYPE = [Atom, Atom];
-AtomTerTup : TYPE = [Atom, Atom, Atom];
-Target: SET OF AtomTup;
-
-Name: SET OF AtomTup;
-Addr: SET OF AtomTup;
-Book: SET OF AtomTup;
-names: SET OF AtomBinTup;
-addr: SET OF AtomTerTup;
-
-b1: Atom;
-b1_tup : AtomTup;
-ASSERT b1_tup = TUPLE(b1);
-ASSERT b1_tup IS_IN Book;
-
-b2: Atom;
-b2_tup : AtomTup;
-ASSERT b2_tup = TUPLE(b2);
-ASSERT b2_tup IS_IN Book;
-
-b3: Atom;
-b3_tup : AtomTup;
-ASSERT b3_tup = TUPLE(b3);
-ASSERT b3_tup IS_IN Book;
-
-m: Atom;
-m_tup : AtomTup;
-ASSERT m_tup = TUPLE(m);
-ASSERT m_tup IS_IN Name;
-
-t: Atom;
-t_tup : AtomTup;
-ASSERT t_tup = TUPLE(t);
-ASSERT t_tup IS_IN Target;
-
-ASSERT ({m_tup} JOIN ({b1_tup} JOIN addr)) = {}::SET OF AtomTup;
-ASSERT ({b2_tup} JOIN addr) = ({b1_tup} JOIN addr) | {(m,t)};
-ASSERT ({b3_tup} JOIN addr) = ({b2_tup} JOIN addr) - {(m,t)};
-ASSERT (({b1_tup} JOIN addr) = ({b3_tup} JOIN addr));
-
-CHECKSAT;
\ No newline at end of file
--- /dev/null
+; EXPECT: sat
+(set-option :incremental false)
+(set-logic ALL)
+(declare-sort Atom 0)
+
+
+
+(declare-fun Target () (Set (Tuple Atom)))
+(declare-fun Name () (Set (Tuple Atom)))
+(declare-fun Addr () (Set (Tuple Atom)))
+(declare-fun Book () (Set (Tuple Atom)))
+(declare-fun names () (Set (Tuple Atom Atom)))
+(declare-fun addr () (Set (Tuple Atom Atom Atom)))
+(declare-fun b1 () Atom)
+(declare-fun b1_tup () (Tuple Atom))
+(assert (= b1_tup (mkTuple b1)))
+(assert (member b1_tup Book))
+(declare-fun b2 () Atom)
+(declare-fun b2_tup () (Tuple Atom))
+(assert (= b2_tup (mkTuple b2)))
+(assert (member b2_tup Book))
+(declare-fun b3 () Atom)
+(declare-fun b3_tup () (Tuple Atom))
+(assert (= b3_tup (mkTuple b3)))
+(assert (member b3_tup Book))
+(declare-fun m () Atom)
+(declare-fun m_tup () (Tuple Atom))
+(assert (= m_tup (mkTuple m)))
+(assert (member m_tup Name))
+(declare-fun t () Atom)
+(declare-fun t_tup () (Tuple Atom))
+(assert (= t_tup (mkTuple t)))
+(assert (member t_tup Target))
+(assert (= (join (singleton m_tup) (join (singleton b1_tup) addr)) (as emptyset (Set (Tuple Atom)))))
+(assert (= (join (singleton b2_tup) addr) (union (join (singleton b1_tup) addr) (singleton (mkTuple m t)))))
+(assert (= (join (singleton b3_tup) addr) (setminus (join (singleton b2_tup) addr) (singleton (mkTuple m t)))))
+(assert (= (join (singleton b1_tup) addr) (join (singleton b3_tup) addr)))
+(check-sat)
+++ /dev/null
-% EXPECT: unsat
-OPTION "logic" "ALL";
-DATATYPE unit = u END;
-BvPair: TYPE = [BITVECTOR(1), unit, BITVECTOR(1)];
-x : SET OF BvPair;
-y : SET OF BvPair;
-
-a : BITVECTOR(1);
-b : BITVECTOR(1);
-c : BITVECTOR(1);
-d : BITVECTOR(1);
-e : BITVECTOR(1);
-
-ASSERT NOT ( b = c );
-
-ASSERT (a, u, b) IS_IN x;
-ASSERT (a, u, c) IS_IN x;
-ASSERT (d, u, a) IS_IN y;
-ASSERT NOT ( ( a, u, u, a ) IS_IN (x JOIN y));
-
-CHECKSAT;
--- /dev/null
+; EXPECT: unsat
+(set-option :incremental false)
+(set-logic ALL)
+(declare-datatypes ((unit 0)) (((u))))
+
+(declare-fun x () (Set (Tuple (_ BitVec 1) unit (_ BitVec 1))))
+(declare-fun y () (Set (Tuple (_ BitVec 1) unit (_ BitVec 1))))
+(declare-fun a () (_ BitVec 1))
+(declare-fun b () (_ BitVec 1))
+(declare-fun c () (_ BitVec 1))
+(declare-fun d () (_ BitVec 1))
+(declare-fun e () (_ BitVec 1))
+(assert (not (= b c)))
+(assert (member (mkTuple a u b) x))
+(assert (member (mkTuple a u c) x))
+(assert (member (mkTuple d u a) y))
+(assert (not (member (mkTuple a u u a) (join x y))))
+(check-sat)
+++ /dev/null
-% EXPECT: unsat
-OPTION "logic" "ALL";
-DATATYPE unitb = ub(data : BITVECTOR(1)) END;
-BvPair: TYPE = [BITVECTOR(1), unitb, BITVECTOR(1)];
-x : SET OF BvPair;
-y : SET OF BvPair;
-
-a : BITVECTOR(1);
-b : BITVECTOR(1);
-c : BITVECTOR(1);
-d : BITVECTOR(1);
-e : BITVECTOR(1);
-u : unitb;
-
-ASSERT NOT ( b = c );
-
-ASSERT (a, u, b) IS_IN x;
-ASSERT (a, u, c) IS_IN x;
-ASSERT (d, u, a) IS_IN y;
-ASSERT NOT ( ( a, u, u, a ) IS_IN (x JOIN y));
-
-CHECKSAT;
--- /dev/null
+; EXPECT: unsat
+(set-option :incremental false)
+(set-logic ALL)
+(declare-datatypes ((unitb 0)) (((ub (data (_ BitVec 1))))))
+
+(declare-fun x () (Set (Tuple (_ BitVec 1) unitb (_ BitVec 1))))
+(declare-fun y () (Set (Tuple (_ BitVec 1) unitb (_ BitVec 1))))
+(declare-fun a () (_ BitVec 1))
+(declare-fun b () (_ BitVec 1))
+(declare-fun c () (_ BitVec 1))
+(declare-fun d () (_ BitVec 1))
+(declare-fun e () (_ BitVec 1))
+(declare-fun u () unitb)
+(assert (not (= b c)))
+(assert (member (mkTuple a u b) x))
+(assert (member (mkTuple a u c) x))
+(assert (member (mkTuple d u a) y))
+(assert (not (member (mkTuple a u u a) (join x y))))
+(check-sat)
+++ /dev/null
-% EXPECT: unsat
-OPTION "logic" "ALL";
-BvPair: TYPE = [BITVECTOR(1), BITVECTOR(1)];
-x : SET OF BvPair;
-y : SET OF BvPair;
-
-a : BITVECTOR(1);
-b : BITVECTOR(1);
-c : BITVECTOR(1);
-d : BITVECTOR(1);
-e : BITVECTOR(1);
-
-ASSERT NOT ( b = c );
-
-ASSERT (a, b) IS_IN x;
-ASSERT (a, c) IS_IN x;
-ASSERT (d, a) IS_IN y;
-ASSERT NOT ( ( a, a ) IS_IN (x JOIN y));
-
-CHECKSAT;
--- /dev/null
+; EXPECT: unsat
+(set-option :incremental false)
+(set-logic ALL)
+
+(declare-fun x () (Set (Tuple (_ BitVec 1) (_ BitVec 1))))
+(declare-fun y () (Set (Tuple (_ BitVec 1) (_ BitVec 1))))
+(declare-fun a () (_ BitVec 1))
+(declare-fun b () (_ BitVec 1))
+(declare-fun c () (_ BitVec 1))
+(declare-fun d () (_ BitVec 1))
+(declare-fun e () (_ BitVec 1))
+(assert (not (= b c)))
+(assert (member (mkTuple a b) x))
+(assert (member (mkTuple a c) x))
+(assert (member (mkTuple d a) y))
+(assert (not (member (mkTuple a a) (join x y))))
+(check-sat)
+++ /dev/null
-% EXPECT: sat
-OPTION "logic" "ALL";
-BvPair: TYPE = [BITVECTOR(1), BITVECTOR(1)];
-x : SET OF BvPair;
-y : SET OF BvPair;
-
-a : BvPair;
-b : BvPair;
-c : BvPair;
-d : BvPair;
-
-ASSERT DISTINCT ( a, b );
-ASSERT DISTINCT ( c, d );
-
-ASSERT a IS_IN x;
-ASSERT b IS_IN x;
-ASSERT a IS_IN y;
-ASSERT b IS_IN y;
-ASSERT NOT ( c IS_IN (x JOIN y)) AND NOT ( d IS_IN (x JOIN y));
-
-
-CHECKSAT;
--- /dev/null
+; EXPECT: sat
+(set-option :incremental false)
+(set-logic ALL)
+
+(declare-fun x () (Set (Tuple (_ BitVec 1) (_ BitVec 1))))
+(declare-fun y () (Set (Tuple (_ BitVec 1) (_ BitVec 1))))
+(declare-fun a () (Tuple (_ BitVec 1) (_ BitVec 1)))
+(declare-fun b () (Tuple (_ BitVec 1) (_ BitVec 1)))
+(declare-fun c () (Tuple (_ BitVec 1) (_ BitVec 1)))
+(declare-fun d () (Tuple (_ BitVec 1) (_ BitVec 1)))
+(assert (distinct a b))
+(assert (distinct c d))
+(assert (member a x))
+(assert (member b x))
+(assert (member a y))
+(assert (member b y))
+(assert (let ((_let_1 (join x y))) (and (not (member c _let_1)) (not (member d _let_1)))))
+(check-sat)
+++ /dev/null
-% COMMAND-LINE: --jh-rlv-order
-% EXPECT: unsat
-
-% note we require jh-rlv-order on this benchmark to avoid a proof failure currently (7/7/21)
-
-OPTION "logic" "ALL";
-BvPair: TYPE = [BITVECTOR(1), BITVECTOR(1)];
-x : SET OF BvPair;
-y : SET OF BvPair;
-
-a : BvPair;
-b : BvPair;
-c : BvPair;
-d : BvPair;
-e : BvPair;
-
-ASSERT DISTINCT ( a, b );
-ASSERT DISTINCT ( c, d, e );
-
-ASSERT a IS_IN x;
-ASSERT b IS_IN x;
-ASSERT a IS_IN y;
-ASSERT b IS_IN y;
-ASSERT (NOT ( c IS_IN (x JOIN y)) AND NOT ( d IS_IN (x JOIN y)) AND NOT ( e IS_IN (x JOIN y)) );
-
-CHECKSAT;
--- /dev/null
+; COMMAND-LINE: --jh-rlv-order
+; EXPECT: unsat
+(set-option :incremental false)
+(set-logic ALL)
+
+(declare-fun x () (Set (Tuple (_ BitVec 1) (_ BitVec 1))))
+(declare-fun y () (Set (Tuple (_ BitVec 1) (_ BitVec 1))))
+(declare-fun a () (Tuple (_ BitVec 1) (_ BitVec 1)))
+(declare-fun b () (Tuple (_ BitVec 1) (_ BitVec 1)))
+(declare-fun c () (Tuple (_ BitVec 1) (_ BitVec 1)))
+(declare-fun d () (Tuple (_ BitVec 1) (_ BitVec 1)))
+(declare-fun e () (Tuple (_ BitVec 1) (_ BitVec 1)))
+(assert (distinct a b))
+(assert (distinct c d e))
+(assert (member a x))
+(assert (member b x))
+(assert (member a y))
+(assert (member b y))
+(assert (let ((_let_1 (join x y))) (and (and (not (member c _let_1)) (not (member d _let_1))) (not (member e _let_1)))))
+(check-sat)
+++ /dev/null
-% EXPECT: sat
-OPTION "logic" "ALL";
-BvPair: TYPE = [BITVECTOR(2), BITVECTOR(2)];
-x : SET OF BvPair;
-y : SET OF BvPair;
-
-a : BITVECTOR(2);
-b : BITVECTOR(2);
-c : BITVECTOR(2);
-d : BITVECTOR(2);
-e : BITVECTOR(2);
-
-ASSERT NOT ( b = c );
-
-ASSERT (a, b) IS_IN x;
-ASSERT (a, c) IS_IN x;
-ASSERT (d, a) IS_IN y;
-ASSERT NOT ( ( a, a ) IS_IN (x JOIN y));
-
-CHECKSAT;
--- /dev/null
+; EXPECT: sat
+(set-option :incremental false)
+(set-logic ALL)
+
+(declare-fun x () (Set (Tuple (_ BitVec 2) (_ BitVec 2))))
+(declare-fun y () (Set (Tuple (_ BitVec 2) (_ BitVec 2))))
+(declare-fun a () (_ BitVec 2))
+(declare-fun b () (_ BitVec 2))
+(declare-fun c () (_ BitVec 2))
+(declare-fun d () (_ BitVec 2))
+(declare-fun e () (_ BitVec 2))
+(assert (not (= b c)))
+(assert (member (mkTuple a b) x))
+(assert (member (mkTuple a c) x))
+(assert (member (mkTuple d a) y))
+(assert (not (member (mkTuple a a) (join x y))))
+(check-sat)
+++ /dev/null
-% EXPECT: unsat
-H_TYPE: TYPE;
-H: TYPE = [H_TYPE];
-Obj: TYPE;
-Obj_Tup: TYPE = [Obj];
-MARK_TYPE: TYPE = [H_TYPE, Obj];
-RELATE: TYPE = [Obj, Obj];
-REF_TYPE: TYPE = [H_TYPE, Obj, Obj];
-
-% Symbols h0 to h3 are constants of type H that represents the system state;
-h0: SET OF H;
-h1: SET OF H;
-h2: SET OF H;
-h3: SET OF H;
-s0: H_TYPE;
-s1: H_TYPE;
-s2: H_TYPE;
-s3: H_TYPE;
-ASSERT h0 = {TUPLE(s0)};
-ASSERT h1 = {TUPLE(s1)};
-ASSERT h2 = {TUPLE(s2)};
-ASSERT h3 = {TUPLE(s3)};
-
-% ref ⊆ H × Obj × Obj represents references between objects in each state;
-ref : SET OF REF_TYPE;
-
-% mark ⊆ H × Obj represents the marked objects in each state
-mark: SET OF MARK_TYPE;
-
-empty_obj_set: SET OF Obj_Tup;
-ASSERT empty_obj_set = {}:: SET OF Obj_Tup;
-
-% root and live are two constants of type Obj that represents objects;
-root: Obj;
-live: Obj;
-
-% The state transition (h0–h1) resets all the marks
-ASSERT (h1 JOIN mark) = empty_obj_set;
-ASSERT (h0 JOIN ref) <= (h1 JOIN ref);
-
-% (h1–h2) marks objects reachable from root
-ASSERT FORALL (n : Obj) : ((root, n) IS_IN TCLOSURE(h1 JOIN ref))
- => (TUPLE(n) IS_IN (h2 JOIN mark));
-ASSERT (h1 JOIN ref) <= (h2 JOIN ref);
-
-% (h2–h3) sweeps references of non-marked objects
-
-ASSERT FORALL (n: Obj) : (NOT (TUPLE(n) IS_IN (h2 JOIN mark)))
- => ({TUPLE(n)} JOIN (h3 JOIN ref)) = empty_obj_set;
-
-ASSERT FORALL (n: Obj) : (TUPLE(n) IS_IN (h2 JOIN mark))
- => ({TUPLE(n)} JOIN (h3 JOIN ref)) = ({TUPLE(n)} JOIN (h2 JOIN ref));
-
-%The safety property is negated, thus it checks if
-%in the final state, there is a live object that was originally reachable from root
-%in the beginning state, but some of its references have been swept
-ASSERT (root, live) IS_IN TCLOSURE(h0 JOIN ref);
-ASSERT NOT (({TUPLE(live)} JOIN (h0 JOIN ref)) <= ({TUPLE(live)} JOIN (h3 JOIN ref)));
-
-CHECKSAT;
\ No newline at end of file
--- /dev/null
+; EXPECT: unsat
+(set-logic ALL)
+(set-option :incremental false)
+(declare-sort H_TYPE 0)
+
+(declare-sort Obj 0)
+
+
+
+
+(declare-fun h0 () (Set (Tuple H_TYPE)))
+(declare-fun h1 () (Set (Tuple H_TYPE)))
+(declare-fun h2 () (Set (Tuple H_TYPE)))
+(declare-fun h3 () (Set (Tuple H_TYPE)))
+(declare-fun s0 () H_TYPE)
+(declare-fun s1 () H_TYPE)
+(declare-fun s2 () H_TYPE)
+(declare-fun s3 () H_TYPE)
+(assert (= h0 (singleton (mkTuple s0))))
+(assert (= h1 (singleton (mkTuple s1))))
+(assert (= h2 (singleton (mkTuple s2))))
+(assert (= h3 (singleton (mkTuple s3))))
+(declare-fun ref () (Set (Tuple H_TYPE Obj Obj)))
+(declare-fun mark () (Set (Tuple H_TYPE Obj)))
+(declare-fun empty_obj_set () (Set (Tuple Obj)))
+(assert (= empty_obj_set (as emptyset (Set (Tuple Obj)))))
+(declare-fun root () Obj)
+(declare-fun live () Obj)
+(assert (= (join h1 mark) empty_obj_set))
+(assert (subset (join h0 ref) (join h1 ref)))
+(assert (forall ((n Obj)) (=> (member (mkTuple root n) (tclosure (join h1 ref))) (member (mkTuple n) (join h2 mark)))))
+(assert (subset (join h1 ref) (join h2 ref)))
+(assert (forall ((n Obj)) (let ((_let_1 (mkTuple n))) (=> (not (member _let_1 (join h2 mark))) (= (join (singleton _let_1) (join h3 ref)) empty_obj_set)))))
+(assert (forall ((n Obj)) (let ((_let_1 (mkTuple n))) (let ((_let_2 (singleton _let_1))) (=> (member _let_1 (join h2 mark)) (= (join _let_2 (join h3 ref)) (join _let_2 (join h2 ref))))))))
+(assert (member (mkTuple root live) (tclosure (join h0 ref))))
+(assert (let ((_let_1 (singleton (mkTuple live)))) (not (subset (join _let_1 (join h0 ref)) (join _let_1 (join h3 ref))))))
+(check-sat)
+++ /dev/null
-% EXPECT: sat
-OPTION "sets-ext";
-OPTION "logic" "ALL";
-Atom:TYPE;
-AtomPair: TYPE = [Atom, Atom];
-x : SET OF AtomPair;
-t : SET OF [Atom];
-univ : SET OF [Atom];
-univ2 : SET OF [Atom,Atom];
-
-a : Atom;
-b : Atom;
-c : Atom;
-d : Atom;
-ASSERT univ = UNIVERSE::SET OF [Atom];
-ASSERT univ2 = UNIVERSE::SET OF [Atom, Atom];
-ASSERT univ2 = (univ PRODUCT univ);
-ASSERT (a, b) IS_IN x;
-ASSERT (c, d) IS_IN x;
-ASSERT NOT(a = b);
-ASSERT IDEN(univ) <= x;
-CHECKSAT;
--- /dev/null
+; EXPECT: sat
+(set-option :incremental false)
+(set-option :sets-ext true)
+(set-logic ALL)
+(declare-sort Atom 0)
+
+(declare-fun x () (Set (Tuple Atom Atom)))
+(declare-fun t () (Set (Tuple Atom)))
+(declare-fun univ () (Set (Tuple Atom)))
+(declare-fun univ2 () (Set (Tuple Atom Atom)))
+(declare-fun a () Atom)
+(declare-fun b () Atom)
+(declare-fun c () Atom)
+(declare-fun d () Atom)
+(assert (= univ (as univset (Set (Tuple Atom)))))
+(assert (= univ2 (as univset (Set (Tuple Atom Atom)))))
+(assert (= univ2 (product univ univ)))
+(assert (member (mkTuple a b) x))
+(assert (member (mkTuple c d) x))
+(assert (not (= a b)))
+(assert (subset (iden univ) x))
+(check-sat)
+++ /dev/null
-% EXPECT: unsat
-OPTION "logic" "ALL";
-IntPair: TYPE = [INT, INT];
-x : SET OF IntPair;
-y : SET OF IntPair;
-DATATYPE unit = u END;
-IntUPair: TYPE = [INT, unit];
-UIntPair: TYPE = [unit, INT];
-w : SET OF IntUPair;
-z : SET OF UIntPair;
-
-ASSERT (x JOIN y) = (w JOIN z) AND (x JOIN y ) = TRANSPOSE(w JOIN z);
-
-ASSERT (0,1) IS_IN (x JOIN y);
-
-t : INT;
-ASSERT t >= 0 AND t <=1;
-s : INT;
-ASSERT s >= 0 AND s <=1;
-
-ASSERT s+t = 1;
-
-ASSERT ( s ,u ) IS_IN w;
-ASSERT NOT ( u, t ) IS_IN z;
-
-CHECKSAT;
--- /dev/null
+; EXPECT: unsat
+(set-option :incremental false)
+(set-logic ALL)
+
+(declare-fun x () (Set (Tuple Int Int)))
+(declare-fun y () (Set (Tuple Int Int)))
+(declare-datatypes ((unit 0)) (((u))))
+
+
+(declare-fun w () (Set (Tuple Int unit)))
+(declare-fun z () (Set (Tuple unit Int)))
+(assert (let ((_let_1 (join w z))) (let ((_let_2 (join x y))) (and (= _let_2 _let_1) (= _let_2 (transpose _let_1))))))
+(assert (member (mkTuple 0 1) (join x y)))
+(declare-fun t () Int)
+(assert (and (>= t 0) (<= t 1)))
+(declare-fun s () Int)
+(assert (and (>= s 0) (<= s 1)))
+(assert (= (+ s t) 1))
+(assert (member (mkTuple s u) w))
+(assert (not (member (mkTuple u t) z)))
+(check-sat)
+++ /dev/null
-% EXPECT: sat
-OPTION "logic" "ALL";
-IntPair: TYPE = [INT, INT];
-x : SET OF IntPair;
-y : SET OF IntPair;
-DATATYPE unit = u END;
-IntUPair: TYPE = [INT, unit];
-UIntPair: TYPE = [unit, INT];
-w : SET OF IntUPair;
-z : SET OF UIntPair;
-
-ASSERT (x JOIN y) = (w JOIN z) OR (x JOIN y ) = TRANSPOSE(w JOIN z);
-
-ASSERT (0,1) IS_IN (x JOIN y);
-
-t : INT;
-ASSERT t >= 0 AND t <=1;
-s : INT;
-ASSERT s >= 0 AND s <=1;
-
-ASSERT s+t = 1;
-
-ASSERT ( s ,u ) IS_IN w;
-ASSERT NOT ( u, t ) IS_IN z;
-
-CHECKSAT;
--- /dev/null
+; EXPECT: sat
+(set-option :incremental false)
+(set-logic ALL)
+
+(declare-fun x () (Set (Tuple Int Int)))
+(declare-fun y () (Set (Tuple Int Int)))
+(declare-datatypes ((unit 0)) (((u))))
+
+
+(declare-fun w () (Set (Tuple Int unit)))
+(declare-fun z () (Set (Tuple unit Int)))
+(assert (let ((_let_1 (join w z))) (let ((_let_2 (join x y))) (or (= _let_2 _let_1) (= _let_2 (transpose _let_1))))))
+(assert (member (mkTuple 0 1) (join x y)))
+(declare-fun t () Int)
+(assert (and (>= t 0) (<= t 1)))
+(declare-fun s () Int)
+(assert (and (>= s 0) (<= s 1)))
+(assert (= (+ s t) 1))
+(assert (member (mkTuple s u) w))
+(assert (not (member (mkTuple u t) z)))
+(check-sat)
+++ /dev/null
-% EXPECT: sat
-OPTION "logic" "ALL";
-OPTION "sets-ext";
-IntPair: TYPE = [INT, INT];
-x : SET OF IntPair;
-y : SET OF IntPair;
-r : SET OF IntPair;
-
-t : SET OF [INT];
-u : SET OF [INT];
-
-z : IntPair;
-ASSERT z = (1,2);
-zt : IntPair;
-ASSERT zt = (2,1);
-v : IntPair;
-ASSERT v = (1,1);
-a : IntPair;
-ASSERT a = (1,5);
-b: INT;
-
-ASSERT (1, 7) IS_IN x;
-ASSERT z IS_IN x;
-
-ASSERT (7, 5) IS_IN y;
-
-ASSERT t = (x JOIN_IMAGE 2);
-
-ASSERT TUPLE(3) IS_IN (x JOIN_IMAGE 2);
-
-ASSERT u = (x JOIN_IMAGE 1);
-
-ASSERT TUPLE(4) IS_IN (x JOIN_IMAGE 2);
-
-ASSERT TUPLE(b) IS_IN (x JOIN_IMAGE 1);
-CHECKSAT;
--- /dev/null
+; EXPECT: sat
+(set-option :incremental false)
+(set-logic ALL)
+(set-option :sets-ext true)
+
+(declare-fun x () (Set (Tuple Int Int)))
+(declare-fun y () (Set (Tuple Int Int)))
+(declare-fun r () (Set (Tuple Int Int)))
+(declare-fun t () (Set (Tuple Int)))
+(declare-fun u () (Set (Tuple Int)))
+(declare-fun z () (Tuple Int Int))
+(assert (= z (mkTuple 1 2)))
+(declare-fun zt () (Tuple Int Int))
+(assert (= zt (mkTuple 2 1)))
+(declare-fun v () (Tuple Int Int))
+(assert (= v (mkTuple 1 1)))
+(declare-fun a () (Tuple Int Int))
+(assert (= a (mkTuple 1 5)))
+(declare-fun b () Int)
+(assert (member (mkTuple 1 7) x))
+(assert (member z x))
+(assert (member (mkTuple 7 5) y))
+(assert (= t (join_image x 2)))
+(assert (member (mkTuple 3) (join_image x 2)))
+(assert (= u (join_image x 1)))
+(assert (member (mkTuple 4) (join_image x 2)))
+(assert (member (mkTuple b) (join_image x 1)))
+(check-sat)
+++ /dev/null
-% EXPECT: sat
-OPTION "sets-ext";
-OPTION "logic" "ALL";
-IntPair: TYPE = [INT, INT];
-x : SET OF IntPair;
-y : SET OF IntPair;
-r : SET OF IntPair;
-
-t : SET OF [INT];
-u : SET OF [INT];
-univ : SET OF [INT];
-
-z : IntPair;
-ASSERT z = (1,2);
-zt : IntPair;
-ASSERT zt = (2,1);
-s : IntPair;
-ASSERT s = (1,1);
-a : IntPair;
-ASSERT a = (1,5);
-b: INT;
-
-ASSERT (1, 7) IS_IN x;
-ASSERT z IS_IN x;
-
-ASSERT (7, 5) IS_IN y;
-
-ASSERT t = (x JOIN_IMAGE 2);
-ASSERT univ = (x JOIN_IMAGE 0);
-ASSERT TUPLE(100) IS_IN t;
-
-ASSERT NOT (TUPLE(3) IS_IN univ);
-
-ASSERT u = (x JOIN_IMAGE 1);
-
-ASSERT TUPLE(4) IS_IN (x JOIN_IMAGE 2);
-
-ASSERT TUPLE(b) IS_IN (x JOIN_IMAGE 1);
-CHECKSAT;
--- /dev/null
+; EXPECT: sat
+(set-option :incremental false)
+(set-option :sets-ext true)
+(set-logic ALL)
+
+(declare-fun x () (Set (Tuple Int Int)))
+(declare-fun y () (Set (Tuple Int Int)))
+(declare-fun r () (Set (Tuple Int Int)))
+(declare-fun t () (Set (Tuple Int)))
+(declare-fun u () (Set (Tuple Int)))
+(declare-fun univ () (Set (Tuple Int)))
+(declare-fun z () (Tuple Int Int))
+(assert (= z (mkTuple 1 2)))
+(declare-fun zt () (Tuple Int Int))
+(assert (= zt (mkTuple 2 1)))
+(declare-fun s () (Tuple Int Int))
+(assert (= s (mkTuple 1 1)))
+(declare-fun a () (Tuple Int Int))
+(assert (= a (mkTuple 1 5)))
+(declare-fun b () Int)
+(assert (member (mkTuple 1 7) x))
+(assert (member z x))
+(assert (member (mkTuple 7 5) y))
+(assert (= t (join_image x 2)))
+(assert (= univ (join_image x 0)))
+(assert (member (mkTuple 100) t))
+(assert (not (member (mkTuple 3) univ)))
+(assert (= u (join_image x 1)))
+(assert (member (mkTuple 4) (join_image x 2)))
+(assert (member (mkTuple b) (join_image x 1)))
+(check-sat)
+++ /dev/null
-% EXPECT: unsat
-OPTION "logic" "ALL";
-OPTION "sets-ext";
-Atom: TYPE;
-x : SET OF [Atom, Atom];
-y : SET OF [Atom, Atom];
-r : SET OF [Atom, Atom];
-
-t : SET OF [Atom];
-
-a : Atom;
-b : Atom;
-c : Atom;
-d : Atom;
-e : Atom;
-
-ASSERT TUPLE(a) IS_IN (x JOIN_IMAGE 2);
-ASSERT x = {(b, c), (d, e), (c, e)};
-ASSERT NOT(a = b);
-
-CHECKSAT;
--- /dev/null
+; EXPECT: unsat
+(set-option :incremental false)
+(set-logic ALL)
+(set-option :sets-ext true)
+(declare-sort Atom 0)
+(declare-fun x () (Set (Tuple Atom Atom)))
+(declare-fun y () (Set (Tuple Atom Atom)))
+(declare-fun r () (Set (Tuple Atom Atom)))
+(declare-fun t () (Set (Tuple Atom)))
+(declare-fun a () Atom)
+(declare-fun b () Atom)
+(declare-fun c () Atom)
+(declare-fun d () Atom)
+(declare-fun e () Atom)
+(assert (member (mkTuple a) (join_image x 2)))
+(assert (= x (union (union (singleton (mkTuple b c)) (singleton (mkTuple d e))) (singleton (mkTuple c e)))))
+(assert (not (= a b)))
+(check-sat)
+++ /dev/null
-% EXPECT: sat
-OPTION "logic" "ALL";
-OPTION "sets-ext";
-Atom: TYPE;
-x : SET OF [Atom, Atom];
-y : SET OF [Atom, Atom];
-r : SET OF [Atom, Atom];
-
-t : SET OF [Atom];
-
-a : Atom;
-b : Atom;
-c : Atom;
-d : Atom;
-e : Atom;
-
-ASSERT TUPLE(a) IS_IN (x JOIN_IMAGE 2);
-ASSERT t = (x JOIN_IMAGE 2);
-ASSERT x = {(b, c), (d, e), (c, e)};
-ASSERT TUPLE(c) IS_IN t;
-
-CHECKSAT;
--- /dev/null
+; EXPECT: sat
+(set-option :incremental false)
+(set-logic ALL)
+(set-option :sets-ext true)
+(declare-sort Atom 0)
+(declare-fun x () (Set (Tuple Atom Atom)))
+(declare-fun y () (Set (Tuple Atom Atom)))
+(declare-fun r () (Set (Tuple Atom Atom)))
+(declare-fun t () (Set (Tuple Atom)))
+(declare-fun a () Atom)
+(declare-fun b () Atom)
+(declare-fun c () Atom)
+(declare-fun d () Atom)
+(declare-fun e () Atom)
+(assert (member (mkTuple a) (join_image x 2)))
+(assert (= t (join_image x 2)))
+(assert (= x (union (union (singleton (mkTuple b c)) (singleton (mkTuple d e))) (singleton (mkTuple c e)))))
+(assert (member (mkTuple c) t))
+(check-sat)
+++ /dev/null
-% EXPECT: unsat
-OPTION "logic" "ALL";
-OPTION "sets-ext";
-Atom: TYPE;
-x : SET OF [Atom, Atom];
-y : SET OF [Atom, Atom];
-r : SET OF [Atom, Atom];
-
-t : SET OF [Atom];
-
-a : Atom;
-b : Atom;
-c : Atom;
-d : Atom;
-e : Atom;
-f : Atom;
-g : Atom;
-
-ASSERT TUPLE(a) IS_IN (x JOIN_IMAGE 2);
-ASSERT TUPLE(a) IS_IN (y JOIN_IMAGE 3);
-%ASSERT y = {(f, g), (b, c), (d, e), (c, e)};
-ASSERT x = {(f, g), (b, c), (d, e), (c, e), (f, b)};
-ASSERT (a, f) IS_IN x;
-ASSERT (a, f) IS_IN y;
-ASSERT x = y;
-
-
-
-ASSERT NOT(a = b);
-
-ASSERT NOT (TUPLE(d) IS_IN (x JOIN_IMAGE 2));
-ASSERT f = d;
-
-CHECKSAT;
--- /dev/null
+; EXPECT: unsat
+(set-option :incremental false)
+(set-logic ALL)
+(set-option :sets-ext true)
+(declare-sort Atom 0)
+(declare-fun x () (Set (Tuple Atom Atom)))
+(declare-fun y () (Set (Tuple Atom Atom)))
+(declare-fun r () (Set (Tuple Atom Atom)))
+(declare-fun t () (Set (Tuple Atom)))
+(declare-fun a () Atom)
+(declare-fun b () Atom)
+(declare-fun c () Atom)
+(declare-fun d () Atom)
+(declare-fun e () Atom)
+(declare-fun f () Atom)
+(declare-fun g () Atom)
+(assert (member (mkTuple a) (join_image x 2)))
+(assert (member (mkTuple a) (join_image y 3)))
+(assert (= x (union (union (union (union (singleton (mkTuple f g)) (singleton (mkTuple b c))) (singleton (mkTuple d e))) (singleton (mkTuple c e))) (singleton (mkTuple f b)))))
+(assert (member (mkTuple a f) x))
+(assert (member (mkTuple a f) y))
+(assert (= x y))
+(assert (not (= a b)))
+(assert (not (member (mkTuple d) (join_image x 2))))
+(assert (= f d))
+(check-sat)
+++ /dev/null
-% EXPECT: sat
-OPTION "logic" "ALL";
-OPTION "sets-ext";
-Atom: TYPE;
-x : SET OF [Atom, Atom];
-y : SET OF [Atom, Atom];
-r : SET OF [Atom, Atom];
-
-t : SET OF [Atom];
-
-a : Atom;
-b : Atom;
-c : Atom;
-d : Atom;
-e : Atom;
-f : Atom;
-g : Atom;
-
-ASSERT TUPLE(a) IS_IN (x JOIN_IMAGE 2);
-ASSERT TUPLE(a) IS_IN (y JOIN_IMAGE 1);
-ASSERT y = {(f, g), (b, c), (d, e), (c, e)};
-ASSERT x = {(f, g), (b, c), (d, e), (c, e)};
-ASSERT (NOT(a = b)) OR (NOT(a = f));
-
-CHECKSAT;
--- /dev/null
+; EXPECT: sat
+(set-option :incremental false)
+(set-logic ALL)
+(set-option :sets-ext true)
+(declare-sort Atom 0)
+(declare-fun x () (Set (Tuple Atom Atom)))
+(declare-fun y () (Set (Tuple Atom Atom)))
+(declare-fun r () (Set (Tuple Atom Atom)))
+(declare-fun t () (Set (Tuple Atom)))
+(declare-fun a () Atom)
+(declare-fun b () Atom)
+(declare-fun c () Atom)
+(declare-fun d () Atom)
+(declare-fun e () Atom)
+(declare-fun f () Atom)
+(declare-fun g () Atom)
+(assert (member (mkTuple a) (join_image x 2)))
+(assert (member (mkTuple a) (join_image y 1)))
+(assert (= y (union (union (union (singleton (mkTuple f g)) (singleton (mkTuple b c))) (singleton (mkTuple d e))) (singleton (mkTuple c e)))))
+(assert (= x (union (union (union (singleton (mkTuple f g)) (singleton (mkTuple b c))) (singleton (mkTuple d e))) (singleton (mkTuple c e)))))
+(assert (or (not (= a b)) (not (= a f))))
+(check-sat)
+++ /dev/null
-% EXPECT: sat
-OPTION "logic" "ALL";
-IntPair: TYPE = [INT, INT];
-IntPairPair: TYPE = [INT, INT, INT, INT];
-x : SET OF IntPair;
-y : SET OF IntPair;
-z : SET OF IntPairPair;
-z1 : SET OF IntPair;
-w1 : SET OF IntPair;
-z2 : SET OF IntPair;
-w2 : SET OF IntPair;
-
-%ASSERT NOT (0,1,2,3) IS_IN (x PRODUCT y);
-
-ASSERT NOT( z = (x PRODUCT y) );
-
-ASSERT (0,1,2,3) IS_IN z;
-
-ASSERT (0,1) IS_IN z1;
-ASSERT (0,1) IS_IN z2;
-ASSERT (2,3) IS_IN w1;
-ASSERT (2,3) IS_IN w2;
-
-ASSERT ( x = z1 AND y = w1 ) OR ( x = z2 AND y = w2 );
-
-CHECKSAT;
--- /dev/null
+; EXPECT: sat
+(set-option :incremental false)
+(set-logic ALL)
+
+
+(declare-fun x () (Set (Tuple Int Int)))
+(declare-fun y () (Set (Tuple Int Int)))
+(declare-fun z () (Set (Tuple Int Int Int Int)))
+(declare-fun z1 () (Set (Tuple Int Int)))
+(declare-fun w1 () (Set (Tuple Int Int)))
+(declare-fun z2 () (Set (Tuple Int Int)))
+(declare-fun w2 () (Set (Tuple Int Int)))
+(assert (not (= z (product x y))))
+(assert (member (mkTuple 0 1 2 3) z))
+(assert (member (mkTuple 0 1) z1))
+(assert (member (mkTuple 0 1) z2))
+(assert (member (mkTuple 2 3) w1))
+(assert (member (mkTuple 2 3) w2))
+(assert (or (and (= x z1) (= y w1)) (and (= x z2) (= y w2))))
+(check-sat)
+++ /dev/null
-% EXPECT: sat
-OPTION "logic" "ALL";
-IntPair: TYPE = [INT, INT];
-IntPairPair: TYPE = [INT, INT, INT, INT];
-x : SET OF IntPair;
-y : SET OF IntPair;
-z : SET OF IntPairPair;
-z1 : SET OF IntPair;
-w1 : SET OF IntPair;
-z2 : SET OF IntPair;
-w2 : SET OF IntPair;
-P : SET OF IntPairPair -> BOOLEAN;
-
-ASSERT z = (x PRODUCT y);
-
-ASSERT P( z );
-ASSERT NOT P( {(0,1,2,3)} );
-
-ASSERT (0,1) IS_IN z1;
-ASSERT (0,1) IS_IN z2;
-ASSERT (2,3) IS_IN w1;
-ASSERT (2,3) IS_IN w2;
-
-ASSERT ( x = z1 AND y = w1 ) OR ( x = z2 AND y = w2 );
-
-CHECKSAT;
--- /dev/null
+; EXPECT: sat
+(set-option :incremental false)
+(set-logic ALL)
+
+
+(declare-fun x () (Set (Tuple Int Int)))
+(declare-fun y () (Set (Tuple Int Int)))
+(declare-fun z () (Set (Tuple Int Int Int Int)))
+(declare-fun z1 () (Set (Tuple Int Int)))
+(declare-fun w1 () (Set (Tuple Int Int)))
+(declare-fun z2 () (Set (Tuple Int Int)))
+(declare-fun w2 () (Set (Tuple Int Int)))
+(declare-fun P ((Set (Tuple Int Int Int Int))) Bool)
+(assert (= z (product x y)))
+(assert (P z))
+(assert (not (P (singleton (mkTuple 0 1 2 3)))))
+(assert (member (mkTuple 0 1) z1))
+(assert (member (mkTuple 0 1) z2))
+(assert (member (mkTuple 2 3) w1))
+(assert (member (mkTuple 2 3) w2))
+(assert (or (and (= x z1) (= y w1)) (and (= x z2) (= y w2))))
+(check-sat)
+++ /dev/null
-% EXPECT: unsat
-OPTION "logic" "ALL";
-IntPair: TYPE = [INT, INT];
-x : SET OF IntPair;
-y : SET OF IntPair;
-z : SET OF IntPair;
-r : SET OF IntPair;
-w : SET OF IntPair;
-
-
-f : IntPair;
-ASSERT f = (3,1);
-ASSERT f IS_IN x;
-
-g : IntPair;
-ASSERT g = (1,3);
-ASSERT g IS_IN y;
-
-h : IntPair;
-ASSERT h = (3,5);
-ASSERT h IS_IN x;
-ASSERT h IS_IN y;
-
-ASSERT r = (x JOIN y);
-
-e : IntPair;
-
-ASSERT NOT (e IS_IN r);
-ASSERT NOT(z = (x & y));
-ASSERT z = (x - y);
-ASSERT x <= y;
-ASSERT e IS_IN (r JOIN z);
-ASSERT e IS_IN x;
-ASSERT e IS_IN (x & y);
-CHECKSAT TRUE;
-
-
-
-
-
-
-
-
-
-
-
-
-
-
--- /dev/null
+; EXPECT: unsat
+(set-option :incremental true)
+(set-logic ALL)
+
+(declare-fun x () (Set (Tuple Int Int)))
+(declare-fun y () (Set (Tuple Int Int)))
+(declare-fun z () (Set (Tuple Int Int)))
+(declare-fun r () (Set (Tuple Int Int)))
+(declare-fun w () (Set (Tuple Int Int)))
+(declare-fun f () (Tuple Int Int))
+(assert (= f (mkTuple 3 1)))
+(assert (member f x))
+(declare-fun g () (Tuple Int Int))
+(assert (= g (mkTuple 1 3)))
+(assert (member g y))
+(declare-fun h () (Tuple Int Int))
+(assert (= h (mkTuple 3 5)))
+(assert (member h x))
+(assert (member h y))
+(assert (= r (join x y)))
+(declare-fun e () (Tuple Int Int))
+(assert (not (member e r)))
+(assert (not (= z (intersection x y))))
+(assert (= z (setminus x y)))
+(assert (subset x y))
+(assert (member e (join r z)))
+(assert (member e x))
+(assert (member e (intersection x y)))
+(push 1)
+
+(assert true)
+
+(check-sat)
+
+(pop 1)
+
+++ /dev/null
-% EXPECT: unsat
-OPTION "logic" "ALL";
-IntPair: TYPE = [INT, INT];
-x : SET OF IntPair;
-y : SET OF IntPair;
-z : SET OF IntPair;
-r : SET OF IntPair;
-w : SET OF IntPair;
-
-
-f : IntPair;
-ASSERT f = (3,1);
-ASSERT f IS_IN x;
-
-g : IntPair;
-ASSERT g = (1,3);
-ASSERT g IS_IN y;
-
-h : IntPair;
-ASSERT h = (3,5);
-ASSERT h IS_IN x;
-ASSERT h IS_IN y;
-
-ASSERT r = (x JOIN y);
-a:INT;
-e : IntPair;
-ASSERT e = (a,a);
-ASSERT w = {e};
-ASSERT TRANSPOSE(w) <= y;
-
-ASSERT NOT (e IS_IN r);
-ASSERT NOT(z = (x & y));
-ASSERT z = (x - y);
-ASSERT x <= y;
-ASSERT e IS_IN (r JOIN z);
-ASSERT e IS_IN x;
-ASSERT e IS_IN (x & y);
-CHECKSAT TRUE;
-
-
-
-
-
-
-
-
-
-
-
-
-
-
--- /dev/null
+; EXPECT: unsat
+(set-option :incremental true)
+(set-logic ALL)
+
+(declare-fun x () (Set (Tuple Int Int)))
+(declare-fun y () (Set (Tuple Int Int)))
+(declare-fun z () (Set (Tuple Int Int)))
+(declare-fun r () (Set (Tuple Int Int)))
+(declare-fun w () (Set (Tuple Int Int)))
+(declare-fun f () (Tuple Int Int))
+(assert (= f (mkTuple 3 1)))
+(assert (member f x))
+(declare-fun g () (Tuple Int Int))
+(assert (= g (mkTuple 1 3)))
+(assert (member g y))
+(declare-fun h () (Tuple Int Int))
+(assert (= h (mkTuple 3 5)))
+(assert (member h x))
+(assert (member h y))
+(assert (= r (join x y)))
+(declare-fun a () Int)
+(declare-fun e () (Tuple Int Int))
+(assert (= e (mkTuple a a)))
+(assert (= w (singleton e)))
+(assert (subset (transpose w) y))
+(assert (not (member e r)))
+(assert (not (= z (intersection x y))))
+(assert (= z (setminus x y)))
+(assert (subset x y))
+(assert (member e (join r z)))
+(assert (member e x))
+(assert (member e (intersection x y)))
+(push 1)
+
+(assert true)
+
+(check-sat)
+
+(pop 1)
+
+++ /dev/null
-% EXPECT: unsat
-OPTION "logic" "ALL";
-IntPair: TYPE = [INT, INT];
-IntTup: TYPE = [INT];
-x : SET OF IntPair;
-y : SET OF IntPair;
-z : SET OF IntPair;
-r : SET OF IntPair;
-w : SET OF IntPair;
-
-
-f : IntPair;
-ASSERT f = (3,1);
-ASSERT f IS_IN x;
-
-g : IntPair;
-ASSERT g = (1,3);
-ASSERT g IS_IN y;
-
-h : IntPair;
-ASSERT h = (3,5);
-ASSERT h IS_IN x;
-ASSERT h IS_IN y;
-
-ASSERT r = (x JOIN y);
-a:IntTup;
-ASSERT a = TUPLE(1);
-e : IntPair;
-ASSERT e = (1,1);
-
-ASSERT w = ({a} PRODUCT {a});
-ASSERT TRANSPOSE(w) <= y;
-
-ASSERT NOT (e IS_IN r);
-ASSERT NOT(z = (x & y));
-ASSERT z = (x - y);
-ASSERT x <= y;
-ASSERT e IS_IN (r JOIN z);
-ASSERT e IS_IN x;
-ASSERT e IS_IN (x & y);
-CHECKSAT TRUE;
-
-
-
-
-
-
-
-
-
-
-
-
-
-
--- /dev/null
+; EXPECT: unsat
+(set-option :incremental true)
+(set-logic ALL)
+
+
+(declare-fun x () (Set (Tuple Int Int)))
+(declare-fun y () (Set (Tuple Int Int)))
+(declare-fun z () (Set (Tuple Int Int)))
+(declare-fun r () (Set (Tuple Int Int)))
+(declare-fun w () (Set (Tuple Int Int)))
+(declare-fun f () (Tuple Int Int))
+(assert (= f (mkTuple 3 1)))
+(assert (member f x))
+(declare-fun g () (Tuple Int Int))
+(assert (= g (mkTuple 1 3)))
+(assert (member g y))
+(declare-fun h () (Tuple Int Int))
+(assert (= h (mkTuple 3 5)))
+(assert (member h x))
+(assert (member h y))
+(assert (= r (join x y)))
+(declare-fun a () (Tuple Int))
+(assert (= a (mkTuple 1)))
+(declare-fun e () (Tuple Int Int))
+(assert (= e (mkTuple 1 1)))
+(assert (let ((_let_1 (singleton a))) (= w (product _let_1 _let_1))))
+(assert (subset (transpose w) y))
+(assert (not (member e r)))
+(assert (not (= z (intersection x y))))
+(assert (= z (setminus x y)))
+(assert (subset x y))
+(assert (member e (join r z)))
+(assert (member e x))
+(assert (member e (intersection x y)))
+(push 1)
+
+(assert true)
+
+(check-sat)
+
+(pop 1)
+
+++ /dev/null
-% EXPECT: sat
-OPTION "logic" "ALL";
-IntPair: TYPE = [INT, INT];
-IntTup: TYPE = [INT];
-x : SET OF IntPair;
-y : SET OF IntPair;
-r : SET OF IntPair;
-
-w : SET OF IntTup;
-z : SET OF IntTup;
-r2 : SET OF IntPair;
-
-d : IntPair;
-ASSERT d = (1,3);
-ASSERT (1,3) IS_IN y;
-
-a : IntPair;
-ASSERT a IS_IN x;
-
-e : IntPair;
-ASSERT e = (4,3);
-
-ASSERT r = (x JOIN y);
-ASSERT r2 = (w PRODUCT z);
-
-ASSERT NOT (e IS_IN r);
-%ASSERT e IS_IN r2;
-ASSERT NOT (r = r2);
-
-CHECKSAT;
--- /dev/null
+; EXPECT: sat
+(set-option :incremental false)
+(set-logic ALL)
+
+
+(declare-fun x () (Set (Tuple Int Int)))
+(declare-fun y () (Set (Tuple Int Int)))
+(declare-fun r () (Set (Tuple Int Int)))
+(declare-fun w () (Set (Tuple Int)))
+(declare-fun z () (Set (Tuple Int)))
+(declare-fun r2 () (Set (Tuple Int Int)))
+(declare-fun d () (Tuple Int Int))
+(assert (= d (mkTuple 1 3)))
+(assert (member (mkTuple 1 3) y))
+(declare-fun a () (Tuple Int Int))
+(assert (member a x))
+(declare-fun e () (Tuple Int Int))
+(assert (= e (mkTuple 4 3)))
+(assert (= r (join x y)))
+(assert (= r2 (product w z)))
+(assert (not (member e r)))
+(assert (not (= r r2)))
+(check-sat)
+++ /dev/null
-% EXPECT: unsat
-OPTION "logic" "ALL";
-IntPair: TYPE = [INT, INT];
-x : SET OF IntPair;
-y : SET OF IntPair;
-z : SET OF IntPair;
-r : SET OF IntPair;
-
-a11 : IntPair;
-ASSERT a11 = (1, 1);
-ASSERT a11 IS_IN x;
-a12 : IntPair;
-ASSERT a12 = (1, 2);
-ASSERT a12 IS_IN x;
-a13 : IntPair;
-ASSERT a13 = (1, 3);
-ASSERT a13 IS_IN x;
-a14 : IntPair;
-ASSERT a14 = (1, 4);
-ASSERT a14 IS_IN x;
-a15 : IntPair;
-ASSERT a15 = (1, 5);
-ASSERT a15 IS_IN x;
-a16 : IntPair;
-ASSERT a16 = (1, 6);
-ASSERT a16 IS_IN x;
-a17 : IntPair;
-ASSERT a17 = (1, 7);
-ASSERT a17 IS_IN x;
-a18 : IntPair;
-ASSERT a18 = (1, 8);
-ASSERT a18 IS_IN x;
-a19 : IntPair;
-ASSERT a19 = (1, 9);
-ASSERT a19 IS_IN x;
-a110 : IntPair;
-ASSERT a110 = (1, 10);
-ASSERT a110 IS_IN x;
-a21 : IntPair;
-ASSERT a21 = (2, 1);
-ASSERT a21 IS_IN x;
-a22 : IntPair;
-ASSERT a22 = (2, 2);
-ASSERT a22 IS_IN x;
-a23 : IntPair;
-ASSERT a23 = (2, 3);
-ASSERT a23 IS_IN x;
-a24 : IntPair;
-ASSERT a24 = (2, 4);
-ASSERT a24 IS_IN x;
-a25 : IntPair;
-ASSERT a25 = (2, 5);
-ASSERT a25 IS_IN x;
-a26 : IntPair;
-ASSERT a26 = (2, 6);
-ASSERT a26 IS_IN x;
-a27 : IntPair;
-ASSERT a27 = (2, 7);
-ASSERT a27 IS_IN x;
-a28 : IntPair;
-ASSERT a28 = (2, 8);
-ASSERT a28 IS_IN x;
-a29 : IntPair;
-ASSERT a29 = (2, 9);
-ASSERT a29 IS_IN x;
-a210 : IntPair;
-ASSERT a210 = (2, 10);
-ASSERT a210 IS_IN x;
-a31 : IntPair;
-ASSERT a31 = (3, 1);
-ASSERT a31 IS_IN x;
-a32 : IntPair;
-ASSERT a32 = (3, 2);
-ASSERT a32 IS_IN x;
-a33 : IntPair;
-ASSERT a33 = (3, 3);
-ASSERT a33 IS_IN x;
-a34 : IntPair;
-ASSERT a34 = (3, 4);
-ASSERT a34 IS_IN x;
-a35 : IntPair;
-ASSERT a35 = (3, 5);
-ASSERT a35 IS_IN x;
-a36 : IntPair;
-ASSERT a36 = (3, 6);
-ASSERT a36 IS_IN x;
-a37 : IntPair;
-ASSERT a37 = (3, 7);
-ASSERT a37 IS_IN x;
-a38 : IntPair;
-ASSERT a38 = (3, 8);
-ASSERT a38 IS_IN x;
-a39 : IntPair;
-ASSERT a39 = (3, 9);
-ASSERT a39 IS_IN x;
-a310 : IntPair;
-ASSERT a310 = (3, 10);
-ASSERT a310 IS_IN x;
-a41 : IntPair;
-ASSERT a41 = (4, 1);
-ASSERT a41 IS_IN x;
-a42 : IntPair;
-ASSERT a42 = (4, 2);
-ASSERT a42 IS_IN x;
-a43 : IntPair;
-ASSERT a43 = (4, 3);
-ASSERT a43 IS_IN x;
-a44 : IntPair;
-ASSERT a44 = (4, 4);
-ASSERT a44 IS_IN x;
-a45 : IntPair;
-ASSERT a45 = (4, 5);
-ASSERT a45 IS_IN x;
-a46 : IntPair;
-ASSERT a46 = (4, 6);
-ASSERT a46 IS_IN x;
-a47 : IntPair;
-ASSERT a47 = (4, 7);
-ASSERT a47 IS_IN x;
-a48 : IntPair;
-ASSERT a48 = (4, 8);
-ASSERT a48 IS_IN x;
-a49 : IntPair;
-ASSERT a49 = (4, 9);
-ASSERT a49 IS_IN x;
-a410 : IntPair;
-ASSERT a410 = (4, 10);
-ASSERT a410 IS_IN x;
-a51 : IntPair;
-ASSERT a51 = (5, 1);
-ASSERT a51 IS_IN x;
-a52 : IntPair;
-ASSERT a52 = (5, 2);
-ASSERT a52 IS_IN x;
-a53 : IntPair;
-ASSERT a53 = (5, 3);
-ASSERT a53 IS_IN x;
-a54 : IntPair;
-ASSERT a54 = (5, 4);
-ASSERT a54 IS_IN x;
-a55 : IntPair;
-ASSERT a55 = (5, 5);
-ASSERT a55 IS_IN x;
-a56 : IntPair;
-ASSERT a56 = (5, 6);
-ASSERT a56 IS_IN x;
-a57 : IntPair;
-ASSERT a57 = (5, 7);
-ASSERT a57 IS_IN x;
-a58 : IntPair;
-ASSERT a58 = (5, 8);
-ASSERT a58 IS_IN x;
-a59 : IntPair;
-ASSERT a59 = (5, 9);
-ASSERT a59 IS_IN x;
-a510 : IntPair;
-ASSERT a510 = (5, 10);
-ASSERT a510 IS_IN x;
-a61 : IntPair;
-ASSERT a61 = (6, 1);
-ASSERT a61 IS_IN x;
-a62 : IntPair;
-ASSERT a62 = (6, 2);
-ASSERT a62 IS_IN x;
-a63 : IntPair;
-ASSERT a63 = (6, 3);
-ASSERT a63 IS_IN x;
-a64 : IntPair;
-ASSERT a64 = (6, 4);
-ASSERT a64 IS_IN x;
-a65 : IntPair;
-ASSERT a65 = (6, 5);
-ASSERT a65 IS_IN x;
-a66 : IntPair;
-ASSERT a66 = (6, 6);
-ASSERT a66 IS_IN x;
-a67 : IntPair;
-ASSERT a67 = (6, 7);
-ASSERT a67 IS_IN x;
-a68 : IntPair;
-ASSERT a68 = (6, 8);
-ASSERT a68 IS_IN x;
-a69 : IntPair;
-ASSERT a69 = (6, 9);
-ASSERT a69 IS_IN x;
-a610 : IntPair;
-ASSERT a610 = (6, 10);
-ASSERT a610 IS_IN x;
-a71 : IntPair;
-ASSERT a71 = (7, 1);
-ASSERT a71 IS_IN x;
-a72 : IntPair;
-ASSERT a72 = (7, 2);
-ASSERT a72 IS_IN x;
-a73 : IntPair;
-ASSERT a73 = (7, 3);
-ASSERT a73 IS_IN x;
-a74 : IntPair;
-ASSERT a74 = (7, 4);
-ASSERT a74 IS_IN x;
-a75 : IntPair;
-ASSERT a75 = (7, 5);
-ASSERT a75 IS_IN x;
-a76 : IntPair;
-ASSERT a76 = (7, 6);
-ASSERT a76 IS_IN x;
-a77 : IntPair;
-ASSERT a77 = (7, 7);
-ASSERT a77 IS_IN x;
-a78 : IntPair;
-ASSERT a78 = (7, 8);
-ASSERT a78 IS_IN x;
-a79 : IntPair;
-ASSERT a79 = (7, 9);
-ASSERT a79 IS_IN x;
-a710 : IntPair;
-ASSERT a710 = (7, 10);
-ASSERT a710 IS_IN x;
-a81 : IntPair;
-ASSERT a81 = (8, 1);
-ASSERT a81 IS_IN x;
-a82 : IntPair;
-ASSERT a82 = (8, 2);
-ASSERT a82 IS_IN x;
-a83 : IntPair;
-ASSERT a83 = (8, 3);
-ASSERT a83 IS_IN x;
-a84 : IntPair;
-ASSERT a84 = (8, 4);
-ASSERT a84 IS_IN x;
-a85 : IntPair;
-ASSERT a85 = (8, 5);
-ASSERT a85 IS_IN x;
-a86 : IntPair;
-ASSERT a86 = (8, 6);
-ASSERT a86 IS_IN x;
-a87 : IntPair;
-ASSERT a87 = (8, 7);
-ASSERT a87 IS_IN x;
-a88 : IntPair;
-ASSERT a88 = (8, 8);
-ASSERT a88 IS_IN x;
-a89 : IntPair;
-ASSERT a89 = (8, 9);
-ASSERT a89 IS_IN x;
-a810 : IntPair;
-ASSERT a810 = (8, 10);
-ASSERT a810 IS_IN x;
-a91 : IntPair;
-ASSERT a91 = (9, 1);
-ASSERT a91 IS_IN x;
-a92 : IntPair;
-ASSERT a92 = (9, 2);
-ASSERT a92 IS_IN x;
-a93 : IntPair;
-ASSERT a93 = (9, 3);
-ASSERT a93 IS_IN x;
-a94 : IntPair;
-ASSERT a94 = (9, 4);
-ASSERT a94 IS_IN x;
-a95 : IntPair;
-ASSERT a95 = (9, 5);
-ASSERT a95 IS_IN x;
-a96 : IntPair;
-ASSERT a96 = (9, 6);
-ASSERT a96 IS_IN x;
-a97 : IntPair;
-ASSERT a97 = (9, 7);
-ASSERT a97 IS_IN x;
-a98 : IntPair;
-ASSERT a98 = (9, 8);
-ASSERT a98 IS_IN x;
-a99 : IntPair;
-ASSERT a99 = (9, 9);
-ASSERT a99 IS_IN x;
-a910 : IntPair;
-ASSERT a910 = (9, 10);
-ASSERT a910 IS_IN x;
-a101 : IntPair;
-ASSERT a101 = (10, 1);
-ASSERT a101 IS_IN x;
-a102 : IntPair;
-ASSERT a102 = (10, 2);
-ASSERT a102 IS_IN x;
-a103 : IntPair;
-ASSERT a103 = (10, 3);
-ASSERT a103 IS_IN x;
-a104 : IntPair;
-ASSERT a104 = (10, 4);
-ASSERT a104 IS_IN x;
-a105 : IntPair;
-ASSERT a105 = (10, 5);
-ASSERT a105 IS_IN x;
-a106 : IntPair;
-ASSERT a106 = (10, 6);
-ASSERT a106 IS_IN x;
-a107 : IntPair;
-ASSERT a107 = (10, 7);
-ASSERT a107 IS_IN x;
-a108 : IntPair;
-ASSERT a108 = (10, 8);
-ASSERT a108 IS_IN x;
-a109 : IntPair;
-ASSERT a109 = (10, 9);
-ASSERT a109 IS_IN x;
-a1010 : IntPair;
-ASSERT a1010 = (10, 10);
-ASSERT a1010 IS_IN x;
-b11 : IntPair;
-ASSERT b11 = (1, 1);
-ASSERT b11 IS_IN y;
-b12 : IntPair;
-ASSERT b12 = (1, 2);
-ASSERT b12 IS_IN y;
-b13 : IntPair;
-ASSERT b13 = (1, 3);
-ASSERT b13 IS_IN y;
-b14 : IntPair;
-ASSERT b14 = (1, 4);
-ASSERT b14 IS_IN y;
-b15 : IntPair;
-ASSERT b15 = (1, 5);
-ASSERT b15 IS_IN y;
-b16 : IntPair;
-ASSERT b16 = (1, 6);
-ASSERT b16 IS_IN y;
-b17 : IntPair;
-ASSERT b17 = (1, 7);
-ASSERT b17 IS_IN y;
-b18 : IntPair;
-ASSERT b18 = (1, 8);
-ASSERT b18 IS_IN y;
-b19 : IntPair;
-ASSERT b19 = (1, 9);
-ASSERT b19 IS_IN y;
-b110 : IntPair;
-ASSERT b110 = (1, 10);
-ASSERT b110 IS_IN y;
-b21 : IntPair;
-ASSERT b21 = (2, 1);
-ASSERT b21 IS_IN y;
-b22 : IntPair;
-ASSERT b22 = (2, 2);
-ASSERT b22 IS_IN y;
-b23 : IntPair;
-ASSERT b23 = (2, 3);
-ASSERT b23 IS_IN y;
-b24 : IntPair;
-ASSERT b24 = (2, 4);
-ASSERT b24 IS_IN y;
-b25 : IntPair;
-ASSERT b25 = (2, 5);
-ASSERT b25 IS_IN y;
-b26 : IntPair;
-ASSERT b26 = (2, 6);
-ASSERT b26 IS_IN y;
-b27 : IntPair;
-ASSERT b27 = (2, 7);
-ASSERT b27 IS_IN y;
-b28 : IntPair;
-ASSERT b28 = (2, 8);
-ASSERT b28 IS_IN y;
-b29 : IntPair;
-ASSERT b29 = (2, 9);
-ASSERT b29 IS_IN y;
-b210 : IntPair;
-ASSERT b210 = (2, 10);
-ASSERT b210 IS_IN y;
-b31 : IntPair;
-ASSERT b31 = (3, 1);
-ASSERT b31 IS_IN y;
-b32 : IntPair;
-ASSERT b32 = (3, 2);
-ASSERT b32 IS_IN y;
-b33 : IntPair;
-ASSERT b33 = (3, 3);
-ASSERT b33 IS_IN y;
-b34 : IntPair;
-ASSERT b34 = (3, 4);
-ASSERT b34 IS_IN y;
-b35 : IntPair;
-ASSERT b35 = (3, 5);
-ASSERT b35 IS_IN y;
-b36 : IntPair;
-ASSERT b36 = (3, 6);
-ASSERT b36 IS_IN y;
-b37 : IntPair;
-ASSERT b37 = (3, 7);
-ASSERT b37 IS_IN y;
-b38 : IntPair;
-ASSERT b38 = (3, 8);
-ASSERT b38 IS_IN y;
-b39 : IntPair;
-ASSERT b39 = (3, 9);
-ASSERT b39 IS_IN y;
-b310 : IntPair;
-ASSERT b310 = (3, 10);
-ASSERT b310 IS_IN y;
-b41 : IntPair;
-ASSERT b41 = (4, 1);
-ASSERT b41 IS_IN y;
-b42 : IntPair;
-ASSERT b42 = (4, 2);
-ASSERT b42 IS_IN y;
-b43 : IntPair;
-ASSERT b43 = (4, 3);
-ASSERT b43 IS_IN y;
-b44 : IntPair;
-ASSERT b44 = (4, 4);
-ASSERT b44 IS_IN y;
-b45 : IntPair;
-ASSERT b45 = (4, 5);
-ASSERT b45 IS_IN y;
-b46 : IntPair;
-ASSERT b46 = (4, 6);
-ASSERT b46 IS_IN y;
-b47 : IntPair;
-ASSERT b47 = (4, 7);
-ASSERT b47 IS_IN y;
-b48 : IntPair;
-ASSERT b48 = (4, 8);
-ASSERT b48 IS_IN y;
-b49 : IntPair;
-ASSERT b49 = (4, 9);
-ASSERT b49 IS_IN y;
-b410 : IntPair;
-ASSERT b410 = (4, 10);
-ASSERT b410 IS_IN y;
-b51 : IntPair;
-ASSERT b51 = (5, 1);
-ASSERT b51 IS_IN y;
-b52 : IntPair;
-ASSERT b52 = (5, 2);
-ASSERT b52 IS_IN y;
-b53 : IntPair;
-ASSERT b53 = (5, 3);
-ASSERT b53 IS_IN y;
-b54 : IntPair;
-ASSERT b54 = (5, 4);
-ASSERT b54 IS_IN y;
-b55 : IntPair;
-ASSERT b55 = (5, 5);
-ASSERT b55 IS_IN y;
-b56 : IntPair;
-ASSERT b56 = (5, 6);
-ASSERT b56 IS_IN y;
-b57 : IntPair;
-ASSERT b57 = (5, 7);
-ASSERT b57 IS_IN y;
-b58 : IntPair;
-ASSERT b58 = (5, 8);
-ASSERT b58 IS_IN y;
-b59 : IntPair;
-ASSERT b59 = (5, 9);
-ASSERT b59 IS_IN y;
-b510 : IntPair;
-ASSERT b510 = (5, 10);
-ASSERT b510 IS_IN y;
-b61 : IntPair;
-ASSERT b61 = (6, 1);
-ASSERT b61 IS_IN y;
-b62 : IntPair;
-ASSERT b62 = (6, 2);
-ASSERT b62 IS_IN y;
-b63 : IntPair;
-ASSERT b63 = (6, 3);
-ASSERT b63 IS_IN y;
-b64 : IntPair;
-ASSERT b64 = (6, 4);
-ASSERT b64 IS_IN y;
-b65 : IntPair;
-ASSERT b65 = (6, 5);
-ASSERT b65 IS_IN y;
-b66 : IntPair;
-ASSERT b66 = (6, 6);
-ASSERT b66 IS_IN y;
-b67 : IntPair;
-ASSERT b67 = (6, 7);
-ASSERT b67 IS_IN y;
-b68 : IntPair;
-ASSERT b68 = (6, 8);
-ASSERT b68 IS_IN y;
-b69 : IntPair;
-ASSERT b69 = (6, 9);
-ASSERT b69 IS_IN y;
-b610 : IntPair;
-ASSERT b610 = (6, 10);
-ASSERT b610 IS_IN y;
-b71 : IntPair;
-ASSERT b71 = (7, 1);
-ASSERT b71 IS_IN y;
-b72 : IntPair;
-ASSERT b72 = (7, 2);
-ASSERT b72 IS_IN y;
-b73 : IntPair;
-ASSERT b73 = (7, 3);
-ASSERT b73 IS_IN y;
-b74 : IntPair;
-ASSERT b74 = (7, 4);
-ASSERT b74 IS_IN y;
-b75 : IntPair;
-ASSERT b75 = (7, 5);
-ASSERT b75 IS_IN y;
-b76 : IntPair;
-ASSERT b76 = (7, 6);
-ASSERT b76 IS_IN y;
-b77 : IntPair;
-ASSERT b77 = (7, 7);
-ASSERT b77 IS_IN y;
-b78 : IntPair;
-ASSERT b78 = (7, 8);
-ASSERT b78 IS_IN y;
-b79 : IntPair;
-ASSERT b79 = (7, 9);
-ASSERT b79 IS_IN y;
-b710 : IntPair;
-ASSERT b710 = (7, 10);
-ASSERT b710 IS_IN y;
-b81 : IntPair;
-ASSERT b81 = (8, 1);
-ASSERT b81 IS_IN y;
-b82 : IntPair;
-ASSERT b82 = (8, 2);
-ASSERT b82 IS_IN y;
-b83 : IntPair;
-ASSERT b83 = (8, 3);
-ASSERT b83 IS_IN y;
-b84 : IntPair;
-ASSERT b84 = (8, 4);
-ASSERT b84 IS_IN y;
-b85 : IntPair;
-ASSERT b85 = (8, 5);
-ASSERT b85 IS_IN y;
-b86 : IntPair;
-ASSERT b86 = (8, 6);
-ASSERT b86 IS_IN y;
-b87 : IntPair;
-ASSERT b87 = (8, 7);
-ASSERT b87 IS_IN y;
-b88 : IntPair;
-ASSERT b88 = (8, 8);
-ASSERT b88 IS_IN y;
-b89 : IntPair;
-ASSERT b89 = (8, 9);
-ASSERT b89 IS_IN y;
-b810 : IntPair;
-ASSERT b810 = (8, 10);
-ASSERT b810 IS_IN y;
-b91 : IntPair;
-ASSERT b91 = (9, 1);
-ASSERT b91 IS_IN y;
-b92 : IntPair;
-ASSERT b92 = (9, 2);
-ASSERT b92 IS_IN y;
-b93 : IntPair;
-ASSERT b93 = (9, 3);
-ASSERT b93 IS_IN y;
-b94 : IntPair;
-ASSERT b94 = (9, 4);
-ASSERT b94 IS_IN y;
-b95 : IntPair;
-ASSERT b95 = (9, 5);
-ASSERT b95 IS_IN y;
-b96 : IntPair;
-ASSERT b96 = (9, 6);
-ASSERT b96 IS_IN y;
-b97 : IntPair;
-ASSERT b97 = (9, 7);
-ASSERT b97 IS_IN y;
-b98 : IntPair;
-ASSERT b98 = (9, 8);
-ASSERT b98 IS_IN y;
-b99 : IntPair;
-ASSERT b99 = (9, 9);
-ASSERT b99 IS_IN y;
-b910 : IntPair;
-ASSERT b910 = (9, 10);
-ASSERT b910 IS_IN y;
-b101 : IntPair;
-ASSERT b101 = (10, 1);
-ASSERT b101 IS_IN y;
-b102 : IntPair;
-ASSERT b102 = (10, 2);
-ASSERT b102 IS_IN y;
-b103 : IntPair;
-ASSERT b103 = (10, 3);
-ASSERT b103 IS_IN y;
-b104 : IntPair;
-ASSERT b104 = (10, 4);
-ASSERT b104 IS_IN y;
-b105 : IntPair;
-ASSERT b105 = (10, 5);
-ASSERT b105 IS_IN y;
-b106 : IntPair;
-ASSERT b106 = (10, 6);
-ASSERT b106 IS_IN y;
-b107 : IntPair;
-ASSERT b107 = (10, 7);
-ASSERT b107 IS_IN y;
-b108 : IntPair;
-ASSERT b108 = (10, 8);
-ASSERT b108 IS_IN y;
-b109 : IntPair;
-ASSERT b109 = (10, 9);
-ASSERT b109 IS_IN y;
-b1010 : IntPair;
-ASSERT b1010 = (10, 10);
-ASSERT b1010 IS_IN y;
-
-ASSERT (1, 9) IS_IN z;
-
-a : IntPair;
-ASSERT a = (9,1);
-ASSERT r = ((TRANSPOSE(x) JOIN y) JOIN z);
-ASSERT NOT (a IS_IN TRANSPOSE(r));
-
-CHECKSAT;
--- /dev/null
+; EXPECT: unsat
+(set-option :incremental false)
+(set-logic ALL)
+
+(declare-fun x () (Set (Tuple Int Int)))
+(declare-fun y () (Set (Tuple Int Int)))
+(declare-fun z () (Set (Tuple Int Int)))
+(declare-fun r () (Set (Tuple Int Int)))
+(declare-fun a11 () (Tuple Int Int))
+(assert (= a11 (mkTuple 1 1)))
+(assert (member a11 x))
+(declare-fun a12 () (Tuple Int Int))
+(assert (= a12 (mkTuple 1 2)))
+(assert (member a12 x))
+(declare-fun a13 () (Tuple Int Int))
+(assert (= a13 (mkTuple 1 3)))
+(assert (member a13 x))
+(declare-fun a14 () (Tuple Int Int))
+(assert (= a14 (mkTuple 1 4)))
+(assert (member a14 x))
+(declare-fun a15 () (Tuple Int Int))
+(assert (= a15 (mkTuple 1 5)))
+(assert (member a15 x))
+(declare-fun a16 () (Tuple Int Int))
+(assert (= a16 (mkTuple 1 6)))
+(assert (member a16 x))
+(declare-fun a17 () (Tuple Int Int))
+(assert (= a17 (mkTuple 1 7)))
+(assert (member a17 x))
+(declare-fun a18 () (Tuple Int Int))
+(assert (= a18 (mkTuple 1 8)))
+(assert (member a18 x))
+(declare-fun a19 () (Tuple Int Int))
+(assert (= a19 (mkTuple 1 9)))
+(assert (member a19 x))
+(declare-fun a110 () (Tuple Int Int))
+(assert (= a110 (mkTuple 1 10)))
+(assert (member a110 x))
+(declare-fun a21 () (Tuple Int Int))
+(assert (= a21 (mkTuple 2 1)))
+(assert (member a21 x))
+(declare-fun a22 () (Tuple Int Int))
+(assert (= a22 (mkTuple 2 2)))
+(assert (member a22 x))
+(declare-fun a23 () (Tuple Int Int))
+(assert (= a23 (mkTuple 2 3)))
+(assert (member a23 x))
+(declare-fun a24 () (Tuple Int Int))
+(assert (= a24 (mkTuple 2 4)))
+(assert (member a24 x))
+(declare-fun a25 () (Tuple Int Int))
+(assert (= a25 (mkTuple 2 5)))
+(assert (member a25 x))
+(declare-fun a26 () (Tuple Int Int))
+(assert (= a26 (mkTuple 2 6)))
+(assert (member a26 x))
+(declare-fun a27 () (Tuple Int Int))
+(assert (= a27 (mkTuple 2 7)))
+(assert (member a27 x))
+(declare-fun a28 () (Tuple Int Int))
+(assert (= a28 (mkTuple 2 8)))
+(assert (member a28 x))
+(declare-fun a29 () (Tuple Int Int))
+(assert (= a29 (mkTuple 2 9)))
+(assert (member a29 x))
+(declare-fun a210 () (Tuple Int Int))
+(assert (= a210 (mkTuple 2 10)))
+(assert (member a210 x))
+(declare-fun a31 () (Tuple Int Int))
+(assert (= a31 (mkTuple 3 1)))
+(assert (member a31 x))
+(declare-fun a32 () (Tuple Int Int))
+(assert (= a32 (mkTuple 3 2)))
+(assert (member a32 x))
+(declare-fun a33 () (Tuple Int Int))
+(assert (= a33 (mkTuple 3 3)))
+(assert (member a33 x))
+(declare-fun a34 () (Tuple Int Int))
+(assert (= a34 (mkTuple 3 4)))
+(assert (member a34 x))
+(declare-fun a35 () (Tuple Int Int))
+(assert (= a35 (mkTuple 3 5)))
+(assert (member a35 x))
+(declare-fun a36 () (Tuple Int Int))
+(assert (= a36 (mkTuple 3 6)))
+(assert (member a36 x))
+(declare-fun a37 () (Tuple Int Int))
+(assert (= a37 (mkTuple 3 7)))
+(assert (member a37 x))
+(declare-fun a38 () (Tuple Int Int))
+(assert (= a38 (mkTuple 3 8)))
+(assert (member a38 x))
+(declare-fun a39 () (Tuple Int Int))
+(assert (= a39 (mkTuple 3 9)))
+(assert (member a39 x))
+(declare-fun a310 () (Tuple Int Int))
+(assert (= a310 (mkTuple 3 10)))
+(assert (member a310 x))
+(declare-fun a41 () (Tuple Int Int))
+(assert (= a41 (mkTuple 4 1)))
+(assert (member a41 x))
+(declare-fun a42 () (Tuple Int Int))
+(assert (= a42 (mkTuple 4 2)))
+(assert (member a42 x))
+(declare-fun a43 () (Tuple Int Int))
+(assert (= a43 (mkTuple 4 3)))
+(assert (member a43 x))
+(declare-fun a44 () (Tuple Int Int))
+(assert (= a44 (mkTuple 4 4)))
+(assert (member a44 x))
+(declare-fun a45 () (Tuple Int Int))
+(assert (= a45 (mkTuple 4 5)))
+(assert (member a45 x))
+(declare-fun a46 () (Tuple Int Int))
+(assert (= a46 (mkTuple 4 6)))
+(assert (member a46 x))
+(declare-fun a47 () (Tuple Int Int))
+(assert (= a47 (mkTuple 4 7)))
+(assert (member a47 x))
+(declare-fun a48 () (Tuple Int Int))
+(assert (= a48 (mkTuple 4 8)))
+(assert (member a48 x))
+(declare-fun a49 () (Tuple Int Int))
+(assert (= a49 (mkTuple 4 9)))
+(assert (member a49 x))
+(declare-fun a410 () (Tuple Int Int))
+(assert (= a410 (mkTuple 4 10)))
+(assert (member a410 x))
+(declare-fun a51 () (Tuple Int Int))
+(assert (= a51 (mkTuple 5 1)))
+(assert (member a51 x))
+(declare-fun a52 () (Tuple Int Int))
+(assert (= a52 (mkTuple 5 2)))
+(assert (member a52 x))
+(declare-fun a53 () (Tuple Int Int))
+(assert (= a53 (mkTuple 5 3)))
+(assert (member a53 x))
+(declare-fun a54 () (Tuple Int Int))
+(assert (= a54 (mkTuple 5 4)))
+(assert (member a54 x))
+(declare-fun a55 () (Tuple Int Int))
+(assert (= a55 (mkTuple 5 5)))
+(assert (member a55 x))
+(declare-fun a56 () (Tuple Int Int))
+(assert (= a56 (mkTuple 5 6)))
+(assert (member a56 x))
+(declare-fun a57 () (Tuple Int Int))
+(assert (= a57 (mkTuple 5 7)))
+(assert (member a57 x))
+(declare-fun a58 () (Tuple Int Int))
+(assert (= a58 (mkTuple 5 8)))
+(assert (member a58 x))
+(declare-fun a59 () (Tuple Int Int))
+(assert (= a59 (mkTuple 5 9)))
+(assert (member a59 x))
+(declare-fun a510 () (Tuple Int Int))
+(assert (= a510 (mkTuple 5 10)))
+(assert (member a510 x))
+(declare-fun a61 () (Tuple Int Int))
+(assert (= a61 (mkTuple 6 1)))
+(assert (member a61 x))
+(declare-fun a62 () (Tuple Int Int))
+(assert (= a62 (mkTuple 6 2)))
+(assert (member a62 x))
+(declare-fun a63 () (Tuple Int Int))
+(assert (= a63 (mkTuple 6 3)))
+(assert (member a63 x))
+(declare-fun a64 () (Tuple Int Int))
+(assert (= a64 (mkTuple 6 4)))
+(assert (member a64 x))
+(declare-fun a65 () (Tuple Int Int))
+(assert (= a65 (mkTuple 6 5)))
+(assert (member a65 x))
+(declare-fun a66 () (Tuple Int Int))
+(assert (= a66 (mkTuple 6 6)))
+(assert (member a66 x))
+(declare-fun a67 () (Tuple Int Int))
+(assert (= a67 (mkTuple 6 7)))
+(assert (member a67 x))
+(declare-fun a68 () (Tuple Int Int))
+(assert (= a68 (mkTuple 6 8)))
+(assert (member a68 x))
+(declare-fun a69 () (Tuple Int Int))
+(assert (= a69 (mkTuple 6 9)))
+(assert (member a69 x))
+(declare-fun a610 () (Tuple Int Int))
+(assert (= a610 (mkTuple 6 10)))
+(assert (member a610 x))
+(declare-fun a71 () (Tuple Int Int))
+(assert (= a71 (mkTuple 7 1)))
+(assert (member a71 x))
+(declare-fun a72 () (Tuple Int Int))
+(assert (= a72 (mkTuple 7 2)))
+(assert (member a72 x))
+(declare-fun a73 () (Tuple Int Int))
+(assert (= a73 (mkTuple 7 3)))
+(assert (member a73 x))
+(declare-fun a74 () (Tuple Int Int))
+(assert (= a74 (mkTuple 7 4)))
+(assert (member a74 x))
+(declare-fun a75 () (Tuple Int Int))
+(assert (= a75 (mkTuple 7 5)))
+(assert (member a75 x))
+(declare-fun a76 () (Tuple Int Int))
+(assert (= a76 (mkTuple 7 6)))
+(assert (member a76 x))
+(declare-fun a77 () (Tuple Int Int))
+(assert (= a77 (mkTuple 7 7)))
+(assert (member a77 x))
+(declare-fun a78 () (Tuple Int Int))
+(assert (= a78 (mkTuple 7 8)))
+(assert (member a78 x))
+(declare-fun a79 () (Tuple Int Int))
+(assert (= a79 (mkTuple 7 9)))
+(assert (member a79 x))
+(declare-fun a710 () (Tuple Int Int))
+(assert (= a710 (mkTuple 7 10)))
+(assert (member a710 x))
+(declare-fun a81 () (Tuple Int Int))
+(assert (= a81 (mkTuple 8 1)))
+(assert (member a81 x))
+(declare-fun a82 () (Tuple Int Int))
+(assert (= a82 (mkTuple 8 2)))
+(assert (member a82 x))
+(declare-fun a83 () (Tuple Int Int))
+(assert (= a83 (mkTuple 8 3)))
+(assert (member a83 x))
+(declare-fun a84 () (Tuple Int Int))
+(assert (= a84 (mkTuple 8 4)))
+(assert (member a84 x))
+(declare-fun a85 () (Tuple Int Int))
+(assert (= a85 (mkTuple 8 5)))
+(assert (member a85 x))
+(declare-fun a86 () (Tuple Int Int))
+(assert (= a86 (mkTuple 8 6)))
+(assert (member a86 x))
+(declare-fun a87 () (Tuple Int Int))
+(assert (= a87 (mkTuple 8 7)))
+(assert (member a87 x))
+(declare-fun a88 () (Tuple Int Int))
+(assert (= a88 (mkTuple 8 8)))
+(assert (member a88 x))
+(declare-fun a89 () (Tuple Int Int))
+(assert (= a89 (mkTuple 8 9)))
+(assert (member a89 x))
+(declare-fun a810 () (Tuple Int Int))
+(assert (= a810 (mkTuple 8 10)))
+(assert (member a810 x))
+(declare-fun a91 () (Tuple Int Int))
+(assert (= a91 (mkTuple 9 1)))
+(assert (member a91 x))
+(declare-fun a92 () (Tuple Int Int))
+(assert (= a92 (mkTuple 9 2)))
+(assert (member a92 x))
+(declare-fun a93 () (Tuple Int Int))
+(assert (= a93 (mkTuple 9 3)))
+(assert (member a93 x))
+(declare-fun a94 () (Tuple Int Int))
+(assert (= a94 (mkTuple 9 4)))
+(assert (member a94 x))
+(declare-fun a95 () (Tuple Int Int))
+(assert (= a95 (mkTuple 9 5)))
+(assert (member a95 x))
+(declare-fun a96 () (Tuple Int Int))
+(assert (= a96 (mkTuple 9 6)))
+(assert (member a96 x))
+(declare-fun a97 () (Tuple Int Int))
+(assert (= a97 (mkTuple 9 7)))
+(assert (member a97 x))
+(declare-fun a98 () (Tuple Int Int))
+(assert (= a98 (mkTuple 9 8)))
+(assert (member a98 x))
+(declare-fun a99 () (Tuple Int Int))
+(assert (= a99 (mkTuple 9 9)))
+(assert (member a99 x))
+(declare-fun a910 () (Tuple Int Int))
+(assert (= a910 (mkTuple 9 10)))
+(assert (member a910 x))
+(declare-fun a101 () (Tuple Int Int))
+(assert (= a101 (mkTuple 10 1)))
+(assert (member a101 x))
+(declare-fun a102 () (Tuple Int Int))
+(assert (= a102 (mkTuple 10 2)))
+(assert (member a102 x))
+(declare-fun a103 () (Tuple Int Int))
+(assert (= a103 (mkTuple 10 3)))
+(assert (member a103 x))
+(declare-fun a104 () (Tuple Int Int))
+(assert (= a104 (mkTuple 10 4)))
+(assert (member a104 x))
+(declare-fun a105 () (Tuple Int Int))
+(assert (= a105 (mkTuple 10 5)))
+(assert (member a105 x))
+(declare-fun a106 () (Tuple Int Int))
+(assert (= a106 (mkTuple 10 6)))
+(assert (member a106 x))
+(declare-fun a107 () (Tuple Int Int))
+(assert (= a107 (mkTuple 10 7)))
+(assert (member a107 x))
+(declare-fun a108 () (Tuple Int Int))
+(assert (= a108 (mkTuple 10 8)))
+(assert (member a108 x))
+(declare-fun a109 () (Tuple Int Int))
+(assert (= a109 (mkTuple 10 9)))
+(assert (member a109 x))
+(declare-fun a1010 () (Tuple Int Int))
+(assert (= a1010 (mkTuple 10 10)))
+(assert (member a1010 x))
+(declare-fun b11 () (Tuple Int Int))
+(assert (= b11 (mkTuple 1 1)))
+(assert (member b11 y))
+(declare-fun b12 () (Tuple Int Int))
+(assert (= b12 (mkTuple 1 2)))
+(assert (member b12 y))
+(declare-fun b13 () (Tuple Int Int))
+(assert (= b13 (mkTuple 1 3)))
+(assert (member b13 y))
+(declare-fun b14 () (Tuple Int Int))
+(assert (= b14 (mkTuple 1 4)))
+(assert (member b14 y))
+(declare-fun b15 () (Tuple Int Int))
+(assert (= b15 (mkTuple 1 5)))
+(assert (member b15 y))
+(declare-fun b16 () (Tuple Int Int))
+(assert (= b16 (mkTuple 1 6)))
+(assert (member b16 y))
+(declare-fun b17 () (Tuple Int Int))
+(assert (= b17 (mkTuple 1 7)))
+(assert (member b17 y))
+(declare-fun b18 () (Tuple Int Int))
+(assert (= b18 (mkTuple 1 8)))
+(assert (member b18 y))
+(declare-fun b19 () (Tuple Int Int))
+(assert (= b19 (mkTuple 1 9)))
+(assert (member b19 y))
+(declare-fun b110 () (Tuple Int Int))
+(assert (= b110 (mkTuple 1 10)))
+(assert (member b110 y))
+(declare-fun b21 () (Tuple Int Int))
+(assert (= b21 (mkTuple 2 1)))
+(assert (member b21 y))
+(declare-fun b22 () (Tuple Int Int))
+(assert (= b22 (mkTuple 2 2)))
+(assert (member b22 y))
+(declare-fun b23 () (Tuple Int Int))
+(assert (= b23 (mkTuple 2 3)))
+(assert (member b23 y))
+(declare-fun b24 () (Tuple Int Int))
+(assert (= b24 (mkTuple 2 4)))
+(assert (member b24 y))
+(declare-fun b25 () (Tuple Int Int))
+(assert (= b25 (mkTuple 2 5)))
+(assert (member b25 y))
+(declare-fun b26 () (Tuple Int Int))
+(assert (= b26 (mkTuple 2 6)))
+(assert (member b26 y))
+(declare-fun b27 () (Tuple Int Int))
+(assert (= b27 (mkTuple 2 7)))
+(assert (member b27 y))
+(declare-fun b28 () (Tuple Int Int))
+(assert (= b28 (mkTuple 2 8)))
+(assert (member b28 y))
+(declare-fun b29 () (Tuple Int Int))
+(assert (= b29 (mkTuple 2 9)))
+(assert (member b29 y))
+(declare-fun b210 () (Tuple Int Int))
+(assert (= b210 (mkTuple 2 10)))
+(assert (member b210 y))
+(declare-fun b31 () (Tuple Int Int))
+(assert (= b31 (mkTuple 3 1)))
+(assert (member b31 y))
+(declare-fun b32 () (Tuple Int Int))
+(assert (= b32 (mkTuple 3 2)))
+(assert (member b32 y))
+(declare-fun b33 () (Tuple Int Int))
+(assert (= b33 (mkTuple 3 3)))
+(assert (member b33 y))
+(declare-fun b34 () (Tuple Int Int))
+(assert (= b34 (mkTuple 3 4)))
+(assert (member b34 y))
+(declare-fun b35 () (Tuple Int Int))
+(assert (= b35 (mkTuple 3 5)))
+(assert (member b35 y))
+(declare-fun b36 () (Tuple Int Int))
+(assert (= b36 (mkTuple 3 6)))
+(assert (member b36 y))
+(declare-fun b37 () (Tuple Int Int))
+(assert (= b37 (mkTuple 3 7)))
+(assert (member b37 y))
+(declare-fun b38 () (Tuple Int Int))
+(assert (= b38 (mkTuple 3 8)))
+(assert (member b38 y))
+(declare-fun b39 () (Tuple Int Int))
+(assert (= b39 (mkTuple 3 9)))
+(assert (member b39 y))
+(declare-fun b310 () (Tuple Int Int))
+(assert (= b310 (mkTuple 3 10)))
+(assert (member b310 y))
+(declare-fun b41 () (Tuple Int Int))
+(assert (= b41 (mkTuple 4 1)))
+(assert (member b41 y))
+(declare-fun b42 () (Tuple Int Int))
+(assert (= b42 (mkTuple 4 2)))
+(assert (member b42 y))
+(declare-fun b43 () (Tuple Int Int))
+(assert (= b43 (mkTuple 4 3)))
+(assert (member b43 y))
+(declare-fun b44 () (Tuple Int Int))
+(assert (= b44 (mkTuple 4 4)))
+(assert (member b44 y))
+(declare-fun b45 () (Tuple Int Int))
+(assert (= b45 (mkTuple 4 5)))
+(assert (member b45 y))
+(declare-fun b46 () (Tuple Int Int))
+(assert (= b46 (mkTuple 4 6)))
+(assert (member b46 y))
+(declare-fun b47 () (Tuple Int Int))
+(assert (= b47 (mkTuple 4 7)))
+(assert (member b47 y))
+(declare-fun b48 () (Tuple Int Int))
+(assert (= b48 (mkTuple 4 8)))
+(assert (member b48 y))
+(declare-fun b49 () (Tuple Int Int))
+(assert (= b49 (mkTuple 4 9)))
+(assert (member b49 y))
+(declare-fun b410 () (Tuple Int Int))
+(assert (= b410 (mkTuple 4 10)))
+(assert (member b410 y))
+(declare-fun b51 () (Tuple Int Int))
+(assert (= b51 (mkTuple 5 1)))
+(assert (member b51 y))
+(declare-fun b52 () (Tuple Int Int))
+(assert (= b52 (mkTuple 5 2)))
+(assert (member b52 y))
+(declare-fun b53 () (Tuple Int Int))
+(assert (= b53 (mkTuple 5 3)))
+(assert (member b53 y))
+(declare-fun b54 () (Tuple Int Int))
+(assert (= b54 (mkTuple 5 4)))
+(assert (member b54 y))
+(declare-fun b55 () (Tuple Int Int))
+(assert (= b55 (mkTuple 5 5)))
+(assert (member b55 y))
+(declare-fun b56 () (Tuple Int Int))
+(assert (= b56 (mkTuple 5 6)))
+(assert (member b56 y))
+(declare-fun b57 () (Tuple Int Int))
+(assert (= b57 (mkTuple 5 7)))
+(assert (member b57 y))
+(declare-fun b58 () (Tuple Int Int))
+(assert (= b58 (mkTuple 5 8)))
+(assert (member b58 y))
+(declare-fun b59 () (Tuple Int Int))
+(assert (= b59 (mkTuple 5 9)))
+(assert (member b59 y))
+(declare-fun b510 () (Tuple Int Int))
+(assert (= b510 (mkTuple 5 10)))
+(assert (member b510 y))
+(declare-fun b61 () (Tuple Int Int))
+(assert (= b61 (mkTuple 6 1)))
+(assert (member b61 y))
+(declare-fun b62 () (Tuple Int Int))
+(assert (= b62 (mkTuple 6 2)))
+(assert (member b62 y))
+(declare-fun b63 () (Tuple Int Int))
+(assert (= b63 (mkTuple 6 3)))
+(assert (member b63 y))
+(declare-fun b64 () (Tuple Int Int))
+(assert (= b64 (mkTuple 6 4)))
+(assert (member b64 y))
+(declare-fun b65 () (Tuple Int Int))
+(assert (= b65 (mkTuple 6 5)))
+(assert (member b65 y))
+(declare-fun b66 () (Tuple Int Int))
+(assert (= b66 (mkTuple 6 6)))
+(assert (member b66 y))
+(declare-fun b67 () (Tuple Int Int))
+(assert (= b67 (mkTuple 6 7)))
+(assert (member b67 y))
+(declare-fun b68 () (Tuple Int Int))
+(assert (= b68 (mkTuple 6 8)))
+(assert (member b68 y))
+(declare-fun b69 () (Tuple Int Int))
+(assert (= b69 (mkTuple 6 9)))
+(assert (member b69 y))
+(declare-fun b610 () (Tuple Int Int))
+(assert (= b610 (mkTuple 6 10)))
+(assert (member b610 y))
+(declare-fun b71 () (Tuple Int Int))
+(assert (= b71 (mkTuple 7 1)))
+(assert (member b71 y))
+(declare-fun b72 () (Tuple Int Int))
+(assert (= b72 (mkTuple 7 2)))
+(assert (member b72 y))
+(declare-fun b73 () (Tuple Int Int))
+(assert (= b73 (mkTuple 7 3)))
+(assert (member b73 y))
+(declare-fun b74 () (Tuple Int Int))
+(assert (= b74 (mkTuple 7 4)))
+(assert (member b74 y))
+(declare-fun b75 () (Tuple Int Int))
+(assert (= b75 (mkTuple 7 5)))
+(assert (member b75 y))
+(declare-fun b76 () (Tuple Int Int))
+(assert (= b76 (mkTuple 7 6)))
+(assert (member b76 y))
+(declare-fun b77 () (Tuple Int Int))
+(assert (= b77 (mkTuple 7 7)))
+(assert (member b77 y))
+(declare-fun b78 () (Tuple Int Int))
+(assert (= b78 (mkTuple 7 8)))
+(assert (member b78 y))
+(declare-fun b79 () (Tuple Int Int))
+(assert (= b79 (mkTuple 7 9)))
+(assert (member b79 y))
+(declare-fun b710 () (Tuple Int Int))
+(assert (= b710 (mkTuple 7 10)))
+(assert (member b710 y))
+(declare-fun b81 () (Tuple Int Int))
+(assert (= b81 (mkTuple 8 1)))
+(assert (member b81 y))
+(declare-fun b82 () (Tuple Int Int))
+(assert (= b82 (mkTuple 8 2)))
+(assert (member b82 y))
+(declare-fun b83 () (Tuple Int Int))
+(assert (= b83 (mkTuple 8 3)))
+(assert (member b83 y))
+(declare-fun b84 () (Tuple Int Int))
+(assert (= b84 (mkTuple 8 4)))
+(assert (member b84 y))
+(declare-fun b85 () (Tuple Int Int))
+(assert (= b85 (mkTuple 8 5)))
+(assert (member b85 y))
+(declare-fun b86 () (Tuple Int Int))
+(assert (= b86 (mkTuple 8 6)))
+(assert (member b86 y))
+(declare-fun b87 () (Tuple Int Int))
+(assert (= b87 (mkTuple 8 7)))
+(assert (member b87 y))
+(declare-fun b88 () (Tuple Int Int))
+(assert (= b88 (mkTuple 8 8)))
+(assert (member b88 y))
+(declare-fun b89 () (Tuple Int Int))
+(assert (= b89 (mkTuple 8 9)))
+(assert (member b89 y))
+(declare-fun b810 () (Tuple Int Int))
+(assert (= b810 (mkTuple 8 10)))
+(assert (member b810 y))
+(declare-fun b91 () (Tuple Int Int))
+(assert (= b91 (mkTuple 9 1)))
+(assert (member b91 y))
+(declare-fun b92 () (Tuple Int Int))
+(assert (= b92 (mkTuple 9 2)))
+(assert (member b92 y))
+(declare-fun b93 () (Tuple Int Int))
+(assert (= b93 (mkTuple 9 3)))
+(assert (member b93 y))
+(declare-fun b94 () (Tuple Int Int))
+(assert (= b94 (mkTuple 9 4)))
+(assert (member b94 y))
+(declare-fun b95 () (Tuple Int Int))
+(assert (= b95 (mkTuple 9 5)))
+(assert (member b95 y))
+(declare-fun b96 () (Tuple Int Int))
+(assert (= b96 (mkTuple 9 6)))
+(assert (member b96 y))
+(declare-fun b97 () (Tuple Int Int))
+(assert (= b97 (mkTuple 9 7)))
+(assert (member b97 y))
+(declare-fun b98 () (Tuple Int Int))
+(assert (= b98 (mkTuple 9 8)))
+(assert (member b98 y))
+(declare-fun b99 () (Tuple Int Int))
+(assert (= b99 (mkTuple 9 9)))
+(assert (member b99 y))
+(declare-fun b910 () (Tuple Int Int))
+(assert (= b910 (mkTuple 9 10)))
+(assert (member b910 y))
+(declare-fun b101 () (Tuple Int Int))
+(assert (= b101 (mkTuple 10 1)))
+(assert (member b101 y))
+(declare-fun b102 () (Tuple Int Int))
+(assert (= b102 (mkTuple 10 2)))
+(assert (member b102 y))
+(declare-fun b103 () (Tuple Int Int))
+(assert (= b103 (mkTuple 10 3)))
+(assert (member b103 y))
+(declare-fun b104 () (Tuple Int Int))
+(assert (= b104 (mkTuple 10 4)))
+(assert (member b104 y))
+(declare-fun b105 () (Tuple Int Int))
+(assert (= b105 (mkTuple 10 5)))
+(assert (member b105 y))
+(declare-fun b106 () (Tuple Int Int))
+(assert (= b106 (mkTuple 10 6)))
+(assert (member b106 y))
+(declare-fun b107 () (Tuple Int Int))
+(assert (= b107 (mkTuple 10 7)))
+(assert (member b107 y))
+(declare-fun b108 () (Tuple Int Int))
+(assert (= b108 (mkTuple 10 8)))
+(assert (member b108 y))
+(declare-fun b109 () (Tuple Int Int))
+(assert (= b109 (mkTuple 10 9)))
+(assert (member b109 y))
+(declare-fun b1010 () (Tuple Int Int))
+(assert (= b1010 (mkTuple 10 10)))
+(assert (member b1010 y))
+(assert (member (mkTuple 1 9) z))
+(declare-fun a () (Tuple Int Int))
+(assert (= a (mkTuple 9 1)))
+(assert (= r (join (join (transpose x) y) z)))
+(assert (not (member a (transpose r))))
+(check-sat)
+++ /dev/null
-% EXPECT: sat
-OPTION "logic" "ALL";
-IntPair: TYPE = [INT, INT];
-x : SET OF IntPair;
-y : SET OF IntPair;
-a: INT;
-b:INT;
-c:INT;
-d:INT;
-ASSERT a = c;
-ASSERT a = d;
-ASSERT (1, c) IS_IN x;
-ASSERT (2, d) IS_IN x;
-ASSERT (a, 5) IS_IN y;
-ASSERT y = TCLOSURE(x);
-ASSERT ((2, 5) IS_IN y);
-
-CHECKSAT;
--- /dev/null
+; EXPECT: sat
+(set-option :incremental false)
+(set-logic ALL)
+
+(declare-fun x () (Set (Tuple Int Int)))
+(declare-fun y () (Set (Tuple Int Int)))
+(declare-fun a () Int)
+(declare-fun b () Int)
+(declare-fun c () Int)
+(declare-fun d () Int)
+(assert (= a c))
+(assert (= a d))
+(assert (member (mkTuple 1 c) x))
+(assert (member (mkTuple 2 d) x))
+(assert (member (mkTuple a 5) y))
+(assert (= y (tclosure x)))
+(assert (member (mkTuple 2 5) y))
+(check-sat)
+++ /dev/null
-% EXPECT: unsat
-OPTION "logic" "ALL";
-IntPair: TYPE = [INT, INT];
-x : SET OF IntPair;
-y : SET OF IntPair;
-a: INT;
-b:INT;
-c:INT;
-d:INT;
-ASSERT (1, a) IS_IN x;
-ASSERT (1, c) IS_IN x;
-ASSERT (1, d) IS_IN x;
-ASSERT (b, 1) IS_IN x;
-ASSERT (b = d);
-ASSERT (2,b) IS_IN ((x JOIN x) JOIN x);
-ASSERT NOT (2, 1) IS_IN TCLOSURE(x);
-
-
-CHECKSAT;
--- /dev/null
+; EXPECT: unsat
+(set-option :incremental false)
+(set-logic ALL)
+
+(declare-fun x () (Set (Tuple Int Int)))
+(declare-fun y () (Set (Tuple Int Int)))
+(declare-fun a () Int)
+(declare-fun b () Int)
+(declare-fun c () Int)
+(declare-fun d () Int)
+(assert (member (mkTuple 1 a) x))
+(assert (member (mkTuple 1 c) x))
+(assert (member (mkTuple 1 d) x))
+(assert (member (mkTuple b 1) x))
+(assert (= b d))
+(assert (member (mkTuple 2 b) (join (join x x) x)))
+(assert (not (member (mkTuple 2 1) (tclosure x))))
+(check-sat)
+++ /dev/null
-% EXPECT: sat
-OPTION "logic" "ALL";
-IntPair: TYPE = [INT, INT];
-x : SET OF IntPair;
-y : SET OF IntPair;
-z : SET OF IntPair;
-ASSERT y = (TCLOSURE(x) JOIN x);
-ASSERT NOT (y = TCLOSURE(x));
-
-CHECKSAT;
--- /dev/null
+; EXPECT: sat
+(set-option :incremental false)
+(set-logic ALL)
+
+(declare-fun x () (Set (Tuple Int Int)))
+(declare-fun y () (Set (Tuple Int Int)))
+(declare-fun z () (Set (Tuple Int Int)))
+(assert (= y (join (tclosure x) x)))
+(assert (not (= y (tclosure x))))
+(check-sat)
+++ /dev/null
-% EXPECT: sat
-OPTION "logic" "ALL";
-IntPair: TYPE = [INT, INT];
-x : SET OF IntPair;
-y : SET OF IntPair;
-ASSERT y = TCLOSURE(x);
-ASSERT NOT ( y = ((x JOIN x) JOIN x));
-
-CHECKSAT;
--- /dev/null
+; EXPECT: sat
+(set-option :incremental false)
+(set-logic ALL)
+
+(declare-fun x () (Set (Tuple Int Int)))
+(declare-fun y () (Set (Tuple Int Int)))
+(assert (= y (tclosure x)))
+(assert (not (= y (join (join x x) x))))
+(check-sat)
+++ /dev/null
-% EXPECT: unsat
-OPTION "logic" "ALL";
-IntPair: TYPE = [INT, INT];
-x : SET OF IntPair;
-y : SET OF IntPair;
-ASSERT y = TCLOSURE(x);
-ASSERT NOT (((x JOIN x) JOIN x) <= y);
-
-CHECKSAT;
--- /dev/null
+; EXPECT: unsat
+(set-option :incremental false)
+(set-logic ALL)
+
+(declare-fun x () (Set (Tuple Int Int)))
+(declare-fun y () (Set (Tuple Int Int)))
+(assert (= y (tclosure x)))
+(assert (not (subset (join (join x x) x) y)))
+(check-sat)
+++ /dev/null
-% EXPECT: sat
-OPTION "logic" "ALL";
-IntPair: TYPE = [INT, INT];
-x : SET OF IntPair;
-y : SET OF IntPair;
-z : SET OF IntPair;
-w : SET OF IntPair;
-
-ASSERT z = TCLOSURE(x);
-ASSERT w = (x JOIN y);
-ASSERT (2, 2) IS_IN z;
-ASSERT (0,3) IS_IN y;
-ASSERT (-1,3) IS_IN y;
-ASSERT (1,3) IS_IN y;
-ASSERT (-2,3) IS_IN y;
-ASSERT (2,3) IS_IN y;
-ASSERT (3,3) IS_IN y;
-ASSERT (4,3) IS_IN y;
-ASSERT (5,3) IS_IN y;
-ASSERT NOT (2, 3) IS_IN (x JOIN y);
-ASSERT NOT (2,1) IS_IN x;
-
-CHECKSAT;
--- /dev/null
+; EXPECT: sat
+(set-option :incremental false)
+(set-logic ALL)
+
+(declare-fun x () (Set (Tuple Int Int)))
+(declare-fun y () (Set (Tuple Int Int)))
+(declare-fun z () (Set (Tuple Int Int)))
+(declare-fun w () (Set (Tuple Int Int)))
+(assert (= z (tclosure x)))
+(assert (= w (join x y)))
+(assert (member (mkTuple 2 2) z))
+(assert (member (mkTuple 0 3) y))
+(assert (member (mkTuple (- 1) 3) y))
+(assert (member (mkTuple 1 3) y))
+(assert (member (mkTuple (- 2) 3) y))
+(assert (member (mkTuple 2 3) y))
+(assert (member (mkTuple 3 3) y))
+(assert (member (mkTuple 4 3) y))
+(assert (member (mkTuple 5 3) y))
+(assert (not (member (mkTuple 2 3) (join x y))))
+(assert (not (member (mkTuple 2 1) x)))
+(check-sat)
+++ /dev/null
-% EXPECT: unsat
-OPTION "logic" "ALL";
-IntPair: TYPE = [INT, INT];
-x : SET OF IntPair;
-y : SET OF IntPair;
-z : SET OF IntPair;
-ASSERT (z = TRANSPOSE(y) OR z = TRANSPOSE(x));
-ASSERT NOT (TRANSPOSE(z) = y);
-ASSERT NOT (TRANSPOSE(z) = x);
-CHECKSAT;
\ No newline at end of file
--- /dev/null
+; EXPECT: unsat
+(set-option :incremental false)
+(set-logic ALL)
+
+(declare-fun x () (Set (Tuple Int Int)))
+(declare-fun y () (Set (Tuple Int Int)))
+(declare-fun z () (Set (Tuple Int Int)))
+(assert (or (= z (transpose y)) (= z (transpose x))))
+(assert (not (= (transpose z) y)))
+(assert (not (= (transpose z) x)))
+(check-sat)
+++ /dev/null
-% EXPECT: sat
-OPTION "logic" "ALL";
-IntPair: TYPE = [INT, INT];
-x : SET OF IntPair;
-y : SET OF IntPair;
-z : SET OF IntPair;
-r : SET OF IntPair;
-ASSERT (7, 1) IS_IN x;
-ASSERT (2, 3) IS_IN x;
-
-ASSERT (7, 3) IS_IN y;
-ASSERT (4, 7) IS_IN y;
-ASSERT (3, 4) IS_IN z;
-a : IntPair;
-ASSERT a = (4,1);
-
-ASSERT r = ((TRANSPOSE(x) JOIN y) JOIN z);
-ASSERT a IS_IN TRANSPOSE(r);
-CHECKSAT;
--- /dev/null
+; EXPECT: sat
+(set-option :incremental false)
+(set-logic ALL)
+
+(declare-fun x () (Set (Tuple Int Int)))
+(declare-fun y () (Set (Tuple Int Int)))
+(declare-fun z () (Set (Tuple Int Int)))
+(declare-fun r () (Set (Tuple Int Int)))
+(assert (member (mkTuple 7 1) x))
+(assert (member (mkTuple 2 3) x))
+(assert (member (mkTuple 7 3) y))
+(assert (member (mkTuple 4 7) y))
+(assert (member (mkTuple 3 4) z))
+(declare-fun a () (Tuple Int Int))
+(assert (= a (mkTuple 4 1)))
+(assert (= r (join (join (transpose x) y) z)))
+(assert (member a (transpose r)))
+(check-sat)
+++ /dev/null
-% EXPECT: sat
-OPTION "logic" "ALL";
-IntPair: TYPE = [ INT, INT];
-SetIntPair: TYPE = [ SET OF IntPair, SET OF IntPair ];
-x : SET OF IntPair;
-y : SET OF IntPair;
-w : SET OF IntPair;
-z : SET OF SetIntPair;
-
-a : IntPair;
-b : IntPair;
-
-ASSERT NOT a = b;
-
-ASSERT a IS_IN x;
-ASSERT b IS_IN y;
-ASSERT b IS_IN w;
-ASSERT (x,y) IS_IN z;
-ASSERT (w,x) IS_IN z;
-ASSERT NOT ( (x,x) IS_IN (z JOIN z) );
-
-ASSERT (x, { ( 0, 0 ) } ) IS_IN (z JOIN z);
-
-CHECKSAT;
--- /dev/null
+; EXPECT: sat
+(set-option :incremental false)
+(set-logic ALL)
+
+
+(declare-fun x () (Set (Tuple Int Int)))
+(declare-fun y () (Set (Tuple Int Int)))
+(declare-fun w () (Set (Tuple Int Int)))
+(declare-fun z () (Set (Tuple (Set (Tuple Int Int)) (Set (Tuple Int Int)))))
+(declare-fun a () (Tuple Int Int))
+(declare-fun b () (Tuple Int Int))
+(assert (not (= a b)))
+(assert (member a x))
+(assert (member b y))
+(assert (member b w))
+(assert (member (mkTuple x y) z))
+(assert (member (mkTuple w x) z))
+(assert (not (member (mkTuple x x) (join z z))))
+(assert (member (mkTuple x (singleton (mkTuple 0 0))) (join z z)))
+(check-sat)
+++ /dev/null
-% EXPECT: sat
-OPTION "logic" "ALL";
-IntPair: TYPE = [ INT, INT];
-IntIntPair: TYPE = [ IntPair, IntPair];
-x : SET OF IntIntPair;
-y : SET OF IntIntPair;
-z : SET OF IntPair;
-w : SET OF IntPair;
-
-a : IntPair;
-b : IntPair;
-c : IntIntPair;
-
-ASSERT NOT a = b;
-
-ASSERT a IS_IN z;
-ASSERT b IS_IN z;
-ASSERT (a,b) IS_IN x;
-ASSERT (b,a) IS_IN x;
-ASSERT c IS_IN x;
-ASSERT NOT ( c = (a,b) ) AND NOT ( c = (b,a) );
-
-
-CHECKSAT;
--- /dev/null
+; EXPECT: sat
+(set-option :incremental false)
+(set-logic ALL)
+
+
+(declare-fun x () (Set (Tuple (Tuple Int Int) (Tuple Int Int))))
+(declare-fun y () (Set (Tuple (Tuple Int Int) (Tuple Int Int))))
+(declare-fun z () (Set (Tuple Int Int)))
+(declare-fun w () (Set (Tuple Int Int)))
+(declare-fun a () (Tuple Int Int))
+(declare-fun b () (Tuple Int Int))
+(declare-fun c () (Tuple (Tuple Int Int) (Tuple Int Int)))
+(assert (not (= a b)))
+(assert (member a z))
+(assert (member b z))
+(assert (member (mkTuple a b) x))
+(assert (member (mkTuple b a) x))
+(assert (member c x))
+(assert (and (not (= c (mkTuple a b))) (not (= c (mkTuple b a)))))
+(check-sat)
+++ /dev/null
-% EXPECT: Extended set operators are not supported in default mode, try --sets-ext.
-% EXIT: 1
-OPTION "produce-models" true;
-x,y,z : SET OF BOOLEAN;
-ASSERT x = {TRUE};
-ASSERT y = {FALSE};
-CHECKSAT z = ~ y;
-COUNTERMODEL;
--- /dev/null
+; EXIT: 1
+; EXPECT: (error "Extended set operators are not supported in default mode, try --sets-ext.")
+(set-logic ALL)
+(set-option :incremental true)
+(set-option :produce-models true)
+(declare-fun x () (Set Bool))
+(declare-fun y () (Set Bool))
+(declare-fun z () (Set Bool))
+(assert (= x (singleton true)))
+(assert (= y (singleton false)))
+(push 1)
+
+(assert (= z (complement y)))
+
+(check-sat)
+
+(pop 1)
+
+(get-model)
+++ /dev/null
-% COMMAND-LINE:
-% EXPECT: sat
-
-A : SET OF INT;
-a : INT;
-
-ASSERT NOT (A = {} :: SET OF INT);
-ASSERT CHOOSE (A) = 10;
-ASSERT CHOOSE (A) = a;
-
-CHECKSAT;
--- /dev/null
+; COMMAND-LINE:
+; EXPECT: sat
+(set-logic ALL)
+(set-option :incremental false)
+(declare-fun A () (Set Int))
+(declare-fun a () Int)
+(assert (not (= A (as emptyset (Set Int)))))
+(assert (= (choose A) 10))
+(assert (= (choose A) a))
+(check-sat)
+++ /dev/null
-% COMMAND-LINE:
-% EXPECT: sat
-OPTION "sets-ext";
-OPTION "logic" "ALL";
-
-a : SET OF [REAL, INT];
-b : SET OF [INT, REAL];
-
-x : [ REAL, REAL ];
-
-ASSERT NOT x = (0.0,0.0);
-
-ASSERT (x.0, FLOOR(x.1)) IS_IN a;
-ASSERT (FLOOR(x.0), x.1) IS_IN b;
-
-ASSERT NOT x.0 = x.1;
-
-CHECKSAT;
--- /dev/null
+; COMMAND-LINE:
+; EXPECT: sat
+(set-option :incremental false)
+(set-option :sets-ext true)
+(set-logic ALL)
+(declare-fun a () (Set (Tuple Real Int)))
+(declare-fun b () (Set (Tuple Int Real)))
+(declare-fun x () (Tuple Real Real))
+(assert (let ((_let_1 0.0)) (not (= x (mkTuple _let_1 _let_1)))))
+(assert (member (mkTuple ((_ tupSel 0) x) (to_int ((_ tupSel 1) x))) a))
+(assert (member (mkTuple (to_int ((_ tupSel 0) x)) ((_ tupSel 1) x)) b))
+(assert (not (= ((_ tupSel 0) x) ((_ tupSel 1) x))))
+(check-sat)
+++ /dev/null
-% COMMAND-LINE: --incremental
-% EXPECT: not_entailed
-% EXPECT: not_entailed
-% EXPECT: not_entailed
-% EXPECT: not_entailed
-% EXPECT: not_entailed
-% EXPECT: not_entailed
-% EXPECT: not_entailed
-% EXPECT: entailed
-% EXPECT: not_entailed
-% EXPECT: not_entailed
-% EXPECT: entailed
-% EXPECT: not_entailed
-% EXPECT: not_entailed
-% EXPECT: not_entailed
-% EXPECT: not_entailed
-% EXPECT: not_entailed
-% EXPECT: not_entailed
-% EXPECT: not_entailed
-% EXPECT: not_entailed
-% EXPECT: not_entailed
-% EXPECT: not_entailed
-% EXPECT: not_entailed
-% EXPECT: not_entailed
-% EXPECT: not_entailed
-% EXPECT: not_entailed
-% EXPECT: not_entailed
-% EXPECT: not_entailed
-% EXPECT: entailed
-% EXPECT: entailed
-% EXPECT: entailed
-A: TYPE;
-P_1: BOOLEAN;
-P_2: BOOLEAN;
-P_3: BOOLEAN;
-ASSERT (NOT P_1 OR P_2 OR P_2);
-ASSERT (NOT P_1 OR P_2 OR P_3);
-P_4: BOOLEAN;
-P_5: BOOLEAN;
-ASSERT (NOT P_1 OR NOT P_4 OR P_2);
-ASSERT (NOT P_1 OR NOT P_5 OR P_2);
-P_6: BOOLEAN;
-P_7: BOOLEAN;
-ASSERT (NOT P_2 OR P_6 OR P_1);
-ASSERT (NOT P_2 OR P_7 OR P_1);
-P_8: BOOLEAN;
-P_9: BOOLEAN;
-ASSERT (NOT P_2 OR NOT P_8 OR P_1);
-ASSERT (NOT P_2 OR NOT P_9 OR P_1);
-P_10: BOOLEAN;
-ASSERT (P_2 OR P_1 OR P_4);
-ASSERT (P_2 OR P_1 OR P_10);
-ASSERT (NOT P_2 OR NOT P_1 OR P_4);
-ASSERT (NOT P_2 OR NOT P_1 OR P_10);
-P_11: BOOLEAN;
-ASSERT (NOT P_6 OR P_2 OR P_1);
-ASSERT (NOT P_11 OR P_2 OR P_1);
-ASSERT (NOT P_6 OR NOT P_2 OR NOT P_1);
-ASSERT (NOT P_11 OR NOT P_2 OR NOT P_1);
-PUSH;
-QUERY (NOT P_2 OR NOT P_3);
-POP;
-PUSH;
-QUERY (P_1 OR NOT P_3);
-POP;
-PUSH;
-QUERY (NOT P_2 OR P_1);
-POP;
-PUSH;
-QUERY (P_5 OR NOT P_2);
-POP;
-PUSH;
-QUERY (P_1 OR NOT P_2);
-POP;
-PUSH;
-QUERY (P_5 OR P_1);
-POP;
-PUSH;
-QUERY (NOT P_7 OR NOT P_1);
-POP;
-PUSH;
-QUERY (P_2 OR NOT P_1);
-POP;
-PUSH;
-QUERY P_2;
-POP;
-PUSH;
-QUERY (P_9 OR NOT P_1);
-POP;
-PUSH;
-QUERY (P_2 OR NOT P_1);
-POP;
-PUSH;
-QUERY P_2;
-POP;
-PUSH;
-QUERY (NOT P_1 OR NOT P_10);
-POP;
-PUSH;
-QUERY (NOT P_2 OR NOT P_10);
-POP;
-PUSH;
-QUERY (NOT P_1 OR NOT P_2);
-POP;
-PUSH;
-QUERY (P_1 OR NOT P_10);
-POP;
-PUSH;
-QUERY (P_2 OR NOT P_10);
-POP;
-PUSH;
-QUERY (P_1 OR P_2);
-POP;
-PUSH;
-QUERY (NOT P_2 OR NOT P_1);
-POP;
-PUSH;
-QUERY (P_11 OR NOT P_1);
-POP;
-PUSH;
-QUERY (NOT P_2 OR P_11);
-POP;
-PUSH;
-QUERY (P_2 OR P_1);
-POP;
-PUSH;
-QUERY (P_11 OR P_1);
-POP;
-PUSH;
-QUERY (P_2 OR P_11);
-POP;
-P_12: BOOLEAN;
-ASSERT (NOT P_12 OR P_2);
-ASSERT (NOT P_12 OR P_3);
-ASSERT (P_12 OR NOT P_1 OR P_2);
-ASSERT (P_12 OR NOT P_1 OR P_2);
-P_13: BOOLEAN;
-ASSERT (NOT P_13 OR NOT P_4);
-ASSERT (NOT P_13 OR NOT P_5);
-ASSERT (P_13 OR NOT P_1 OR P_2);
-ASSERT (P_13 OR NOT P_1 OR P_2);
-ASSERT (NOT P_2 OR P_1);
-ASSERT (NOT P_2 OR P_1);
-ASSERT (NOT P_2 OR P_1);
-ASSERT (NOT P_2 OR P_1);
-P_14: BOOLEAN;
-ASSERT (P_14 OR P_2 OR P_1);
-ASSERT (P_14 OR P_2 OR P_1);
-ASSERT (NOT P_14 OR P_4);
-ASSERT (NOT P_14 OR P_10);
-ASSERT (P_14 OR NOT P_2 OR NOT P_1);
-ASSERT (P_14 OR NOT P_2 OR NOT P_1);
-P_15: BOOLEAN;
-ASSERT (P_15 OR P_2 OR P_1);
-ASSERT (P_15 OR P_2 OR P_1);
-ASSERT (NOT P_15 OR NOT P_6);
-ASSERT (NOT P_15 OR NOT P_11);
-ASSERT (P_15 OR NOT P_2 OR NOT P_1);
-ASSERT (P_15 OR NOT P_2 OR NOT P_1);
-PUSH;
-QUERY NOT P_3;
-POP;
-PUSH;
-QUERY P_12;
-POP;
-PUSH;
-QUERY P_11;
-POP;
-PUSH;
-QUERY P_15;
-POP;
-ASSERT NOT P_15;
-ASSERT NOT P_15;
-PUSH;
-QUERY NOT P_10;
-POP;
-PUSH;
-QUERY FALSE;
--- /dev/null
+; COMMAND-LINE: --incremental
+; EXPECT: sat
+; EXPECT: sat
+; EXPECT: sat
+; EXPECT: sat
+; EXPECT: sat
+; EXPECT: sat
+; EXPECT: sat
+; EXPECT: unsat
+; EXPECT: sat
+; EXPECT: sat
+; EXPECT: unsat
+; EXPECT: sat
+; EXPECT: sat
+; EXPECT: sat
+; EXPECT: sat
+; EXPECT: sat
+; EXPECT: sat
+; EXPECT: sat
+; EXPECT: sat
+; EXPECT: sat
+; EXPECT: sat
+; EXPECT: sat
+; EXPECT: sat
+; EXPECT: sat
+; EXPECT: sat
+; EXPECT: sat
+; EXPECT: sat
+; EXPECT: unsat
+; EXPECT: unsat
+; EXPECT: unsat
+(set-logic ALL)
+(declare-sort A 0)
+(declare-fun P_1 () Bool)
+(declare-fun P_2 () Bool)
+(declare-fun P_3 () Bool)
+(assert (or (or (not P_1) P_2) P_2))
+(assert (or (or (not P_1) P_2) P_3))
+(declare-fun P_4 () Bool)
+(declare-fun P_5 () Bool)
+(assert (or (or (not P_1) (not P_4)) P_2))
+(assert (or (or (not P_1) (not P_5)) P_2))
+(declare-fun P_6 () Bool)
+(declare-fun P_7 () Bool)
+(assert (or (or (not P_2) P_6) P_1))
+(assert (or (or (not P_2) P_7) P_1))
+(declare-fun P_8 () Bool)
+(declare-fun P_9 () Bool)
+(assert (or (or (not P_2) (not P_8)) P_1))
+(assert (or (or (not P_2) (not P_9)) P_1))
+(declare-fun P_10 () Bool)
+(assert (or (or P_2 P_1) P_4))
+(assert (or (or P_2 P_1) P_10))
+(assert (or (or (not P_2) (not P_1)) P_4))
+(assert (or (or (not P_2) (not P_1)) P_10))
+(declare-fun P_11 () Bool)
+(assert (or (or (not P_6) P_2) P_1))
+(assert (or (or (not P_11) P_2) P_1))
+(assert (or (or (not P_6) (not P_2)) (not P_1)))
+(assert (or (or (not P_11) (not P_2)) (not P_1)))
+(push 1)
+(check-sat-assuming ( (not (or (not P_2) (not P_3))) ))
+(pop 1)
+(push 1)
+(check-sat-assuming ( (not (or P_1 (not P_3))) ))
+(pop 1)
+(push 1)
+(check-sat-assuming ( (not (or (not P_2) P_1)) ))
+(pop 1)
+(push 1)
+(check-sat-assuming ( (not (or P_5 (not P_2))) ))
+(pop 1)
+(push 1)
+(check-sat-assuming ( (not (or P_1 (not P_2))) ))
+(pop 1)
+(push 1)
+(check-sat-assuming ( (not (or P_5 P_1)) ))
+(pop 1)
+(push 1)
+(check-sat-assuming ( (not (or (not P_7) (not P_1))) ))
+(pop 1)
+(push 1)
+(check-sat-assuming ( (not (or P_2 (not P_1))) ))
+(pop 1)
+(push 1)
+(check-sat-assuming ( (not P_2) ))
+(pop 1)
+(push 1)
+(check-sat-assuming ( (not (or P_9 (not P_1))) ))
+(pop 1)
+(push 1)
+(check-sat-assuming ( (not (or P_2 (not P_1))) ))
+(pop 1)
+(push 1)
+(check-sat-assuming ( (not P_2) ))
+(pop 1)
+(push 1)
+(check-sat-assuming ( (not (or (not P_1) (not P_10))) ))
+(pop 1)
+(push 1)
+(check-sat-assuming ( (not (or (not P_2) (not P_10))) ))
+(pop 1)
+(push 1)
+(check-sat-assuming ( (not (or (not P_1) (not P_2))) ))
+(pop 1)
+(push 1)
+(check-sat-assuming ( (not (or P_1 (not P_10))) ))
+(pop 1)
+(push 1)
+(check-sat-assuming ( (not (or P_2 (not P_10))) ))
+(pop 1)
+(push 1)
+(check-sat-assuming ( (not (or P_1 P_2)) ))
+(pop 1)
+(push 1)
+(check-sat-assuming ( (not (or (not P_2) (not P_1))) ))
+(pop 1)
+(push 1)
+(check-sat-assuming ( (not (or P_11 (not P_1))) ))
+(pop 1)
+(push 1)
+(check-sat-assuming ( (not (or (not P_2) P_11)) ))
+(pop 1)
+(push 1)
+(check-sat-assuming ( (not (or P_2 P_1)) ))
+(pop 1)
+(push 1)
+(check-sat-assuming ( (not (or P_11 P_1)) ))
+(pop 1)
+(push 1)
+(check-sat-assuming ( (not (or P_2 P_11)) ))
+(pop 1)
+(declare-fun P_12 () Bool)
+(assert (or (not P_12) P_2))
+(assert (or (not P_12) P_3))
+(assert (or (or P_12 (not P_1)) P_2))
+(assert (or (or P_12 (not P_1)) P_2))
+(declare-fun P_13 () Bool)
+(assert (or (not P_13) (not P_4)))
+(assert (or (not P_13) (not P_5)))
+(assert (or (or P_13 (not P_1)) P_2))
+(assert (or (or P_13 (not P_1)) P_2))
+(assert (or (not P_2) P_1))
+(assert (or (not P_2) P_1))
+(assert (or (not P_2) P_1))
+(assert (or (not P_2) P_1))
+(declare-fun P_14 () Bool)
+(assert (or (or P_14 P_2) P_1))
+(assert (or (or P_14 P_2) P_1))
+(assert (or (not P_14) P_4))
+(assert (or (not P_14) P_10))
+(assert (or (or P_14 (not P_2)) (not P_1)))
+(assert (or (or P_14 (not P_2)) (not P_1)))
+(declare-fun P_15 () Bool)
+(assert (or (or P_15 P_2) P_1))
+(assert (or (or P_15 P_2) P_1))
+(assert (or (not P_15) (not P_6)))
+(assert (or (not P_15) (not P_11)))
+(assert (or (or P_15 (not P_2)) (not P_1)))
+(assert (or (or P_15 (not P_2)) (not P_1)))
+(push 1)
+(check-sat-assuming ( (not (not P_3)) ))
+(pop 1)
+(push 1)
+(check-sat-assuming ( (not P_12) ))
+(pop 1)
+(push 1)
+(check-sat-assuming ( (not P_11) ))
+(pop 1)
+(push 1)
+(check-sat-assuming ( (not P_15) ))
+(pop 1)
+(assert (not P_15))
+(assert (not P_15))
+(push 1)
+(check-sat-assuming ( (not (not P_10)) ))
+(pop 1)
+(push 1)
+(check-sat-assuming ( (not false) ))
+++ /dev/null
-% COMMAND-LINE: --finite-model-find
-% EXPECT: sat
-DATATYPE
- myType = A | B
-END;
-%%% structured datatypes
-myTypeSet: TYPE = SET OF myType;
-myTypeGammaSet: TYPE = [# pos: myTypeSet, neg: myTypeSet #];
-delta: TYPE = ARRAY myType OF myTypeGammaSet;
-labels: TYPE = ARRAY myType OF SET OF STRING;
-
-%%% the empty myTypes set
-emptymyTypeSet : SET OF myType;
-ASSERT emptymyTypeSet = {} :: SET OF myType;
-
-d: delta;
-l: labels;
-
-ASSERT (l[A] = {"L","H"});
-ASSERT (l[B] = {"L"});
-
-ic0_i : myTypeSet;
-ic0_c : myTypeSet;
-ASSERT FORALL (r:myType):
- (r IS_IN ic0_i) => FORALL (r2: myType): (r2 IS_IN d[r].neg) => r2 IS_IN ic0_c;
-ASSERT {A} <= ic0_i;
-ASSERT ((EXISTS (e0 : myType): (e0 IS_IN ic0_i) => (l[A] <= l[e0]))) OR ((ic0_i & ic0_c) <= emptymyTypeSet);
-
-ic1_i : myTypeSet;
-ic1_c : myTypeSet;
-ASSERT FORALL (r:myType):
- (r IS_IN d[B].pos) => r IS_IN ic1_i;
-ASSERT ((EXISTS (e1 : myType): (e1 IS_IN ic1_i) => (l[B] <= l[e1]))) OR ((ic1_i & ic1_c) <= emptymyTypeSet);
-
-CHECKSAT;
-%COUNTEREXAMPLE;
--- /dev/null
+; COMMAND-LINE: --finite-model-find
+; EXPECT: sat
+(set-logic ALL)
+(set-option :incremental false)
+(declare-datatypes ((myType 0)) (((A) (B))))
+
+(declare-datatypes ((|__cvc5_record_pos_(Set myType)_neg_(Set myType)| 0)) (((|__cvc5_record_pos_(Set myType)_neg_(Set myType)_ctor| (pos (Set myType)) (neg (Set myType))))))
+
+
+
+(declare-fun emptymyTypeSet () (Set myType))
+(assert (= emptymyTypeSet (as emptyset (Set myType))))
+(declare-fun d () (Array myType |__cvc5_record_pos_(Set myType)_neg_(Set myType)|))
+(declare-fun l () (Array myType (Set String)))
+(assert (= (select l A) (union (singleton "L") (singleton "H"))))
+(assert (= (select l B) (singleton "L")))
+(declare-fun ic0_i () (Set myType))
+(declare-fun ic0_c () (Set myType))
+(assert (forall ((r myType)) (=> (member r ic0_i) (forall ((r2 myType)) (=> (member r2 (neg (select d r))) (member r2 ic0_c))))))
+(assert (subset (singleton A) ic0_i))
+(assert (or (exists ((e0 myType)) (=> (member e0 ic0_i) (subset (select l A) (select l e0)))) (subset (intersection ic0_i ic0_c) emptymyTypeSet)))
+(declare-fun ic1_i () (Set myType))
+(declare-fun ic1_c () (Set myType))
+(assert (forall ((r myType)) (=> (member r (pos (select d B))) (member r ic1_i))))
+(assert (or (exists ((e1 myType)) (=> (member e1 ic1_i) (subset (select l B) (select l e1)))) (subset (intersection ic1_i ic1_c) emptymyTypeSet)))
+(check-sat)
+++ /dev/null
-% EXPECT: not_entailed
-x0, x1, x2, x3 : INT;
-ASSERT (-28 * x0) + (12 * x1) + (-19 * x2) + (10 * x3) = 16 ;
-ASSERT (19 * x0) + (-25 * x1) + (-8 * x2) + (-32 * x3) = 12;
-ASSERT (18 * x0) + (21 * x1) + (5 * x2) + (-14 * x3) < -12 ;
-ASSERT (-13 * x0) + (32 * x1) + (-5 * x2) + (-13 * x3) <= -15 ;
-ASSERT (30 * x0) + (-19 * x1) + (28 * x2) + (-27 * x3) <= -18 ;
-QUERY FALSE;
--- /dev/null
+; EXPECT: sat
+(set-logic ALL)
+(set-option :incremental false)
+(declare-fun x0 () Int)
+(declare-fun x1 () Int)
+(declare-fun x2 () Int)
+(declare-fun x3 () Int)
+(assert (= (+ (+ (+ (* (- 28) x0) (* 12 x1)) (* (- 19) x2)) (* 10 x3)) 16))
+(assert (= (+ (+ (+ (* 19 x0) (* (- 25) x1)) (* (- 8) x2)) (* (- 32) x3)) 12))
+(assert (< (+ (+ (+ (* 18 x0) (* 21 x1)) (* 5 x2)) (* (- 14) x3)) (- 12)))
+(assert (let ((_let_1 (- 13))) (<= (+ (+ (+ (* _let_1 x0) (* 32 x1)) (* (- 5) x2)) (* _let_1 x3)) (- 15))))
+(assert (<= (+ (+ (+ (* 30 x0) (* (- 19) x1)) (* 28 x2)) (* (- 27) x3)) (- 18)))
+(check-sat-assuming ( (not false) ))
+++ /dev/null
-% EXPECT: entailed
-x_1 : BOOLEAN;
-x_2 : BOOLEAN;
-x_3 : BOOLEAN;
-x_4 : BOOLEAN;
-x_5 : BOOLEAN;
-x_6 : BOOLEAN;
-x_7 : BOOLEAN;
-x_8 : BOOLEAN;
-x_9 : BOOLEAN;
-x_10 : BOOLEAN;
-x_11 : BOOLEAN;
-x_12 : BOOLEAN;
-x_13 : BOOLEAN;
-x_14 : BOOLEAN;
-x_15 : BOOLEAN;
-x_16 : BOOLEAN;
-x_17 : BOOLEAN;
-x_18 : BOOLEAN;
-x_19 : BOOLEAN;
-x_20 : BOOLEAN;
-x_21 : BOOLEAN;
-x_22 : BOOLEAN;
-x_23 : BOOLEAN;
-x_24 : BOOLEAN;
-x_25 : BOOLEAN;
-x_26 : BOOLEAN;
-x_27 : BOOLEAN;
-x_28 : BOOLEAN;
-x_29 : BOOLEAN;
-x_30 : BOOLEAN;
-x_31 : BOOLEAN;
-x_32 : BOOLEAN;
-x_33 : BOOLEAN;
-x_34 : BOOLEAN;
-x_35 : BOOLEAN;
-x_36 : BOOLEAN;
-x_37 : BOOLEAN;
-x_38 : BOOLEAN;
-x_39 : BOOLEAN;
-x_40 : BOOLEAN;
-x_41 : BOOLEAN;
-x_42 : BOOLEAN;
-x_43 : BOOLEAN;
-x_44 : BOOLEAN;
-x_45 : BOOLEAN;
-x_46 : BOOLEAN;
-x_47 : BOOLEAN;
-x_48 : BOOLEAN;
-x_49 : BOOLEAN;
-x_50 : BOOLEAN;
-x_51 : BOOLEAN;
-x_52 : BOOLEAN;
-x_53 : BOOLEAN;
-x_54 : BOOLEAN;
-x_55 : BOOLEAN;
-x_56 : BOOLEAN;
-ASSERT NOT x_1 OR NOT x_8;
-ASSERT NOT x_1 OR NOT x_15;
-ASSERT NOT x_1 OR NOT x_22;
-ASSERT NOT x_1 OR NOT x_29;
-ASSERT NOT x_1 OR NOT x_36;
-ASSERT NOT x_1 OR NOT x_43;
-ASSERT NOT x_1 OR NOT x_50;
-ASSERT NOT x_8 OR NOT x_15;
-ASSERT NOT x_8 OR NOT x_22;
-ASSERT NOT x_8 OR NOT x_29;
-ASSERT NOT x_8 OR NOT x_36;
-ASSERT NOT x_8 OR NOT x_43;
-ASSERT NOT x_8 OR NOT x_50;
-ASSERT NOT x_15 OR NOT x_22;
-ASSERT NOT x_15 OR NOT x_29;
-ASSERT NOT x_15 OR NOT x_36;
-ASSERT NOT x_15 OR NOT x_43;
-ASSERT NOT x_15 OR NOT x_50;
-ASSERT NOT x_22 OR NOT x_29;
-ASSERT NOT x_22 OR NOT x_36;
-ASSERT NOT x_22 OR NOT x_43;
-ASSERT NOT x_22 OR NOT x_50;
-ASSERT NOT x_29 OR NOT x_36;
-ASSERT NOT x_29 OR NOT x_43;
-ASSERT NOT x_29 OR NOT x_50;
-ASSERT NOT x_36 OR NOT x_43;
-ASSERT NOT x_36 OR NOT x_50;
-ASSERT NOT x_43 OR NOT x_50;
-ASSERT NOT x_2 OR NOT x_9;
-ASSERT NOT x_2 OR NOT x_16;
-ASSERT NOT x_2 OR NOT x_23;
-ASSERT NOT x_2 OR NOT x_30;
-ASSERT NOT x_2 OR NOT x_37;
-ASSERT NOT x_2 OR NOT x_44;
-ASSERT NOT x_2 OR NOT x_51;
-ASSERT NOT x_9 OR NOT x_16;
-ASSERT NOT x_9 OR NOT x_23;
-ASSERT NOT x_9 OR NOT x_30;
-ASSERT NOT x_9 OR NOT x_37;
-ASSERT NOT x_9 OR NOT x_44;
-ASSERT NOT x_9 OR NOT x_51;
-ASSERT NOT x_16 OR NOT x_23;
-ASSERT NOT x_16 OR NOT x_30;
-ASSERT NOT x_16 OR NOT x_37;
-ASSERT NOT x_16 OR NOT x_44;
-ASSERT NOT x_16 OR NOT x_51;
-ASSERT NOT x_23 OR NOT x_30;
-ASSERT NOT x_23 OR NOT x_37;
-ASSERT NOT x_23 OR NOT x_44;
-ASSERT NOT x_23 OR NOT x_51;
-ASSERT NOT x_30 OR NOT x_37;
-ASSERT NOT x_30 OR NOT x_44;
-ASSERT NOT x_30 OR NOT x_51;
-ASSERT NOT x_37 OR NOT x_44;
-ASSERT NOT x_37 OR NOT x_51;
-ASSERT NOT x_44 OR NOT x_51;
-ASSERT NOT x_3 OR NOT x_10;
-ASSERT NOT x_3 OR NOT x_17;
-ASSERT NOT x_3 OR NOT x_24;
-ASSERT NOT x_3 OR NOT x_31;
-ASSERT NOT x_3 OR NOT x_38;
-ASSERT NOT x_3 OR NOT x_45;
-ASSERT NOT x_3 OR NOT x_52;
-ASSERT NOT x_10 OR NOT x_17;
-ASSERT NOT x_10 OR NOT x_24;
-ASSERT NOT x_10 OR NOT x_31;
-ASSERT NOT x_10 OR NOT x_38;
-ASSERT NOT x_10 OR NOT x_45;
-ASSERT NOT x_10 OR NOT x_52;
-ASSERT NOT x_17 OR NOT x_24;
-ASSERT NOT x_17 OR NOT x_31;
-ASSERT NOT x_17 OR NOT x_38;
-ASSERT NOT x_17 OR NOT x_45;
-ASSERT NOT x_17 OR NOT x_52;
-ASSERT NOT x_24 OR NOT x_31;
-ASSERT NOT x_24 OR NOT x_38;
-ASSERT NOT x_24 OR NOT x_45;
-ASSERT NOT x_24 OR NOT x_52;
-ASSERT NOT x_31 OR NOT x_38;
-ASSERT NOT x_31 OR NOT x_45;
-ASSERT NOT x_31 OR NOT x_52;
-ASSERT NOT x_38 OR NOT x_45;
-ASSERT NOT x_38 OR NOT x_52;
-ASSERT NOT x_45 OR NOT x_52;
-ASSERT NOT x_4 OR NOT x_11;
-ASSERT NOT x_4 OR NOT x_18;
-ASSERT NOT x_4 OR NOT x_25;
-ASSERT NOT x_4 OR NOT x_32;
-ASSERT NOT x_4 OR NOT x_39;
-ASSERT NOT x_4 OR NOT x_46;
-ASSERT NOT x_4 OR NOT x_53;
-ASSERT NOT x_11 OR NOT x_18;
-ASSERT NOT x_11 OR NOT x_25;
-ASSERT NOT x_11 OR NOT x_32;
-ASSERT NOT x_11 OR NOT x_39;
-ASSERT NOT x_11 OR NOT x_46;
-ASSERT NOT x_11 OR NOT x_53;
-ASSERT NOT x_18 OR NOT x_25;
-ASSERT NOT x_18 OR NOT x_32;
-ASSERT NOT x_18 OR NOT x_39;
-ASSERT NOT x_18 OR NOT x_46;
-ASSERT NOT x_18 OR NOT x_53;
-ASSERT NOT x_25 OR NOT x_32;
-ASSERT NOT x_25 OR NOT x_39;
-ASSERT NOT x_25 OR NOT x_46;
-ASSERT NOT x_25 OR NOT x_53;
-ASSERT NOT x_32 OR NOT x_39;
-ASSERT NOT x_32 OR NOT x_46;
-ASSERT NOT x_32 OR NOT x_53;
-ASSERT NOT x_39 OR NOT x_46;
-ASSERT NOT x_39 OR NOT x_53;
-ASSERT NOT x_46 OR NOT x_53;
-ASSERT NOT x_5 OR NOT x_12;
-ASSERT NOT x_5 OR NOT x_19;
-ASSERT NOT x_5 OR NOT x_26;
-ASSERT NOT x_5 OR NOT x_33;
-ASSERT NOT x_5 OR NOT x_40;
-ASSERT NOT x_5 OR NOT x_47;
-ASSERT NOT x_5 OR NOT x_54;
-ASSERT NOT x_12 OR NOT x_19;
-ASSERT NOT x_12 OR NOT x_26;
-ASSERT NOT x_12 OR NOT x_33;
-ASSERT NOT x_12 OR NOT x_40;
-ASSERT NOT x_12 OR NOT x_47;
-ASSERT NOT x_12 OR NOT x_54;
-ASSERT NOT x_19 OR NOT x_26;
-ASSERT NOT x_19 OR NOT x_33;
-ASSERT NOT x_19 OR NOT x_40;
-ASSERT NOT x_19 OR NOT x_47;
-ASSERT NOT x_19 OR NOT x_54;
-ASSERT NOT x_26 OR NOT x_33;
-ASSERT NOT x_26 OR NOT x_40;
-ASSERT NOT x_26 OR NOT x_47;
-ASSERT NOT x_26 OR NOT x_54;
-ASSERT NOT x_33 OR NOT x_40;
-ASSERT NOT x_33 OR NOT x_47;
-ASSERT NOT x_33 OR NOT x_54;
-ASSERT NOT x_40 OR NOT x_47;
-ASSERT NOT x_40 OR NOT x_54;
-ASSERT NOT x_47 OR NOT x_54;
-ASSERT NOT x_6 OR NOT x_13;
-ASSERT NOT x_6 OR NOT x_20;
-ASSERT NOT x_6 OR NOT x_27;
-ASSERT NOT x_6 OR NOT x_34;
-ASSERT NOT x_6 OR NOT x_41;
-ASSERT NOT x_6 OR NOT x_48;
-ASSERT NOT x_6 OR NOT x_55;
-ASSERT NOT x_13 OR NOT x_20;
-ASSERT NOT x_13 OR NOT x_27;
-ASSERT NOT x_13 OR NOT x_34;
-ASSERT NOT x_13 OR NOT x_41;
-ASSERT NOT x_13 OR NOT x_48;
-ASSERT NOT x_13 OR NOT x_55;
-ASSERT NOT x_20 OR NOT x_27;
-ASSERT NOT x_20 OR NOT x_34;
-ASSERT NOT x_20 OR NOT x_41;
-ASSERT NOT x_20 OR NOT x_48;
-ASSERT NOT x_20 OR NOT x_55;
-ASSERT NOT x_27 OR NOT x_34;
-ASSERT NOT x_27 OR NOT x_41;
-ASSERT NOT x_27 OR NOT x_48;
-ASSERT NOT x_27 OR NOT x_55;
-ASSERT NOT x_34 OR NOT x_41;
-ASSERT NOT x_34 OR NOT x_48;
-ASSERT NOT x_34 OR NOT x_55;
-ASSERT NOT x_41 OR NOT x_48;
-ASSERT NOT x_41 OR NOT x_55;
-ASSERT NOT x_48 OR NOT x_55;
-ASSERT NOT x_7 OR NOT x_14;
-ASSERT NOT x_7 OR NOT x_21;
-ASSERT NOT x_7 OR NOT x_28;
-ASSERT NOT x_7 OR NOT x_35;
-ASSERT NOT x_7 OR NOT x_42;
-ASSERT NOT x_7 OR NOT x_49;
-ASSERT NOT x_7 OR NOT x_56;
-ASSERT NOT x_14 OR NOT x_21;
-ASSERT NOT x_14 OR NOT x_28;
-ASSERT NOT x_14 OR NOT x_35;
-ASSERT NOT x_14 OR NOT x_42;
-ASSERT NOT x_14 OR NOT x_49;
-ASSERT NOT x_14 OR NOT x_56;
-ASSERT NOT x_21 OR NOT x_28;
-ASSERT NOT x_21 OR NOT x_35;
-ASSERT NOT x_21 OR NOT x_42;
-ASSERT NOT x_21 OR NOT x_49;
-ASSERT NOT x_21 OR NOT x_56;
-ASSERT NOT x_28 OR NOT x_35;
-ASSERT NOT x_28 OR NOT x_42;
-ASSERT NOT x_28 OR NOT x_49;
-ASSERT NOT x_28 OR NOT x_56;
-ASSERT NOT x_35 OR NOT x_42;
-ASSERT NOT x_35 OR NOT x_49;
-ASSERT NOT x_35 OR NOT x_56;
-ASSERT NOT x_42 OR NOT x_49;
-ASSERT NOT x_42 OR NOT x_56;
-ASSERT NOT x_49 OR NOT x_56;
-ASSERT x_7 OR x_6 OR x_5 OR x_4 OR x_3 OR x_2 OR x_1;
-ASSERT x_14 OR x_13 OR x_12 OR x_11 OR x_10 OR x_9 OR x_8;
-ASSERT x_21 OR x_20 OR x_19 OR x_18 OR x_17 OR x_16 OR x_15;
-ASSERT x_28 OR x_27 OR x_26 OR x_25 OR x_24 OR x_23 OR x_22;
-ASSERT x_35 OR x_34 OR x_33 OR x_32 OR x_31 OR x_30 OR x_29;
-ASSERT x_42 OR x_41 OR x_40 OR x_39 OR x_38 OR x_37 OR x_36;
-ASSERT x_49 OR x_48 OR x_47 OR x_46 OR x_45 OR x_44 OR x_43;
-ASSERT x_56 OR x_55 OR x_54 OR x_53 OR x_52 OR x_51 OR x_50;
-
-
-QUERY FALSE;
--- /dev/null
+; EXPECT: unsat
+(set-logic ALL)
+(set-option :incremental false)
+(declare-fun x_1 () Bool)
+(declare-fun x_2 () Bool)
+(declare-fun x_3 () Bool)
+(declare-fun x_4 () Bool)
+(declare-fun x_5 () Bool)
+(declare-fun x_6 () Bool)
+(declare-fun x_7 () Bool)
+(declare-fun x_8 () Bool)
+(declare-fun x_9 () Bool)
+(declare-fun x_10 () Bool)
+(declare-fun x_11 () Bool)
+(declare-fun x_12 () Bool)
+(declare-fun x_13 () Bool)
+(declare-fun x_14 () Bool)
+(declare-fun x_15 () Bool)
+(declare-fun x_16 () Bool)
+(declare-fun x_17 () Bool)
+(declare-fun x_18 () Bool)
+(declare-fun x_19 () Bool)
+(declare-fun x_20 () Bool)
+(declare-fun x_21 () Bool)
+(declare-fun x_22 () Bool)
+(declare-fun x_23 () Bool)
+(declare-fun x_24 () Bool)
+(declare-fun x_25 () Bool)
+(declare-fun x_26 () Bool)
+(declare-fun x_27 () Bool)
+(declare-fun x_28 () Bool)
+(declare-fun x_29 () Bool)
+(declare-fun x_30 () Bool)
+(declare-fun x_31 () Bool)
+(declare-fun x_32 () Bool)
+(declare-fun x_33 () Bool)
+(declare-fun x_34 () Bool)
+(declare-fun x_35 () Bool)
+(declare-fun x_36 () Bool)
+(declare-fun x_37 () Bool)
+(declare-fun x_38 () Bool)
+(declare-fun x_39 () Bool)
+(declare-fun x_40 () Bool)
+(declare-fun x_41 () Bool)
+(declare-fun x_42 () Bool)
+(declare-fun x_43 () Bool)
+(declare-fun x_44 () Bool)
+(declare-fun x_45 () Bool)
+(declare-fun x_46 () Bool)
+(declare-fun x_47 () Bool)
+(declare-fun x_48 () Bool)
+(declare-fun x_49 () Bool)
+(declare-fun x_50 () Bool)
+(declare-fun x_51 () Bool)
+(declare-fun x_52 () Bool)
+(declare-fun x_53 () Bool)
+(declare-fun x_54 () Bool)
+(declare-fun x_55 () Bool)
+(declare-fun x_56 () Bool)
+(assert (or (not x_1) (not x_8)))
+(assert (or (not x_1) (not x_15)))
+(assert (or (not x_1) (not x_22)))
+(assert (or (not x_1) (not x_29)))
+(assert (or (not x_1) (not x_36)))
+(assert (or (not x_1) (not x_43)))
+(assert (or (not x_1) (not x_50)))
+(assert (or (not x_8) (not x_15)))
+(assert (or (not x_8) (not x_22)))
+(assert (or (not x_8) (not x_29)))
+(assert (or (not x_8) (not x_36)))
+(assert (or (not x_8) (not x_43)))
+(assert (or (not x_8) (not x_50)))
+(assert (or (not x_15) (not x_22)))
+(assert (or (not x_15) (not x_29)))
+(assert (or (not x_15) (not x_36)))
+(assert (or (not x_15) (not x_43)))
+(assert (or (not x_15) (not x_50)))
+(assert (or (not x_22) (not x_29)))
+(assert (or (not x_22) (not x_36)))
+(assert (or (not x_22) (not x_43)))
+(assert (or (not x_22) (not x_50)))
+(assert (or (not x_29) (not x_36)))
+(assert (or (not x_29) (not x_43)))
+(assert (or (not x_29) (not x_50)))
+(assert (or (not x_36) (not x_43)))
+(assert (or (not x_36) (not x_50)))
+(assert (or (not x_43) (not x_50)))
+(assert (or (not x_2) (not x_9)))
+(assert (or (not x_2) (not x_16)))
+(assert (or (not x_2) (not x_23)))
+(assert (or (not x_2) (not x_30)))
+(assert (or (not x_2) (not x_37)))
+(assert (or (not x_2) (not x_44)))
+(assert (or (not x_2) (not x_51)))
+(assert (or (not x_9) (not x_16)))
+(assert (or (not x_9) (not x_23)))
+(assert (or (not x_9) (not x_30)))
+(assert (or (not x_9) (not x_37)))
+(assert (or (not x_9) (not x_44)))
+(assert (or (not x_9) (not x_51)))
+(assert (or (not x_16) (not x_23)))
+(assert (or (not x_16) (not x_30)))
+(assert (or (not x_16) (not x_37)))
+(assert (or (not x_16) (not x_44)))
+(assert (or (not x_16) (not x_51)))
+(assert (or (not x_23) (not x_30)))
+(assert (or (not x_23) (not x_37)))
+(assert (or (not x_23) (not x_44)))
+(assert (or (not x_23) (not x_51)))
+(assert (or (not x_30) (not x_37)))
+(assert (or (not x_30) (not x_44)))
+(assert (or (not x_30) (not x_51)))
+(assert (or (not x_37) (not x_44)))
+(assert (or (not x_37) (not x_51)))
+(assert (or (not x_44) (not x_51)))
+(assert (or (not x_3) (not x_10)))
+(assert (or (not x_3) (not x_17)))
+(assert (or (not x_3) (not x_24)))
+(assert (or (not x_3) (not x_31)))
+(assert (or (not x_3) (not x_38)))
+(assert (or (not x_3) (not x_45)))
+(assert (or (not x_3) (not x_52)))
+(assert (or (not x_10) (not x_17)))
+(assert (or (not x_10) (not x_24)))
+(assert (or (not x_10) (not x_31)))
+(assert (or (not x_10) (not x_38)))
+(assert (or (not x_10) (not x_45)))
+(assert (or (not x_10) (not x_52)))
+(assert (or (not x_17) (not x_24)))
+(assert (or (not x_17) (not x_31)))
+(assert (or (not x_17) (not x_38)))
+(assert (or (not x_17) (not x_45)))
+(assert (or (not x_17) (not x_52)))
+(assert (or (not x_24) (not x_31)))
+(assert (or (not x_24) (not x_38)))
+(assert (or (not x_24) (not x_45)))
+(assert (or (not x_24) (not x_52)))
+(assert (or (not x_31) (not x_38)))
+(assert (or (not x_31) (not x_45)))
+(assert (or (not x_31) (not x_52)))
+(assert (or (not x_38) (not x_45)))
+(assert (or (not x_38) (not x_52)))
+(assert (or (not x_45) (not x_52)))
+(assert (or (not x_4) (not x_11)))
+(assert (or (not x_4) (not x_18)))
+(assert (or (not x_4) (not x_25)))
+(assert (or (not x_4) (not x_32)))
+(assert (or (not x_4) (not x_39)))
+(assert (or (not x_4) (not x_46)))
+(assert (or (not x_4) (not x_53)))
+(assert (or (not x_11) (not x_18)))
+(assert (or (not x_11) (not x_25)))
+(assert (or (not x_11) (not x_32)))
+(assert (or (not x_11) (not x_39)))
+(assert (or (not x_11) (not x_46)))
+(assert (or (not x_11) (not x_53)))
+(assert (or (not x_18) (not x_25)))
+(assert (or (not x_18) (not x_32)))
+(assert (or (not x_18) (not x_39)))
+(assert (or (not x_18) (not x_46)))
+(assert (or (not x_18) (not x_53)))
+(assert (or (not x_25) (not x_32)))
+(assert (or (not x_25) (not x_39)))
+(assert (or (not x_25) (not x_46)))
+(assert (or (not x_25) (not x_53)))
+(assert (or (not x_32) (not x_39)))
+(assert (or (not x_32) (not x_46)))
+(assert (or (not x_32) (not x_53)))
+(assert (or (not x_39) (not x_46)))
+(assert (or (not x_39) (not x_53)))
+(assert (or (not x_46) (not x_53)))
+(assert (or (not x_5) (not x_12)))
+(assert (or (not x_5) (not x_19)))
+(assert (or (not x_5) (not x_26)))
+(assert (or (not x_5) (not x_33)))
+(assert (or (not x_5) (not x_40)))
+(assert (or (not x_5) (not x_47)))
+(assert (or (not x_5) (not x_54)))
+(assert (or (not x_12) (not x_19)))
+(assert (or (not x_12) (not x_26)))
+(assert (or (not x_12) (not x_33)))
+(assert (or (not x_12) (not x_40)))
+(assert (or (not x_12) (not x_47)))
+(assert (or (not x_12) (not x_54)))
+(assert (or (not x_19) (not x_26)))
+(assert (or (not x_19) (not x_33)))
+(assert (or (not x_19) (not x_40)))
+(assert (or (not x_19) (not x_47)))
+(assert (or (not x_19) (not x_54)))
+(assert (or (not x_26) (not x_33)))
+(assert (or (not x_26) (not x_40)))
+(assert (or (not x_26) (not x_47)))
+(assert (or (not x_26) (not x_54)))
+(assert (or (not x_33) (not x_40)))
+(assert (or (not x_33) (not x_47)))
+(assert (or (not x_33) (not x_54)))
+(assert (or (not x_40) (not x_47)))
+(assert (or (not x_40) (not x_54)))
+(assert (or (not x_47) (not x_54)))
+(assert (or (not x_6) (not x_13)))
+(assert (or (not x_6) (not x_20)))
+(assert (or (not x_6) (not x_27)))
+(assert (or (not x_6) (not x_34)))
+(assert (or (not x_6) (not x_41)))
+(assert (or (not x_6) (not x_48)))
+(assert (or (not x_6) (not x_55)))
+(assert (or (not x_13) (not x_20)))
+(assert (or (not x_13) (not x_27)))
+(assert (or (not x_13) (not x_34)))
+(assert (or (not x_13) (not x_41)))
+(assert (or (not x_13) (not x_48)))
+(assert (or (not x_13) (not x_55)))
+(assert (or (not x_20) (not x_27)))
+(assert (or (not x_20) (not x_34)))
+(assert (or (not x_20) (not x_41)))
+(assert (or (not x_20) (not x_48)))
+(assert (or (not x_20) (not x_55)))
+(assert (or (not x_27) (not x_34)))
+(assert (or (not x_27) (not x_41)))
+(assert (or (not x_27) (not x_48)))
+(assert (or (not x_27) (not x_55)))
+(assert (or (not x_34) (not x_41)))
+(assert (or (not x_34) (not x_48)))
+(assert (or (not x_34) (not x_55)))
+(assert (or (not x_41) (not x_48)))
+(assert (or (not x_41) (not x_55)))
+(assert (or (not x_48) (not x_55)))
+(assert (or (not x_7) (not x_14)))
+(assert (or (not x_7) (not x_21)))
+(assert (or (not x_7) (not x_28)))
+(assert (or (not x_7) (not x_35)))
+(assert (or (not x_7) (not x_42)))
+(assert (or (not x_7) (not x_49)))
+(assert (or (not x_7) (not x_56)))
+(assert (or (not x_14) (not x_21)))
+(assert (or (not x_14) (not x_28)))
+(assert (or (not x_14) (not x_35)))
+(assert (or (not x_14) (not x_42)))
+(assert (or (not x_14) (not x_49)))
+(assert (or (not x_14) (not x_56)))
+(assert (or (not x_21) (not x_28)))
+(assert (or (not x_21) (not x_35)))
+(assert (or (not x_21) (not x_42)))
+(assert (or (not x_21) (not x_49)))
+(assert (or (not x_21) (not x_56)))
+(assert (or (not x_28) (not x_35)))
+(assert (or (not x_28) (not x_42)))
+(assert (or (not x_28) (not x_49)))
+(assert (or (not x_28) (not x_56)))
+(assert (or (not x_35) (not x_42)))
+(assert (or (not x_35) (not x_49)))
+(assert (or (not x_35) (not x_56)))
+(assert (or (not x_42) (not x_49)))
+(assert (or (not x_42) (not x_56)))
+(assert (or (not x_49) (not x_56)))
+(assert (or (or (or (or (or (or x_7 x_6) x_5) x_4) x_3) x_2) x_1))
+(assert (or (or (or (or (or (or x_14 x_13) x_12) x_11) x_10) x_9) x_8))
+(assert (or (or (or (or (or (or x_21 x_20) x_19) x_18) x_17) x_16) x_15))
+(assert (or (or (or (or (or (or x_28 x_27) x_26) x_25) x_24) x_23) x_22))
+(assert (or (or (or (or (or (or x_35 x_34) x_33) x_32) x_31) x_30) x_29))
+(assert (or (or (or (or (or (or x_42 x_41) x_40) x_39) x_38) x_37) x_36))
+(assert (or (or (or (or (or (or x_49 x_48) x_47) x_46) x_45) x_44) x_43))
+(assert (or (or (or (or (or (or x_56 x_55) x_54) x_53) x_52) x_51) x_50))
+(check-sat)
+++ /dev/null
-% EXPECT: entailed
-x_1 : BOOLEAN;
-x_2 : BOOLEAN;
-x_3 : BOOLEAN;
-x_4 : BOOLEAN;
-x_5 : BOOLEAN;
-x_6 : BOOLEAN;
-x_7 : BOOLEAN;
-x_8 : BOOLEAN;
-x_9 : BOOLEAN;
-x_10 : BOOLEAN;
-x_11 : BOOLEAN;
-x_12 : BOOLEAN;
-x_13 : BOOLEAN;
-x_14 : BOOLEAN;
-x_15 : BOOLEAN;
-x_16 : BOOLEAN;
-x_17 : BOOLEAN;
-x_18 : BOOLEAN;
-x_19 : BOOLEAN;
-x_20 : BOOLEAN;
-x_21 : BOOLEAN;
-x_22 : BOOLEAN;
-x_23 : BOOLEAN;
-x_24 : BOOLEAN;
-x_25 : BOOLEAN;
-x_26 : BOOLEAN;
-x_27 : BOOLEAN;
-x_28 : BOOLEAN;
-x_29 : BOOLEAN;
-x_30 : BOOLEAN;
-x_31 : BOOLEAN;
-x_32 : BOOLEAN;
-x_33 : BOOLEAN;
-x_34 : BOOLEAN;
-x_35 : BOOLEAN;
-x_36 : BOOLEAN;
-x_37 : BOOLEAN;
-x_38 : BOOLEAN;
-x_39 : BOOLEAN;
-x_40 : BOOLEAN;
-x_41 : BOOLEAN;
-x_42 : BOOLEAN;
-x_43 : BOOLEAN;
-x_44 : BOOLEAN;
-x_45 : BOOLEAN;
-x_46 : BOOLEAN;
-x_47 : BOOLEAN;
-x_48 : BOOLEAN;
-x_49 : BOOLEAN;
-x_50 : BOOLEAN;
-x_51 : BOOLEAN;
-x_52 : BOOLEAN;
-x_53 : BOOLEAN;
-x_54 : BOOLEAN;
-x_55 : BOOLEAN;
-x_56 : BOOLEAN;
-x_57 : BOOLEAN;
-x_58 : BOOLEAN;
-x_59 : BOOLEAN;
-x_60 : BOOLEAN;
-x_61 : BOOLEAN;
-x_62 : BOOLEAN;
-x_63 : BOOLEAN;
-x_64 : BOOLEAN;
-x_65 : BOOLEAN;
-x_66 : BOOLEAN;
-x_67 : BOOLEAN;
-x_68 : BOOLEAN;
-x_69 : BOOLEAN;
-x_70 : BOOLEAN;
-x_71 : BOOLEAN;
-x_72 : BOOLEAN;
-ASSERT NOT x_1 OR NOT x_9;
-ASSERT NOT x_1 OR NOT x_17;
-ASSERT NOT x_1 OR NOT x_25;
-ASSERT NOT x_1 OR NOT x_33;
-ASSERT NOT x_1 OR NOT x_41;
-ASSERT NOT x_1 OR NOT x_49;
-ASSERT NOT x_1 OR NOT x_57;
-ASSERT NOT x_1 OR NOT x_65;
-ASSERT NOT x_9 OR NOT x_17;
-ASSERT NOT x_9 OR NOT x_25;
-ASSERT NOT x_9 OR NOT x_33;
-ASSERT NOT x_9 OR NOT x_41;
-ASSERT NOT x_9 OR NOT x_49;
-ASSERT NOT x_9 OR NOT x_57;
-ASSERT NOT x_9 OR NOT x_65;
-ASSERT NOT x_17 OR NOT x_25;
-ASSERT NOT x_17 OR NOT x_33;
-ASSERT NOT x_17 OR NOT x_41;
-ASSERT NOT x_17 OR NOT x_49;
-ASSERT NOT x_17 OR NOT x_57;
-ASSERT NOT x_17 OR NOT x_65;
-ASSERT NOT x_25 OR NOT x_33;
-ASSERT NOT x_25 OR NOT x_41;
-ASSERT NOT x_25 OR NOT x_49;
-ASSERT NOT x_25 OR NOT x_57;
-ASSERT NOT x_25 OR NOT x_65;
-ASSERT NOT x_33 OR NOT x_41;
-ASSERT NOT x_33 OR NOT x_49;
-ASSERT NOT x_33 OR NOT x_57;
-ASSERT NOT x_33 OR NOT x_65;
-ASSERT NOT x_41 OR NOT x_49;
-ASSERT NOT x_41 OR NOT x_57;
-ASSERT NOT x_41 OR NOT x_65;
-ASSERT NOT x_49 OR NOT x_57;
-ASSERT NOT x_49 OR NOT x_65;
-ASSERT NOT x_57 OR NOT x_65;
-ASSERT NOT x_2 OR NOT x_10;
-ASSERT NOT x_2 OR NOT x_18;
-ASSERT NOT x_2 OR NOT x_26;
-ASSERT NOT x_2 OR NOT x_34;
-ASSERT NOT x_2 OR NOT x_42;
-ASSERT NOT x_2 OR NOT x_50;
-ASSERT NOT x_2 OR NOT x_58;
-ASSERT NOT x_2 OR NOT x_66;
-ASSERT NOT x_10 OR NOT x_18;
-ASSERT NOT x_10 OR NOT x_26;
-ASSERT NOT x_10 OR NOT x_34;
-ASSERT NOT x_10 OR NOT x_42;
-ASSERT NOT x_10 OR NOT x_50;
-ASSERT NOT x_10 OR NOT x_58;
-ASSERT NOT x_10 OR NOT x_66;
-ASSERT NOT x_18 OR NOT x_26;
-ASSERT NOT x_18 OR NOT x_34;
-ASSERT NOT x_18 OR NOT x_42;
-ASSERT NOT x_18 OR NOT x_50;
-ASSERT NOT x_18 OR NOT x_58;
-ASSERT NOT x_18 OR NOT x_66;
-ASSERT NOT x_26 OR NOT x_34;
-ASSERT NOT x_26 OR NOT x_42;
-ASSERT NOT x_26 OR NOT x_50;
-ASSERT NOT x_26 OR NOT x_58;
-ASSERT NOT x_26 OR NOT x_66;
-ASSERT NOT x_34 OR NOT x_42;
-ASSERT NOT x_34 OR NOT x_50;
-ASSERT NOT x_34 OR NOT x_58;
-ASSERT NOT x_34 OR NOT x_66;
-ASSERT NOT x_42 OR NOT x_50;
-ASSERT NOT x_42 OR NOT x_58;
-ASSERT NOT x_42 OR NOT x_66;
-ASSERT NOT x_50 OR NOT x_58;
-ASSERT NOT x_50 OR NOT x_66;
-ASSERT NOT x_58 OR NOT x_66;
-ASSERT NOT x_3 OR NOT x_11;
-ASSERT NOT x_3 OR NOT x_19;
-ASSERT NOT x_3 OR NOT x_27;
-ASSERT NOT x_3 OR NOT x_35;
-ASSERT NOT x_3 OR NOT x_43;
-ASSERT NOT x_3 OR NOT x_51;
-ASSERT NOT x_3 OR NOT x_59;
-ASSERT NOT x_3 OR NOT x_67;
-ASSERT NOT x_11 OR NOT x_19;
-ASSERT NOT x_11 OR NOT x_27;
-ASSERT NOT x_11 OR NOT x_35;
-ASSERT NOT x_11 OR NOT x_43;
-ASSERT NOT x_11 OR NOT x_51;
-ASSERT NOT x_11 OR NOT x_59;
-ASSERT NOT x_11 OR NOT x_67;
-ASSERT NOT x_19 OR NOT x_27;
-ASSERT NOT x_19 OR NOT x_35;
-ASSERT NOT x_19 OR NOT x_43;
-ASSERT NOT x_19 OR NOT x_51;
-ASSERT NOT x_19 OR NOT x_59;
-ASSERT NOT x_19 OR NOT x_67;
-ASSERT NOT x_27 OR NOT x_35;
-ASSERT NOT x_27 OR NOT x_43;
-ASSERT NOT x_27 OR NOT x_51;
-ASSERT NOT x_27 OR NOT x_59;
-ASSERT NOT x_27 OR NOT x_67;
-ASSERT NOT x_35 OR NOT x_43;
-ASSERT NOT x_35 OR NOT x_51;
-ASSERT NOT x_35 OR NOT x_59;
-ASSERT NOT x_35 OR NOT x_67;
-ASSERT NOT x_43 OR NOT x_51;
-ASSERT NOT x_43 OR NOT x_59;
-ASSERT NOT x_43 OR NOT x_67;
-ASSERT NOT x_51 OR NOT x_59;
-ASSERT NOT x_51 OR NOT x_67;
-ASSERT NOT x_59 OR NOT x_67;
-ASSERT NOT x_4 OR NOT x_12;
-ASSERT NOT x_4 OR NOT x_20;
-ASSERT NOT x_4 OR NOT x_28;
-ASSERT NOT x_4 OR NOT x_36;
-ASSERT NOT x_4 OR NOT x_44;
-ASSERT NOT x_4 OR NOT x_52;
-ASSERT NOT x_4 OR NOT x_60;
-ASSERT NOT x_4 OR NOT x_68;
-ASSERT NOT x_12 OR NOT x_20;
-ASSERT NOT x_12 OR NOT x_28;
-ASSERT NOT x_12 OR NOT x_36;
-ASSERT NOT x_12 OR NOT x_44;
-ASSERT NOT x_12 OR NOT x_52;
-ASSERT NOT x_12 OR NOT x_60;
-ASSERT NOT x_12 OR NOT x_68;
-ASSERT NOT x_20 OR NOT x_28;
-ASSERT NOT x_20 OR NOT x_36;
-ASSERT NOT x_20 OR NOT x_44;
-ASSERT NOT x_20 OR NOT x_52;
-ASSERT NOT x_20 OR NOT x_60;
-ASSERT NOT x_20 OR NOT x_68;
-ASSERT NOT x_28 OR NOT x_36;
-ASSERT NOT x_28 OR NOT x_44;
-ASSERT NOT x_28 OR NOT x_52;
-ASSERT NOT x_28 OR NOT x_60;
-ASSERT NOT x_28 OR NOT x_68;
-ASSERT NOT x_36 OR NOT x_44;
-ASSERT NOT x_36 OR NOT x_52;
-ASSERT NOT x_36 OR NOT x_60;
-ASSERT NOT x_36 OR NOT x_68;
-ASSERT NOT x_44 OR NOT x_52;
-ASSERT NOT x_44 OR NOT x_60;
-ASSERT NOT x_44 OR NOT x_68;
-ASSERT NOT x_52 OR NOT x_60;
-ASSERT NOT x_52 OR NOT x_68;
-ASSERT NOT x_60 OR NOT x_68;
-ASSERT NOT x_5 OR NOT x_13;
-ASSERT NOT x_5 OR NOT x_21;
-ASSERT NOT x_5 OR NOT x_29;
-ASSERT NOT x_5 OR NOT x_37;
-ASSERT NOT x_5 OR NOT x_45;
-ASSERT NOT x_5 OR NOT x_53;
-ASSERT NOT x_5 OR NOT x_61;
-ASSERT NOT x_5 OR NOT x_69;
-ASSERT NOT x_13 OR NOT x_21;
-ASSERT NOT x_13 OR NOT x_29;
-ASSERT NOT x_13 OR NOT x_37;
-ASSERT NOT x_13 OR NOT x_45;
-ASSERT NOT x_13 OR NOT x_53;
-ASSERT NOT x_13 OR NOT x_61;
-ASSERT NOT x_13 OR NOT x_69;
-ASSERT NOT x_21 OR NOT x_29;
-ASSERT NOT x_21 OR NOT x_37;
-ASSERT NOT x_21 OR NOT x_45;
-ASSERT NOT x_21 OR NOT x_53;
-ASSERT NOT x_21 OR NOT x_61;
-ASSERT NOT x_21 OR NOT x_69;
-ASSERT NOT x_29 OR NOT x_37;
-ASSERT NOT x_29 OR NOT x_45;
-ASSERT NOT x_29 OR NOT x_53;
-ASSERT NOT x_29 OR NOT x_61;
-ASSERT NOT x_29 OR NOT x_69;
-ASSERT NOT x_37 OR NOT x_45;
-ASSERT NOT x_37 OR NOT x_53;
-ASSERT NOT x_37 OR NOT x_61;
-ASSERT NOT x_37 OR NOT x_69;
-ASSERT NOT x_45 OR NOT x_53;
-ASSERT NOT x_45 OR NOT x_61;
-ASSERT NOT x_45 OR NOT x_69;
-ASSERT NOT x_53 OR NOT x_61;
-ASSERT NOT x_53 OR NOT x_69;
-ASSERT NOT x_61 OR NOT x_69;
-ASSERT NOT x_6 OR NOT x_14;
-ASSERT NOT x_6 OR NOT x_22;
-ASSERT NOT x_6 OR NOT x_30;
-ASSERT NOT x_6 OR NOT x_38;
-ASSERT NOT x_6 OR NOT x_46;
-ASSERT NOT x_6 OR NOT x_54;
-ASSERT NOT x_6 OR NOT x_62;
-ASSERT NOT x_6 OR NOT x_70;
-ASSERT NOT x_14 OR NOT x_22;
-ASSERT NOT x_14 OR NOT x_30;
-ASSERT NOT x_14 OR NOT x_38;
-ASSERT NOT x_14 OR NOT x_46;
-ASSERT NOT x_14 OR NOT x_54;
-ASSERT NOT x_14 OR NOT x_62;
-ASSERT NOT x_14 OR NOT x_70;
-ASSERT NOT x_22 OR NOT x_30;
-ASSERT NOT x_22 OR NOT x_38;
-ASSERT NOT x_22 OR NOT x_46;
-ASSERT NOT x_22 OR NOT x_54;
-ASSERT NOT x_22 OR NOT x_62;
-ASSERT NOT x_22 OR NOT x_70;
-ASSERT NOT x_30 OR NOT x_38;
-ASSERT NOT x_30 OR NOT x_46;
-ASSERT NOT x_30 OR NOT x_54;
-ASSERT NOT x_30 OR NOT x_62;
-ASSERT NOT x_30 OR NOT x_70;
-ASSERT NOT x_38 OR NOT x_46;
-ASSERT NOT x_38 OR NOT x_54;
-ASSERT NOT x_38 OR NOT x_62;
-ASSERT NOT x_38 OR NOT x_70;
-ASSERT NOT x_46 OR NOT x_54;
-ASSERT NOT x_46 OR NOT x_62;
-ASSERT NOT x_46 OR NOT x_70;
-ASSERT NOT x_54 OR NOT x_62;
-ASSERT NOT x_54 OR NOT x_70;
-ASSERT NOT x_62 OR NOT x_70;
-ASSERT NOT x_7 OR NOT x_15;
-ASSERT NOT x_7 OR NOT x_23;
-ASSERT NOT x_7 OR NOT x_31;
-ASSERT NOT x_7 OR NOT x_39;
-ASSERT NOT x_7 OR NOT x_47;
-ASSERT NOT x_7 OR NOT x_55;
-ASSERT NOT x_7 OR NOT x_63;
-ASSERT NOT x_7 OR NOT x_71;
-ASSERT NOT x_15 OR NOT x_23;
-ASSERT NOT x_15 OR NOT x_31;
-ASSERT NOT x_15 OR NOT x_39;
-ASSERT NOT x_15 OR NOT x_47;
-ASSERT NOT x_15 OR NOT x_55;
-ASSERT NOT x_15 OR NOT x_63;
-ASSERT NOT x_15 OR NOT x_71;
-ASSERT NOT x_23 OR NOT x_31;
-ASSERT NOT x_23 OR NOT x_39;
-ASSERT NOT x_23 OR NOT x_47;
-ASSERT NOT x_23 OR NOT x_55;
-ASSERT NOT x_23 OR NOT x_63;
-ASSERT NOT x_23 OR NOT x_71;
-ASSERT NOT x_31 OR NOT x_39;
-ASSERT NOT x_31 OR NOT x_47;
-ASSERT NOT x_31 OR NOT x_55;
-ASSERT NOT x_31 OR NOT x_63;
-ASSERT NOT x_31 OR NOT x_71;
-ASSERT NOT x_39 OR NOT x_47;
-ASSERT NOT x_39 OR NOT x_55;
-ASSERT NOT x_39 OR NOT x_63;
-ASSERT NOT x_39 OR NOT x_71;
-ASSERT NOT x_47 OR NOT x_55;
-ASSERT NOT x_47 OR NOT x_63;
-ASSERT NOT x_47 OR NOT x_71;
-ASSERT NOT x_55 OR NOT x_63;
-ASSERT NOT x_55 OR NOT x_71;
-ASSERT NOT x_63 OR NOT x_71;
-ASSERT NOT x_8 OR NOT x_16;
-ASSERT NOT x_8 OR NOT x_24;
-ASSERT NOT x_8 OR NOT x_32;
-ASSERT NOT x_8 OR NOT x_40;
-ASSERT NOT x_8 OR NOT x_48;
-ASSERT NOT x_8 OR NOT x_56;
-ASSERT NOT x_8 OR NOT x_64;
-ASSERT NOT x_8 OR NOT x_72;
-ASSERT NOT x_16 OR NOT x_24;
-ASSERT NOT x_16 OR NOT x_32;
-ASSERT NOT x_16 OR NOT x_40;
-ASSERT NOT x_16 OR NOT x_48;
-ASSERT NOT x_16 OR NOT x_56;
-ASSERT NOT x_16 OR NOT x_64;
-ASSERT NOT x_16 OR NOT x_72;
-ASSERT NOT x_24 OR NOT x_32;
-ASSERT NOT x_24 OR NOT x_40;
-ASSERT NOT x_24 OR NOT x_48;
-ASSERT NOT x_24 OR NOT x_56;
-ASSERT NOT x_24 OR NOT x_64;
-ASSERT NOT x_24 OR NOT x_72;
-ASSERT NOT x_32 OR NOT x_40;
-ASSERT NOT x_32 OR NOT x_48;
-ASSERT NOT x_32 OR NOT x_56;
-ASSERT NOT x_32 OR NOT x_64;
-ASSERT NOT x_32 OR NOT x_72;
-ASSERT NOT x_40 OR NOT x_48;
-ASSERT NOT x_40 OR NOT x_56;
-ASSERT NOT x_40 OR NOT x_64;
-ASSERT NOT x_40 OR NOT x_72;
-ASSERT NOT x_48 OR NOT x_56;
-ASSERT NOT x_48 OR NOT x_64;
-ASSERT NOT x_48 OR NOT x_72;
-ASSERT NOT x_56 OR NOT x_64;
-ASSERT NOT x_56 OR NOT x_72;
-ASSERT NOT x_64 OR NOT x_72;
-ASSERT x_8 OR x_7 OR x_6 OR x_5 OR x_4 OR x_3 OR x_2 OR x_1;
-ASSERT x_16 OR x_15 OR x_14 OR x_13 OR x_12 OR x_11 OR x_10 OR x_9;
-ASSERT x_24 OR x_23 OR x_22 OR x_21 OR x_20 OR x_19 OR x_18 OR x_17;
-ASSERT x_32 OR x_31 OR x_30 OR x_29 OR x_28 OR x_27 OR x_26 OR x_25;
-ASSERT x_40 OR x_39 OR x_38 OR x_37 OR x_36 OR x_35 OR x_34 OR x_33;
-ASSERT x_48 OR x_47 OR x_46 OR x_45 OR x_44 OR x_43 OR x_42 OR x_41;
-ASSERT x_56 OR x_55 OR x_54 OR x_53 OR x_52 OR x_51 OR x_50 OR x_49;
-ASSERT x_64 OR x_63 OR x_62 OR x_61 OR x_60 OR x_59 OR x_58 OR x_57;
-ASSERT x_72 OR x_71 OR x_70 OR x_69 OR x_68 OR x_67 OR x_66 OR x_65;
-
-
-QUERY FALSE;
--- /dev/null
+; EXPECT: unsat
+(set-logic ALL)
+(set-option :incremental false)
+(declare-fun x_1 () Bool)
+(declare-fun x_2 () Bool)
+(declare-fun x_3 () Bool)
+(declare-fun x_4 () Bool)
+(declare-fun x_5 () Bool)
+(declare-fun x_6 () Bool)
+(declare-fun x_7 () Bool)
+(declare-fun x_8 () Bool)
+(declare-fun x_9 () Bool)
+(declare-fun x_10 () Bool)
+(declare-fun x_11 () Bool)
+(declare-fun x_12 () Bool)
+(declare-fun x_13 () Bool)
+(declare-fun x_14 () Bool)
+(declare-fun x_15 () Bool)
+(declare-fun x_16 () Bool)
+(declare-fun x_17 () Bool)
+(declare-fun x_18 () Bool)
+(declare-fun x_19 () Bool)
+(declare-fun x_20 () Bool)
+(declare-fun x_21 () Bool)
+(declare-fun x_22 () Bool)
+(declare-fun x_23 () Bool)
+(declare-fun x_24 () Bool)
+(declare-fun x_25 () Bool)
+(declare-fun x_26 () Bool)
+(declare-fun x_27 () Bool)
+(declare-fun x_28 () Bool)
+(declare-fun x_29 () Bool)
+(declare-fun x_30 () Bool)
+(declare-fun x_31 () Bool)
+(declare-fun x_32 () Bool)
+(declare-fun x_33 () Bool)
+(declare-fun x_34 () Bool)
+(declare-fun x_35 () Bool)
+(declare-fun x_36 () Bool)
+(declare-fun x_37 () Bool)
+(declare-fun x_38 () Bool)
+(declare-fun x_39 () Bool)
+(declare-fun x_40 () Bool)
+(declare-fun x_41 () Bool)
+(declare-fun x_42 () Bool)
+(declare-fun x_43 () Bool)
+(declare-fun x_44 () Bool)
+(declare-fun x_45 () Bool)
+(declare-fun x_46 () Bool)
+(declare-fun x_47 () Bool)
+(declare-fun x_48 () Bool)
+(declare-fun x_49 () Bool)
+(declare-fun x_50 () Bool)
+(declare-fun x_51 () Bool)
+(declare-fun x_52 () Bool)
+(declare-fun x_53 () Bool)
+(declare-fun x_54 () Bool)
+(declare-fun x_55 () Bool)
+(declare-fun x_56 () Bool)
+(declare-fun x_57 () Bool)
+(declare-fun x_58 () Bool)
+(declare-fun x_59 () Bool)
+(declare-fun x_60 () Bool)
+(declare-fun x_61 () Bool)
+(declare-fun x_62 () Bool)
+(declare-fun x_63 () Bool)
+(declare-fun x_64 () Bool)
+(declare-fun x_65 () Bool)
+(declare-fun x_66 () Bool)
+(declare-fun x_67 () Bool)
+(declare-fun x_68 () Bool)
+(declare-fun x_69 () Bool)
+(declare-fun x_70 () Bool)
+(declare-fun x_71 () Bool)
+(declare-fun x_72 () Bool)
+(assert (or (not x_1) (not x_9)))
+(assert (or (not x_1) (not x_17)))
+(assert (or (not x_1) (not x_25)))
+(assert (or (not x_1) (not x_33)))
+(assert (or (not x_1) (not x_41)))
+(assert (or (not x_1) (not x_49)))
+(assert (or (not x_1) (not x_57)))
+(assert (or (not x_1) (not x_65)))
+(assert (or (not x_9) (not x_17)))
+(assert (or (not x_9) (not x_25)))
+(assert (or (not x_9) (not x_33)))
+(assert (or (not x_9) (not x_41)))
+(assert (or (not x_9) (not x_49)))
+(assert (or (not x_9) (not x_57)))
+(assert (or (not x_9) (not x_65)))
+(assert (or (not x_17) (not x_25)))
+(assert (or (not x_17) (not x_33)))
+(assert (or (not x_17) (not x_41)))
+(assert (or (not x_17) (not x_49)))
+(assert (or (not x_17) (not x_57)))
+(assert (or (not x_17) (not x_65)))
+(assert (or (not x_25) (not x_33)))
+(assert (or (not x_25) (not x_41)))
+(assert (or (not x_25) (not x_49)))
+(assert (or (not x_25) (not x_57)))
+(assert (or (not x_25) (not x_65)))
+(assert (or (not x_33) (not x_41)))
+(assert (or (not x_33) (not x_49)))
+(assert (or (not x_33) (not x_57)))
+(assert (or (not x_33) (not x_65)))
+(assert (or (not x_41) (not x_49)))
+(assert (or (not x_41) (not x_57)))
+(assert (or (not x_41) (not x_65)))
+(assert (or (not x_49) (not x_57)))
+(assert (or (not x_49) (not x_65)))
+(assert (or (not x_57) (not x_65)))
+(assert (or (not x_2) (not x_10)))
+(assert (or (not x_2) (not x_18)))
+(assert (or (not x_2) (not x_26)))
+(assert (or (not x_2) (not x_34)))
+(assert (or (not x_2) (not x_42)))
+(assert (or (not x_2) (not x_50)))
+(assert (or (not x_2) (not x_58)))
+(assert (or (not x_2) (not x_66)))
+(assert (or (not x_10) (not x_18)))
+(assert (or (not x_10) (not x_26)))
+(assert (or (not x_10) (not x_34)))
+(assert (or (not x_10) (not x_42)))
+(assert (or (not x_10) (not x_50)))
+(assert (or (not x_10) (not x_58)))
+(assert (or (not x_10) (not x_66)))
+(assert (or (not x_18) (not x_26)))
+(assert (or (not x_18) (not x_34)))
+(assert (or (not x_18) (not x_42)))
+(assert (or (not x_18) (not x_50)))
+(assert (or (not x_18) (not x_58)))
+(assert (or (not x_18) (not x_66)))
+(assert (or (not x_26) (not x_34)))
+(assert (or (not x_26) (not x_42)))
+(assert (or (not x_26) (not x_50)))
+(assert (or (not x_26) (not x_58)))
+(assert (or (not x_26) (not x_66)))
+(assert (or (not x_34) (not x_42)))
+(assert (or (not x_34) (not x_50)))
+(assert (or (not x_34) (not x_58)))
+(assert (or (not x_34) (not x_66)))
+(assert (or (not x_42) (not x_50)))
+(assert (or (not x_42) (not x_58)))
+(assert (or (not x_42) (not x_66)))
+(assert (or (not x_50) (not x_58)))
+(assert (or (not x_50) (not x_66)))
+(assert (or (not x_58) (not x_66)))
+(assert (or (not x_3) (not x_11)))
+(assert (or (not x_3) (not x_19)))
+(assert (or (not x_3) (not x_27)))
+(assert (or (not x_3) (not x_35)))
+(assert (or (not x_3) (not x_43)))
+(assert (or (not x_3) (not x_51)))
+(assert (or (not x_3) (not x_59)))
+(assert (or (not x_3) (not x_67)))
+(assert (or (not x_11) (not x_19)))
+(assert (or (not x_11) (not x_27)))
+(assert (or (not x_11) (not x_35)))
+(assert (or (not x_11) (not x_43)))
+(assert (or (not x_11) (not x_51)))
+(assert (or (not x_11) (not x_59)))
+(assert (or (not x_11) (not x_67)))
+(assert (or (not x_19) (not x_27)))
+(assert (or (not x_19) (not x_35)))
+(assert (or (not x_19) (not x_43)))
+(assert (or (not x_19) (not x_51)))
+(assert (or (not x_19) (not x_59)))
+(assert (or (not x_19) (not x_67)))
+(assert (or (not x_27) (not x_35)))
+(assert (or (not x_27) (not x_43)))
+(assert (or (not x_27) (not x_51)))
+(assert (or (not x_27) (not x_59)))
+(assert (or (not x_27) (not x_67)))
+(assert (or (not x_35) (not x_43)))
+(assert (or (not x_35) (not x_51)))
+(assert (or (not x_35) (not x_59)))
+(assert (or (not x_35) (not x_67)))
+(assert (or (not x_43) (not x_51)))
+(assert (or (not x_43) (not x_59)))
+(assert (or (not x_43) (not x_67)))
+(assert (or (not x_51) (not x_59)))
+(assert (or (not x_51) (not x_67)))
+(assert (or (not x_59) (not x_67)))
+(assert (or (not x_4) (not x_12)))
+(assert (or (not x_4) (not x_20)))
+(assert (or (not x_4) (not x_28)))
+(assert (or (not x_4) (not x_36)))
+(assert (or (not x_4) (not x_44)))
+(assert (or (not x_4) (not x_52)))
+(assert (or (not x_4) (not x_60)))
+(assert (or (not x_4) (not x_68)))
+(assert (or (not x_12) (not x_20)))
+(assert (or (not x_12) (not x_28)))
+(assert (or (not x_12) (not x_36)))
+(assert (or (not x_12) (not x_44)))
+(assert (or (not x_12) (not x_52)))
+(assert (or (not x_12) (not x_60)))
+(assert (or (not x_12) (not x_68)))
+(assert (or (not x_20) (not x_28)))
+(assert (or (not x_20) (not x_36)))
+(assert (or (not x_20) (not x_44)))
+(assert (or (not x_20) (not x_52)))
+(assert (or (not x_20) (not x_60)))
+(assert (or (not x_20) (not x_68)))
+(assert (or (not x_28) (not x_36)))
+(assert (or (not x_28) (not x_44)))
+(assert (or (not x_28) (not x_52)))
+(assert (or (not x_28) (not x_60)))
+(assert (or (not x_28) (not x_68)))
+(assert (or (not x_36) (not x_44)))
+(assert (or (not x_36) (not x_52)))
+(assert (or (not x_36) (not x_60)))
+(assert (or (not x_36) (not x_68)))
+(assert (or (not x_44) (not x_52)))
+(assert (or (not x_44) (not x_60)))
+(assert (or (not x_44) (not x_68)))
+(assert (or (not x_52) (not x_60)))
+(assert (or (not x_52) (not x_68)))
+(assert (or (not x_60) (not x_68)))
+(assert (or (not x_5) (not x_13)))
+(assert (or (not x_5) (not x_21)))
+(assert (or (not x_5) (not x_29)))
+(assert (or (not x_5) (not x_37)))
+(assert (or (not x_5) (not x_45)))
+(assert (or (not x_5) (not x_53)))
+(assert (or (not x_5) (not x_61)))
+(assert (or (not x_5) (not x_69)))
+(assert (or (not x_13) (not x_21)))
+(assert (or (not x_13) (not x_29)))
+(assert (or (not x_13) (not x_37)))
+(assert (or (not x_13) (not x_45)))
+(assert (or (not x_13) (not x_53)))
+(assert (or (not x_13) (not x_61)))
+(assert (or (not x_13) (not x_69)))
+(assert (or (not x_21) (not x_29)))
+(assert (or (not x_21) (not x_37)))
+(assert (or (not x_21) (not x_45)))
+(assert (or (not x_21) (not x_53)))
+(assert (or (not x_21) (not x_61)))
+(assert (or (not x_21) (not x_69)))
+(assert (or (not x_29) (not x_37)))
+(assert (or (not x_29) (not x_45)))
+(assert (or (not x_29) (not x_53)))
+(assert (or (not x_29) (not x_61)))
+(assert (or (not x_29) (not x_69)))
+(assert (or (not x_37) (not x_45)))
+(assert (or (not x_37) (not x_53)))
+(assert (or (not x_37) (not x_61)))
+(assert (or (not x_37) (not x_69)))
+(assert (or (not x_45) (not x_53)))
+(assert (or (not x_45) (not x_61)))
+(assert (or (not x_45) (not x_69)))
+(assert (or (not x_53) (not x_61)))
+(assert (or (not x_53) (not x_69)))
+(assert (or (not x_61) (not x_69)))
+(assert (or (not x_6) (not x_14)))
+(assert (or (not x_6) (not x_22)))
+(assert (or (not x_6) (not x_30)))
+(assert (or (not x_6) (not x_38)))
+(assert (or (not x_6) (not x_46)))
+(assert (or (not x_6) (not x_54)))
+(assert (or (not x_6) (not x_62)))
+(assert (or (not x_6) (not x_70)))
+(assert (or (not x_14) (not x_22)))
+(assert (or (not x_14) (not x_30)))
+(assert (or (not x_14) (not x_38)))
+(assert (or (not x_14) (not x_46)))
+(assert (or (not x_14) (not x_54)))
+(assert (or (not x_14) (not x_62)))
+(assert (or (not x_14) (not x_70)))
+(assert (or (not x_22) (not x_30)))
+(assert (or (not x_22) (not x_38)))
+(assert (or (not x_22) (not x_46)))
+(assert (or (not x_22) (not x_54)))
+(assert (or (not x_22) (not x_62)))
+(assert (or (not x_22) (not x_70)))
+(assert (or (not x_30) (not x_38)))
+(assert (or (not x_30) (not x_46)))
+(assert (or (not x_30) (not x_54)))
+(assert (or (not x_30) (not x_62)))
+(assert (or (not x_30) (not x_70)))
+(assert (or (not x_38) (not x_46)))
+(assert (or (not x_38) (not x_54)))
+(assert (or (not x_38) (not x_62)))
+(assert (or (not x_38) (not x_70)))
+(assert (or (not x_46) (not x_54)))
+(assert (or (not x_46) (not x_62)))
+(assert (or (not x_46) (not x_70)))
+(assert (or (not x_54) (not x_62)))
+(assert (or (not x_54) (not x_70)))
+(assert (or (not x_62) (not x_70)))
+(assert (or (not x_7) (not x_15)))
+(assert (or (not x_7) (not x_23)))
+(assert (or (not x_7) (not x_31)))
+(assert (or (not x_7) (not x_39)))
+(assert (or (not x_7) (not x_47)))
+(assert (or (not x_7) (not x_55)))
+(assert (or (not x_7) (not x_63)))
+(assert (or (not x_7) (not x_71)))
+(assert (or (not x_15) (not x_23)))
+(assert (or (not x_15) (not x_31)))
+(assert (or (not x_15) (not x_39)))
+(assert (or (not x_15) (not x_47)))
+(assert (or (not x_15) (not x_55)))
+(assert (or (not x_15) (not x_63)))
+(assert (or (not x_15) (not x_71)))
+(assert (or (not x_23) (not x_31)))
+(assert (or (not x_23) (not x_39)))
+(assert (or (not x_23) (not x_47)))
+(assert (or (not x_23) (not x_55)))
+(assert (or (not x_23) (not x_63)))
+(assert (or (not x_23) (not x_71)))
+(assert (or (not x_31) (not x_39)))
+(assert (or (not x_31) (not x_47)))
+(assert (or (not x_31) (not x_55)))
+(assert (or (not x_31) (not x_63)))
+(assert (or (not x_31) (not x_71)))
+(assert (or (not x_39) (not x_47)))
+(assert (or (not x_39) (not x_55)))
+(assert (or (not x_39) (not x_63)))
+(assert (or (not x_39) (not x_71)))
+(assert (or (not x_47) (not x_55)))
+(assert (or (not x_47) (not x_63)))
+(assert (or (not x_47) (not x_71)))
+(assert (or (not x_55) (not x_63)))
+(assert (or (not x_55) (not x_71)))
+(assert (or (not x_63) (not x_71)))
+(assert (or (not x_8) (not x_16)))
+(assert (or (not x_8) (not x_24)))
+(assert (or (not x_8) (not x_32)))
+(assert (or (not x_8) (not x_40)))
+(assert (or (not x_8) (not x_48)))
+(assert (or (not x_8) (not x_56)))
+(assert (or (not x_8) (not x_64)))
+(assert (or (not x_8) (not x_72)))
+(assert (or (not x_16) (not x_24)))
+(assert (or (not x_16) (not x_32)))
+(assert (or (not x_16) (not x_40)))
+(assert (or (not x_16) (not x_48)))
+(assert (or (not x_16) (not x_56)))
+(assert (or (not x_16) (not x_64)))
+(assert (or (not x_16) (not x_72)))
+(assert (or (not x_24) (not x_32)))
+(assert (or (not x_24) (not x_40)))
+(assert (or (not x_24) (not x_48)))
+(assert (or (not x_24) (not x_56)))
+(assert (or (not x_24) (not x_64)))
+(assert (or (not x_24) (not x_72)))
+(assert (or (not x_32) (not x_40)))
+(assert (or (not x_32) (not x_48)))
+(assert (or (not x_32) (not x_56)))
+(assert (or (not x_32) (not x_64)))
+(assert (or (not x_32) (not x_72)))
+(assert (or (not x_40) (not x_48)))
+(assert (or (not x_40) (not x_56)))
+(assert (or (not x_40) (not x_64)))
+(assert (or (not x_40) (not x_72)))
+(assert (or (not x_48) (not x_56)))
+(assert (or (not x_48) (not x_64)))
+(assert (or (not x_48) (not x_72)))
+(assert (or (not x_56) (not x_64)))
+(assert (or (not x_56) (not x_72)))
+(assert (or (not x_64) (not x_72)))
+(assert (or (or (or (or (or (or (or x_8 x_7) x_6) x_5) x_4) x_3) x_2) x_1))
+(assert (or (or (or (or (or (or (or x_16 x_15) x_14) x_13) x_12) x_11) x_10) x_9))
+(assert (or (or (or (or (or (or (or x_24 x_23) x_22) x_21) x_20) x_19) x_18) x_17))
+(assert (or (or (or (or (or (or (or x_32 x_31) x_30) x_29) x_28) x_27) x_26) x_25))
+(assert (or (or (or (or (or (or (or x_40 x_39) x_38) x_37) x_36) x_35) x_34) x_33))
+(assert (or (or (or (or (or (or (or x_48 x_47) x_46) x_45) x_44) x_43) x_42) x_41))
+(assert (or (or (or (or (or (or (or x_56 x_55) x_54) x_53) x_52) x_51) x_50) x_49))
+(assert (or (or (or (or (or (or (or x_64 x_63) x_62) x_61) x_60) x_59) x_58) x_57))
+(assert (or (or (or (or (or (or (or x_72 x_71) x_70) x_69) x_68) x_67) x_66) x_65))
+(check-sat)
+++ /dev/null
-% EXPECT: not_entailed
-
-DATATYPE
- nat = succ(pred : nat) | zero,
- list = cons(car : tree, cdr : list) | null,
- tree = node(children : list) | leaf(data : nat)
-END;
-
-x1 : nat ;
-x2 : list ;
-x3 : tree ;
-
-QUERY
-
-(NOT is_zero((LET x154 = (LET x155 = node((LET x156 = (LET x157 = (LET x158 = (LET x159 = (LET x160 = (LET x161 = (LET x162 = cons((LET x163 = (LET x164 = (LET x165 = (LET x166 = (LET x167 = (LET x168 = (LET x169 = (LET x170 = (LET x171 = (LET x172 = (LET x173 = x3 IN
- (IF is_node(x173) THEN children(x173) ELSE null ENDIF)) IN
- (IF is_cons(x172) THEN car(x172) ELSE leaf(zero) ENDIF)) IN
- (IF is_node(x171) THEN children(x171) ELSE null ENDIF)) IN
- (IF is_cons(x170) THEN cdr(x170) ELSE null ENDIF)) IN
- (IF is_cons(x169) THEN car(x169) ELSE leaf(zero) ENDIF)) IN
- (IF is_node(x168) THEN children(x168) ELSE null ENDIF)) IN
- (IF is_cons(x167) THEN cdr(x167) ELSE null ENDIF)) IN
- (IF is_cons(x166) THEN cdr(x166) ELSE null ENDIF)) IN
- (IF is_cons(x165) THEN cdr(x165) ELSE null ENDIF)) IN
- (IF is_cons(x164) THEN cdr(x164) ELSE null ENDIF)) IN
- (IF is_cons(x163) THEN car(x163) ELSE leaf(zero) ENDIF)),cons((LET x174 = cons(x3,(LET x175 = node(cons(node((LET x176 = x3 IN
- (IF is_node(x176) THEN children(x176) ELSE null ENDIF))),x2)) IN
- (IF is_node(x175) THEN children(x175) ELSE null ENDIF))) IN
- (IF is_cons(x174) THEN car(x174) ELSE leaf(zero) ENDIF)),cons(leaf(succ((LET x177 = node(null) IN
- (IF is_leaf(x177) THEN data(x177) ELSE zero ENDIF)))),(LET x178 = (LET x179 = (LET x180 = (LET x181 = node(x2) IN
- (IF is_node(x181) THEN children(x181) ELSE null ENDIF)) IN
- (IF is_cons(x180) THEN car(x180) ELSE leaf(zero) ENDIF)) IN
- (IF is_node(x179) THEN children(x179) ELSE null ENDIF)) IN
- (IF is_cons(x178) THEN cdr(x178) ELSE null ENDIF))))) IN
- (IF is_cons(x162) THEN cdr(x162) ELSE null ENDIF)) IN
- (IF is_cons(x161) THEN cdr(x161) ELSE null ENDIF)) IN
- (IF is_cons(x160) THEN car(x160) ELSE leaf(zero) ENDIF)) IN
- (IF is_node(x159) THEN children(x159) ELSE null ENDIF)) IN
- (IF is_cons(x158) THEN cdr(x158) ELSE null ENDIF)) IN
- (IF is_cons(x157) THEN cdr(x157) ELSE null ENDIF)) IN
- (IF is_cons(x156) THEN cdr(x156) ELSE null ENDIF))) IN
- (IF is_leaf(x155) THEN data(x155) ELSE zero ENDIF)) IN
- (IF is_succ(x154) THEN pred(x154) ELSE zero ENDIF))));
--- /dev/null
+; EXPECT: sat
+(set-logic ALL)
+(set-option :incremental false)
+(declare-datatypes ((nat 0)(list 0)(tree 0)) (((succ (pred nat)) (zero))((cons (car tree) (cdr list)) (null))((node (children list)) (leaf (data nat)))))
+(declare-fun x1 () nat)
+(declare-fun x2 () list)
+(declare-fun x3 () tree)
+(check-sat-assuming ( (not (let ((_let_1 (leaf zero))) (let ((_let_2 (node x2))) (let ((_let_3 (ite ((_ is node) _let_2) (children _let_2) null))) (let ((_let_4 (ite ((_ is cons) _let_3) (car _let_3) _let_1))) (let ((_let_5 (ite ((_ is node) _let_4) (children _let_4) null))) (let ((_let_6 (node null))) (let ((_let_7 (ite ((_ is node) x3) (children x3) null))) (let ((_let_8 (node (cons (node _let_7) x2)))) (let ((_let_9 (cons x3 (ite ((_ is node) _let_8) (children _let_8) null)))) (let ((_let_10 (ite ((_ is cons) _let_7) (car _let_7) _let_1))) (let ((_let_11 (ite ((_ is node) _let_10) (children _let_10) null))) (let ((_let_12 (ite ((_ is cons) _let_11) (cdr _let_11) null))) (let ((_let_13 (ite ((_ is cons) _let_12) (car _let_12) _let_1))) (let ((_let_14 (ite ((_ is node) _let_13) (children _let_13) null))) (let ((_let_15 (ite ((_ is cons) _let_14) (cdr _let_14) null))) (let ((_let_16 (ite ((_ is cons) _let_15) (cdr _let_15) null))) (let ((_let_17 (ite ((_ is cons) _let_16) (cdr _let_16) null))) (let ((_let_18 (ite ((_ is cons) _let_17) (cdr _let_17) null))) (let ((_let_19 (cons (ite ((_ is cons) _let_18) (car _let_18) _let_1) (cons (ite ((_ is cons) _let_9) (car _let_9) _let_1) (cons (leaf (succ (ite ((_ is leaf) _let_6) (data _let_6) zero))) (ite ((_ is cons) _let_5) (cdr _let_5) null)))))) (let ((_let_20 (ite ((_ is cons) _let_19) (cdr _let_19) null))) (let ((_let_21 (ite ((_ is cons) _let_20) (cdr _let_20) null))) (let ((_let_22 (ite ((_ is cons) _let_21) (car _let_21) _let_1))) (let ((_let_23 (ite ((_ is node) _let_22) (children _let_22) null))) (let ((_let_24 (ite ((_ is cons) _let_23) (cdr _let_23) null))) (let ((_let_25 (ite ((_ is cons) _let_24) (cdr _let_24) null))) (let ((_let_26 (node (ite ((_ is cons) _let_25) (cdr _let_25) null)))) (let ((_let_27 (ite ((_ is leaf) _let_26) (data _let_26) zero))) (not ((_ is zero) (ite ((_ is succ) _let_27) (pred _let_27) zero))))))))))))))))))))))))))))))) ))
+++ /dev/null
-% EXPECT: entailed
-x_1 : BOOLEAN;
-x_2 : BOOLEAN;
-x_3 : BOOLEAN;
-x_4 : BOOLEAN;
-x_5 : BOOLEAN;
-x_6 : BOOLEAN;
-x_7 : BOOLEAN;
-x_8 : BOOLEAN;
-x_9 : BOOLEAN;
-x_10 : BOOLEAN;
-x_11 : BOOLEAN;
-x_12 : BOOLEAN;
-x_13 : BOOLEAN;
-x_14 : BOOLEAN;
-x_15 : BOOLEAN;
-x_16 : BOOLEAN;
-x_17 : BOOLEAN;
-x_18 : BOOLEAN;
-x_19 : BOOLEAN;
-x_20 : BOOLEAN;
-x_21 : BOOLEAN;
-x_22 : BOOLEAN;
-x_23 : BOOLEAN;
-x_24 : BOOLEAN;
-x_25 : BOOLEAN;
-x_26 : BOOLEAN;
-x_27 : BOOLEAN;
-x_28 : BOOLEAN;
-x_29 : BOOLEAN;
-x_30 : BOOLEAN;
-x_31 : BOOLEAN;
-x_32 : BOOLEAN;
-x_33 : BOOLEAN;
-x_34 : BOOLEAN;
-x_35 : BOOLEAN;
-x_36 : BOOLEAN;
-x_37 : BOOLEAN;
-x_38 : BOOLEAN;
-x_39 : BOOLEAN;
-x_40 : BOOLEAN;
-x_41 : BOOLEAN;
-x_42 : BOOLEAN;
-x_43 : BOOLEAN;
-x_44 : BOOLEAN;
-x_45 : BOOLEAN;
-x_46 : BOOLEAN;
-x_47 : BOOLEAN;
-x_48 : BOOLEAN;
-x_49 : BOOLEAN;
-x_50 : BOOLEAN;
-x_51 : BOOLEAN;
-x_52 : BOOLEAN;
-x_53 : BOOLEAN;
-x_54 : BOOLEAN;
-x_55 : BOOLEAN;
-x_56 : BOOLEAN;
-x_57 : BOOLEAN;
-x_58 : BOOLEAN;
-x_59 : BOOLEAN;
-x_60 : BOOLEAN;
-x_61 : BOOLEAN;
-x_62 : BOOLEAN;
-x_63 : BOOLEAN;
-x_64 : BOOLEAN;
-x_65 : BOOLEAN;
-x_66 : BOOLEAN;
-x_67 : BOOLEAN;
-x_68 : BOOLEAN;
-x_69 : BOOLEAN;
-x_70 : BOOLEAN;
-x_71 : BOOLEAN;
-x_72 : BOOLEAN;
-x_73 : BOOLEAN;
-x_74 : BOOLEAN;
-x_75 : BOOLEAN;
-x_76 : BOOLEAN;
-x_77 : BOOLEAN;
-x_78 : BOOLEAN;
-x_79 : BOOLEAN;
-x_80 : BOOLEAN;
-x_81 : BOOLEAN;
-x_82 : BOOLEAN;
-x_83 : BOOLEAN;
-x_84 : BOOLEAN;
-x_85 : BOOLEAN;
-x_86 : BOOLEAN;
-x_87 : BOOLEAN;
-x_88 : BOOLEAN;
-x_89 : BOOLEAN;
-x_90 : BOOLEAN;
-x_91 : BOOLEAN;
-x_92 : BOOLEAN;
-x_93 : BOOLEAN;
-x_94 : BOOLEAN;
-x_95 : BOOLEAN;
-x_96 : BOOLEAN;
-x_97 : BOOLEAN;
-x_98 : BOOLEAN;
-x_99 : BOOLEAN;
-x_100 : BOOLEAN;
-x_101 : BOOLEAN;
-x_102 : BOOLEAN;
-x_103 : BOOLEAN;
-x_104 : BOOLEAN;
-x_105 : BOOLEAN;
-x_106 : BOOLEAN;
-x_107 : BOOLEAN;
-x_108 : BOOLEAN;
-x_109 : BOOLEAN;
-x_110 : BOOLEAN;
-ASSERT NOT x_1 OR NOT x_11;
-ASSERT NOT x_1 OR NOT x_21;
-ASSERT NOT x_1 OR NOT x_31;
-ASSERT NOT x_1 OR NOT x_41;
-ASSERT NOT x_1 OR NOT x_51;
-ASSERT NOT x_1 OR NOT x_61;
-ASSERT NOT x_1 OR NOT x_71;
-ASSERT NOT x_1 OR NOT x_81;
-ASSERT NOT x_1 OR NOT x_91;
-ASSERT NOT x_1 OR NOT x_101;
-ASSERT NOT x_11 OR NOT x_21;
-ASSERT NOT x_11 OR NOT x_31;
-ASSERT NOT x_11 OR NOT x_41;
-ASSERT NOT x_11 OR NOT x_51;
-ASSERT NOT x_11 OR NOT x_61;
-ASSERT NOT x_11 OR NOT x_71;
-ASSERT NOT x_11 OR NOT x_81;
-ASSERT NOT x_11 OR NOT x_91;
-ASSERT NOT x_11 OR NOT x_101;
-ASSERT NOT x_21 OR NOT x_31;
-ASSERT NOT x_21 OR NOT x_41;
-ASSERT NOT x_21 OR NOT x_51;
-ASSERT NOT x_21 OR NOT x_61;
-ASSERT NOT x_21 OR NOT x_71;
-ASSERT NOT x_21 OR NOT x_81;
-ASSERT NOT x_21 OR NOT x_91;
-ASSERT NOT x_21 OR NOT x_101;
-ASSERT NOT x_31 OR NOT x_41;
-ASSERT NOT x_31 OR NOT x_51;
-ASSERT NOT x_31 OR NOT x_61;
-ASSERT NOT x_31 OR NOT x_71;
-ASSERT NOT x_31 OR NOT x_81;
-ASSERT NOT x_31 OR NOT x_91;
-ASSERT NOT x_31 OR NOT x_101;
-ASSERT NOT x_41 OR NOT x_51;
-ASSERT NOT x_41 OR NOT x_61;
-ASSERT NOT x_41 OR NOT x_71;
-ASSERT NOT x_41 OR NOT x_81;
-ASSERT NOT x_41 OR NOT x_91;
-ASSERT NOT x_41 OR NOT x_101;
-ASSERT NOT x_51 OR NOT x_61;
-ASSERT NOT x_51 OR NOT x_71;
-ASSERT NOT x_51 OR NOT x_81;
-ASSERT NOT x_51 OR NOT x_91;
-ASSERT NOT x_51 OR NOT x_101;
-ASSERT NOT x_61 OR NOT x_71;
-ASSERT NOT x_61 OR NOT x_81;
-ASSERT NOT x_61 OR NOT x_91;
-ASSERT NOT x_61 OR NOT x_101;
-ASSERT NOT x_71 OR NOT x_81;
-ASSERT NOT x_71 OR NOT x_91;
-ASSERT NOT x_71 OR NOT x_101;
-ASSERT NOT x_81 OR NOT x_91;
-ASSERT NOT x_81 OR NOT x_101;
-ASSERT NOT x_91 OR NOT x_101;
-ASSERT NOT x_2 OR NOT x_12;
-ASSERT NOT x_2 OR NOT x_22;
-ASSERT NOT x_2 OR NOT x_32;
-ASSERT NOT x_2 OR NOT x_42;
-ASSERT NOT x_2 OR NOT x_52;
-ASSERT NOT x_2 OR NOT x_62;
-ASSERT NOT x_2 OR NOT x_72;
-ASSERT NOT x_2 OR NOT x_82;
-ASSERT NOT x_2 OR NOT x_92;
-ASSERT NOT x_2 OR NOT x_102;
-ASSERT NOT x_12 OR NOT x_22;
-ASSERT NOT x_12 OR NOT x_32;
-ASSERT NOT x_12 OR NOT x_42;
-ASSERT NOT x_12 OR NOT x_52;
-ASSERT NOT x_12 OR NOT x_62;
-ASSERT NOT x_12 OR NOT x_72;
-ASSERT NOT x_12 OR NOT x_82;
-ASSERT NOT x_12 OR NOT x_92;
-ASSERT NOT x_12 OR NOT x_102;
-ASSERT NOT x_22 OR NOT x_32;
-ASSERT NOT x_22 OR NOT x_42;
-ASSERT NOT x_22 OR NOT x_52;
-ASSERT NOT x_22 OR NOT x_62;
-ASSERT NOT x_22 OR NOT x_72;
-ASSERT NOT x_22 OR NOT x_82;
-ASSERT NOT x_22 OR NOT x_92;
-ASSERT NOT x_22 OR NOT x_102;
-ASSERT NOT x_32 OR NOT x_42;
-ASSERT NOT x_32 OR NOT x_52;
-ASSERT NOT x_32 OR NOT x_62;
-ASSERT NOT x_32 OR NOT x_72;
-ASSERT NOT x_32 OR NOT x_82;
-ASSERT NOT x_32 OR NOT x_92;
-ASSERT NOT x_32 OR NOT x_102;
-ASSERT NOT x_42 OR NOT x_52;
-ASSERT NOT x_42 OR NOT x_62;
-ASSERT NOT x_42 OR NOT x_72;
-ASSERT NOT x_42 OR NOT x_82;
-ASSERT NOT x_42 OR NOT x_92;
-ASSERT NOT x_42 OR NOT x_102;
-ASSERT NOT x_52 OR NOT x_62;
-ASSERT NOT x_52 OR NOT x_72;
-ASSERT NOT x_52 OR NOT x_82;
-ASSERT NOT x_52 OR NOT x_92;
-ASSERT NOT x_52 OR NOT x_102;
-ASSERT NOT x_62 OR NOT x_72;
-ASSERT NOT x_62 OR NOT x_82;
-ASSERT NOT x_62 OR NOT x_92;
-ASSERT NOT x_62 OR NOT x_102;
-ASSERT NOT x_72 OR NOT x_82;
-ASSERT NOT x_72 OR NOT x_92;
-ASSERT NOT x_72 OR NOT x_102;
-ASSERT NOT x_82 OR NOT x_92;
-ASSERT NOT x_82 OR NOT x_102;
-ASSERT NOT x_92 OR NOT x_102;
-ASSERT NOT x_3 OR NOT x_13;
-ASSERT NOT x_3 OR NOT x_23;
-ASSERT NOT x_3 OR NOT x_33;
-ASSERT NOT x_3 OR NOT x_43;
-ASSERT NOT x_3 OR NOT x_53;
-ASSERT NOT x_3 OR NOT x_63;
-ASSERT NOT x_3 OR NOT x_73;
-ASSERT NOT x_3 OR NOT x_83;
-ASSERT NOT x_3 OR NOT x_93;
-ASSERT NOT x_3 OR NOT x_103;
-ASSERT NOT x_13 OR NOT x_23;
-ASSERT NOT x_13 OR NOT x_33;
-ASSERT NOT x_13 OR NOT x_43;
-ASSERT NOT x_13 OR NOT x_53;
-ASSERT NOT x_13 OR NOT x_63;
-ASSERT NOT x_13 OR NOT x_73;
-ASSERT NOT x_13 OR NOT x_83;
-ASSERT NOT x_13 OR NOT x_93;
-ASSERT NOT x_13 OR NOT x_103;
-ASSERT NOT x_23 OR NOT x_33;
-ASSERT NOT x_23 OR NOT x_43;
-ASSERT NOT x_23 OR NOT x_53;
-ASSERT NOT x_23 OR NOT x_63;
-ASSERT NOT x_23 OR NOT x_73;
-ASSERT NOT x_23 OR NOT x_83;
-ASSERT NOT x_23 OR NOT x_93;
-ASSERT NOT x_23 OR NOT x_103;
-ASSERT NOT x_33 OR NOT x_43;
-ASSERT NOT x_33 OR NOT x_53;
-ASSERT NOT x_33 OR NOT x_63;
-ASSERT NOT x_33 OR NOT x_73;
-ASSERT NOT x_33 OR NOT x_83;
-ASSERT NOT x_33 OR NOT x_93;
-ASSERT NOT x_33 OR NOT x_103;
-ASSERT NOT x_43 OR NOT x_53;
-ASSERT NOT x_43 OR NOT x_63;
-ASSERT NOT x_43 OR NOT x_73;
-ASSERT NOT x_43 OR NOT x_83;
-ASSERT NOT x_43 OR NOT x_93;
-ASSERT NOT x_43 OR NOT x_103;
-ASSERT NOT x_53 OR NOT x_63;
-ASSERT NOT x_53 OR NOT x_73;
-ASSERT NOT x_53 OR NOT x_83;
-ASSERT NOT x_53 OR NOT x_93;
-ASSERT NOT x_53 OR NOT x_103;
-ASSERT NOT x_63 OR NOT x_73;
-ASSERT NOT x_63 OR NOT x_83;
-ASSERT NOT x_63 OR NOT x_93;
-ASSERT NOT x_63 OR NOT x_103;
-ASSERT NOT x_73 OR NOT x_83;
-ASSERT NOT x_73 OR NOT x_93;
-ASSERT NOT x_73 OR NOT x_103;
-ASSERT NOT x_83 OR NOT x_93;
-ASSERT NOT x_83 OR NOT x_103;
-ASSERT NOT x_93 OR NOT x_103;
-ASSERT NOT x_4 OR NOT x_14;
-ASSERT NOT x_4 OR NOT x_24;
-ASSERT NOT x_4 OR NOT x_34;
-ASSERT NOT x_4 OR NOT x_44;
-ASSERT NOT x_4 OR NOT x_54;
-ASSERT NOT x_4 OR NOT x_64;
-ASSERT NOT x_4 OR NOT x_74;
-ASSERT NOT x_4 OR NOT x_84;
-ASSERT NOT x_4 OR NOT x_94;
-ASSERT NOT x_4 OR NOT x_104;
-ASSERT NOT x_14 OR NOT x_24;
-ASSERT NOT x_14 OR NOT x_34;
-ASSERT NOT x_14 OR NOT x_44;
-ASSERT NOT x_14 OR NOT x_54;
-ASSERT NOT x_14 OR NOT x_64;
-ASSERT NOT x_14 OR NOT x_74;
-ASSERT NOT x_14 OR NOT x_84;
-ASSERT NOT x_14 OR NOT x_94;
-ASSERT NOT x_14 OR NOT x_104;
-ASSERT NOT x_24 OR NOT x_34;
-ASSERT NOT x_24 OR NOT x_44;
-ASSERT NOT x_24 OR NOT x_54;
-ASSERT NOT x_24 OR NOT x_64;
-ASSERT NOT x_24 OR NOT x_74;
-ASSERT NOT x_24 OR NOT x_84;
-ASSERT NOT x_24 OR NOT x_94;
-ASSERT NOT x_24 OR NOT x_104;
-ASSERT NOT x_34 OR NOT x_44;
-ASSERT NOT x_34 OR NOT x_54;
-ASSERT NOT x_34 OR NOT x_64;
-ASSERT NOT x_34 OR NOT x_74;
-ASSERT NOT x_34 OR NOT x_84;
-ASSERT NOT x_34 OR NOT x_94;
-ASSERT NOT x_34 OR NOT x_104;
-ASSERT NOT x_44 OR NOT x_54;
-ASSERT NOT x_44 OR NOT x_64;
-ASSERT NOT x_44 OR NOT x_74;
-ASSERT NOT x_44 OR NOT x_84;
-ASSERT NOT x_44 OR NOT x_94;
-ASSERT NOT x_44 OR NOT x_104;
-ASSERT NOT x_54 OR NOT x_64;
-ASSERT NOT x_54 OR NOT x_74;
-ASSERT NOT x_54 OR NOT x_84;
-ASSERT NOT x_54 OR NOT x_94;
-ASSERT NOT x_54 OR NOT x_104;
-ASSERT NOT x_64 OR NOT x_74;
-ASSERT NOT x_64 OR NOT x_84;
-ASSERT NOT x_64 OR NOT x_94;
-ASSERT NOT x_64 OR NOT x_104;
-ASSERT NOT x_74 OR NOT x_84;
-ASSERT NOT x_74 OR NOT x_94;
-ASSERT NOT x_74 OR NOT x_104;
-ASSERT NOT x_84 OR NOT x_94;
-ASSERT NOT x_84 OR NOT x_104;
-ASSERT NOT x_94 OR NOT x_104;
-ASSERT NOT x_5 OR NOT x_15;
-ASSERT NOT x_5 OR NOT x_25;
-ASSERT NOT x_5 OR NOT x_35;
-ASSERT NOT x_5 OR NOT x_45;
-ASSERT NOT x_5 OR NOT x_55;
-ASSERT NOT x_5 OR NOT x_65;
-ASSERT NOT x_5 OR NOT x_75;
-ASSERT NOT x_5 OR NOT x_85;
-ASSERT NOT x_5 OR NOT x_95;
-ASSERT NOT x_5 OR NOT x_105;
-ASSERT NOT x_15 OR NOT x_25;
-ASSERT NOT x_15 OR NOT x_35;
-ASSERT NOT x_15 OR NOT x_45;
-ASSERT NOT x_15 OR NOT x_55;
-ASSERT NOT x_15 OR NOT x_65;
-ASSERT NOT x_15 OR NOT x_75;
-ASSERT NOT x_15 OR NOT x_85;
-ASSERT NOT x_15 OR NOT x_95;
-ASSERT NOT x_15 OR NOT x_105;
-ASSERT NOT x_25 OR NOT x_35;
-ASSERT NOT x_25 OR NOT x_45;
-ASSERT NOT x_25 OR NOT x_55;
-ASSERT NOT x_25 OR NOT x_65;
-ASSERT NOT x_25 OR NOT x_75;
-ASSERT NOT x_25 OR NOT x_85;
-ASSERT NOT x_25 OR NOT x_95;
-ASSERT NOT x_25 OR NOT x_105;
-ASSERT NOT x_35 OR NOT x_45;
-ASSERT NOT x_35 OR NOT x_55;
-ASSERT NOT x_35 OR NOT x_65;
-ASSERT NOT x_35 OR NOT x_75;
-ASSERT NOT x_35 OR NOT x_85;
-ASSERT NOT x_35 OR NOT x_95;
-ASSERT NOT x_35 OR NOT x_105;
-ASSERT NOT x_45 OR NOT x_55;
-ASSERT NOT x_45 OR NOT x_65;
-ASSERT NOT x_45 OR NOT x_75;
-ASSERT NOT x_45 OR NOT x_85;
-ASSERT NOT x_45 OR NOT x_95;
-ASSERT NOT x_45 OR NOT x_105;
-ASSERT NOT x_55 OR NOT x_65;
-ASSERT NOT x_55 OR NOT x_75;
-ASSERT NOT x_55 OR NOT x_85;
-ASSERT NOT x_55 OR NOT x_95;
-ASSERT NOT x_55 OR NOT x_105;
-ASSERT NOT x_65 OR NOT x_75;
-ASSERT NOT x_65 OR NOT x_85;
-ASSERT NOT x_65 OR NOT x_95;
-ASSERT NOT x_65 OR NOT x_105;
-ASSERT NOT x_75 OR NOT x_85;
-ASSERT NOT x_75 OR NOT x_95;
-ASSERT NOT x_75 OR NOT x_105;
-ASSERT NOT x_85 OR NOT x_95;
-ASSERT NOT x_85 OR NOT x_105;
-ASSERT NOT x_95 OR NOT x_105;
-ASSERT NOT x_6 OR NOT x_16;
-ASSERT NOT x_6 OR NOT x_26;
-ASSERT NOT x_6 OR NOT x_36;
-ASSERT NOT x_6 OR NOT x_46;
-ASSERT NOT x_6 OR NOT x_56;
-ASSERT NOT x_6 OR NOT x_66;
-ASSERT NOT x_6 OR NOT x_76;
-ASSERT NOT x_6 OR NOT x_86;
-ASSERT NOT x_6 OR NOT x_96;
-ASSERT NOT x_6 OR NOT x_106;
-ASSERT NOT x_16 OR NOT x_26;
-ASSERT NOT x_16 OR NOT x_36;
-ASSERT NOT x_16 OR NOT x_46;
-ASSERT NOT x_16 OR NOT x_56;
-ASSERT NOT x_16 OR NOT x_66;
-ASSERT NOT x_16 OR NOT x_76;
-ASSERT NOT x_16 OR NOT x_86;
-ASSERT NOT x_16 OR NOT x_96;
-ASSERT NOT x_16 OR NOT x_106;
-ASSERT NOT x_26 OR NOT x_36;
-ASSERT NOT x_26 OR NOT x_46;
-ASSERT NOT x_26 OR NOT x_56;
-ASSERT NOT x_26 OR NOT x_66;
-ASSERT NOT x_26 OR NOT x_76;
-ASSERT NOT x_26 OR NOT x_86;
-ASSERT NOT x_26 OR NOT x_96;
-ASSERT NOT x_26 OR NOT x_106;
-ASSERT NOT x_36 OR NOT x_46;
-ASSERT NOT x_36 OR NOT x_56;
-ASSERT NOT x_36 OR NOT x_66;
-ASSERT NOT x_36 OR NOT x_76;
-ASSERT NOT x_36 OR NOT x_86;
-ASSERT NOT x_36 OR NOT x_96;
-ASSERT NOT x_36 OR NOT x_106;
-ASSERT NOT x_46 OR NOT x_56;
-ASSERT NOT x_46 OR NOT x_66;
-ASSERT NOT x_46 OR NOT x_76;
-ASSERT NOT x_46 OR NOT x_86;
-ASSERT NOT x_46 OR NOT x_96;
-ASSERT NOT x_46 OR NOT x_106;
-ASSERT NOT x_56 OR NOT x_66;
-ASSERT NOT x_56 OR NOT x_76;
-ASSERT NOT x_56 OR NOT x_86;
-ASSERT NOT x_56 OR NOT x_96;
-ASSERT NOT x_56 OR NOT x_106;
-ASSERT NOT x_66 OR NOT x_76;
-ASSERT NOT x_66 OR NOT x_86;
-ASSERT NOT x_66 OR NOT x_96;
-ASSERT NOT x_66 OR NOT x_106;
-ASSERT NOT x_76 OR NOT x_86;
-ASSERT NOT x_76 OR NOT x_96;
-ASSERT NOT x_76 OR NOT x_106;
-ASSERT NOT x_86 OR NOT x_96;
-ASSERT NOT x_86 OR NOT x_106;
-ASSERT NOT x_96 OR NOT x_106;
-ASSERT NOT x_7 OR NOT x_17;
-ASSERT NOT x_7 OR NOT x_27;
-ASSERT NOT x_7 OR NOT x_37;
-ASSERT NOT x_7 OR NOT x_47;
-ASSERT NOT x_7 OR NOT x_57;
-ASSERT NOT x_7 OR NOT x_67;
-ASSERT NOT x_7 OR NOT x_77;
-ASSERT NOT x_7 OR NOT x_87;
-ASSERT NOT x_7 OR NOT x_97;
-ASSERT NOT x_7 OR NOT x_107;
-ASSERT NOT x_17 OR NOT x_27;
-ASSERT NOT x_17 OR NOT x_37;
-ASSERT NOT x_17 OR NOT x_47;
-ASSERT NOT x_17 OR NOT x_57;
-ASSERT NOT x_17 OR NOT x_67;
-ASSERT NOT x_17 OR NOT x_77;
-ASSERT NOT x_17 OR NOT x_87;
-ASSERT NOT x_17 OR NOT x_97;
-ASSERT NOT x_17 OR NOT x_107;
-ASSERT NOT x_27 OR NOT x_37;
-ASSERT NOT x_27 OR NOT x_47;
-ASSERT NOT x_27 OR NOT x_57;
-ASSERT NOT x_27 OR NOT x_67;
-ASSERT NOT x_27 OR NOT x_77;
-ASSERT NOT x_27 OR NOT x_87;
-ASSERT NOT x_27 OR NOT x_97;
-ASSERT NOT x_27 OR NOT x_107;
-ASSERT NOT x_37 OR NOT x_47;
-ASSERT NOT x_37 OR NOT x_57;
-ASSERT NOT x_37 OR NOT x_67;
-ASSERT NOT x_37 OR NOT x_77;
-ASSERT NOT x_37 OR NOT x_87;
-ASSERT NOT x_37 OR NOT x_97;
-ASSERT NOT x_37 OR NOT x_107;
-ASSERT NOT x_47 OR NOT x_57;
-ASSERT NOT x_47 OR NOT x_67;
-ASSERT NOT x_47 OR NOT x_77;
-ASSERT NOT x_47 OR NOT x_87;
-ASSERT NOT x_47 OR NOT x_97;
-ASSERT NOT x_47 OR NOT x_107;
-ASSERT NOT x_57 OR NOT x_67;
-ASSERT NOT x_57 OR NOT x_77;
-ASSERT NOT x_57 OR NOT x_87;
-ASSERT NOT x_57 OR NOT x_97;
-ASSERT NOT x_57 OR NOT x_107;
-ASSERT NOT x_67 OR NOT x_77;
-ASSERT NOT x_67 OR NOT x_87;
-ASSERT NOT x_67 OR NOT x_97;
-ASSERT NOT x_67 OR NOT x_107;
-ASSERT NOT x_77 OR NOT x_87;
-ASSERT NOT x_77 OR NOT x_97;
-ASSERT NOT x_77 OR NOT x_107;
-ASSERT NOT x_87 OR NOT x_97;
-ASSERT NOT x_87 OR NOT x_107;
-ASSERT NOT x_97 OR NOT x_107;
-ASSERT NOT x_8 OR NOT x_18;
-ASSERT NOT x_8 OR NOT x_28;
-ASSERT NOT x_8 OR NOT x_38;
-ASSERT NOT x_8 OR NOT x_48;
-ASSERT NOT x_8 OR NOT x_58;
-ASSERT NOT x_8 OR NOT x_68;
-ASSERT NOT x_8 OR NOT x_78;
-ASSERT NOT x_8 OR NOT x_88;
-ASSERT NOT x_8 OR NOT x_98;
-ASSERT NOT x_8 OR NOT x_108;
-ASSERT NOT x_18 OR NOT x_28;
-ASSERT NOT x_18 OR NOT x_38;
-ASSERT NOT x_18 OR NOT x_48;
-ASSERT NOT x_18 OR NOT x_58;
-ASSERT NOT x_18 OR NOT x_68;
-ASSERT NOT x_18 OR NOT x_78;
-ASSERT NOT x_18 OR NOT x_88;
-ASSERT NOT x_18 OR NOT x_98;
-ASSERT NOT x_18 OR NOT x_108;
-ASSERT NOT x_28 OR NOT x_38;
-ASSERT NOT x_28 OR NOT x_48;
-ASSERT NOT x_28 OR NOT x_58;
-ASSERT NOT x_28 OR NOT x_68;
-ASSERT NOT x_28 OR NOT x_78;
-ASSERT NOT x_28 OR NOT x_88;
-ASSERT NOT x_28 OR NOT x_98;
-ASSERT NOT x_28 OR NOT x_108;
-ASSERT NOT x_38 OR NOT x_48;
-ASSERT NOT x_38 OR NOT x_58;
-ASSERT NOT x_38 OR NOT x_68;
-ASSERT NOT x_38 OR NOT x_78;
-ASSERT NOT x_38 OR NOT x_88;
-ASSERT NOT x_38 OR NOT x_98;
-ASSERT NOT x_38 OR NOT x_108;
-ASSERT NOT x_48 OR NOT x_58;
-ASSERT NOT x_48 OR NOT x_68;
-ASSERT NOT x_48 OR NOT x_78;
-ASSERT NOT x_48 OR NOT x_88;
-ASSERT NOT x_48 OR NOT x_98;
-ASSERT NOT x_48 OR NOT x_108;
-ASSERT NOT x_58 OR NOT x_68;
-ASSERT NOT x_58 OR NOT x_78;
-ASSERT NOT x_58 OR NOT x_88;
-ASSERT NOT x_58 OR NOT x_98;
-ASSERT NOT x_58 OR NOT x_108;
-ASSERT NOT x_68 OR NOT x_78;
-ASSERT NOT x_68 OR NOT x_88;
-ASSERT NOT x_68 OR NOT x_98;
-ASSERT NOT x_68 OR NOT x_108;
-ASSERT NOT x_78 OR NOT x_88;
-ASSERT NOT x_78 OR NOT x_98;
-ASSERT NOT x_78 OR NOT x_108;
-ASSERT NOT x_88 OR NOT x_98;
-ASSERT NOT x_88 OR NOT x_108;
-ASSERT NOT x_98 OR NOT x_108;
-ASSERT NOT x_9 OR NOT x_19;
-ASSERT NOT x_9 OR NOT x_29;
-ASSERT NOT x_9 OR NOT x_39;
-ASSERT NOT x_9 OR NOT x_49;
-ASSERT NOT x_9 OR NOT x_59;
-ASSERT NOT x_9 OR NOT x_69;
-ASSERT NOT x_9 OR NOT x_79;
-ASSERT NOT x_9 OR NOT x_89;
-ASSERT NOT x_9 OR NOT x_99;
-ASSERT NOT x_9 OR NOT x_109;
-ASSERT NOT x_19 OR NOT x_29;
-ASSERT NOT x_19 OR NOT x_39;
-ASSERT NOT x_19 OR NOT x_49;
-ASSERT NOT x_19 OR NOT x_59;
-ASSERT NOT x_19 OR NOT x_69;
-ASSERT NOT x_19 OR NOT x_79;
-ASSERT NOT x_19 OR NOT x_89;
-ASSERT NOT x_19 OR NOT x_99;
-ASSERT NOT x_19 OR NOT x_109;
-ASSERT NOT x_29 OR NOT x_39;
-ASSERT NOT x_29 OR NOT x_49;
-ASSERT NOT x_29 OR NOT x_59;
-ASSERT NOT x_29 OR NOT x_69;
-ASSERT NOT x_29 OR NOT x_79;
-ASSERT NOT x_29 OR NOT x_89;
-ASSERT NOT x_29 OR NOT x_99;
-ASSERT NOT x_29 OR NOT x_109;
-ASSERT NOT x_39 OR NOT x_49;
-ASSERT NOT x_39 OR NOT x_59;
-ASSERT NOT x_39 OR NOT x_69;
-ASSERT NOT x_39 OR NOT x_79;
-ASSERT NOT x_39 OR NOT x_89;
-ASSERT NOT x_39 OR NOT x_99;
-ASSERT NOT x_39 OR NOT x_109;
-ASSERT NOT x_49 OR NOT x_59;
-ASSERT NOT x_49 OR NOT x_69;
-ASSERT NOT x_49 OR NOT x_79;
-ASSERT NOT x_49 OR NOT x_89;
-ASSERT NOT x_49 OR NOT x_99;
-ASSERT NOT x_49 OR NOT x_109;
-ASSERT NOT x_59 OR NOT x_69;
-ASSERT NOT x_59 OR NOT x_79;
-ASSERT NOT x_59 OR NOT x_89;
-ASSERT NOT x_59 OR NOT x_99;
-ASSERT NOT x_59 OR NOT x_109;
-ASSERT NOT x_69 OR NOT x_79;
-ASSERT NOT x_69 OR NOT x_89;
-ASSERT NOT x_69 OR NOT x_99;
-ASSERT NOT x_69 OR NOT x_109;
-ASSERT NOT x_79 OR NOT x_89;
-ASSERT NOT x_79 OR NOT x_99;
-ASSERT NOT x_79 OR NOT x_109;
-ASSERT NOT x_89 OR NOT x_99;
-ASSERT NOT x_89 OR NOT x_109;
-ASSERT NOT x_99 OR NOT x_109;
-ASSERT NOT x_10 OR NOT x_20;
-ASSERT NOT x_10 OR NOT x_30;
-ASSERT NOT x_10 OR NOT x_40;
-ASSERT NOT x_10 OR NOT x_50;
-ASSERT NOT x_10 OR NOT x_60;
-ASSERT NOT x_10 OR NOT x_70;
-ASSERT NOT x_10 OR NOT x_80;
-ASSERT NOT x_10 OR NOT x_90;
-ASSERT NOT x_10 OR NOT x_100;
-ASSERT NOT x_10 OR NOT x_110;
-ASSERT NOT x_20 OR NOT x_30;
-ASSERT NOT x_20 OR NOT x_40;
-ASSERT NOT x_20 OR NOT x_50;
-ASSERT NOT x_20 OR NOT x_60;
-ASSERT NOT x_20 OR NOT x_70;
-ASSERT NOT x_20 OR NOT x_80;
-ASSERT NOT x_20 OR NOT x_90;
-ASSERT NOT x_20 OR NOT x_100;
-ASSERT NOT x_20 OR NOT x_110;
-ASSERT NOT x_30 OR NOT x_40;
-ASSERT NOT x_30 OR NOT x_50;
-ASSERT NOT x_30 OR NOT x_60;
-ASSERT NOT x_30 OR NOT x_70;
-ASSERT NOT x_30 OR NOT x_80;
-ASSERT NOT x_30 OR NOT x_90;
-ASSERT NOT x_30 OR NOT x_100;
-ASSERT NOT x_30 OR NOT x_110;
-ASSERT NOT x_40 OR NOT x_50;
-ASSERT NOT x_40 OR NOT x_60;
-ASSERT NOT x_40 OR NOT x_70;
-ASSERT NOT x_40 OR NOT x_80;
-ASSERT NOT x_40 OR NOT x_90;
-ASSERT NOT x_40 OR NOT x_100;
-ASSERT NOT x_40 OR NOT x_110;
-ASSERT NOT x_50 OR NOT x_60;
-ASSERT NOT x_50 OR NOT x_70;
-ASSERT NOT x_50 OR NOT x_80;
-ASSERT NOT x_50 OR NOT x_90;
-ASSERT NOT x_50 OR NOT x_100;
-ASSERT NOT x_50 OR NOT x_110;
-ASSERT NOT x_60 OR NOT x_70;
-ASSERT NOT x_60 OR NOT x_80;
-ASSERT NOT x_60 OR NOT x_90;
-ASSERT NOT x_60 OR NOT x_100;
-ASSERT NOT x_60 OR NOT x_110;
-ASSERT NOT x_70 OR NOT x_80;
-ASSERT NOT x_70 OR NOT x_90;
-ASSERT NOT x_70 OR NOT x_100;
-ASSERT NOT x_70 OR NOT x_110;
-ASSERT NOT x_80 OR NOT x_90;
-ASSERT NOT x_80 OR NOT x_100;
-ASSERT NOT x_80 OR NOT x_110;
-ASSERT NOT x_90 OR NOT x_100;
-ASSERT NOT x_90 OR NOT x_110;
-ASSERT NOT x_100 OR NOT x_110;
-ASSERT x_10 OR x_9 OR x_8 OR x_7 OR x_6 OR x_5 OR x_4 OR x_3 OR x_2 OR x_1;
-ASSERT x_20 OR x_19 OR x_18 OR x_17 OR x_16 OR x_15 OR x_14 OR x_13 OR x_12 OR x_11;
-ASSERT x_30 OR x_29 OR x_28 OR x_27 OR x_26 OR x_25 OR x_24 OR x_23 OR x_22 OR x_21;
-ASSERT x_40 OR x_39 OR x_38 OR x_37 OR x_36 OR x_35 OR x_34 OR x_33 OR x_32 OR x_31;
-ASSERT x_50 OR x_49 OR x_48 OR x_47 OR x_46 OR x_45 OR x_44 OR x_43 OR x_42 OR x_41;
-ASSERT x_60 OR x_59 OR x_58 OR x_57 OR x_56 OR x_55 OR x_54 OR x_53 OR x_52 OR x_51;
-ASSERT x_70 OR x_69 OR x_68 OR x_67 OR x_66 OR x_65 OR x_64 OR x_63 OR x_62 OR x_61;
-ASSERT x_80 OR x_79 OR x_78 OR x_77 OR x_76 OR x_75 OR x_74 OR x_73 OR x_72 OR x_71;
-ASSERT x_90 OR x_89 OR x_88 OR x_87 OR x_86 OR x_85 OR x_84 OR x_83 OR x_82 OR x_81;
-ASSERT x_100 OR x_99 OR x_98 OR x_97 OR x_96 OR x_95 OR x_94 OR x_93 OR x_92 OR x_91;
-ASSERT x_110 OR x_109 OR x_108 OR x_107 OR x_106 OR x_105 OR x_104 OR x_103 OR x_102 OR x_101;
-
-
-QUERY FALSE;
--- /dev/null
+; EXPECT: unsat
+(set-logic ALL)
+(set-option :incremental false)
+(declare-fun x_1 () Bool)
+(declare-fun x_2 () Bool)
+(declare-fun x_3 () Bool)
+(declare-fun x_4 () Bool)
+(declare-fun x_5 () Bool)
+(declare-fun x_6 () Bool)
+(declare-fun x_7 () Bool)
+(declare-fun x_8 () Bool)
+(declare-fun x_9 () Bool)
+(declare-fun x_10 () Bool)
+(declare-fun x_11 () Bool)
+(declare-fun x_12 () Bool)
+(declare-fun x_13 () Bool)
+(declare-fun x_14 () Bool)
+(declare-fun x_15 () Bool)
+(declare-fun x_16 () Bool)
+(declare-fun x_17 () Bool)
+(declare-fun x_18 () Bool)
+(declare-fun x_19 () Bool)
+(declare-fun x_20 () Bool)
+(declare-fun x_21 () Bool)
+(declare-fun x_22 () Bool)
+(declare-fun x_23 () Bool)
+(declare-fun x_24 () Bool)
+(declare-fun x_25 () Bool)
+(declare-fun x_26 () Bool)
+(declare-fun x_27 () Bool)
+(declare-fun x_28 () Bool)
+(declare-fun x_29 () Bool)
+(declare-fun x_30 () Bool)
+(declare-fun x_31 () Bool)
+(declare-fun x_32 () Bool)
+(declare-fun x_33 () Bool)
+(declare-fun x_34 () Bool)
+(declare-fun x_35 () Bool)
+(declare-fun x_36 () Bool)
+(declare-fun x_37 () Bool)
+(declare-fun x_38 () Bool)
+(declare-fun x_39 () Bool)
+(declare-fun x_40 () Bool)
+(declare-fun x_41 () Bool)
+(declare-fun x_42 () Bool)
+(declare-fun x_43 () Bool)
+(declare-fun x_44 () Bool)
+(declare-fun x_45 () Bool)
+(declare-fun x_46 () Bool)
+(declare-fun x_47 () Bool)
+(declare-fun x_48 () Bool)
+(declare-fun x_49 () Bool)
+(declare-fun x_50 () Bool)
+(declare-fun x_51 () Bool)
+(declare-fun x_52 () Bool)
+(declare-fun x_53 () Bool)
+(declare-fun x_54 () Bool)
+(declare-fun x_55 () Bool)
+(declare-fun x_56 () Bool)
+(declare-fun x_57 () Bool)
+(declare-fun x_58 () Bool)
+(declare-fun x_59 () Bool)
+(declare-fun x_60 () Bool)
+(declare-fun x_61 () Bool)
+(declare-fun x_62 () Bool)
+(declare-fun x_63 () Bool)
+(declare-fun x_64 () Bool)
+(declare-fun x_65 () Bool)
+(declare-fun x_66 () Bool)
+(declare-fun x_67 () Bool)
+(declare-fun x_68 () Bool)
+(declare-fun x_69 () Bool)
+(declare-fun x_70 () Bool)
+(declare-fun x_71 () Bool)
+(declare-fun x_72 () Bool)
+(declare-fun x_73 () Bool)
+(declare-fun x_74 () Bool)
+(declare-fun x_75 () Bool)
+(declare-fun x_76 () Bool)
+(declare-fun x_77 () Bool)
+(declare-fun x_78 () Bool)
+(declare-fun x_79 () Bool)
+(declare-fun x_80 () Bool)
+(declare-fun x_81 () Bool)
+(declare-fun x_82 () Bool)
+(declare-fun x_83 () Bool)
+(declare-fun x_84 () Bool)
+(declare-fun x_85 () Bool)
+(declare-fun x_86 () Bool)
+(declare-fun x_87 () Bool)
+(declare-fun x_88 () Bool)
+(declare-fun x_89 () Bool)
+(declare-fun x_90 () Bool)
+(declare-fun x_91 () Bool)
+(declare-fun x_92 () Bool)
+(declare-fun x_93 () Bool)
+(declare-fun x_94 () Bool)
+(declare-fun x_95 () Bool)
+(declare-fun x_96 () Bool)
+(declare-fun x_97 () Bool)
+(declare-fun x_98 () Bool)
+(declare-fun x_99 () Bool)
+(declare-fun x_100 () Bool)
+(declare-fun x_101 () Bool)
+(declare-fun x_102 () Bool)
+(declare-fun x_103 () Bool)
+(declare-fun x_104 () Bool)
+(declare-fun x_105 () Bool)
+(declare-fun x_106 () Bool)
+(declare-fun x_107 () Bool)
+(declare-fun x_108 () Bool)
+(declare-fun x_109 () Bool)
+(declare-fun x_110 () Bool)
+(assert (or (not x_1) (not x_11)))
+(assert (or (not x_1) (not x_21)))
+(assert (or (not x_1) (not x_31)))
+(assert (or (not x_1) (not x_41)))
+(assert (or (not x_1) (not x_51)))
+(assert (or (not x_1) (not x_61)))
+(assert (or (not x_1) (not x_71)))
+(assert (or (not x_1) (not x_81)))
+(assert (or (not x_1) (not x_91)))
+(assert (or (not x_1) (not x_101)))
+(assert (or (not x_11) (not x_21)))
+(assert (or (not x_11) (not x_31)))
+(assert (or (not x_11) (not x_41)))
+(assert (or (not x_11) (not x_51)))
+(assert (or (not x_11) (not x_61)))
+(assert (or (not x_11) (not x_71)))
+(assert (or (not x_11) (not x_81)))
+(assert (or (not x_11) (not x_91)))
+(assert (or (not x_11) (not x_101)))
+(assert (or (not x_21) (not x_31)))
+(assert (or (not x_21) (not x_41)))
+(assert (or (not x_21) (not x_51)))
+(assert (or (not x_21) (not x_61)))
+(assert (or (not x_21) (not x_71)))
+(assert (or (not x_21) (not x_81)))
+(assert (or (not x_21) (not x_91)))
+(assert (or (not x_21) (not x_101)))
+(assert (or (not x_31) (not x_41)))
+(assert (or (not x_31) (not x_51)))
+(assert (or (not x_31) (not x_61)))
+(assert (or (not x_31) (not x_71)))
+(assert (or (not x_31) (not x_81)))
+(assert (or (not x_31) (not x_91)))
+(assert (or (not x_31) (not x_101)))
+(assert (or (not x_41) (not x_51)))
+(assert (or (not x_41) (not x_61)))
+(assert (or (not x_41) (not x_71)))
+(assert (or (not x_41) (not x_81)))
+(assert (or (not x_41) (not x_91)))
+(assert (or (not x_41) (not x_101)))
+(assert (or (not x_51) (not x_61)))
+(assert (or (not x_51) (not x_71)))
+(assert (or (not x_51) (not x_81)))
+(assert (or (not x_51) (not x_91)))
+(assert (or (not x_51) (not x_101)))
+(assert (or (not x_61) (not x_71)))
+(assert (or (not x_61) (not x_81)))
+(assert (or (not x_61) (not x_91)))
+(assert (or (not x_61) (not x_101)))
+(assert (or (not x_71) (not x_81)))
+(assert (or (not x_71) (not x_91)))
+(assert (or (not x_71) (not x_101)))
+(assert (or (not x_81) (not x_91)))
+(assert (or (not x_81) (not x_101)))
+(assert (or (not x_91) (not x_101)))
+(assert (or (not x_2) (not x_12)))
+(assert (or (not x_2) (not x_22)))
+(assert (or (not x_2) (not x_32)))
+(assert (or (not x_2) (not x_42)))
+(assert (or (not x_2) (not x_52)))
+(assert (or (not x_2) (not x_62)))
+(assert (or (not x_2) (not x_72)))
+(assert (or (not x_2) (not x_82)))
+(assert (or (not x_2) (not x_92)))
+(assert (or (not x_2) (not x_102)))
+(assert (or (not x_12) (not x_22)))
+(assert (or (not x_12) (not x_32)))
+(assert (or (not x_12) (not x_42)))
+(assert (or (not x_12) (not x_52)))
+(assert (or (not x_12) (not x_62)))
+(assert (or (not x_12) (not x_72)))
+(assert (or (not x_12) (not x_82)))
+(assert (or (not x_12) (not x_92)))
+(assert (or (not x_12) (not x_102)))
+(assert (or (not x_22) (not x_32)))
+(assert (or (not x_22) (not x_42)))
+(assert (or (not x_22) (not x_52)))
+(assert (or (not x_22) (not x_62)))
+(assert (or (not x_22) (not x_72)))
+(assert (or (not x_22) (not x_82)))
+(assert (or (not x_22) (not x_92)))
+(assert (or (not x_22) (not x_102)))
+(assert (or (not x_32) (not x_42)))
+(assert (or (not x_32) (not x_52)))
+(assert (or (not x_32) (not x_62)))
+(assert (or (not x_32) (not x_72)))
+(assert (or (not x_32) (not x_82)))
+(assert (or (not x_32) (not x_92)))
+(assert (or (not x_32) (not x_102)))
+(assert (or (not x_42) (not x_52)))
+(assert (or (not x_42) (not x_62)))
+(assert (or (not x_42) (not x_72)))
+(assert (or (not x_42) (not x_82)))
+(assert (or (not x_42) (not x_92)))
+(assert (or (not x_42) (not x_102)))
+(assert (or (not x_52) (not x_62)))
+(assert (or (not x_52) (not x_72)))
+(assert (or (not x_52) (not x_82)))
+(assert (or (not x_52) (not x_92)))
+(assert (or (not x_52) (not x_102)))
+(assert (or (not x_62) (not x_72)))
+(assert (or (not x_62) (not x_82)))
+(assert (or (not x_62) (not x_92)))
+(assert (or (not x_62) (not x_102)))
+(assert (or (not x_72) (not x_82)))
+(assert (or (not x_72) (not x_92)))
+(assert (or (not x_72) (not x_102)))
+(assert (or (not x_82) (not x_92)))
+(assert (or (not x_82) (not x_102)))
+(assert (or (not x_92) (not x_102)))
+(assert (or (not x_3) (not x_13)))
+(assert (or (not x_3) (not x_23)))
+(assert (or (not x_3) (not x_33)))
+(assert (or (not x_3) (not x_43)))
+(assert (or (not x_3) (not x_53)))
+(assert (or (not x_3) (not x_63)))
+(assert (or (not x_3) (not x_73)))
+(assert (or (not x_3) (not x_83)))
+(assert (or (not x_3) (not x_93)))
+(assert (or (not x_3) (not x_103)))
+(assert (or (not x_13) (not x_23)))
+(assert (or (not x_13) (not x_33)))
+(assert (or (not x_13) (not x_43)))
+(assert (or (not x_13) (not x_53)))
+(assert (or (not x_13) (not x_63)))
+(assert (or (not x_13) (not x_73)))
+(assert (or (not x_13) (not x_83)))
+(assert (or (not x_13) (not x_93)))
+(assert (or (not x_13) (not x_103)))
+(assert (or (not x_23) (not x_33)))
+(assert (or (not x_23) (not x_43)))
+(assert (or (not x_23) (not x_53)))
+(assert (or (not x_23) (not x_63)))
+(assert (or (not x_23) (not x_73)))
+(assert (or (not x_23) (not x_83)))
+(assert (or (not x_23) (not x_93)))
+(assert (or (not x_23) (not x_103)))
+(assert (or (not x_33) (not x_43)))
+(assert (or (not x_33) (not x_53)))
+(assert (or (not x_33) (not x_63)))
+(assert (or (not x_33) (not x_73)))
+(assert (or (not x_33) (not x_83)))
+(assert (or (not x_33) (not x_93)))
+(assert (or (not x_33) (not x_103)))
+(assert (or (not x_43) (not x_53)))
+(assert (or (not x_43) (not x_63)))
+(assert (or (not x_43) (not x_73)))
+(assert (or (not x_43) (not x_83)))
+(assert (or (not x_43) (not x_93)))
+(assert (or (not x_43) (not x_103)))
+(assert (or (not x_53) (not x_63)))
+(assert (or (not x_53) (not x_73)))
+(assert (or (not x_53) (not x_83)))
+(assert (or (not x_53) (not x_93)))
+(assert (or (not x_53) (not x_103)))
+(assert (or (not x_63) (not x_73)))
+(assert (or (not x_63) (not x_83)))
+(assert (or (not x_63) (not x_93)))
+(assert (or (not x_63) (not x_103)))
+(assert (or (not x_73) (not x_83)))
+(assert (or (not x_73) (not x_93)))
+(assert (or (not x_73) (not x_103)))
+(assert (or (not x_83) (not x_93)))
+(assert (or (not x_83) (not x_103)))
+(assert (or (not x_93) (not x_103)))
+(assert (or (not x_4) (not x_14)))
+(assert (or (not x_4) (not x_24)))
+(assert (or (not x_4) (not x_34)))
+(assert (or (not x_4) (not x_44)))
+(assert (or (not x_4) (not x_54)))
+(assert (or (not x_4) (not x_64)))
+(assert (or (not x_4) (not x_74)))
+(assert (or (not x_4) (not x_84)))
+(assert (or (not x_4) (not x_94)))
+(assert (or (not x_4) (not x_104)))
+(assert (or (not x_14) (not x_24)))
+(assert (or (not x_14) (not x_34)))
+(assert (or (not x_14) (not x_44)))
+(assert (or (not x_14) (not x_54)))
+(assert (or (not x_14) (not x_64)))
+(assert (or (not x_14) (not x_74)))
+(assert (or (not x_14) (not x_84)))
+(assert (or (not x_14) (not x_94)))
+(assert (or (not x_14) (not x_104)))
+(assert (or (not x_24) (not x_34)))
+(assert (or (not x_24) (not x_44)))
+(assert (or (not x_24) (not x_54)))
+(assert (or (not x_24) (not x_64)))
+(assert (or (not x_24) (not x_74)))
+(assert (or (not x_24) (not x_84)))
+(assert (or (not x_24) (not x_94)))
+(assert (or (not x_24) (not x_104)))
+(assert (or (not x_34) (not x_44)))
+(assert (or (not x_34) (not x_54)))
+(assert (or (not x_34) (not x_64)))
+(assert (or (not x_34) (not x_74)))
+(assert (or (not x_34) (not x_84)))
+(assert (or (not x_34) (not x_94)))
+(assert (or (not x_34) (not x_104)))
+(assert (or (not x_44) (not x_54)))
+(assert (or (not x_44) (not x_64)))
+(assert (or (not x_44) (not x_74)))
+(assert (or (not x_44) (not x_84)))
+(assert (or (not x_44) (not x_94)))
+(assert (or (not x_44) (not x_104)))
+(assert (or (not x_54) (not x_64)))
+(assert (or (not x_54) (not x_74)))
+(assert (or (not x_54) (not x_84)))
+(assert (or (not x_54) (not x_94)))
+(assert (or (not x_54) (not x_104)))
+(assert (or (not x_64) (not x_74)))
+(assert (or (not x_64) (not x_84)))
+(assert (or (not x_64) (not x_94)))
+(assert (or (not x_64) (not x_104)))
+(assert (or (not x_74) (not x_84)))
+(assert (or (not x_74) (not x_94)))
+(assert (or (not x_74) (not x_104)))
+(assert (or (not x_84) (not x_94)))
+(assert (or (not x_84) (not x_104)))
+(assert (or (not x_94) (not x_104)))
+(assert (or (not x_5) (not x_15)))
+(assert (or (not x_5) (not x_25)))
+(assert (or (not x_5) (not x_35)))
+(assert (or (not x_5) (not x_45)))
+(assert (or (not x_5) (not x_55)))
+(assert (or (not x_5) (not x_65)))
+(assert (or (not x_5) (not x_75)))
+(assert (or (not x_5) (not x_85)))
+(assert (or (not x_5) (not x_95)))
+(assert (or (not x_5) (not x_105)))
+(assert (or (not x_15) (not x_25)))
+(assert (or (not x_15) (not x_35)))
+(assert (or (not x_15) (not x_45)))
+(assert (or (not x_15) (not x_55)))
+(assert (or (not x_15) (not x_65)))
+(assert (or (not x_15) (not x_75)))
+(assert (or (not x_15) (not x_85)))
+(assert (or (not x_15) (not x_95)))
+(assert (or (not x_15) (not x_105)))
+(assert (or (not x_25) (not x_35)))
+(assert (or (not x_25) (not x_45)))
+(assert (or (not x_25) (not x_55)))
+(assert (or (not x_25) (not x_65)))
+(assert (or (not x_25) (not x_75)))
+(assert (or (not x_25) (not x_85)))
+(assert (or (not x_25) (not x_95)))
+(assert (or (not x_25) (not x_105)))
+(assert (or (not x_35) (not x_45)))
+(assert (or (not x_35) (not x_55)))
+(assert (or (not x_35) (not x_65)))
+(assert (or (not x_35) (not x_75)))
+(assert (or (not x_35) (not x_85)))
+(assert (or (not x_35) (not x_95)))
+(assert (or (not x_35) (not x_105)))
+(assert (or (not x_45) (not x_55)))
+(assert (or (not x_45) (not x_65)))
+(assert (or (not x_45) (not x_75)))
+(assert (or (not x_45) (not x_85)))
+(assert (or (not x_45) (not x_95)))
+(assert (or (not x_45) (not x_105)))
+(assert (or (not x_55) (not x_65)))
+(assert (or (not x_55) (not x_75)))
+(assert (or (not x_55) (not x_85)))
+(assert (or (not x_55) (not x_95)))
+(assert (or (not x_55) (not x_105)))
+(assert (or (not x_65) (not x_75)))
+(assert (or (not x_65) (not x_85)))
+(assert (or (not x_65) (not x_95)))
+(assert (or (not x_65) (not x_105)))
+(assert (or (not x_75) (not x_85)))
+(assert (or (not x_75) (not x_95)))
+(assert (or (not x_75) (not x_105)))
+(assert (or (not x_85) (not x_95)))
+(assert (or (not x_85) (not x_105)))
+(assert (or (not x_95) (not x_105)))
+(assert (or (not x_6) (not x_16)))
+(assert (or (not x_6) (not x_26)))
+(assert (or (not x_6) (not x_36)))
+(assert (or (not x_6) (not x_46)))
+(assert (or (not x_6) (not x_56)))
+(assert (or (not x_6) (not x_66)))
+(assert (or (not x_6) (not x_76)))
+(assert (or (not x_6) (not x_86)))
+(assert (or (not x_6) (not x_96)))
+(assert (or (not x_6) (not x_106)))
+(assert (or (not x_16) (not x_26)))
+(assert (or (not x_16) (not x_36)))
+(assert (or (not x_16) (not x_46)))
+(assert (or (not x_16) (not x_56)))
+(assert (or (not x_16) (not x_66)))
+(assert (or (not x_16) (not x_76)))
+(assert (or (not x_16) (not x_86)))
+(assert (or (not x_16) (not x_96)))
+(assert (or (not x_16) (not x_106)))
+(assert (or (not x_26) (not x_36)))
+(assert (or (not x_26) (not x_46)))
+(assert (or (not x_26) (not x_56)))
+(assert (or (not x_26) (not x_66)))
+(assert (or (not x_26) (not x_76)))
+(assert (or (not x_26) (not x_86)))
+(assert (or (not x_26) (not x_96)))
+(assert (or (not x_26) (not x_106)))
+(assert (or (not x_36) (not x_46)))
+(assert (or (not x_36) (not x_56)))
+(assert (or (not x_36) (not x_66)))
+(assert (or (not x_36) (not x_76)))
+(assert (or (not x_36) (not x_86)))
+(assert (or (not x_36) (not x_96)))
+(assert (or (not x_36) (not x_106)))
+(assert (or (not x_46) (not x_56)))
+(assert (or (not x_46) (not x_66)))
+(assert (or (not x_46) (not x_76)))
+(assert (or (not x_46) (not x_86)))
+(assert (or (not x_46) (not x_96)))
+(assert (or (not x_46) (not x_106)))
+(assert (or (not x_56) (not x_66)))
+(assert (or (not x_56) (not x_76)))
+(assert (or (not x_56) (not x_86)))
+(assert (or (not x_56) (not x_96)))
+(assert (or (not x_56) (not x_106)))
+(assert (or (not x_66) (not x_76)))
+(assert (or (not x_66) (not x_86)))
+(assert (or (not x_66) (not x_96)))
+(assert (or (not x_66) (not x_106)))
+(assert (or (not x_76) (not x_86)))
+(assert (or (not x_76) (not x_96)))
+(assert (or (not x_76) (not x_106)))
+(assert (or (not x_86) (not x_96)))
+(assert (or (not x_86) (not x_106)))
+(assert (or (not x_96) (not x_106)))
+(assert (or (not x_7) (not x_17)))
+(assert (or (not x_7) (not x_27)))
+(assert (or (not x_7) (not x_37)))
+(assert (or (not x_7) (not x_47)))
+(assert (or (not x_7) (not x_57)))
+(assert (or (not x_7) (not x_67)))
+(assert (or (not x_7) (not x_77)))
+(assert (or (not x_7) (not x_87)))
+(assert (or (not x_7) (not x_97)))
+(assert (or (not x_7) (not x_107)))
+(assert (or (not x_17) (not x_27)))
+(assert (or (not x_17) (not x_37)))
+(assert (or (not x_17) (not x_47)))
+(assert (or (not x_17) (not x_57)))
+(assert (or (not x_17) (not x_67)))
+(assert (or (not x_17) (not x_77)))
+(assert (or (not x_17) (not x_87)))
+(assert (or (not x_17) (not x_97)))
+(assert (or (not x_17) (not x_107)))
+(assert (or (not x_27) (not x_37)))
+(assert (or (not x_27) (not x_47)))
+(assert (or (not x_27) (not x_57)))
+(assert (or (not x_27) (not x_67)))
+(assert (or (not x_27) (not x_77)))
+(assert (or (not x_27) (not x_87)))
+(assert (or (not x_27) (not x_97)))
+(assert (or (not x_27) (not x_107)))
+(assert (or (not x_37) (not x_47)))
+(assert (or (not x_37) (not x_57)))
+(assert (or (not x_37) (not x_67)))
+(assert (or (not x_37) (not x_77)))
+(assert (or (not x_37) (not x_87)))
+(assert (or (not x_37) (not x_97)))
+(assert (or (not x_37) (not x_107)))
+(assert (or (not x_47) (not x_57)))
+(assert (or (not x_47) (not x_67)))
+(assert (or (not x_47) (not x_77)))
+(assert (or (not x_47) (not x_87)))
+(assert (or (not x_47) (not x_97)))
+(assert (or (not x_47) (not x_107)))
+(assert (or (not x_57) (not x_67)))
+(assert (or (not x_57) (not x_77)))
+(assert (or (not x_57) (not x_87)))
+(assert (or (not x_57) (not x_97)))
+(assert (or (not x_57) (not x_107)))
+(assert (or (not x_67) (not x_77)))
+(assert (or (not x_67) (not x_87)))
+(assert (or (not x_67) (not x_97)))
+(assert (or (not x_67) (not x_107)))
+(assert (or (not x_77) (not x_87)))
+(assert (or (not x_77) (not x_97)))
+(assert (or (not x_77) (not x_107)))
+(assert (or (not x_87) (not x_97)))
+(assert (or (not x_87) (not x_107)))
+(assert (or (not x_97) (not x_107)))
+(assert (or (not x_8) (not x_18)))
+(assert (or (not x_8) (not x_28)))
+(assert (or (not x_8) (not x_38)))
+(assert (or (not x_8) (not x_48)))
+(assert (or (not x_8) (not x_58)))
+(assert (or (not x_8) (not x_68)))
+(assert (or (not x_8) (not x_78)))
+(assert (or (not x_8) (not x_88)))
+(assert (or (not x_8) (not x_98)))
+(assert (or (not x_8) (not x_108)))
+(assert (or (not x_18) (not x_28)))
+(assert (or (not x_18) (not x_38)))
+(assert (or (not x_18) (not x_48)))
+(assert (or (not x_18) (not x_58)))
+(assert (or (not x_18) (not x_68)))
+(assert (or (not x_18) (not x_78)))
+(assert (or (not x_18) (not x_88)))
+(assert (or (not x_18) (not x_98)))
+(assert (or (not x_18) (not x_108)))
+(assert (or (not x_28) (not x_38)))
+(assert (or (not x_28) (not x_48)))
+(assert (or (not x_28) (not x_58)))
+(assert (or (not x_28) (not x_68)))
+(assert (or (not x_28) (not x_78)))
+(assert (or (not x_28) (not x_88)))
+(assert (or (not x_28) (not x_98)))
+(assert (or (not x_28) (not x_108)))
+(assert (or (not x_38) (not x_48)))
+(assert (or (not x_38) (not x_58)))
+(assert (or (not x_38) (not x_68)))
+(assert (or (not x_38) (not x_78)))
+(assert (or (not x_38) (not x_88)))
+(assert (or (not x_38) (not x_98)))
+(assert (or (not x_38) (not x_108)))
+(assert (or (not x_48) (not x_58)))
+(assert (or (not x_48) (not x_68)))
+(assert (or (not x_48) (not x_78)))
+(assert (or (not x_48) (not x_88)))
+(assert (or (not x_48) (not x_98)))
+(assert (or (not x_48) (not x_108)))
+(assert (or (not x_58) (not x_68)))
+(assert (or (not x_58) (not x_78)))
+(assert (or (not x_58) (not x_88)))
+(assert (or (not x_58) (not x_98)))
+(assert (or (not x_58) (not x_108)))
+(assert (or (not x_68) (not x_78)))
+(assert (or (not x_68) (not x_88)))
+(assert (or (not x_68) (not x_98)))
+(assert (or (not x_68) (not x_108)))
+(assert (or (not x_78) (not x_88)))
+(assert (or (not x_78) (not x_98)))
+(assert (or (not x_78) (not x_108)))
+(assert (or (not x_88) (not x_98)))
+(assert (or (not x_88) (not x_108)))
+(assert (or (not x_98) (not x_108)))
+(assert (or (not x_9) (not x_19)))
+(assert (or (not x_9) (not x_29)))
+(assert (or (not x_9) (not x_39)))
+(assert (or (not x_9) (not x_49)))
+(assert (or (not x_9) (not x_59)))
+(assert (or (not x_9) (not x_69)))
+(assert (or (not x_9) (not x_79)))
+(assert (or (not x_9) (not x_89)))
+(assert (or (not x_9) (not x_99)))
+(assert (or (not x_9) (not x_109)))
+(assert (or (not x_19) (not x_29)))
+(assert (or (not x_19) (not x_39)))
+(assert (or (not x_19) (not x_49)))
+(assert (or (not x_19) (not x_59)))
+(assert (or (not x_19) (not x_69)))
+(assert (or (not x_19) (not x_79)))
+(assert (or (not x_19) (not x_89)))
+(assert (or (not x_19) (not x_99)))
+(assert (or (not x_19) (not x_109)))
+(assert (or (not x_29) (not x_39)))
+(assert (or (not x_29) (not x_49)))
+(assert (or (not x_29) (not x_59)))
+(assert (or (not x_29) (not x_69)))
+(assert (or (not x_29) (not x_79)))
+(assert (or (not x_29) (not x_89)))
+(assert (or (not x_29) (not x_99)))
+(assert (or (not x_29) (not x_109)))
+(assert (or (not x_39) (not x_49)))
+(assert (or (not x_39) (not x_59)))
+(assert (or (not x_39) (not x_69)))
+(assert (or (not x_39) (not x_79)))
+(assert (or (not x_39) (not x_89)))
+(assert (or (not x_39) (not x_99)))
+(assert (or (not x_39) (not x_109)))
+(assert (or (not x_49) (not x_59)))
+(assert (or (not x_49) (not x_69)))
+(assert (or (not x_49) (not x_79)))
+(assert (or (not x_49) (not x_89)))
+(assert (or (not x_49) (not x_99)))
+(assert (or (not x_49) (not x_109)))
+(assert (or (not x_59) (not x_69)))
+(assert (or (not x_59) (not x_79)))
+(assert (or (not x_59) (not x_89)))
+(assert (or (not x_59) (not x_99)))
+(assert (or (not x_59) (not x_109)))
+(assert (or (not x_69) (not x_79)))
+(assert (or (not x_69) (not x_89)))
+(assert (or (not x_69) (not x_99)))
+(assert (or (not x_69) (not x_109)))
+(assert (or (not x_79) (not x_89)))
+(assert (or (not x_79) (not x_99)))
+(assert (or (not x_79) (not x_109)))
+(assert (or (not x_89) (not x_99)))
+(assert (or (not x_89) (not x_109)))
+(assert (or (not x_99) (not x_109)))
+(assert (or (not x_10) (not x_20)))
+(assert (or (not x_10) (not x_30)))
+(assert (or (not x_10) (not x_40)))
+(assert (or (not x_10) (not x_50)))
+(assert (or (not x_10) (not x_60)))
+(assert (or (not x_10) (not x_70)))
+(assert (or (not x_10) (not x_80)))
+(assert (or (not x_10) (not x_90)))
+(assert (or (not x_10) (not x_100)))
+(assert (or (not x_10) (not x_110)))
+(assert (or (not x_20) (not x_30)))
+(assert (or (not x_20) (not x_40)))
+(assert (or (not x_20) (not x_50)))
+(assert (or (not x_20) (not x_60)))
+(assert (or (not x_20) (not x_70)))
+(assert (or (not x_20) (not x_80)))
+(assert (or (not x_20) (not x_90)))
+(assert (or (not x_20) (not x_100)))
+(assert (or (not x_20) (not x_110)))
+(assert (or (not x_30) (not x_40)))
+(assert (or (not x_30) (not x_50)))
+(assert (or (not x_30) (not x_60)))
+(assert (or (not x_30) (not x_70)))
+(assert (or (not x_30) (not x_80)))
+(assert (or (not x_30) (not x_90)))
+(assert (or (not x_30) (not x_100)))
+(assert (or (not x_30) (not x_110)))
+(assert (or (not x_40) (not x_50)))
+(assert (or (not x_40) (not x_60)))
+(assert (or (not x_40) (not x_70)))
+(assert (or (not x_40) (not x_80)))
+(assert (or (not x_40) (not x_90)))
+(assert (or (not x_40) (not x_100)))
+(assert (or (not x_40) (not x_110)))
+(assert (or (not x_50) (not x_60)))
+(assert (or (not x_50) (not x_70)))
+(assert (or (not x_50) (not x_80)))
+(assert (or (not x_50) (not x_90)))
+(assert (or (not x_50) (not x_100)))
+(assert (or (not x_50) (not x_110)))
+(assert (or (not x_60) (not x_70)))
+(assert (or (not x_60) (not x_80)))
+(assert (or (not x_60) (not x_90)))
+(assert (or (not x_60) (not x_100)))
+(assert (or (not x_60) (not x_110)))
+(assert (or (not x_70) (not x_80)))
+(assert (or (not x_70) (not x_90)))
+(assert (or (not x_70) (not x_100)))
+(assert (or (not x_70) (not x_110)))
+(assert (or (not x_80) (not x_90)))
+(assert (or (not x_80) (not x_100)))
+(assert (or (not x_80) (not x_110)))
+(assert (or (not x_90) (not x_100)))
+(assert (or (not x_90) (not x_110)))
+(assert (or (not x_100) (not x_110)))
+(assert (or (or (or (or (or (or (or (or (or x_10 x_9) x_8) x_7) x_6) x_5) x_4) x_3) x_2) x_1))
+(assert (or (or (or (or (or (or (or (or (or x_20 x_19) x_18) x_17) x_16) x_15) x_14) x_13) x_12) x_11))
+(assert (or (or (or (or (or (or (or (or (or x_30 x_29) x_28) x_27) x_26) x_25) x_24) x_23) x_22) x_21))
+(assert (or (or (or (or (or (or (or (or (or x_40 x_39) x_38) x_37) x_36) x_35) x_34) x_33) x_32) x_31))
+(assert (or (or (or (or (or (or (or (or (or x_50 x_49) x_48) x_47) x_46) x_45) x_44) x_43) x_42) x_41))
+(assert (or (or (or (or (or (or (or (or (or x_60 x_59) x_58) x_57) x_56) x_55) x_54) x_53) x_52) x_51))
+(assert (or (or (or (or (or (or (or (or (or x_70 x_69) x_68) x_67) x_66) x_65) x_64) x_63) x_62) x_61))
+(assert (or (or (or (or (or (or (or (or (or x_80 x_79) x_78) x_77) x_76) x_75) x_74) x_73) x_72) x_71))
+(assert (or (or (or (or (or (or (or (or (or x_90 x_89) x_88) x_87) x_86) x_85) x_84) x_83) x_82) x_81))
+(assert (or (or (or (or (or (or (or (or (or x_100 x_99) x_98) x_97) x_96) x_95) x_94) x_93) x_92) x_91))
+(assert (or (or (or (or (or (or (or (or (or x_110 x_109) x_108) x_107) x_106) x_105) x_104) x_103) x_102) x_101))
+(check-sat)
+++ /dev/null
-% EXPECT: entailed
-x_1 : BOOLEAN;
-x_2 : BOOLEAN;
-x_3 : BOOLEAN;
-x_4 : BOOLEAN;
-x_5 : BOOLEAN;
-x_6 : BOOLEAN;
-x_7 : BOOLEAN;
-x_8 : BOOLEAN;
-x_9 : BOOLEAN;
-x_10 : BOOLEAN;
-x_11 : BOOLEAN;
-x_12 : BOOLEAN;
-x_13 : BOOLEAN;
-x_14 : BOOLEAN;
-x_15 : BOOLEAN;
-x_16 : BOOLEAN;
-x_17 : BOOLEAN;
-x_18 : BOOLEAN;
-x_19 : BOOLEAN;
-x_20 : BOOLEAN;
-x_21 : BOOLEAN;
-x_22 : BOOLEAN;
-x_23 : BOOLEAN;
-x_24 : BOOLEAN;
-x_25 : BOOLEAN;
-x_26 : BOOLEAN;
-x_27 : BOOLEAN;
-x_28 : BOOLEAN;
-x_29 : BOOLEAN;
-x_30 : BOOLEAN;
-x_31 : BOOLEAN;
-x_32 : BOOLEAN;
-x_33 : BOOLEAN;
-x_34 : BOOLEAN;
-x_35 : BOOLEAN;
-x_36 : BOOLEAN;
-x_37 : BOOLEAN;
-x_38 : BOOLEAN;
-x_39 : BOOLEAN;
-x_40 : BOOLEAN;
-x_41 : BOOLEAN;
-x_42 : BOOLEAN;
-x_43 : BOOLEAN;
-x_44 : BOOLEAN;
-x_45 : BOOLEAN;
-x_46 : BOOLEAN;
-x_47 : BOOLEAN;
-x_48 : BOOLEAN;
-x_49 : BOOLEAN;
-x_50 : BOOLEAN;
-x_51 : BOOLEAN;
-x_52 : BOOLEAN;
-x_53 : BOOLEAN;
-x_54 : BOOLEAN;
-x_55 : BOOLEAN;
-x_56 : BOOLEAN;
-x_57 : BOOLEAN;
-x_58 : BOOLEAN;
-x_59 : BOOLEAN;
-x_60 : BOOLEAN;
-x_61 : BOOLEAN;
-x_62 : BOOLEAN;
-x_63 : BOOLEAN;
-x_64 : BOOLEAN;
-x_65 : BOOLEAN;
-x_66 : BOOLEAN;
-x_67 : BOOLEAN;
-x_68 : BOOLEAN;
-x_69 : BOOLEAN;
-x_70 : BOOLEAN;
-x_71 : BOOLEAN;
-x_72 : BOOLEAN;
-x_73 : BOOLEAN;
-x_74 : BOOLEAN;
-x_75 : BOOLEAN;
-x_76 : BOOLEAN;
-x_77 : BOOLEAN;
-x_78 : BOOLEAN;
-x_79 : BOOLEAN;
-x_80 : BOOLEAN;
-x_81 : BOOLEAN;
-x_82 : BOOLEAN;
-x_83 : BOOLEAN;
-x_84 : BOOLEAN;
-x_85 : BOOLEAN;
-x_86 : BOOLEAN;
-x_87 : BOOLEAN;
-x_88 : BOOLEAN;
-x_89 : BOOLEAN;
-x_90 : BOOLEAN;
-ASSERT NOT x_1 OR NOT x_10;
-ASSERT NOT x_1 OR NOT x_19;
-ASSERT NOT x_1 OR NOT x_28;
-ASSERT NOT x_1 OR NOT x_37;
-ASSERT NOT x_1 OR NOT x_46;
-ASSERT NOT x_1 OR NOT x_55;
-ASSERT NOT x_1 OR NOT x_64;
-ASSERT NOT x_1 OR NOT x_73;
-ASSERT NOT x_1 OR NOT x_82;
-ASSERT NOT x_10 OR NOT x_19;
-ASSERT NOT x_10 OR NOT x_28;
-ASSERT NOT x_10 OR NOT x_37;
-ASSERT NOT x_10 OR NOT x_46;
-ASSERT NOT x_10 OR NOT x_55;
-ASSERT NOT x_10 OR NOT x_64;
-ASSERT NOT x_10 OR NOT x_73;
-ASSERT NOT x_10 OR NOT x_82;
-ASSERT NOT x_19 OR NOT x_28;
-ASSERT NOT x_19 OR NOT x_37;
-ASSERT NOT x_19 OR NOT x_46;
-ASSERT NOT x_19 OR NOT x_55;
-ASSERT NOT x_19 OR NOT x_64;
-ASSERT NOT x_19 OR NOT x_73;
-ASSERT NOT x_19 OR NOT x_82;
-ASSERT NOT x_28 OR NOT x_37;
-ASSERT NOT x_28 OR NOT x_46;
-ASSERT NOT x_28 OR NOT x_55;
-ASSERT NOT x_28 OR NOT x_64;
-ASSERT NOT x_28 OR NOT x_73;
-ASSERT NOT x_28 OR NOT x_82;
-ASSERT NOT x_37 OR NOT x_46;
-ASSERT NOT x_37 OR NOT x_55;
-ASSERT NOT x_37 OR NOT x_64;
-ASSERT NOT x_37 OR NOT x_73;
-ASSERT NOT x_37 OR NOT x_82;
-ASSERT NOT x_46 OR NOT x_55;
-ASSERT NOT x_46 OR NOT x_64;
-ASSERT NOT x_46 OR NOT x_73;
-ASSERT NOT x_46 OR NOT x_82;
-ASSERT NOT x_55 OR NOT x_64;
-ASSERT NOT x_55 OR NOT x_73;
-ASSERT NOT x_55 OR NOT x_82;
-ASSERT NOT x_64 OR NOT x_73;
-ASSERT NOT x_64 OR NOT x_82;
-ASSERT NOT x_73 OR NOT x_82;
-ASSERT NOT x_2 OR NOT x_11;
-ASSERT NOT x_2 OR NOT x_20;
-ASSERT NOT x_2 OR NOT x_29;
-ASSERT NOT x_2 OR NOT x_38;
-ASSERT NOT x_2 OR NOT x_47;
-ASSERT NOT x_2 OR NOT x_56;
-ASSERT NOT x_2 OR NOT x_65;
-ASSERT NOT x_2 OR NOT x_74;
-ASSERT NOT x_2 OR NOT x_83;
-ASSERT NOT x_11 OR NOT x_20;
-ASSERT NOT x_11 OR NOT x_29;
-ASSERT NOT x_11 OR NOT x_38;
-ASSERT NOT x_11 OR NOT x_47;
-ASSERT NOT x_11 OR NOT x_56;
-ASSERT NOT x_11 OR NOT x_65;
-ASSERT NOT x_11 OR NOT x_74;
-ASSERT NOT x_11 OR NOT x_83;
-ASSERT NOT x_20 OR NOT x_29;
-ASSERT NOT x_20 OR NOT x_38;
-ASSERT NOT x_20 OR NOT x_47;
-ASSERT NOT x_20 OR NOT x_56;
-ASSERT NOT x_20 OR NOT x_65;
-ASSERT NOT x_20 OR NOT x_74;
-ASSERT NOT x_20 OR NOT x_83;
-ASSERT NOT x_29 OR NOT x_38;
-ASSERT NOT x_29 OR NOT x_47;
-ASSERT NOT x_29 OR NOT x_56;
-ASSERT NOT x_29 OR NOT x_65;
-ASSERT NOT x_29 OR NOT x_74;
-ASSERT NOT x_29 OR NOT x_83;
-ASSERT NOT x_38 OR NOT x_47;
-ASSERT NOT x_38 OR NOT x_56;
-ASSERT NOT x_38 OR NOT x_65;
-ASSERT NOT x_38 OR NOT x_74;
-ASSERT NOT x_38 OR NOT x_83;
-ASSERT NOT x_47 OR NOT x_56;
-ASSERT NOT x_47 OR NOT x_65;
-ASSERT NOT x_47 OR NOT x_74;
-ASSERT NOT x_47 OR NOT x_83;
-ASSERT NOT x_56 OR NOT x_65;
-ASSERT NOT x_56 OR NOT x_74;
-ASSERT NOT x_56 OR NOT x_83;
-ASSERT NOT x_65 OR NOT x_74;
-ASSERT NOT x_65 OR NOT x_83;
-ASSERT NOT x_74 OR NOT x_83;
-ASSERT NOT x_3 OR NOT x_12;
-ASSERT NOT x_3 OR NOT x_21;
-ASSERT NOT x_3 OR NOT x_30;
-ASSERT NOT x_3 OR NOT x_39;
-ASSERT NOT x_3 OR NOT x_48;
-ASSERT NOT x_3 OR NOT x_57;
-ASSERT NOT x_3 OR NOT x_66;
-ASSERT NOT x_3 OR NOT x_75;
-ASSERT NOT x_3 OR NOT x_84;
-ASSERT NOT x_12 OR NOT x_21;
-ASSERT NOT x_12 OR NOT x_30;
-ASSERT NOT x_12 OR NOT x_39;
-ASSERT NOT x_12 OR NOT x_48;
-ASSERT NOT x_12 OR NOT x_57;
-ASSERT NOT x_12 OR NOT x_66;
-ASSERT NOT x_12 OR NOT x_75;
-ASSERT NOT x_12 OR NOT x_84;
-ASSERT NOT x_21 OR NOT x_30;
-ASSERT NOT x_21 OR NOT x_39;
-ASSERT NOT x_21 OR NOT x_48;
-ASSERT NOT x_21 OR NOT x_57;
-ASSERT NOT x_21 OR NOT x_66;
-ASSERT NOT x_21 OR NOT x_75;
-ASSERT NOT x_21 OR NOT x_84;
-ASSERT NOT x_30 OR NOT x_39;
-ASSERT NOT x_30 OR NOT x_48;
-ASSERT NOT x_30 OR NOT x_57;
-ASSERT NOT x_30 OR NOT x_66;
-ASSERT NOT x_30 OR NOT x_75;
-ASSERT NOT x_30 OR NOT x_84;
-ASSERT NOT x_39 OR NOT x_48;
-ASSERT NOT x_39 OR NOT x_57;
-ASSERT NOT x_39 OR NOT x_66;
-ASSERT NOT x_39 OR NOT x_75;
-ASSERT NOT x_39 OR NOT x_84;
-ASSERT NOT x_48 OR NOT x_57;
-ASSERT NOT x_48 OR NOT x_66;
-ASSERT NOT x_48 OR NOT x_75;
-ASSERT NOT x_48 OR NOT x_84;
-ASSERT NOT x_57 OR NOT x_66;
-ASSERT NOT x_57 OR NOT x_75;
-ASSERT NOT x_57 OR NOT x_84;
-ASSERT NOT x_66 OR NOT x_75;
-ASSERT NOT x_66 OR NOT x_84;
-ASSERT NOT x_75 OR NOT x_84;
-ASSERT NOT x_4 OR NOT x_13;
-ASSERT NOT x_4 OR NOT x_22;
-ASSERT NOT x_4 OR NOT x_31;
-ASSERT NOT x_4 OR NOT x_40;
-ASSERT NOT x_4 OR NOT x_49;
-ASSERT NOT x_4 OR NOT x_58;
-ASSERT NOT x_4 OR NOT x_67;
-ASSERT NOT x_4 OR NOT x_76;
-ASSERT NOT x_4 OR NOT x_85;
-ASSERT NOT x_13 OR NOT x_22;
-ASSERT NOT x_13 OR NOT x_31;
-ASSERT NOT x_13 OR NOT x_40;
-ASSERT NOT x_13 OR NOT x_49;
-ASSERT NOT x_13 OR NOT x_58;
-ASSERT NOT x_13 OR NOT x_67;
-ASSERT NOT x_13 OR NOT x_76;
-ASSERT NOT x_13 OR NOT x_85;
-ASSERT NOT x_22 OR NOT x_31;
-ASSERT NOT x_22 OR NOT x_40;
-ASSERT NOT x_22 OR NOT x_49;
-ASSERT NOT x_22 OR NOT x_58;
-ASSERT NOT x_22 OR NOT x_67;
-ASSERT NOT x_22 OR NOT x_76;
-ASSERT NOT x_22 OR NOT x_85;
-ASSERT NOT x_31 OR NOT x_40;
-ASSERT NOT x_31 OR NOT x_49;
-ASSERT NOT x_31 OR NOT x_58;
-ASSERT NOT x_31 OR NOT x_67;
-ASSERT NOT x_31 OR NOT x_76;
-ASSERT NOT x_31 OR NOT x_85;
-ASSERT NOT x_40 OR NOT x_49;
-ASSERT NOT x_40 OR NOT x_58;
-ASSERT NOT x_40 OR NOT x_67;
-ASSERT NOT x_40 OR NOT x_76;
-ASSERT NOT x_40 OR NOT x_85;
-ASSERT NOT x_49 OR NOT x_58;
-ASSERT NOT x_49 OR NOT x_67;
-ASSERT NOT x_49 OR NOT x_76;
-ASSERT NOT x_49 OR NOT x_85;
-ASSERT NOT x_58 OR NOT x_67;
-ASSERT NOT x_58 OR NOT x_76;
-ASSERT NOT x_58 OR NOT x_85;
-ASSERT NOT x_67 OR NOT x_76;
-ASSERT NOT x_67 OR NOT x_85;
-ASSERT NOT x_76 OR NOT x_85;
-ASSERT NOT x_5 OR NOT x_14;
-ASSERT NOT x_5 OR NOT x_23;
-ASSERT NOT x_5 OR NOT x_32;
-ASSERT NOT x_5 OR NOT x_41;
-ASSERT NOT x_5 OR NOT x_50;
-ASSERT NOT x_5 OR NOT x_59;
-ASSERT NOT x_5 OR NOT x_68;
-ASSERT NOT x_5 OR NOT x_77;
-ASSERT NOT x_5 OR NOT x_86;
-ASSERT NOT x_14 OR NOT x_23;
-ASSERT NOT x_14 OR NOT x_32;
-ASSERT NOT x_14 OR NOT x_41;
-ASSERT NOT x_14 OR NOT x_50;
-ASSERT NOT x_14 OR NOT x_59;
-ASSERT NOT x_14 OR NOT x_68;
-ASSERT NOT x_14 OR NOT x_77;
-ASSERT NOT x_14 OR NOT x_86;
-ASSERT NOT x_23 OR NOT x_32;
-ASSERT NOT x_23 OR NOT x_41;
-ASSERT NOT x_23 OR NOT x_50;
-ASSERT NOT x_23 OR NOT x_59;
-ASSERT NOT x_23 OR NOT x_68;
-ASSERT NOT x_23 OR NOT x_77;
-ASSERT NOT x_23 OR NOT x_86;
-ASSERT NOT x_32 OR NOT x_41;
-ASSERT NOT x_32 OR NOT x_50;
-ASSERT NOT x_32 OR NOT x_59;
-ASSERT NOT x_32 OR NOT x_68;
-ASSERT NOT x_32 OR NOT x_77;
-ASSERT NOT x_32 OR NOT x_86;
-ASSERT NOT x_41 OR NOT x_50;
-ASSERT NOT x_41 OR NOT x_59;
-ASSERT NOT x_41 OR NOT x_68;
-ASSERT NOT x_41 OR NOT x_77;
-ASSERT NOT x_41 OR NOT x_86;
-ASSERT NOT x_50 OR NOT x_59;
-ASSERT NOT x_50 OR NOT x_68;
-ASSERT NOT x_50 OR NOT x_77;
-ASSERT NOT x_50 OR NOT x_86;
-ASSERT NOT x_59 OR NOT x_68;
-ASSERT NOT x_59 OR NOT x_77;
-ASSERT NOT x_59 OR NOT x_86;
-ASSERT NOT x_68 OR NOT x_77;
-ASSERT NOT x_68 OR NOT x_86;
-ASSERT NOT x_77 OR NOT x_86;
-ASSERT NOT x_6 OR NOT x_15;
-ASSERT NOT x_6 OR NOT x_24;
-ASSERT NOT x_6 OR NOT x_33;
-ASSERT NOT x_6 OR NOT x_42;
-ASSERT NOT x_6 OR NOT x_51;
-ASSERT NOT x_6 OR NOT x_60;
-ASSERT NOT x_6 OR NOT x_69;
-ASSERT NOT x_6 OR NOT x_78;
-ASSERT NOT x_6 OR NOT x_87;
-ASSERT NOT x_15 OR NOT x_24;
-ASSERT NOT x_15 OR NOT x_33;
-ASSERT NOT x_15 OR NOT x_42;
-ASSERT NOT x_15 OR NOT x_51;
-ASSERT NOT x_15 OR NOT x_60;
-ASSERT NOT x_15 OR NOT x_69;
-ASSERT NOT x_15 OR NOT x_78;
-ASSERT NOT x_15 OR NOT x_87;
-ASSERT NOT x_24 OR NOT x_33;
-ASSERT NOT x_24 OR NOT x_42;
-ASSERT NOT x_24 OR NOT x_51;
-ASSERT NOT x_24 OR NOT x_60;
-ASSERT NOT x_24 OR NOT x_69;
-ASSERT NOT x_24 OR NOT x_78;
-ASSERT NOT x_24 OR NOT x_87;
-ASSERT NOT x_33 OR NOT x_42;
-ASSERT NOT x_33 OR NOT x_51;
-ASSERT NOT x_33 OR NOT x_60;
-ASSERT NOT x_33 OR NOT x_69;
-ASSERT NOT x_33 OR NOT x_78;
-ASSERT NOT x_33 OR NOT x_87;
-ASSERT NOT x_42 OR NOT x_51;
-ASSERT NOT x_42 OR NOT x_60;
-ASSERT NOT x_42 OR NOT x_69;
-ASSERT NOT x_42 OR NOT x_78;
-ASSERT NOT x_42 OR NOT x_87;
-ASSERT NOT x_51 OR NOT x_60;
-ASSERT NOT x_51 OR NOT x_69;
-ASSERT NOT x_51 OR NOT x_78;
-ASSERT NOT x_51 OR NOT x_87;
-ASSERT NOT x_60 OR NOT x_69;
-ASSERT NOT x_60 OR NOT x_78;
-ASSERT NOT x_60 OR NOT x_87;
-ASSERT NOT x_69 OR NOT x_78;
-ASSERT NOT x_69 OR NOT x_87;
-ASSERT NOT x_78 OR NOT x_87;
-ASSERT NOT x_7 OR NOT x_16;
-ASSERT NOT x_7 OR NOT x_25;
-ASSERT NOT x_7 OR NOT x_34;
-ASSERT NOT x_7 OR NOT x_43;
-ASSERT NOT x_7 OR NOT x_52;
-ASSERT NOT x_7 OR NOT x_61;
-ASSERT NOT x_7 OR NOT x_70;
-ASSERT NOT x_7 OR NOT x_79;
-ASSERT NOT x_7 OR NOT x_88;
-ASSERT NOT x_16 OR NOT x_25;
-ASSERT NOT x_16 OR NOT x_34;
-ASSERT NOT x_16 OR NOT x_43;
-ASSERT NOT x_16 OR NOT x_52;
-ASSERT NOT x_16 OR NOT x_61;
-ASSERT NOT x_16 OR NOT x_70;
-ASSERT NOT x_16 OR NOT x_79;
-ASSERT NOT x_16 OR NOT x_88;
-ASSERT NOT x_25 OR NOT x_34;
-ASSERT NOT x_25 OR NOT x_43;
-ASSERT NOT x_25 OR NOT x_52;
-ASSERT NOT x_25 OR NOT x_61;
-ASSERT NOT x_25 OR NOT x_70;
-ASSERT NOT x_25 OR NOT x_79;
-ASSERT NOT x_25 OR NOT x_88;
-ASSERT NOT x_34 OR NOT x_43;
-ASSERT NOT x_34 OR NOT x_52;
-ASSERT NOT x_34 OR NOT x_61;
-ASSERT NOT x_34 OR NOT x_70;
-ASSERT NOT x_34 OR NOT x_79;
-ASSERT NOT x_34 OR NOT x_88;
-ASSERT NOT x_43 OR NOT x_52;
-ASSERT NOT x_43 OR NOT x_61;
-ASSERT NOT x_43 OR NOT x_70;
-ASSERT NOT x_43 OR NOT x_79;
-ASSERT NOT x_43 OR NOT x_88;
-ASSERT NOT x_52 OR NOT x_61;
-ASSERT NOT x_52 OR NOT x_70;
-ASSERT NOT x_52 OR NOT x_79;
-ASSERT NOT x_52 OR NOT x_88;
-ASSERT NOT x_61 OR NOT x_70;
-ASSERT NOT x_61 OR NOT x_79;
-ASSERT NOT x_61 OR NOT x_88;
-ASSERT NOT x_70 OR NOT x_79;
-ASSERT NOT x_70 OR NOT x_88;
-ASSERT NOT x_79 OR NOT x_88;
-ASSERT NOT x_8 OR NOT x_17;
-ASSERT NOT x_8 OR NOT x_26;
-ASSERT NOT x_8 OR NOT x_35;
-ASSERT NOT x_8 OR NOT x_44;
-ASSERT NOT x_8 OR NOT x_53;
-ASSERT NOT x_8 OR NOT x_62;
-ASSERT NOT x_8 OR NOT x_71;
-ASSERT NOT x_8 OR NOT x_80;
-ASSERT NOT x_8 OR NOT x_89;
-ASSERT NOT x_17 OR NOT x_26;
-ASSERT NOT x_17 OR NOT x_35;
-ASSERT NOT x_17 OR NOT x_44;
-ASSERT NOT x_17 OR NOT x_53;
-ASSERT NOT x_17 OR NOT x_62;
-ASSERT NOT x_17 OR NOT x_71;
-ASSERT NOT x_17 OR NOT x_80;
-ASSERT NOT x_17 OR NOT x_89;
-ASSERT NOT x_26 OR NOT x_35;
-ASSERT NOT x_26 OR NOT x_44;
-ASSERT NOT x_26 OR NOT x_53;
-ASSERT NOT x_26 OR NOT x_62;
-ASSERT NOT x_26 OR NOT x_71;
-ASSERT NOT x_26 OR NOT x_80;
-ASSERT NOT x_26 OR NOT x_89;
-ASSERT NOT x_35 OR NOT x_44;
-ASSERT NOT x_35 OR NOT x_53;
-ASSERT NOT x_35 OR NOT x_62;
-ASSERT NOT x_35 OR NOT x_71;
-ASSERT NOT x_35 OR NOT x_80;
-ASSERT NOT x_35 OR NOT x_89;
-ASSERT NOT x_44 OR NOT x_53;
-ASSERT NOT x_44 OR NOT x_62;
-ASSERT NOT x_44 OR NOT x_71;
-ASSERT NOT x_44 OR NOT x_80;
-ASSERT NOT x_44 OR NOT x_89;
-ASSERT NOT x_53 OR NOT x_62;
-ASSERT NOT x_53 OR NOT x_71;
-ASSERT NOT x_53 OR NOT x_80;
-ASSERT NOT x_53 OR NOT x_89;
-ASSERT NOT x_62 OR NOT x_71;
-ASSERT NOT x_62 OR NOT x_80;
-ASSERT NOT x_62 OR NOT x_89;
-ASSERT NOT x_71 OR NOT x_80;
-ASSERT NOT x_71 OR NOT x_89;
-ASSERT NOT x_80 OR NOT x_89;
-ASSERT NOT x_9 OR NOT x_18;
-ASSERT NOT x_9 OR NOT x_27;
-ASSERT NOT x_9 OR NOT x_36;
-ASSERT NOT x_9 OR NOT x_45;
-ASSERT NOT x_9 OR NOT x_54;
-ASSERT NOT x_9 OR NOT x_63;
-ASSERT NOT x_9 OR NOT x_72;
-ASSERT NOT x_9 OR NOT x_81;
-ASSERT NOT x_9 OR NOT x_90;
-ASSERT NOT x_18 OR NOT x_27;
-ASSERT NOT x_18 OR NOT x_36;
-ASSERT NOT x_18 OR NOT x_45;
-ASSERT NOT x_18 OR NOT x_54;
-ASSERT NOT x_18 OR NOT x_63;
-ASSERT NOT x_18 OR NOT x_72;
-ASSERT NOT x_18 OR NOT x_81;
-ASSERT NOT x_18 OR NOT x_90;
-ASSERT NOT x_27 OR NOT x_36;
-ASSERT NOT x_27 OR NOT x_45;
-ASSERT NOT x_27 OR NOT x_54;
-ASSERT NOT x_27 OR NOT x_63;
-ASSERT NOT x_27 OR NOT x_72;
-ASSERT NOT x_27 OR NOT x_81;
-ASSERT NOT x_27 OR NOT x_90;
-ASSERT NOT x_36 OR NOT x_45;
-ASSERT NOT x_36 OR NOT x_54;
-ASSERT NOT x_36 OR NOT x_63;
-ASSERT NOT x_36 OR NOT x_72;
-ASSERT NOT x_36 OR NOT x_81;
-ASSERT NOT x_36 OR NOT x_90;
-ASSERT NOT x_45 OR NOT x_54;
-ASSERT NOT x_45 OR NOT x_63;
-ASSERT NOT x_45 OR NOT x_72;
-ASSERT NOT x_45 OR NOT x_81;
-ASSERT NOT x_45 OR NOT x_90;
-ASSERT NOT x_54 OR NOT x_63;
-ASSERT NOT x_54 OR NOT x_72;
-ASSERT NOT x_54 OR NOT x_81;
-ASSERT NOT x_54 OR NOT x_90;
-ASSERT NOT x_63 OR NOT x_72;
-ASSERT NOT x_63 OR NOT x_81;
-ASSERT NOT x_63 OR NOT x_90;
-ASSERT NOT x_72 OR NOT x_81;
-ASSERT NOT x_72 OR NOT x_90;
-ASSERT NOT x_81 OR NOT x_90;
-ASSERT x_9 OR x_8 OR x_7 OR x_6 OR x_5 OR x_4 OR x_3 OR x_2 OR x_1;
-ASSERT x_18 OR x_17 OR x_16 OR x_15 OR x_14 OR x_13 OR x_12 OR x_11 OR x_10;
-ASSERT x_27 OR x_26 OR x_25 OR x_24 OR x_23 OR x_22 OR x_21 OR x_20 OR x_19;
-ASSERT x_36 OR x_35 OR x_34 OR x_33 OR x_32 OR x_31 OR x_30 OR x_29 OR x_28;
-ASSERT x_45 OR x_44 OR x_43 OR x_42 OR x_41 OR x_40 OR x_39 OR x_38 OR x_37;
-ASSERT x_54 OR x_53 OR x_52 OR x_51 OR x_50 OR x_49 OR x_48 OR x_47 OR x_46;
-ASSERT x_63 OR x_62 OR x_61 OR x_60 OR x_59 OR x_58 OR x_57 OR x_56 OR x_55;
-ASSERT x_72 OR x_71 OR x_70 OR x_69 OR x_68 OR x_67 OR x_66 OR x_65 OR x_64;
-ASSERT x_81 OR x_80 OR x_79 OR x_78 OR x_77 OR x_76 OR x_75 OR x_74 OR x_73;
-ASSERT x_90 OR x_89 OR x_88 OR x_87 OR x_86 OR x_85 OR x_84 OR x_83 OR x_82;
-
-
-QUERY FALSE;
--- /dev/null
+; EXPECT: unsat
+(set-logic ALL)
+(set-option :incremental false)
+(declare-fun x_1 () Bool)
+(declare-fun x_2 () Bool)
+(declare-fun x_3 () Bool)
+(declare-fun x_4 () Bool)
+(declare-fun x_5 () Bool)
+(declare-fun x_6 () Bool)
+(declare-fun x_7 () Bool)
+(declare-fun x_8 () Bool)
+(declare-fun x_9 () Bool)
+(declare-fun x_10 () Bool)
+(declare-fun x_11 () Bool)
+(declare-fun x_12 () Bool)
+(declare-fun x_13 () Bool)
+(declare-fun x_14 () Bool)
+(declare-fun x_15 () Bool)
+(declare-fun x_16 () Bool)
+(declare-fun x_17 () Bool)
+(declare-fun x_18 () Bool)
+(declare-fun x_19 () Bool)
+(declare-fun x_20 () Bool)
+(declare-fun x_21 () Bool)
+(declare-fun x_22 () Bool)
+(declare-fun x_23 () Bool)
+(declare-fun x_24 () Bool)
+(declare-fun x_25 () Bool)
+(declare-fun x_26 () Bool)
+(declare-fun x_27 () Bool)
+(declare-fun x_28 () Bool)
+(declare-fun x_29 () Bool)
+(declare-fun x_30 () Bool)
+(declare-fun x_31 () Bool)
+(declare-fun x_32 () Bool)
+(declare-fun x_33 () Bool)
+(declare-fun x_34 () Bool)
+(declare-fun x_35 () Bool)
+(declare-fun x_36 () Bool)
+(declare-fun x_37 () Bool)
+(declare-fun x_38 () Bool)
+(declare-fun x_39 () Bool)
+(declare-fun x_40 () Bool)
+(declare-fun x_41 () Bool)
+(declare-fun x_42 () Bool)
+(declare-fun x_43 () Bool)
+(declare-fun x_44 () Bool)
+(declare-fun x_45 () Bool)
+(declare-fun x_46 () Bool)
+(declare-fun x_47 () Bool)
+(declare-fun x_48 () Bool)
+(declare-fun x_49 () Bool)
+(declare-fun x_50 () Bool)
+(declare-fun x_51 () Bool)
+(declare-fun x_52 () Bool)
+(declare-fun x_53 () Bool)
+(declare-fun x_54 () Bool)
+(declare-fun x_55 () Bool)
+(declare-fun x_56 () Bool)
+(declare-fun x_57 () Bool)
+(declare-fun x_58 () Bool)
+(declare-fun x_59 () Bool)
+(declare-fun x_60 () Bool)
+(declare-fun x_61 () Bool)
+(declare-fun x_62 () Bool)
+(declare-fun x_63 () Bool)
+(declare-fun x_64 () Bool)
+(declare-fun x_65 () Bool)
+(declare-fun x_66 () Bool)
+(declare-fun x_67 () Bool)
+(declare-fun x_68 () Bool)
+(declare-fun x_69 () Bool)
+(declare-fun x_70 () Bool)
+(declare-fun x_71 () Bool)
+(declare-fun x_72 () Bool)
+(declare-fun x_73 () Bool)
+(declare-fun x_74 () Bool)
+(declare-fun x_75 () Bool)
+(declare-fun x_76 () Bool)
+(declare-fun x_77 () Bool)
+(declare-fun x_78 () Bool)
+(declare-fun x_79 () Bool)
+(declare-fun x_80 () Bool)
+(declare-fun x_81 () Bool)
+(declare-fun x_82 () Bool)
+(declare-fun x_83 () Bool)
+(declare-fun x_84 () Bool)
+(declare-fun x_85 () Bool)
+(declare-fun x_86 () Bool)
+(declare-fun x_87 () Bool)
+(declare-fun x_88 () Bool)
+(declare-fun x_89 () Bool)
+(declare-fun x_90 () Bool)
+(assert (or (not x_1) (not x_10)))
+(assert (or (not x_1) (not x_19)))
+(assert (or (not x_1) (not x_28)))
+(assert (or (not x_1) (not x_37)))
+(assert (or (not x_1) (not x_46)))
+(assert (or (not x_1) (not x_55)))
+(assert (or (not x_1) (not x_64)))
+(assert (or (not x_1) (not x_73)))
+(assert (or (not x_1) (not x_82)))
+(assert (or (not x_10) (not x_19)))
+(assert (or (not x_10) (not x_28)))
+(assert (or (not x_10) (not x_37)))
+(assert (or (not x_10) (not x_46)))
+(assert (or (not x_10) (not x_55)))
+(assert (or (not x_10) (not x_64)))
+(assert (or (not x_10) (not x_73)))
+(assert (or (not x_10) (not x_82)))
+(assert (or (not x_19) (not x_28)))
+(assert (or (not x_19) (not x_37)))
+(assert (or (not x_19) (not x_46)))
+(assert (or (not x_19) (not x_55)))
+(assert (or (not x_19) (not x_64)))
+(assert (or (not x_19) (not x_73)))
+(assert (or (not x_19) (not x_82)))
+(assert (or (not x_28) (not x_37)))
+(assert (or (not x_28) (not x_46)))
+(assert (or (not x_28) (not x_55)))
+(assert (or (not x_28) (not x_64)))
+(assert (or (not x_28) (not x_73)))
+(assert (or (not x_28) (not x_82)))
+(assert (or (not x_37) (not x_46)))
+(assert (or (not x_37) (not x_55)))
+(assert (or (not x_37) (not x_64)))
+(assert (or (not x_37) (not x_73)))
+(assert (or (not x_37) (not x_82)))
+(assert (or (not x_46) (not x_55)))
+(assert (or (not x_46) (not x_64)))
+(assert (or (not x_46) (not x_73)))
+(assert (or (not x_46) (not x_82)))
+(assert (or (not x_55) (not x_64)))
+(assert (or (not x_55) (not x_73)))
+(assert (or (not x_55) (not x_82)))
+(assert (or (not x_64) (not x_73)))
+(assert (or (not x_64) (not x_82)))
+(assert (or (not x_73) (not x_82)))
+(assert (or (not x_2) (not x_11)))
+(assert (or (not x_2) (not x_20)))
+(assert (or (not x_2) (not x_29)))
+(assert (or (not x_2) (not x_38)))
+(assert (or (not x_2) (not x_47)))
+(assert (or (not x_2) (not x_56)))
+(assert (or (not x_2) (not x_65)))
+(assert (or (not x_2) (not x_74)))
+(assert (or (not x_2) (not x_83)))
+(assert (or (not x_11) (not x_20)))
+(assert (or (not x_11) (not x_29)))
+(assert (or (not x_11) (not x_38)))
+(assert (or (not x_11) (not x_47)))
+(assert (or (not x_11) (not x_56)))
+(assert (or (not x_11) (not x_65)))
+(assert (or (not x_11) (not x_74)))
+(assert (or (not x_11) (not x_83)))
+(assert (or (not x_20) (not x_29)))
+(assert (or (not x_20) (not x_38)))
+(assert (or (not x_20) (not x_47)))
+(assert (or (not x_20) (not x_56)))
+(assert (or (not x_20) (not x_65)))
+(assert (or (not x_20) (not x_74)))
+(assert (or (not x_20) (not x_83)))
+(assert (or (not x_29) (not x_38)))
+(assert (or (not x_29) (not x_47)))
+(assert (or (not x_29) (not x_56)))
+(assert (or (not x_29) (not x_65)))
+(assert (or (not x_29) (not x_74)))
+(assert (or (not x_29) (not x_83)))
+(assert (or (not x_38) (not x_47)))
+(assert (or (not x_38) (not x_56)))
+(assert (or (not x_38) (not x_65)))
+(assert (or (not x_38) (not x_74)))
+(assert (or (not x_38) (not x_83)))
+(assert (or (not x_47) (not x_56)))
+(assert (or (not x_47) (not x_65)))
+(assert (or (not x_47) (not x_74)))
+(assert (or (not x_47) (not x_83)))
+(assert (or (not x_56) (not x_65)))
+(assert (or (not x_56) (not x_74)))
+(assert (or (not x_56) (not x_83)))
+(assert (or (not x_65) (not x_74)))
+(assert (or (not x_65) (not x_83)))
+(assert (or (not x_74) (not x_83)))
+(assert (or (not x_3) (not x_12)))
+(assert (or (not x_3) (not x_21)))
+(assert (or (not x_3) (not x_30)))
+(assert (or (not x_3) (not x_39)))
+(assert (or (not x_3) (not x_48)))
+(assert (or (not x_3) (not x_57)))
+(assert (or (not x_3) (not x_66)))
+(assert (or (not x_3) (not x_75)))
+(assert (or (not x_3) (not x_84)))
+(assert (or (not x_12) (not x_21)))
+(assert (or (not x_12) (not x_30)))
+(assert (or (not x_12) (not x_39)))
+(assert (or (not x_12) (not x_48)))
+(assert (or (not x_12) (not x_57)))
+(assert (or (not x_12) (not x_66)))
+(assert (or (not x_12) (not x_75)))
+(assert (or (not x_12) (not x_84)))
+(assert (or (not x_21) (not x_30)))
+(assert (or (not x_21) (not x_39)))
+(assert (or (not x_21) (not x_48)))
+(assert (or (not x_21) (not x_57)))
+(assert (or (not x_21) (not x_66)))
+(assert (or (not x_21) (not x_75)))
+(assert (or (not x_21) (not x_84)))
+(assert (or (not x_30) (not x_39)))
+(assert (or (not x_30) (not x_48)))
+(assert (or (not x_30) (not x_57)))
+(assert (or (not x_30) (not x_66)))
+(assert (or (not x_30) (not x_75)))
+(assert (or (not x_30) (not x_84)))
+(assert (or (not x_39) (not x_48)))
+(assert (or (not x_39) (not x_57)))
+(assert (or (not x_39) (not x_66)))
+(assert (or (not x_39) (not x_75)))
+(assert (or (not x_39) (not x_84)))
+(assert (or (not x_48) (not x_57)))
+(assert (or (not x_48) (not x_66)))
+(assert (or (not x_48) (not x_75)))
+(assert (or (not x_48) (not x_84)))
+(assert (or (not x_57) (not x_66)))
+(assert (or (not x_57) (not x_75)))
+(assert (or (not x_57) (not x_84)))
+(assert (or (not x_66) (not x_75)))
+(assert (or (not x_66) (not x_84)))
+(assert (or (not x_75) (not x_84)))
+(assert (or (not x_4) (not x_13)))
+(assert (or (not x_4) (not x_22)))
+(assert (or (not x_4) (not x_31)))
+(assert (or (not x_4) (not x_40)))
+(assert (or (not x_4) (not x_49)))
+(assert (or (not x_4) (not x_58)))
+(assert (or (not x_4) (not x_67)))
+(assert (or (not x_4) (not x_76)))
+(assert (or (not x_4) (not x_85)))
+(assert (or (not x_13) (not x_22)))
+(assert (or (not x_13) (not x_31)))
+(assert (or (not x_13) (not x_40)))
+(assert (or (not x_13) (not x_49)))
+(assert (or (not x_13) (not x_58)))
+(assert (or (not x_13) (not x_67)))
+(assert (or (not x_13) (not x_76)))
+(assert (or (not x_13) (not x_85)))
+(assert (or (not x_22) (not x_31)))
+(assert (or (not x_22) (not x_40)))
+(assert (or (not x_22) (not x_49)))
+(assert (or (not x_22) (not x_58)))
+(assert (or (not x_22) (not x_67)))
+(assert (or (not x_22) (not x_76)))
+(assert (or (not x_22) (not x_85)))
+(assert (or (not x_31) (not x_40)))
+(assert (or (not x_31) (not x_49)))
+(assert (or (not x_31) (not x_58)))
+(assert (or (not x_31) (not x_67)))
+(assert (or (not x_31) (not x_76)))
+(assert (or (not x_31) (not x_85)))
+(assert (or (not x_40) (not x_49)))
+(assert (or (not x_40) (not x_58)))
+(assert (or (not x_40) (not x_67)))
+(assert (or (not x_40) (not x_76)))
+(assert (or (not x_40) (not x_85)))
+(assert (or (not x_49) (not x_58)))
+(assert (or (not x_49) (not x_67)))
+(assert (or (not x_49) (not x_76)))
+(assert (or (not x_49) (not x_85)))
+(assert (or (not x_58) (not x_67)))
+(assert (or (not x_58) (not x_76)))
+(assert (or (not x_58) (not x_85)))
+(assert (or (not x_67) (not x_76)))
+(assert (or (not x_67) (not x_85)))
+(assert (or (not x_76) (not x_85)))
+(assert (or (not x_5) (not x_14)))
+(assert (or (not x_5) (not x_23)))
+(assert (or (not x_5) (not x_32)))
+(assert (or (not x_5) (not x_41)))
+(assert (or (not x_5) (not x_50)))
+(assert (or (not x_5) (not x_59)))
+(assert (or (not x_5) (not x_68)))
+(assert (or (not x_5) (not x_77)))
+(assert (or (not x_5) (not x_86)))
+(assert (or (not x_14) (not x_23)))
+(assert (or (not x_14) (not x_32)))
+(assert (or (not x_14) (not x_41)))
+(assert (or (not x_14) (not x_50)))
+(assert (or (not x_14) (not x_59)))
+(assert (or (not x_14) (not x_68)))
+(assert (or (not x_14) (not x_77)))
+(assert (or (not x_14) (not x_86)))
+(assert (or (not x_23) (not x_32)))
+(assert (or (not x_23) (not x_41)))
+(assert (or (not x_23) (not x_50)))
+(assert (or (not x_23) (not x_59)))
+(assert (or (not x_23) (not x_68)))
+(assert (or (not x_23) (not x_77)))
+(assert (or (not x_23) (not x_86)))
+(assert (or (not x_32) (not x_41)))
+(assert (or (not x_32) (not x_50)))
+(assert (or (not x_32) (not x_59)))
+(assert (or (not x_32) (not x_68)))
+(assert (or (not x_32) (not x_77)))
+(assert (or (not x_32) (not x_86)))
+(assert (or (not x_41) (not x_50)))
+(assert (or (not x_41) (not x_59)))
+(assert (or (not x_41) (not x_68)))
+(assert (or (not x_41) (not x_77)))
+(assert (or (not x_41) (not x_86)))
+(assert (or (not x_50) (not x_59)))
+(assert (or (not x_50) (not x_68)))
+(assert (or (not x_50) (not x_77)))
+(assert (or (not x_50) (not x_86)))
+(assert (or (not x_59) (not x_68)))
+(assert (or (not x_59) (not x_77)))
+(assert (or (not x_59) (not x_86)))
+(assert (or (not x_68) (not x_77)))
+(assert (or (not x_68) (not x_86)))
+(assert (or (not x_77) (not x_86)))
+(assert (or (not x_6) (not x_15)))
+(assert (or (not x_6) (not x_24)))
+(assert (or (not x_6) (not x_33)))
+(assert (or (not x_6) (not x_42)))
+(assert (or (not x_6) (not x_51)))
+(assert (or (not x_6) (not x_60)))
+(assert (or (not x_6) (not x_69)))
+(assert (or (not x_6) (not x_78)))
+(assert (or (not x_6) (not x_87)))
+(assert (or (not x_15) (not x_24)))
+(assert (or (not x_15) (not x_33)))
+(assert (or (not x_15) (not x_42)))
+(assert (or (not x_15) (not x_51)))
+(assert (or (not x_15) (not x_60)))
+(assert (or (not x_15) (not x_69)))
+(assert (or (not x_15) (not x_78)))
+(assert (or (not x_15) (not x_87)))
+(assert (or (not x_24) (not x_33)))
+(assert (or (not x_24) (not x_42)))
+(assert (or (not x_24) (not x_51)))
+(assert (or (not x_24) (not x_60)))
+(assert (or (not x_24) (not x_69)))
+(assert (or (not x_24) (not x_78)))
+(assert (or (not x_24) (not x_87)))
+(assert (or (not x_33) (not x_42)))
+(assert (or (not x_33) (not x_51)))
+(assert (or (not x_33) (not x_60)))
+(assert (or (not x_33) (not x_69)))
+(assert (or (not x_33) (not x_78)))
+(assert (or (not x_33) (not x_87)))
+(assert (or (not x_42) (not x_51)))
+(assert (or (not x_42) (not x_60)))
+(assert (or (not x_42) (not x_69)))
+(assert (or (not x_42) (not x_78)))
+(assert (or (not x_42) (not x_87)))
+(assert (or (not x_51) (not x_60)))
+(assert (or (not x_51) (not x_69)))
+(assert (or (not x_51) (not x_78)))
+(assert (or (not x_51) (not x_87)))
+(assert (or (not x_60) (not x_69)))
+(assert (or (not x_60) (not x_78)))
+(assert (or (not x_60) (not x_87)))
+(assert (or (not x_69) (not x_78)))
+(assert (or (not x_69) (not x_87)))
+(assert (or (not x_78) (not x_87)))
+(assert (or (not x_7) (not x_16)))
+(assert (or (not x_7) (not x_25)))
+(assert (or (not x_7) (not x_34)))
+(assert (or (not x_7) (not x_43)))
+(assert (or (not x_7) (not x_52)))
+(assert (or (not x_7) (not x_61)))
+(assert (or (not x_7) (not x_70)))
+(assert (or (not x_7) (not x_79)))
+(assert (or (not x_7) (not x_88)))
+(assert (or (not x_16) (not x_25)))
+(assert (or (not x_16) (not x_34)))
+(assert (or (not x_16) (not x_43)))
+(assert (or (not x_16) (not x_52)))
+(assert (or (not x_16) (not x_61)))
+(assert (or (not x_16) (not x_70)))
+(assert (or (not x_16) (not x_79)))
+(assert (or (not x_16) (not x_88)))
+(assert (or (not x_25) (not x_34)))
+(assert (or (not x_25) (not x_43)))
+(assert (or (not x_25) (not x_52)))
+(assert (or (not x_25) (not x_61)))
+(assert (or (not x_25) (not x_70)))
+(assert (or (not x_25) (not x_79)))
+(assert (or (not x_25) (not x_88)))
+(assert (or (not x_34) (not x_43)))
+(assert (or (not x_34) (not x_52)))
+(assert (or (not x_34) (not x_61)))
+(assert (or (not x_34) (not x_70)))
+(assert (or (not x_34) (not x_79)))
+(assert (or (not x_34) (not x_88)))
+(assert (or (not x_43) (not x_52)))
+(assert (or (not x_43) (not x_61)))
+(assert (or (not x_43) (not x_70)))
+(assert (or (not x_43) (not x_79)))
+(assert (or (not x_43) (not x_88)))
+(assert (or (not x_52) (not x_61)))
+(assert (or (not x_52) (not x_70)))
+(assert (or (not x_52) (not x_79)))
+(assert (or (not x_52) (not x_88)))
+(assert (or (not x_61) (not x_70)))
+(assert (or (not x_61) (not x_79)))
+(assert (or (not x_61) (not x_88)))
+(assert (or (not x_70) (not x_79)))
+(assert (or (not x_70) (not x_88)))
+(assert (or (not x_79) (not x_88)))
+(assert (or (not x_8) (not x_17)))
+(assert (or (not x_8) (not x_26)))
+(assert (or (not x_8) (not x_35)))
+(assert (or (not x_8) (not x_44)))
+(assert (or (not x_8) (not x_53)))
+(assert (or (not x_8) (not x_62)))
+(assert (or (not x_8) (not x_71)))
+(assert (or (not x_8) (not x_80)))
+(assert (or (not x_8) (not x_89)))
+(assert (or (not x_17) (not x_26)))
+(assert (or (not x_17) (not x_35)))
+(assert (or (not x_17) (not x_44)))
+(assert (or (not x_17) (not x_53)))
+(assert (or (not x_17) (not x_62)))
+(assert (or (not x_17) (not x_71)))
+(assert (or (not x_17) (not x_80)))
+(assert (or (not x_17) (not x_89)))
+(assert (or (not x_26) (not x_35)))
+(assert (or (not x_26) (not x_44)))
+(assert (or (not x_26) (not x_53)))
+(assert (or (not x_26) (not x_62)))
+(assert (or (not x_26) (not x_71)))
+(assert (or (not x_26) (not x_80)))
+(assert (or (not x_26) (not x_89)))
+(assert (or (not x_35) (not x_44)))
+(assert (or (not x_35) (not x_53)))
+(assert (or (not x_35) (not x_62)))
+(assert (or (not x_35) (not x_71)))
+(assert (or (not x_35) (not x_80)))
+(assert (or (not x_35) (not x_89)))
+(assert (or (not x_44) (not x_53)))
+(assert (or (not x_44) (not x_62)))
+(assert (or (not x_44) (not x_71)))
+(assert (or (not x_44) (not x_80)))
+(assert (or (not x_44) (not x_89)))
+(assert (or (not x_53) (not x_62)))
+(assert (or (not x_53) (not x_71)))
+(assert (or (not x_53) (not x_80)))
+(assert (or (not x_53) (not x_89)))
+(assert (or (not x_62) (not x_71)))
+(assert (or (not x_62) (not x_80)))
+(assert (or (not x_62) (not x_89)))
+(assert (or (not x_71) (not x_80)))
+(assert (or (not x_71) (not x_89)))
+(assert (or (not x_80) (not x_89)))
+(assert (or (not x_9) (not x_18)))
+(assert (or (not x_9) (not x_27)))
+(assert (or (not x_9) (not x_36)))
+(assert (or (not x_9) (not x_45)))
+(assert (or (not x_9) (not x_54)))
+(assert (or (not x_9) (not x_63)))
+(assert (or (not x_9) (not x_72)))
+(assert (or (not x_9) (not x_81)))
+(assert (or (not x_9) (not x_90)))
+(assert (or (not x_18) (not x_27)))
+(assert (or (not x_18) (not x_36)))
+(assert (or (not x_18) (not x_45)))
+(assert (or (not x_18) (not x_54)))
+(assert (or (not x_18) (not x_63)))
+(assert (or (not x_18) (not x_72)))
+(assert (or (not x_18) (not x_81)))
+(assert (or (not x_18) (not x_90)))
+(assert (or (not x_27) (not x_36)))
+(assert (or (not x_27) (not x_45)))
+(assert (or (not x_27) (not x_54)))
+(assert (or (not x_27) (not x_63)))
+(assert (or (not x_27) (not x_72)))
+(assert (or (not x_27) (not x_81)))
+(assert (or (not x_27) (not x_90)))
+(assert (or (not x_36) (not x_45)))
+(assert (or (not x_36) (not x_54)))
+(assert (or (not x_36) (not x_63)))
+(assert (or (not x_36) (not x_72)))
+(assert (or (not x_36) (not x_81)))
+(assert (or (not x_36) (not x_90)))
+(assert (or (not x_45) (not x_54)))
+(assert (or (not x_45) (not x_63)))
+(assert (or (not x_45) (not x_72)))
+(assert (or (not x_45) (not x_81)))
+(assert (or (not x_45) (not x_90)))
+(assert (or (not x_54) (not x_63)))
+(assert (or (not x_54) (not x_72)))
+(assert (or (not x_54) (not x_81)))
+(assert (or (not x_54) (not x_90)))
+(assert (or (not x_63) (not x_72)))
+(assert (or (not x_63) (not x_81)))
+(assert (or (not x_63) (not x_90)))
+(assert (or (not x_72) (not x_81)))
+(assert (or (not x_72) (not x_90)))
+(assert (or (not x_81) (not x_90)))
+(assert (or (or (or (or (or (or (or (or x_9 x_8) x_7) x_6) x_5) x_4) x_3) x_2) x_1))
+(assert (or (or (or (or (or (or (or (or x_18 x_17) x_16) x_15) x_14) x_13) x_12) x_11) x_10))
+(assert (or (or (or (or (or (or (or (or x_27 x_26) x_25) x_24) x_23) x_22) x_21) x_20) x_19))
+(assert (or (or (or (or (or (or (or (or x_36 x_35) x_34) x_33) x_32) x_31) x_30) x_29) x_28))
+(assert (or (or (or (or (or (or (or (or x_45 x_44) x_43) x_42) x_41) x_40) x_39) x_38) x_37))
+(assert (or (or (or (or (or (or (or (or x_54 x_53) x_52) x_51) x_50) x_49) x_48) x_47) x_46))
+(assert (or (or (or (or (or (or (or (or x_63 x_62) x_61) x_60) x_59) x_58) x_57) x_56) x_55))
+(assert (or (or (or (or (or (or (or (or x_72 x_71) x_70) x_69) x_68) x_67) x_66) x_65) x_64))
+(assert (or (or (or (or (or (or (or (or x_81 x_80) x_79) x_78) x_77) x_76) x_75) x_74) x_73))
+(assert (or (or (or (or (or (or (or (or x_90 x_89) x_88) x_87) x_86) x_85) x_84) x_83) x_82))
+(check-sat)
elif benchmark_ext == '.smt2':
status_regex = r'set-info\s*:status\s*(sat|unsat)'
comment_char = ';'
- elif benchmark_ext == '.cvc':
- pass
elif benchmark_ext == '.p':
status_regex = r'% Status\s*:\s*(Theorem|Unsatisfiable|CounterSatisfiable|Satisfiable)'
status_to_output = lambda s: '% SZS status {} for {}'.format(
check_unsat_cores = False
check_proofs = False
else:
- sys.exit('"{}" must be *.cvc or *.smt or *.smt2 or *.p or *.sy'.format(
+ sys.exit('"{}" must be *.smt2 or *.p or *.sy'.format(
benchmark_basename))
benchmark_lines = None
'--check-synth-sol' not in all_args:
all_args += ['--check-synth-sol']
if ('sat' in expected_output_lines or \
- 'not_entailed' in expected_output_lines or \
'unknown' in expected_output_lines) and \
'--no-debug-check-models' not in all_args and \
'--no-check-models' not in all_args and \
'--debug-check-models' not in all_args:
extra_command_line_args += ['--debug-check-models']
- if 'unsat' in expected_output_lines or 'entailed' in expected_output_lines:
+ if 'unsat' in expected_output_lines in expected_output_lines:
if check_unsat_cores and \
'--no-produce-unsat-cores' not in all_args and \
'--no-check-unsat-cores' not in all_args and \
OR, {fffx_eq_x, fffx_eq_y, fx_eq_gx, x_eq_y, fgx_eq_gy});
std::stringstream sstr;
- sstr << Node::setdepth(-1) << Node::setlanguage(Language::LANG_CVC);
+ sstr << Node::setdepth(-1) << Node::setlanguage(Language::LANG_SMTLIB_V2_6);
sstr << Node::dag(false) << n; // never dagify
ASSERT_EQ(sstr.str(),
- "(f(f(f(x))) = x) OR (f(f(f(x))) = y) OR (f(x) = g(x)) OR (x = "
- "y) OR (f(g(x)) = g(y))");
+ "(or (= (f (f (f x))) x) (= (f (f (f x))) y) (= (f x) (g x)) (= x "
+ "y) (= (f (g x)) (g y)))");
}
TEST_F(TestNodeBlackNode, for_each_over_nodes_as_node)
/* -------------------------------------------------------------------------- */
-class TestParserBlackCvCParser : public TestParserBlackParser
-{
- protected:
- TestParserBlackCvCParser() : TestParserBlackParser("LANG_CVC") {}
-};
-
-TEST_F(TestParserBlackCvCParser, good_inputs)
-{
- tryGoodInput(""); // empty string is OK
- tryGoodInput(";"); // no command is OK
- tryGoodInput("ASSERT TRUE;");
- tryGoodInput("QUERY TRUE;");
- tryGoodInput("CHECKSAT FALSE;");
- tryGoodInput("a, b : BOOLEAN;");
- tryGoodInput("a, b : BOOLEAN; QUERY (a => b) AND a => b;");
- tryGoodInput("T, U : TYPE; f : T -> U; x : T; y : U; CHECKSAT f(x) = y;");
- tryGoodInput("T : TYPE = BOOLEAN; x : T; CHECKSAT x;");
- tryGoodInput("a : ARRAY INT OF REAL; ASSERT (a WITH [1] := 0.0)[1] = a[0];");
- tryGoodInput("b : BITVECTOR(3); ASSERT b = 0bin101;");
- tryGoodInput("T : TYPE = BOOLEAN; x : T; CHECKSAT x;");
- tryGoodInput(
- "T : TYPE; x, y : T; a : BOOLEAN; QUERY (IF a THEN x ELSE y ENDIF) = x;");
- tryGoodInput("CHECKSAT 0bin0000 /= 0hex7;");
- tryGoodInput("%% nothing but a comment");
- tryGoodInput("% a comment\nASSERT TRUE; %a command\n% another comment");
- tryGoodInput("a : BOOLEAN; a: BOOLEAN;"); // double decl, but compatible
- tryGoodInput("a : INT = 5; a: INT;"); // decl after define, compatible
- tryGoodInput(
- "a : TYPE; a : INT;"); // ok, sort and variable symbol spaces distinct
- tryGoodInput(
- "a : TYPE; a : INT; b : a;"); // ok except a is both INT and sort `a'
- tryGoodInput(
- "DATATYPE list = nil | cons(car:INT,cdr:list) END; DATATYPE cons = null "
- "END;");
- tryGoodInput(
- "DATATYPE tree = node(data:list), list = cons(car:tree,cdr:list) | nil "
- "END;");
- tryGoodInput(
- "DATATYPE trex = Foo | Bar END; DATATYPE tree = "
- "node(data:[list,list,ARRAY trex OF list]), list = cons(car:ARRAY list "
- "OF tree,cdr:BITVECTOR(32)) END;");
-}
-
-TEST_F(TestParserBlackCvCParser, bad_inputs)
-{
-// competition builds don't do any checking
-#ifndef CVC5_COMPETITION_MODE
- tryBadInput("ASSERT;"); // no args
- tryBadInput("QUERY");
- tryBadInput("CHECKSAT");
- tryBadInput("a, b : boolean;"); // lowercase boolean isn't a type
- tryBadInput("0x : INT;"); // 0x isn't an identifier
- tryBadInput(
- "a, b : BOOLEAN\nQUERY (a => b) AND a => b;"); // no semicolon after decl
- tryBadInput("ASSERT 0bin012 /= 0hex0;"); // bad binary literal
- tryBadInput("a, b: BOOLEAN; QUERY a(b);"); // non-function used as function
- tryBadInput("a : BOOLEAN; a: INT;"); // double decl, incompatible
- tryBadInput("A : TYPE; A: TYPE;"); // types can't be double-declared
- tryBadInput("a : INT; a: INT = 5;"); // can't define after decl
- tryBadInput("a : INT = 5; a: BOOLEAN;"); // decl w/ incompatible type
- tryBadInput(
- "a : TYPE; a : INT; a : a;"); // ok except a is both INT and sort `a'
- tryBadInput(
- "DATATYPE list = nil | cons(car:INT,cdr:list) END; DATATYPE list = nil | "
- "cons(car:INT,cdr:list) END;");
- tryBadInput(
- "DATATYPE list = nil | cons(car:INT,cdr:list) END; DATATYPE list2 = nil "
- "END;");
- tryBadInput(
- "DATATYPE tree = node(data:(list,list,ARRAY trex OF list)), list = "
- "cons(car:ARRAY list OF tree,cdr:BITVECTOR(32)) END;");
-#endif
-}
-
-TEST_F(TestParserBlackCvCParser, good_exprs)
-{
- tryGoodExpr("a AND b");
- tryGoodExpr("a AND b OR c");
- tryGoodExpr("(a => b) AND a => b");
- tryGoodExpr("(a <=> b) AND (NOT a)");
- tryGoodExpr("(a XOR b) <=> (a OR b) AND (NOT (a AND b))");
-}
-
-TEST_F(TestParserBlackCvCParser, bad_exprs)
-{
-// competition builds don't do any checking
-#ifndef CVC5_COMPETITION_MODE
- tryBadInput("a AND"); // wrong arity
- tryBadInput("AND(a,b)"); // not infix
- tryBadInput("(OR (AND a b) c)"); // not infix
- tryBadInput("a IMPLIES b"); // should be =>
- tryBadInput("a NOT b"); // wrong arity, not infix
- tryBadInput("a and b"); // wrong case
-#endif
-}
-
-/* -------------------------------------------------------------------------- */
-
class TestParserBlackSmt2Parser : public TestParserBlackParser
{
protected:
#include "options/language.h"
#include "parser/parser.h"
#include "parser/parser_builder.h"
+#include "smt/command.h"
#include "test_api.h"
namespace cvc5 {
ASSERT_TRUE(e.isNull());
}
- void checkTrueInput(Parser* parser)
+ void checkInput(Parser* parser, const std::string& expected)
{
- api::Term e = parser->nextExpression();
- ASSERT_EQ(e, d_solver.mkTrue());
-
- e = parser->nextExpression();
- ASSERT_TRUE(e.isNull());
+ Command* cmd = parser->nextCommand();
+ ASSERT_NE(cmd, nullptr);
+ ASSERT_EQ(cmd->toString(), expected);
+ delete cmd;
+
+ cmd = parser->nextCommand();
+ ASSERT_EQ(cmd, nullptr);
+ // e = parser->nextExpression();
+ // ASSERT_TRUE(e.isNull());
}
char* mkTemp()
ASSERT_NE(filename, nullptr);
std::unique_ptr<Parser> parser(ParserBuilder(&d_solver, d_symman.get(), false)
- .withInputLanguage("LANG_CVC")
+ .withInputLanguage("LANG_SMTLIB_V2_6")
.build());
- parser->setInput(Input::newFileInput("LANG_CVC", filename, false));
+ parser->setInput(Input::newFileInput("LANG_SMTLIB_V2_6", filename, false));
checkEmptyInput(parser.get());
remove(filename);
char* filename = mkTemp();
std::fstream fs(filename, std::fstream::out);
- fs << "TRUE" << std::endl;
+ fs << "(set-logic ALL)" << std::endl;
fs.close();
std::unique_ptr<Parser> parser(ParserBuilder(&d_solver, d_symman.get(), false)
- .withInputLanguage("LANG_CVC")
+ .withInputLanguage("LANG_SMTLIB_V2_6")
.build());
- parser->setInput(Input::newFileInput("LANG_CVC", filename, false));
- checkTrueInput(parser.get());
+ parser->setInput(Input::newFileInput("LANG_SMTLIB_V2_6", filename, false));
+ checkInput(parser.get(), "(set-logic ALL)\n");
remove(filename);
free(filename);
TEST_F(TestParseBlackParserBuilder, empty_string_input)
{
std::unique_ptr<Parser> parser(ParserBuilder(&d_solver, d_symman.get(), false)
- .withInputLanguage("LANG_CVC")
+ .withInputLanguage("LANG_SMTLIB_V2_6")
.build());
- parser->setInput(Input::newStringInput("LANG_CVC", "", "foo"));
+ parser->setInput(Input::newStringInput("LANG_SMTLIB_V2_6", "", "foo"));
checkEmptyInput(parser.get());
}
TEST_F(TestParseBlackParserBuilder, true_string_input)
{
std::unique_ptr<Parser> parser(ParserBuilder(&d_solver, d_symman.get(), false)
- .withInputLanguage("LANG_CVC")
+ .withInputLanguage("LANG_SMTLIB_V2_6")
.build());
- parser->setInput(Input::newStringInput("LANG_CVC", "TRUE", "foo"));
- checkTrueInput(parser.get());
+ parser->setInput(
+ Input::newStringInput("LANG_SMTLIB_V2_6", "(assert true)", "foo"));
+ checkInput(parser.get(), "(assert true)\n");
}
TEST_F(TestParseBlackParserBuilder, empty_stream_input)
{
std::stringstream ss("", std::ios_base::in);
std::unique_ptr<Parser> parser(ParserBuilder(&d_solver, d_symman.get(), false)
- .withInputLanguage("LANG_CVC")
+ .withInputLanguage("LANG_SMTLIB_V2_6")
.build());
- parser->setInput(Input::newStreamInput("LANG_CVC", ss, "foo"));
+ parser->setInput(Input::newStreamInput("LANG_SMTLIB_V2_6", ss, "foo"));
checkEmptyInput(parser.get());
}
TEST_F(TestParseBlackParserBuilder, true_stream_input)
{
- std::stringstream ss("TRUE", std::ios_base::in);
+ std::stringstream ss("(assert false)", std::ios_base::in);
std::unique_ptr<Parser> parser(ParserBuilder(&d_solver, d_symman.get(), false)
- .withInputLanguage("LANG_CVC")
+ .withInputLanguage("LANG_SMTLIB_V2_6")
.build());
- parser->setInput(Input::newStreamInput("LANG_CVC", ss, "foo"));
- checkTrueInput(parser.get());
+ parser->setInput(Input::newStreamInput("LANG_SMTLIB_V2_6", ss, "foo"));
+ checkInput(parser.get(), "(assert false)\n");
}
} // namespace test
Assert(BooleanSimplification::DUPLICATE_REMOVAL_THRESHOLD >= 10);
std::cout << expr::ExprSetDepth(-1)
- << language::SetLanguage(Language::LANG_CVC);
+ << language::SetLanguage(Language::LANG_SMTLIB_V2_6);
}
// assert equality up to commuting children