diff options
163 files changed, 11583 insertions, 1612 deletions
diff --git a/Makefile.builds.in b/Makefile.builds.in index 6f9c7aaab..9f83ba5dc 100644 --- a/Makefile.builds.in +++ b/Makefile.builds.in @@ -33,6 +33,7 @@ libdir = @libdir@ abs_builddir = @abs_builddir@ distdir = @PACKAGE@-@VERSION@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ +EXEEXT = @EXEEXT@ SHELL = @SHELL@ LIBTOOL = $(CURRENT_BUILD)/libtool @@ -79,7 +80,7 @@ am__v_relink_1 = : # all the binaries that might need to be installed # (it's not a fatal error for one/some don't exist in a given build # configuration) -CVC4_BINARIES = cvc4 pcvc4 +CVC4_BINARIES = cvc4$(EXEEXT) pcvc4$(EXEEXT) .PHONY: _default_build_ all examples _default_build_: all @@ -3,6 +3,12 @@ This file contains a summary of important user-visible changes. Changes since 1.0 ================= -* numerous bug fixes, usability improvements, and build system improvements +* tuple and record support in the compatibility library +* user patterns are now supported in the SMT-LIBv1.2 parser +* SMT-LIB get-model output now is easier to machine-parse: contains (model...) +* Win32 support via mingw +* for printing commands as they're invoked from the driver, you now need + verbosity of 3 or higher (e.g. -vvv) instead of verbosity 1 or higher (-v). + This allows tracing the solver's activities without having too much output. --- Morgan Deters <mdeters@cs.nyu.edu> Wed, 23 Jan 2013 16:11:10 -0500 +-- Morgan Deters <mdeters@cs.nyu.edu> Mon, 04 Feb 2013 16:24:20 -0500 diff --git a/configure.ac b/configure.ac index 39672a554..bf5938e70 100644 --- a/configure.ac +++ b/configure.ac @@ -220,7 +220,8 @@ esac AM_CONDITIONAL([AUTOMAKE_1_11], [$automake111]) # Initialize libtool's configuration options. -_LT_SET_OPTION([LT_INIT],[win32-dll]) +# we're not DLL-clean yet (i.e., don't properly use dllexport and dllimport) +# _LT_SET_OPTION([LT_INIT],[win32-dll]) LT_INIT # Checks for programs. @@ -900,6 +901,12 @@ AC_SEARCH_LIBS([clock_gettime], [rt], [AC_DEFINE([HAVE_CLOCK_GETTIME], [1], [Defined to 1 if clock_gettime() is supported by the platform.])], [AC_LIBOBJ([clock_gettime])]) +AC_CHECK_FUNC([strtok_r], [AC_DEFINE([HAVE_STRTOK_R], [1], + [Defined to 1 if strtok_r() is supported by the platform.])], + [AC_LIBOBJ([strtok_r])]) +AC_CHECK_FUNC([ffs], [AC_DEFINE([HAVE_FFS], [1], + [Defined to 1 if ffs() is supported by the platform.])], + [AC_LIBOBJ([ffs])]) # Check for the presence of CUDD libraries CVC4_CHECK_CUDD @@ -1117,7 +1124,17 @@ CXXFLAGS="${CXXFLAGS:+$CXXFLAGS }$CVC4CXXFLAGS -Wno-deprecated" CFLAGS="${CFLAGS:+$CFLAGS }$CVC4CFLAGS -Wno-deprecated -fexceptions" LDFLAGS="${LDFLAGS:+$LDFLAGS }$CVC4LDFLAGS" +# visibility flag not supported for Windows builds +# also increase default stack size for Windows binaries +case $host_os in + (*mingw*) FLAG_VISIBILITY_HIDDEN= + cvc4_LDFLAGS=-Wl,--stack,134217728 + pcvc4_LDFLAGS=-Wl,--stack,134217728 +esac + AC_SUBST(FLAG_VISIBILITY_HIDDEN) +AC_SUBST(cvc4_LDFLAGS) +AC_SUBST(pcvc4_LDFLAGS) # mk_include # diff --git a/contrib/Makefile.am b/contrib/Makefile.am index 0d7aa65ce..6f977caec 100644 --- a/contrib/Makefile.am +++ b/contrib/Makefile.am @@ -14,6 +14,7 @@ EXTRA_DIST = \ build-cudd-2.4.2-with-libtool.sh \ build-cudd-2.5.0-with-libtool.sh \ mac-build \ + win32-build \ run-script-smtcomp2012 \ theoryskel/kinds \ theoryskel/Makefile \ diff --git a/contrib/get-antlr-3.4 b/contrib/get-antlr-3.4 index 7928690fa..49b0b54a7 100755 --- a/contrib/get-antlr-3.4 +++ b/contrib/get-antlr-3.4 @@ -49,10 +49,10 @@ cd libantlr3c-3.4 if [ ${MACHINE_TYPE} == 'x86_64' ]; then # 64-bit stuff here - ./configure --enable-64bit --disable-antlrdebug --prefix=`pwd`/../.. + ./configure --enable-64bit --disable-shared --disable-antlrdebug --prefix=`pwd`/../.. $ANTLR_CONFIGURE_ARGS else # 32-bit stuff here - ./configure --disable-antlrdebug --prefix=`pwd`/../.. + ./configure --disable-shared --disable-antlrdebug --prefix=`pwd`/../.. $ANTLR_CONFIGURE_ARGS fi cp Makefile Makefile.orig diff --git a/contrib/get-authors b/contrib/get-authors index ef6abff8e..118ca4466 100755 --- a/contrib/get-authors +++ b/contrib/get-authors @@ -2,13 +2,15 @@ # # get-authors # Morgan Deters <mdeters@cs.nyu.edu> for CVC4 -# Copyright (c) 2009, 2010, 2011 The CVC4 Project +# Copyright (c) 2009-2013 The CVC4 Project # # usage: get-authors [ files... ] # -# This script uses svn to get the original author +# This script uses git to get the original author # +gituser="`git config user.name` <`git config user.email`>" + while [ $# -gt 0 ]; do f=$1 shift @@ -16,8 +18,8 @@ while [ $# -gt 0 ]; do major_contributors= minor_contributors= total_lines=`wc -l "$f" | awk '{print$1}'` - original_author=`svn log -q --incremental "$f" | tail -1 | awk '{print$3}'` - svn blame "$f" | awk '{print$2}' | sort | uniq -c | sort -n | + original_author=`git log --pretty="format:%aN <%aE>" "$f" | tail -1` + git blame --incremental "$f" | gawk '/^[0-9a-f]+ [0-9]+ [0-9]+ [0-9]+$/ {nl=$4;} /^author / {$1=""; author=$0;} /^author-mail / {mail=$2} /^filename / {while(nl--) {print author,mail}}' | sed "s,Not Committed Yet <not.committed.yet>,$gituser," | sort | uniq -c | sort -n | ( while read lines author; do pct=$((100*$lines/$total_lines)) if [ "$author" != "$original_author" ]; then diff --git a/contrib/update-copyright.pl b/contrib/update-copyright.pl index 8ac920bbf..4811a4bbe 100755 --- a/contrib/update-copyright.pl +++ b/contrib/update-copyright.pl @@ -2,7 +2,7 @@ # # update-copyright.pl # Morgan Deters <mdeters@cs.nyu.edu> for CVC4 -# Copyright (c) 2009-2012 The CVC4 Project +# Copyright (c) 2009-2013 The CVC4 Project # # usage: update-copyright [-m] [files/directories...] # update-copyright [-h | --help] @@ -16,15 +16,17 @@ # the CVC4 source tree, that means src/ in the CVC4 source tree. # # If -m is specified as the first argument, all files and directories -# are scanned, but only ones modifed in the current working directory -# are modified (i.e., those that have status M in "svn status"). +# are scanned, but only ones modified in the index or working tree +# are modified (i.e., those that have at least one status M in +# "git status -s"). # # It ignores any file/directory not starting with [a-zA-Z] -# (so, this includes . and .., vi swaps, .svn meta-info, +# (so, this includes . and .., vi swaps, .git meta-info, # .deps, etc.) # # It ignores any file not ending with one of: # .c .cc .cpp .C .h .hh .hpp .H .y .yy .ypp .Y .l .ll .lpp .L .g +# [ or those with ".in" also suffixed, e.g., .cpp.in ] # (so, this includes emacs ~-backups, CVS detritus, etc.) # # It ignores any directory matching $excluded_directories @@ -37,17 +39,17 @@ my $excluded_paths = '^(src/parser/antlr_input_imports.cpp|src/bindings/compat/. # Years of copyright for the template. E.g., the string # "1985, 1987, 1992, 1997, 2008" or "2006-2009" or whatever. -my $years = '2009-2012'; +my $years = '2009-2013'; my $standard_template = <<EOF; - ** This file is part of the CVC4 prototype. + ** This file is part of the CVC4 project. ** Copyright (c) $years New York University and The University of Iowa ** See the file COPYING in the top-level source directory for licensing ** information.\\endverbatim EOF my $public_template = <<EOF; - ** This file is part of the CVC4 prototype. + ** This file is part of the CVC4 project. ** Copyright (c) $years New York University and The University of Iowa ** See the file COPYING in the top-level source directory for licensing ** information.\\endverbatim @@ -71,7 +73,7 @@ if($#ARGV >= 0 && $ARGV[0] eq '-h' || $ARGV[0] eq '--help') { exit; } -# whether we ONLY process files with svn status "M" +# whether we ONLY process files with git status "M" my $modonly = 0; if($#ARGV >= 0 && $ARGV[0] eq '-m') { @@ -87,11 +89,12 @@ if($#ARGV == -1) { print <<EOF; Warning: this script is dangerous. It will overwrite the header comments in your source files to match the template in the script, attempting to retain file-specific -comments, but this isn't guaranteed. You should run this in an svn working directory -and run "svn diff" after to ensure everything was correctly rewritten. +comments, but this isn't guaranteed. You should run this in a git working tree +and run "git diff" after to ensure everything was correctly rewritten. The directories in which to search for and change sources is: $pwd/src + $pwd/examples $pwd/test Continue? y or n: @@ -101,7 +104,8 @@ EOF die 'aborting operation' if !( $_ eq 'y' || $_ eq 'yes' || $_ eq 'Y' || $_ eq 'YES' ); $searchdirs[0] = 'src'; - $searchdirs[1] = 'test'; + $searchdirs[1] = 'examples'; + $searchdirs[2] = 'test'; } else { @searchdirs = @ARGV; } @@ -129,9 +133,9 @@ while($#searchdirs >= 0) { sub handleFile { my ($srcdir, $file) = @_; - return if !($file =~ /\.(c|cc|cpp|C|h|hh|hpp|H|y|yy|ypp|Y|l|ll|lpp|L|g|java)$/); + return if !($file =~ /\.(c|cc|cpp|C|h|hh|hpp|H|y|yy|ypp|Y|l|ll|lpp|L|g|java)(\.in)?$/); return if ($srcdir.'/'.$file) =~ /$excluded_paths/; - return if $modonly &&`svn status "$srcdir/$file" 2>/dev/null` !~ /^M/; + return if $modonly && `git status -s "$srcdir/$file" 2>/dev/null` !~ /^(M|.M)/; print "$srcdir/$file..."; my $infile = $srcdir.'/'.$file; my $outfile = $srcdir.'/#'.$file.'.tmp'; diff --git a/contrib/win32-build b/contrib/win32-build new file mode 100755 index 000000000..65e6dd67c --- /dev/null +++ b/contrib/win32-build @@ -0,0 +1,95 @@ +#!/bin/bash +# +# win32-build script +# Morgan Deters <mdeters@cs.nyu.edu> +# Tue, 15 Jan 2013 11:11:24 -0500 +# + +if [ -z "$HOST" ]; then + HOST=i586-mingw32msvc + echo "WARNING:" + echo "WARNING: Using default HOST value: $HOST" + echo "WARNING: You should probably run this script like this:" + echo "WARNING:" + echo "WARNING: HOST=i586-mingw32msvc win32-build" + echo "WARNING:" + echo "WARNING: (replacing the i586-mingw32msvc with your build host)" + echo "WARNING: to ensure the script builds correctly." + echo "WARNING:" +fi + +GMPVERSION=5.1.0 + +if [ $# -ne 0 ]; then + echo "usage: `basename $0`" >&2 + echo >&2 + echo "This script attempts to build CVC4 for Win32 using mingw." >&2 + exit 1 +fi + +function reporterror { + echo + echo ============================================================================= + echo + echo "There was an error setting up the prerequisites. Look above for details." + echo + exit 1 +} + +function webget { + if which wget &>/dev/null; then + wget -c -O "$2" "$1" + elif which curl &>/dev/null; then + curl "$1" >"$2" + else + echo "Can't figure out how to download from web. Please install wget or curl." >&2 + exit 1 + fi +} + +for dir in antlr-3.4 gmp-$GMPVERSION boost-include; do + if [ -e "$dir" ]; then + echo "error: $dir directory exists; please move it out of the way." >&2 + exit 1 + fi +done + +echo ============================================================================= +echo +echo "Setting up ANTLR 3.4..." +echo +MACHINE_TYPE=x86 ANTLR_CONFIGURE_ARGS=--host=$HOST contrib/get-antlr-3.4 | grep -v 'Now configure CVC4 with' | grep -v '\./configure --with-antlr-dir=' +[ ${PIPESTATUS[0]} -eq 0 ] || reporterror +echo +echo ============================================================================= +echo +echo "Setting up GMP $GMPVERSION..." +echo +( set -ex + mkdir gmp-$GMPVERSION + cd gmp-$GMPVERSION + gmpprefix=`pwd` && + mkdir src && + cd src && + webget ftp://ftp.gmplib.org/pub/gmp-$GMPVERSION/gmp-$GMPVERSION.tar.bz2 gmp-$GMPVERSION.tar.bz2 && + tar xfj gmp-$GMPVERSION.tar.bz2 && + cd gmp-$GMPVERSION && + ./configure --host=$HOST --prefix="$gmpprefix" --enable-cxx && + make && + make install +) || exit 1 +echo +echo ============================================================================= +echo +echo "Setting up BOOST includes..." +echo +( mkdir boost-include && + ln -sv /usr/include/boost boost-include/boost ) || exit 1 +echo +echo ============================================================================= +echo +echo 'Now just run:' +echo " ./configure --host=$HOST LDFLAGS=\"-L`pwd`/gmp-$GMPVERSION/lib -L`pwd`/antlr-3.4/lib\" CPPFLAGS=\"-I`pwd`/gmp-$GMPVERSION/include -I`pwd`/antlr-3.4/include -I`pwd`/boost-include\" ANTLR_HOME=\"`pwd`/antlr-3.4\"" +echo ' make' +echo +echo ============================================================================= diff --git a/src/compat/cvc3_compat.cpp b/src/compat/cvc3_compat.cpp index 02d76d351..2a8673451 100644 --- a/src/compat/cvc3_compat.cpp +++ b/src/compat/cvc3_compat.cpp @@ -1107,23 +1107,38 @@ Type ValidityChecker::tupleType(const std::vector<Type>& types) { } Type ValidityChecker::recordType(const std::string& field, const Type& type) { - Unimplemented("Records not supported by CVC4 yet (sorry!)"); + std::vector< std::pair<std::string, CVC4::Type> > fields; + fields.push_back(std::make_pair(field, (const CVC4::Type&) type)); + return d_em->mkRecordType(CVC4::Record(fields)); } Type ValidityChecker::recordType(const std::string& field0, const Type& type0, const std::string& field1, const Type& type1) { - Unimplemented("Records not supported by CVC4 yet (sorry!)"); + std::vector< std::pair<std::string, CVC4::Type> > fields; + fields.push_back(std::make_pair(field0, (const CVC4::Type&) type0)); + fields.push_back(std::make_pair(field1, (const CVC4::Type&) type1)); + return d_em->mkRecordType(CVC4::Record(fields)); } Type ValidityChecker::recordType(const std::string& field0, const Type& type0, const std::string& field1, const Type& type1, const std::string& field2, const Type& type2) { - Unimplemented("Records not supported by CVC4 yet (sorry!)"); + std::vector< std::pair<std::string, CVC4::Type> > fields; + fields.push_back(std::make_pair(field0, (const CVC4::Type&) type0)); + fields.push_back(std::make_pair(field1, (const CVC4::Type&) type1)); + fields.push_back(std::make_pair(field2, (const CVC4::Type&) type2)); + return d_em->mkRecordType(CVC4::Record(fields)); } Type ValidityChecker::recordType(const std::vector<std::string>& fields, const std::vector<Type>& types) { - Unimplemented("Records not supported by CVC4 yet (sorry!)"); + CVC4::CheckArgument(fields.size() == types.size() && fields.size() > 0, + "invalid vector length(s) in recordType()"); + std::vector< std::pair<std::string, CVC4::Type> > fieldSpecs; + for(unsigned i = 0; i < fields.size(); ++i) { + fieldSpecs.push_back(std::make_pair(fields[i], (const CVC4::Type&) types[i])); + } + return d_em->mkRecordType(CVC4::Record(fieldSpecs)); } Type ValidityChecker::dataType(const std::string& name, @@ -1559,32 +1574,43 @@ Expr ValidityChecker::geExpr(const Expr& left, const Expr& right) { } Expr ValidityChecker::recordExpr(const std::string& field, const Expr& expr) { - Unimplemented("Records not supported by CVC4 yet (sorry!)"); + CVC4::Type t = recordType(field, expr.getType()); + return d_em->mkExpr(CVC4::kind::RECORD, d_em->mkConst(CVC4::RecordType(t).getRecord()), expr); } Expr ValidityChecker::recordExpr(const std::string& field0, const Expr& expr0, const std::string& field1, const Expr& expr1) { - Unimplemented("Records not supported by CVC4 yet (sorry!)"); + CVC4::Type t = recordType(field0, expr0.getType(), + field1, expr1.getType()); + return d_em->mkExpr(CVC4::kind::RECORD, d_em->mkConst(CVC4::RecordType(t).getRecord()), expr0, expr1); } Expr ValidityChecker::recordExpr(const std::string& field0, const Expr& expr0, const std::string& field1, const Expr& expr1, const std::string& field2, const Expr& expr2) { - Unimplemented("Records not supported by CVC4 yet (sorry!)"); + CVC4::Type t = recordType(field0, expr0.getType(), + field1, expr1.getType(), + field2, expr2.getType()); + return d_em->mkExpr(CVC4::kind::RECORD, d_em->mkConst(CVC4::RecordType(t).getRecord()), expr0, expr1, expr2); } Expr ValidityChecker::recordExpr(const std::vector<std::string>& fields, const std::vector<Expr>& exprs) { - Unimplemented("Records not supported by CVC4 yet (sorry!)"); + std::vector<Type> types; + for(unsigned i = 0; i < exprs.size(); ++i) { + types.push_back(exprs[i].getType()); + } + CVC4::Type t = recordType(fields, types); + return d_em->mkExpr(d_em->mkConst(CVC4::RecordType(t).getRecord()), *reinterpret_cast<const vector<CVC4::Expr>*>(&exprs)); } Expr ValidityChecker::recSelectExpr(const Expr& record, const std::string& field) { - Unimplemented("Records not supported by CVC4 yet (sorry!)"); + return d_em->mkExpr(d_em->mkConst(CVC4::RecordSelect(field)), record); } Expr ValidityChecker::recUpdateExpr(const Expr& record, const std::string& field, const Expr& newValue) { - Unimplemented("Records not supported by CVC4 yet (sorry!)"); + return d_em->mkExpr(d_em->mkConst(CVC4::RecordUpdate(field)), record, newValue); } Expr ValidityChecker::readExpr(const Expr& array, const Expr& index) { @@ -1935,12 +1961,16 @@ Expr ValidityChecker::tupleExpr(const std::vector<Expr>& exprs) { } Expr ValidityChecker::tupleSelectExpr(const Expr& tuple, int index) { - Unimplemented("Tuples not supported by CVC4 yet (sorry!)"); + CVC4::CheckArgument(index >= 0 && index < tuple.getNumChildren(), + "invalid index in tuple select"); + return d_em->mkExpr(d_em->mkConst(CVC4::TupleSelect(index)), tuple); } Expr ValidityChecker::tupleUpdateExpr(const Expr& tuple, int index, const Expr& newValue) { - Unimplemented("Tuples not supported by CVC4 yet (sorry!)"); + CVC4::CheckArgument(index >= 0 && index < tuple.getNumChildren(), + "invalid index in tuple update"); + return d_em->mkExpr(d_em->mkConst(CVC4::TupleUpdate(index)), tuple, newValue); } Expr ValidityChecker::datatypeConsExpr(const std::string& constructor, const std::vector<Expr>& args) { diff --git a/src/context/Makefile.am b/src/context/Makefile.am index e7f1dc68b..a63c990cc 100644 --- a/src/context/Makefile.am +++ b/src/context/Makefile.am @@ -16,6 +16,10 @@ libcontext_la_SOURCES = \ cdlist_forward.h \ cdqueue.h \ cdtrail_queue.h \ + cdtrail_hashmap.h \ + cdtrail_hashmap_forward.h \ + cdinsert_hashmap.h \ + cdinsert_hashmap_forward.h \ cdhashmap.h \ cdhashmap_forward.h \ cdhashset.h \ diff --git a/src/context/cdhashmap.h b/src/context/cdhashmap.h index a37fd2f23..e2ede0603 100644 --- a/src/context/cdhashmap.h +++ b/src/context/cdhashmap.h @@ -17,14 +17,19 @@ ** and operator== for the key class. For key types that don't have a ** __gnu_cxx::hash<>, you should provide an explicit HashFcn. ** + ** See also: + ** CDInsertHashMap : An "insert-once" CD hash map. + ** CDTrailHashMap : A lightweight CD hash map with poor iteration + ** characteristics and some quirks in usage. + ** ** Internal documentation: ** - ** CDMap<> is something of a work in progress at present (26 May + ** CDHashMap<> is something of a work in progress at present (26 May ** 2010), due to some recent discoveries of problems with its ** internal state. Here are some notes on the internal use of ** CDOhash_maps that may be useful in figuring out this mess: ** - ** So you have a CDMap<>. + ** So you have a CDHashMap<>. ** ** You insert some (key,value) pairs. Each allocates a CDOhash_map<> ** and goes on a doubly-linked list headed by map.d_first and @@ -36,7 +41,7 @@ ** map pointer at level 0, and a non-NULL map pointer in the ** current context level. (Remember that for later.) ** - ** When a key is associated to a new value in a CDMap, its + ** When a key is associated to a new value in a CDHashMap, its ** associated CDOhash_map calls makeCurrent(), then sets the new ** value. The save object is also a CDOhash_map (allocated in context ** memory). @@ -62,21 +67,21 @@ ** obliterate() removes it from the map and frees the CDOhash_map's ** memory. ** - ** Fourth, you might delete the cdhashmap(calling CDMap::~CDMap()). + ** Fourth, you might delete the cdhashmap(calling CDHashMap::~CDHashMap()). ** This first calls destroy(), as per ContextObj contract, but ** cdhashmapdoesn't save/restore itself, so that does nothing at the - ** CDMap-level. Then it empties the trash. Then, for each + ** CDHashMap-level. Then it empties the trash. Then, for each ** element in the map, it marks it as being "part of a complete ** map destruction", which essentially short-circuits ** CDOhash_map::restore() (see CDOhash_map::restore()), then deallocates ** it. Finally it asserts that the trash is empty (which it ** should be, since restore() was short-circuited). ** - ** Fifth, you might clear() the CDMap. This does exactly the - ** same as CDMap::~CDMap(), except that it doesn't call destroy() + ** Fifth, you might clear() the CDHashMap. This does exactly the + ** same as CDHashMap::~CDHashMap(), except that it doesn't call destroy() ** on itself. ** - ** CDMap::emptyTrash() simply goes through and calls + ** CDHashMap::emptyTrash() simply goes through and calls ** ->deleteSelf() on all elements in the trash. ** ContextObj::deleteSelf() calls the CDOhash_map destructor, then ** frees the memory associated to the CDOhash_map. CDOhash_map::~CDOhash_map() @@ -87,8 +92,8 @@ #include "cvc4_private.h" -#ifndef __CVC4__CONTEXT__CDMAP_H -#define __CVC4__CONTEXT__CDMAP_H +#ifndef __CVC4__CONTEXT__CDHASHMAP_H +#define __CVC4__CONTEXT__CDHASHMAP_H #include <vector> #include <iterator> @@ -148,9 +153,9 @@ class CDOhash_map : public ContextObj { d_next->d_prev = d_prev; d_prev->d_next = d_next; if(d_noTrash) { - Debug("gc") << "CDMap<> no-trash " << this << std::endl; + Debug("gc") << "CDHashMap<> no-trash " << this << std::endl; } else { - Debug("gc") << "CDMap<> trash push_back " << this << std::endl; + Debug("gc") << "CDHashMap<> trash push_back " << this << std::endl; //this->deleteSelf(); d_map->d_trash.push_back(this); } @@ -190,7 +195,7 @@ public: // "Initializing" map insertion: this entry will never be // removed from the map, it's inserted at level 0 as an // "initializing" element. See - // CDMap<>::insertAtContextLevelZero(). + // CDHashMap<>::insertAtContextLevelZero(). d_data = data; } else { // Normal map insertion: first makeCurrent(), then set the data @@ -417,7 +422,7 @@ public: } /** - * Version of insert() for CDMap<> that inserts data value d at + * Version of insert() for CDHashMap<> that inserts data value d at * context level zero. This is a special escape hatch for inserting * "initializing" data into the map. Imagine something happens at a * deep context level L that causes insertion into a map, such that @@ -538,7 +543,7 @@ public: const std::pair<const Key, Data>& operator*() const { return *d_pair; } - };/* class CDMap<>::iterator::Proxy */ + };/* class CDHashMap<>::iterator::Proxy */ // Actual postfix increment: returns Proxy with the old value. // Now, an expression like *i++ will return the current *i, and @@ -549,7 +554,7 @@ public: ++(*this); return e; } - };/* class CDMap<>::iterator */ + };/* class CDHashMap<>::iterator */ typedef iterator const_iterator; @@ -576,9 +581,9 @@ public: return const_cast<const CDHashMap*>(this)->find(k); } -};/* class CDMap<> */ +};/* class CDHashMap<> */ }/* CVC4::context namespace */ }/* CVC4 namespace */ -#endif /* __CVC4__CONTEXT__CDMAP_H */ +#endif /* __CVC4__CONTEXT__CDHashMAP_H */ diff --git a/src/context/cdhashmap_forward.h b/src/context/cdhashmap_forward.h index d81f5345d..60291af07 100644 --- a/src/context/cdhashmap_forward.h +++ b/src/context/cdhashmap_forward.h @@ -9,22 +9,22 @@ ** See the file COPYING in the top-level source directory for licensing ** information.\endverbatim ** - ** \brief This is a forward declaration header to declare the CDMap<> + ** \brief This is a forward declaration header to declare the CDHashMap<> ** template ** - ** This is a forward declaration header to declare the CDMap<> - ** template. It's useful if you want to forward-declare CDMap<> - ** without including the full cdmap.h header, for example, in a + ** This is a forward declaration header to declare the CDHashMap<> + ** template. It's useful if you want to forward-declare CDHashMap<> + ** without including the full cdhashmap.h header, for example, in a ** public header context. ** - ** For CDMap<> in particular, it's difficult to forward-declare it + ** For CDHashMap<> in particular, it's difficult to forward-declare it ** yourself, because it has a default template argument. **/ #include "cvc4_public.h" -#ifndef __CVC4__CONTEXT__CDMAP_FORWARD_H -#define __CVC4__CONTEXT__CDMAP_FORWARD_H +#ifndef __CVC4__CONTEXT__CDHASHMAP_FORWARD_H +#define __CVC4__CONTEXT__CDHASHMAP_FORWARD_H /// \cond internals @@ -41,4 +41,4 @@ namespace CVC4 { /// \endcond -#endif /* __CVC4__CONTEXT__CDMAP_FORWARD_H */ +#endif /* __CVC4__CONTEXT__CDHASHMAP_FORWARD_H */ diff --git a/src/context/cdhashset.h b/src/context/cdhashset.h index e885b7729..d7957cf3f 100644 --- a/src/context/cdhashset.h +++ b/src/context/cdhashset.h @@ -20,16 +20,15 @@ #define __CVC4__CONTEXT__CDSET_H #include "context/context.h" -#include "context/cdhashset_forward.h" -#include "context/cdhashmap.h" +#include "context/cdinsert_hashmap.h" #include "util/cvc4_assert.h" namespace CVC4 { namespace context { template <class V, class HashFcn> -class CDHashSet : protected CDHashMap<V, V, HashFcn> { - typedef CDHashMap<V, V, HashFcn> super; +class CDHashSet : protected CDInsertHashMap<V, bool, HashFcn> { + typedef CDInsertHashMap<V, bool, HashFcn> super; public: @@ -58,40 +57,30 @@ public: return super::size(); } - size_t count(const V& v) const { - return super::count(v); - } - bool insert(const V& v) { - return super::insert(v, v); - } - - void insertAtContextLevelZero(const V& v) { - return super::insertAtContextLevelZero(v, v); + return super::insert_safe(v, true); } bool contains(const V& v) { - return find(v) != end(); + return super::contains(v); } - // FIXME: no erase(), too much hassle to implement efficiently... - - class iterator { - typename super::iterator d_it; + class const_iterator { + typename super::const_iterator d_it; public: - iterator(const typename super::iterator& it) : d_it(it) {} - iterator(const iterator& it) : d_it(it.d_it) {} + const_iterator(const typename super::const_iterator& it) : d_it(it) {} + const_iterator(const const_iterator& it) : d_it(it.d_it) {} // Default constructor - iterator() {} + const_iterator() {} // (Dis)equality - bool operator==(const iterator& i) const { + bool operator==(const const_iterator& i) const { return d_it == i.d_it; } - bool operator!=(const iterator& i) const { + bool operator!=(const const_iterator& i) const { return d_it != i.d_it; } @@ -101,7 +90,7 @@ public: } // Prefix increment - iterator& operator++() { + const_iterator& operator++() { ++d_it; return *this; } @@ -131,18 +120,28 @@ public: } };/* class CDSet<>::iterator */ - typedef iterator const_iterator; - const_iterator begin() const { - return iterator(super::begin()); + return const_iterator(super::begin()); } const_iterator end() const { - return iterator(super::end()); + return const_iterator(super::end()); } const_iterator find(const V& v) const { - return iterator(super::find(v)); + return const_iterator(super::find(v)); + } + + typedef typename super::key_iterator key_iterator; + key_iterator key_begin() const { + return super::key_begin(); + } + key_iterator key_end() const { + return super::key_end(); + } + + void insertAtContextLevelZero(const V& v) { + return super::insertAtContextLevelZero(v, true); } };/* class CDSet */ diff --git a/src/context/cdinsert_hashmap.h b/src/context/cdinsert_hashmap.h new file mode 100644 index 000000000..0c84eda80 --- /dev/null +++ b/src/context/cdinsert_hashmap.h @@ -0,0 +1,402 @@ +/********************* */ +/*! \file cdinsert_hashmap.h + ** \verbatim + ** Original author: taking + ** Major contributors: none + ** Minor contributors (to current version): none + ** This file is part of the CVC4 prototype. + ** Copyright (c) 2009-2012 New York University and The University of Iowa + ** See the file COPYING in the top-level source directory for licensing + ** information.\endverbatim + ** + ** \brief Context-dependent insert only hashmap built using trail of edits + ** + ** Context-dependent hashmap that only allows for one insertion per element. + ** This can be viewed as a highly restricted version of CDHashMap. + ** It is significantly lighter in memory usage than CDHashMap. + ** + ** See also: + ** CDTrailHashMap : A lightweight CD hash map with poor iteration + ** characteristics and some quirks in usage. + ** CDHashMap : A fully featured CD hash map. (The closest to <ext/hash_map>) + ** + ** Notes: + ** - To iterate efficiently over the elements use the key_iterators. + ** - operator[] is only supported as a const derefence (must succeed). + ** - insert(k) must always work. + ** - Use insert_safe if you want to check if the element has been inserted + ** and only insert if it has not yet been. + ** - Does not accept TNodes as keys. + ** - Supports insertAtContextLevelZero() if the element is not in the map. + **/ + + +#include "cvc4_private.h" + +#include "context/context.h" +#include "context/cdinsert_hashmap_forward.h" +#include <utility> +#include <ext/hash_map> +#include <deque> +#include "util/cvc4_assert.h" +#include "util/output.h" + +#include "expr/node.h" +#include <boost/static_assert.hpp> + +#pragma once + +namespace CVC4 { +namespace context { + + +template <class Key, class Data, class HashFcn = __gnu_cxx::hash<Key> > +class InsertHashMap { +private: + typedef std::deque<Key> KeyVec; + /** A list of the keys in the map maintained as a stack. */ + KeyVec d_keys; + + typedef __gnu_cxx::hash_map<Key, Data, HashFcn> HashMap; + /** The hash_map used for element lookup. */ + HashMap d_hashMap; + +public: + /** + * An iterator over a list of keys. + * Use this to efficiently iterate over the elements. + * (See std::deque<>::iterator). + */ + typedef typename KeyVec::const_iterator key_iterator; + + /**An iterator over the elements in the hash_map. */ + typedef typename HashMap::const_iterator const_iterator; + + + /** + * Returns an iterator to the begining of the HashMap. + * Acts like a hash_map::const_iterator. + */ + const_iterator begin() const{ + return d_hashMap.begin(); + } + /** + * Returns an iterator to the end of the HashMap. + * Acts like a hash_map::const_iterator. + */ + const_iterator end() const{ + return d_hashMap.end(); + } + + /** + * Returns an iterator to the Key k of the map. + * See hash_map::find() + */ + const_iterator find(const Key& k) const{ + return d_hashMap.find(k); + } + + /** Returns an iterator to the start of the set of keys. */ + key_iterator key_begin() const{ + return d_keys.begin(); + } + /** Returns an iterator to the end of the set of keys. */ + key_iterator key_end() const{ + return d_keys.end(); + } + + /** Returns true if the map is empty. */ + bool empty() const { return d_keys.empty(); } + /** Returns the number of elements in the map. */ + size_t size() const { return d_keys.size(); } + + /** Returns true if k is a mapped key. */ + bool contains(const Key& k) const { + return find(k) != end(); + } + + /** + * Returns a reference the data mapped by k. + * This must succeed. + */ + const Data& operator[](const Key& k) const { + const_iterator ci = find(k); + Assert(ci != end()); + return (*ci).second; + } + + /** + * Inserts an element into the map, and pushes its key to the front + * of the stack. The key inserted must be not be currently mapped. + */ + void push_front(const Key& k, const Data& d){ + Assert(!contains(k)); + d_hashMap.insert(std::make_pair(k, d)); + d_keys.push_front(k); + } + + /** + * Inserts an element into the map, and pushes its key onto the + * back on the stack. The key inserted must be not be currently mapped. + */ + void push_back(const Key& k, const Data& d){ + Assert(!contains(k)); + d_hashMap.insert(std::make_pair(k, d)); + d_keys.push_back(k); + } + + /** + * Pops the key at the front of the list off and removes its key from the map. + */ + void pop_front(){ + Assert(!empty()); + const Key& front = d_keys.front(); + d_hashMap.erase(front); + + Debug("TrailHashMap") <<"TrailHashMap pop_front " << size() << std::endl; + d_keys.pop_front(); + } + + /** + * Pops the key at the back of the stack off and removes its key from the map. + */ + void pop_back(){ + Assert(!empty()); + const Key& back = d_keys.back(); + d_hashMap.erase(back); + + Debug("TrailHashMap") <<"TrailHashMap pop_back " << size() << std::endl; + d_keys.pop_back(); + } + + /** + * Pops the back of the stack until the size is below s. + */ + void pop_to_size(size_t s){ + while(size() > s){ + pop_back(); + } + } +};/* class TrailHashMap<> */ + +template <class Key, class Data, class HashFcn > +class CDInsertHashMap : public ContextObj { +private: + typedef InsertHashMap<Key, Data, HashFcn> IHM; + + /** An InsertHashMap that backs all of the data. */ + IHM* d_insertMap; + + /** For restores, we need to keep track of the previous size. */ + size_t d_size; + + /** + * To support insertAtContextLevelZero() and restores, + * we have called d_insertMap->d_pushFront(). + */ + size_t d_pushFronts; + + /** + * Private copy constructor used only by save(). d_insertMap is + * not copied: only the base class information and + * d_size and d_pushFronts are needed in restore. + */ + CDInsertHashMap(const CDInsertHashMap<Key, Data, HashFcn>& l) : + ContextObj(l), + d_insertMap(NULL), + d_size(l.d_size), + d_pushFronts(l.d_pushFronts) + { + Debug("CDInsertHashMap") << "copy ctor: " << this + << " from " << &l + << " size " << d_size << std::endl; + } + + /** + * Implementation of mandatory ContextObj method save: simply copies + * the current size information to a copy using the copy constructor (the + * pointer and the allocated size are *not* copied as they are not + * restored on a pop). The saved information is allocated using the + * ContextMemoryManager. + */ + ContextObj* save(ContextMemoryManager* pCMM) { + ContextObj* data = new(pCMM) CDInsertHashMap<Key, Data, HashFcn>(*this); + Debug("CDInsertHashMap") << "save " << this + << " at level " << this->getContext()->getLevel() + << " size at " << this->d_size + << " d_list is " << this->d_insertMap + << " data:" << data << std::endl; + return data; + } +protected: + /** + * Implementation of mandatory ContextObj method restore: + * restore to the previous size taking into account the number + * of new pushFront calls have happened since saving. + * The d_insertMap is untouched and d_pushFronts is also kept. + */ + void restore(ContextObj* data) { + Debug("CDInsertHashMap") << "restore " << this + << " level " << this->getContext()->getLevel() + << " data == " << data + << " d_insertMap == " << this->d_insertMap << std::endl; + size_t oldSize = ((CDInsertHashMap<Key, Data, HashFcn>*)data)->d_size; + size_t oldPushFronts = ((CDInsertHashMap<Key, Data, HashFcn>*)data)->d_pushFronts; + Assert(oldPushFronts <= d_pushFronts); + + // The size to restore to. + size_t restoreSize = oldSize + (d_pushFronts - oldPushFronts); + d_insertMap->pop_to_size(restoreSize); + d_size = restoreSize; + Assert(d_insertMap->size() == d_size); + Debug("CDInsertHashMap") << "restore " << this + << " level " << this->getContext()->getLevel() + << " size back to " << this->d_size << std::endl; + } +public: + + /** + * Main constructor: d_insertMap starts as an empty map, with the size is 0 + */ + CDInsertHashMap(Context* context) : + ContextObj(context), + d_insertMap(new IHM()), + d_size(0), + d_pushFronts(0){ + Assert(d_insertMap->size() == d_size); + } + + /** + * Destructor: delete the d_insertMap + */ + ~CDInsertHashMap() throw(AssertionException) { + this->destroy(); + delete d_insertMap; + } + + /** An iterator over the elements in the hash_map. */ + typedef typename IHM::const_iterator const_iterator; + + /** + * An iterator over a list of keys. + * Use this to efficiently iterate over the elements. + * (See std::deque<>::iterator). + */ + typedef typename IHM::key_iterator key_iterator; + + /** Returns true if the map is empty in the current context. */ + bool empty() const{ + return d_size == 0; + } + + /** Returns true the size of the map in the current context. */ + size_t size() const { + return d_size; + } + + /** + * Inserts an element into the map. + * The key inserted must be not be currently mapped. + * This is implemented using d_insertMap.push_back(). + */ + void insert(const Key& k, const Data& d){ + makeCurrent(); + ++d_size; + d_insertMap->push_back(k, d); + Assert(d_insertMap->size() == d_size); + } + + /** + * Checks if the key k is mapped already. + * If it is, this returns false. + * Otherwise it is inserted and this returns true. + */ + bool insert_safe(const Key& k, const Data& d){ + if(contains(k)){ + return false; + }else{ + insert(k,d); + return true; + } + } + + /** + * Version of insert() for CDMap<> that inserts data value d at + * context level zero. + * + * It is an error to insertAtContextLevelZero() + * a key that already is in the map. + */ + void insertAtContextLevelZero(const Key& k, const Data& d){ + makeCurrent(); + ++d_size; + ++d_pushFronts; + d_insertMap->push_front(k, d); + } + + /** Returns true if k is a mapped key in the context. */ + bool contains(const Key& k) const { + return d_insertMap->contains(k); + } + + /** + * Returns a reference the data mapped by k. + * k must be in the map in this context. + */ + const Data& operator[](const Key& k) const { + return (*d_insertMap)[k]; + } + + /** + * Returns a const_iterator to the value_type if k is a mapped key in + * the context. + */ + const_iterator find(const Key& k) const { + return d_insertMap->find(k); + } + + /** + * Returns an iterator to the begining of the map. + * Acts like a hash_map::const_iterator. + */ + const_iterator begin() const{ + return d_insertMap->begin(); + } + + /** + * Returns an iterator to the end of the map. + * Acts like a hash_map::const_iterator. + */ + const_iterator end() const{ + return d_insertMap->end(); + } + + /** Returns an iterator to the start of the set of keys. */ + key_iterator key_begin() const{ + return d_insertMap->key_begin(); + } + /** Returns an iterator to the end of the set of keys. */ + key_iterator key_end() const{ + return d_insertMap->key_end(); + } +};/* class CDInsertHashMap<> */ + + +template <class Data, class HashFcn> +class CDInsertHashMap <TNode, Data, HashFcn > : public ContextObj { + /* CDInsertHashMap is challenging to get working with TNode. + * Consider using CDHashMap<TNode,...> instead. + * + * Explanation: + * CDInsertHashMap uses keys for deallocation. + * If the key is a TNode and the backing (the hard node reference) + * for the key in another data structure removes the key at the same context + * the ref count could drop to 0. The key would then not be eligible to be + * hashed. Getting the order right with a guarentee is to hard. + */ + + BOOST_STATIC_ASSERT(sizeof(Data) == 0); +}; + +}/* CVC4::context namespace */ +}/* CVC4 namespace */ diff --git a/src/context/cdinsert_hashmap_forward.h b/src/context/cdinsert_hashmap_forward.h new file mode 100644 index 000000000..638607840 --- /dev/null +++ b/src/context/cdinsert_hashmap_forward.h @@ -0,0 +1,38 @@ +/********************* */ +/*! \file cdinsert_hashmap_forward.h + ** \verbatim + ** Original author: taking + ** Major contributors: none + ** Minor contributors (to current version): none + ** This file is part of the CVC4 prototype. + ** Copyright (c) 2009-2012 New York University and The University of Iowa + ** See the file COPYING in the top-level source directory for licensing + ** information.\endverbatim + ** + ** \brief This is a forward declaration header to declare the CDInsertHashMap<> + ** template + ** + ** This is a forward declaration header to declare the CDInsertHashMap<> + ** template. It's useful if you want to forward-declare CDInsertHashMap<> + ** without including the full cdinsert_hashmap.h header, for example, in a + ** public header context. + ** + ** For CDInsertHashMap<> in particular, it's difficult to forward-declare it + ** yourself, because it has a default template argument. + **/ + +#include "cvc4_public.h" + +#pragma once + +namespace __gnu_cxx { + template <class Key> struct hash; +}/* __gnu_cxx namespace */ + +namespace CVC4 { + namespace context { + template <class Key, class Data, class HashFcn = __gnu_cxx::hash<Key> > + class CDInsertHashMap; + }/* CVC4::context namespace */ +}/* CVC4 namespace */ + diff --git a/src/context/cdtrail_hashmap.h b/src/context/cdtrail_hashmap.h new file mode 100644 index 000000000..5f090341d --- /dev/null +++ b/src/context/cdtrail_hashmap.h @@ -0,0 +1,571 @@ +/********************* */ +/*! \file cdtrail_hashmap.h + ** \verbatim + ** Original author: taking + ** Major contributors: none + ** Minor contributors (to current version): none + ** This file is part of the CVC4 prototype. + ** Copyright (c) 2009-2012 New York University and The University of Iowa + ** See the file COPYING in the top-level source directory for licensing + ** information.\endverbatim + ** + ** \brief Context-dependent hashmap built using trail of elements + ** + ** Context-dependent hashmap that explicitly keeps track of its edit history. + ** This is similar in functionality to CDHashMap with fewer capabilites and + ** slight changes in the interface. It has the advantage of being lighter in + ** memory usage. + ** + ** See also: + ** CDInsertHashMap : An "insert-once" CD hash map. + ** CDHashMap : A fully featured CD hash map. (The closest to <ext/hash_map>) + ** + ** Notes: + ** - To iterate efficiently over the elements use the key_iterators. + ** - operator[] is only supported as a const derefence (must succeed). + ** - Insertions to the map are done with respect to a context. + ** - Insertions can be done in two manors either with insert() or + ** insert_no_overwrite(). + ** - insert(k,d) inserts the key data pair into the hashtable and returns a + ** false if it overwrote the previous value. + ** - insert_no_overwrite(k,d) inserts key data pair into the hashtable only + ** if the value is not already there. It returns true, if an element was + ** added. This conditionally extends the trail length if it returns true. + ** - inserts are compacting. If there is another insert to the same key + ** at the same context, the memory is reused. + ** - Iterating over const_iterators has amortized time proportional to + ** O(trail length). (If this needs to be improved, please bug Tim.) + ** - contains() and operator[] are slightly faster than using stl style + ** iterator comparisons: find(), end(), etc. + **/ + + +#include "cvc4_private.h" + +#pragma once + +#include "context/context.h" +#include "context/cdtrail_hashmap_forward.h" +#include <utility> +#include <ext/hash_map> +#include <deque> +#include "util/cvc4_assert.h" +#include "util/output.h" + +#include "expr/node.h" +#include <boost/static_assert.hpp> + + +namespace CVC4 { +namespace context { + + +template <class Key, class Data, class HashFcn = __gnu_cxx::hash<Key> > +class TrailHashMap { +public: + /** A pair of Key and Data that mirrors hash_map::value_type. */ + typedef std::pair<Key, Data> value_type; + +private: + + /** The trail information from an insert. */ + struct KDT { + /** The Key Data pair. */ + value_type d_kd; + + /** + * The previous trail entry with the same key. + * On a pop, this is the element to revert to. + * This value is a self loop if there is no previous entry. + */ + size_t d_prevKey; + + /** The whether the trail element is current. */ + bool d_current; + + KDT(const Key& key, const Data& data, size_t prev, bool cur = true): + d_kd(std::make_pair(key, data)), d_prevKey(prev), d_current(cur){ } + KDT(){} + }; + + typedef std::deque<KDT> KDTVec; + typedef typename KDTVec::const_iterator KDTVec_const_iterator; + /** The trail of elements. */ + KDTVec d_kdts; + + + typedef __gnu_cxx::hash_map<Key, size_t, HashFcn> PositionMap; + typedef typename PositionMap::iterator PM_iterator; + typedef typename PositionMap::const_iterator PM_const_iterator; + + /** A map of keys to their positions in the trail. */ + PositionMap d_posMap; + + + /** The number of unique keys in the map. */ + size_t d_uniqueKeys; + + /** Internal utility class. NonConstant find on the position map.*/ + inline PM_iterator ncfind(const Key& k) { + return d_posMap.find(k); + } + + /** Internal utility class. Position Map Find.*/ + inline PM_const_iterator pmfind(const Key& k) const{ + return d_posMap.find(k); + } + /** Internal utility class. Position Map End.*/ + inline PM_const_iterator pmend() const{ + return d_posMap.end(); + } + + /** This is true if the previous entry in the trail points at itself.*/ + inline bool selfLoop(size_t pos, const KDT& kdt) const { + return pos == kdt.d_prevKey; + } + +public: + /** + * Constant iterator for TrailHashMap. + * Only supports forward iteration. + * This always points at the end or a current element in the trail. + * This is done by iterating over the trail. + */ + class const_iterator { + private: + /** A vector iterator. */ + KDTVec_const_iterator d_it; + + /** A pointer to the end of the vector.*/ + KDTVec_const_iterator d_end; + + /** Move the iterator to the end or the next current element.*/ + void findCurrent(){ + while(d_it != d_end && !(*d_it).d_current){ + ++d_it; + } + } + + public: + + /** Constructs an iterator for a TrailHashMap. */ + const_iterator(KDTVec_const_iterator it, KDTVec_const_iterator end) : + d_it(it), + d_end(end){ + findCurrent(); + } + + /** Copy constructor for an iterator for a TrailHashMap. */ + const_iterator(const const_iterator& other) : + d_it(other.d_it), d_end(other.d_end){ + // Do not need to findCurrent() + } + + /** Returns true if the iterators are the same. */ + inline bool operator==(const const_iterator& other) const { + return d_it == other.d_it; + } + + /** Returns true if the iterators are the same. */ + inline bool operator!=(const const_iterator& other) const { + return d_it != other.d_it; + } + + /** Returns a pair<Key,Data>. */ + inline const value_type& operator*() const { + return (*d_it).d_kd; + } + + /** Prefix increment */ + const_iterator& operator++() { + ++d_it; + findCurrent(); + return *this; + } + }; + + /** Returns a beginning iterator.*/ + inline const_iterator begin() const{ + return const_iterator(d_kdts.begin(), d_kdts.end()); + } + + /** Returns an end iterator.*/ + inline const_iterator end() const{ + return const_iterator(d_kdts.end(), d_kdts.end()); + } + + /** Returns true if the trail is empty.*/ + inline bool empty() const { return d_kdts.empty(); } + + /** Returns the size of the trail.*/ + inline size_t trailSize() const { return d_kdts.size(); } + + /** Returns the number of unique keys in the map.*/ + inline size_t uniqueKeys() const { return d_uniqueKeys; } + + /** Returns true if the key is in the map.*/ + inline bool contains(const Key& k) const { + return pmfind(k) != pmend(); + } + + /** + * Returns a NON const reference to an element in the Map. + * k must be a key in the Map. + * DO NOT USE THIS UNLESS YOU ARE CONFIDENT THE CHANGES MAKE SENSE. + */ + Data& lookup(const Key& k){ + Assert(contains(k)); + PM_iterator ci = ncfind(k); + KDT& kdt = d_kdts[(*ci).second]; + return kdt.d_kd.second; + } + + /** + * Returns a const reference to an element mapped by a Key k. + * k must be a key in the Map. + */ + const Data& operator[](const Key& k) const { + PM_const_iterator pci = pmfind(k); + Assert(pci != pmend()); + return d_kdts[(*pci).second].d_kd.second; + } + + /** + * If the key k is in the map, this returns a const_iterator pointing at this + * element. Otherwise, this returns end(). + */ + const_iterator find(const Key& k) const { + PM_const_iterator pci = pmfind(k); + if(pci == pmend()){ + return end(); + }else{ + size_t pos = (*pci).second; + return const_iterator(d_kdts.begin() + pos, d_kdts.end()); + } + } + + /** + * Similar to contains, but includes a notion of trail position. + * Returns <true, true> if contains(k) and the current position of k + * in the map is greater than or equal to pos. + * Returns <true, false> if it contains(k) but not the previous condition. + * Returns <false, false> if it does not contains(k). + */ + std::pair<bool, bool> hasAfter(const Key& k, size_t pos) { + PM_iterator it = ncfind(k); + if(it != d_posMap.end()){ + return std::make_pair(true, (*it).second >= pos ); + } + return std::make_pair(false, false); + } + + /** + * Inserts an element unconditionally. + * Always increases the trail size. + * Returns true if the key count increased. + */ + bool push_back(const Key& k, const Data& d){ + std::pair<bool, bool> res = compacting_push_back(k, d, trailSize()); + return res.first; + } + + /** + * This inserts an element into the trail. + * This insert can reuse the same trail element if the postion of the element + * is >= threshold. + * + * Return values: + * If pair<bool, bool> res = compacting_push_back(..), + * then res.first is true if this is a new unique key, and + * res.second is true if the trail length increased. + * + */ + std::pair<bool, bool> compacting_push_back(const Key& k, const Data& d, size_t threshold){ + size_t backPos = d_kdts.size(); + std::pair<PM_iterator, bool> res = d_posMap.insert(std::make_pair(k, backPos)); + if(!res.second){ + size_t& prevPosInPM = (*res.first).second; + + Assert(d_kdts[prevPosInPM].d_current); + + if(prevPosInPM < threshold){ + d_kdts.push_back(KDT(k,d, prevPosInPM)); + d_kdts[prevPosInPM].d_current = false; + prevPosInPM = backPos; + + return std::make_pair(false, true); + }else{ + d_kdts[prevPosInPM].d_kd.second = d; + return std::make_pair(false, false); + } + }else{ + d_kdts.push_back(KDT(k,d, backPos)); + ++d_uniqueKeys; + return std::make_pair(true, true); + } + } + + /** + * Inserts an element if the key is not already in the map. + * Returns true if the element was inserted. + */ + bool insert_no_overwrite(const Key& k, const Data& d){ + size_t backPos = d_kdts.size(); + std::pair<PM_iterator, bool> res = d_posMap.insert(std::make_pair(k, backPos)); + if(res.second){ + d_kdts.push_back(KDT(k,d, backPos)); + ++d_uniqueKeys; + } + Debug("TrailHashMap") <<"TrailHashMap insert" << k << " d " << d << " " << backPos << std::endl; + return res.second; + } + + /** Pops the element at the back of the trail. */ + void pop_back(){ + Assert(!empty()); + const KDT& back = d_kdts.back(); + const Key& k = back.d_kd.first; + if(selfLoop(trailSize()-1, back)){ + d_posMap.erase(k); + --d_uniqueKeys; + Debug("TrailHashMap") <<"TrailHashMap pop_back erase " << trailSize() <<" " << std::endl; + + }else{ + Debug("TrailHashMap") <<"TrailHashMap reset " << trailSize() <<" " << " " << back.d_prevKey << std::endl; + d_posMap[k] = back.d_prevKey; + d_kdts[back.d_prevKey].d_current = true; + } + d_kdts.pop_back(); + } + + /** Pops the element at the back of the trail until the trailSize is <= s. */ + void pop_to_size(size_t s){ + while(trailSize() > s){ + pop_back(); + } + } +};/* class TrailHashMap<> */ + +template <class Key, class Data, class HashFcn > +class CDTrailHashMap : public ContextObj { +private: + /** A short name for the templatized TrailMap that backs the CDTrailMap. */ + typedef TrailHashMap<Key, Data, HashFcn> THM; + + /** The trail map that backs the CDTrailMap. */ + THM* d_trailMap; +public: + /** Iterator for the CDTrailHashMap. */ + typedef typename THM::const_iterator const_iterator; + + /** Return value of operator* on a const_iterator (pair<Key,Data>).*/ + typedef typename THM::value_type value_type; + +private: + /** + * The length of the trail in the current context. + * This is used to support reverting. + */ + size_t d_trailSize; + + /** + * The length of the trail immediately after the previous makeCurrent(). + * This is used to support compacting inserts. + */ + size_t d_prevTrailSize; + + /** + * Private copy constructor used only by save(). d_trailMap is not copied: + * only the base class information, d_trailSize, and d_prevTrailSize + * are needed in restore. + */ + CDTrailHashMap(const CDTrailHashMap<Key, Data, HashFcn>& l) : + ContextObj(l), + d_trailMap(NULL), + d_trailSize(l.d_trailSize), + d_prevTrailSize(l.d_prevTrailSize){ + Debug("CDTrailHashMap") << "copy ctor: " << this + << " from " << &l + << " size " << d_trailSize << std::endl; + } + + /** + * Implementation of mandatory ContextObj method save: simply copies + * the current sizes to a copy using the copy constructor, + * The saved information is allocated using the ContextMemoryManager. + */ + ContextObj* save(ContextMemoryManager* pCMM) { + ContextObj* data = new(pCMM) CDTrailHashMap<Key, Data, HashFcn>(*this); + Debug("CDTrailHashMap") << "save " << this + << " at level " << this->getContext()->getLevel() + << " size at " << this->d_trailSize + << " d_list is " << this->d_trailMap + << " data:" << data << std::endl; + return data; + } +protected: + /** + * Implementation of mandatory ContextObj method restore: simply + * restores the previous size. Note that the list pointer and the + * allocated size are not changed. + */ + void restore(ContextObj* data) { + Debug("CDTrailHashMap") << "restore " << this + << " level " << this->getContext()->getLevel() + << " data == " << data + << " d_trailMap == " << this->d_trailMap << std::endl; + size_t oldSize = ((CDTrailHashMap<Key, Data, HashFcn>*)data)->d_trailSize; + d_trailMap->pop_to_size(oldSize); + d_trailSize = oldSize; + Assert(d_trailMap->trailSize() == d_trailSize); + + d_prevTrailSize = ((CDTrailHashMap<Key, Data, HashFcn>*)data)->d_prevTrailSize; + Debug("CDTrailHashMap") << "restore " << this + << " level " << this->getContext()->getLevel() + << " size back to " << this->d_trailSize << std::endl; + } + + /** + * We need to save the d_trailSize immediately after a successful makeCurrent. + * So this version needs to be used everywhere instead of maekCurrent() + * internally. + */ + void internalMakeCurrent () { + if(!isCurrent()){ + makeCurrent(); + d_prevTrailSize = d_trailSize; + } + } + +public: + + /** + * Main constructor: d_trailMap starts as an empty map, with the sizes are 0 + */ + CDTrailHashMap(Context* context) : + ContextObj(context), + d_trailMap(new THM()), + d_trailSize(0), + d_prevTrailSize(0){ + Assert(d_trailMap->trailSize() == d_trailSize); + } + + /** + * Destructor: delete the map + */ + ~CDTrailHashMap() throw(AssertionException) { + this->destroy(); + delete d_trailMap; + } + + /** Returns true if the map is empty in the current context. */ + bool empty() const{ + return d_trailSize == 0; + } + + /** Returns true the size of the map in the current context. */ + size_t size() const { + return d_trailMap->uniqueKeys(); + } + + /** + * Inserts an element into the map. + * This always succeeds. + * Returns true if the key is new. + */ + bool insert(const Key& k, const Data& d){ + internalMakeCurrent(); + std::pair<bool, bool> res = d_trailMap->compacting_push_back(k, d, d_prevTrailSize); + if(res.second){ + ++d_trailSize; + } + Assert(d_trailMap->trailSize() == d_trailSize); + return res.first; + } + + /** + * Inserts an element into the map if the key is not already there. + * This has no side effects if the insert does not happen. + * Returns true if the element was inserted. + */ + bool insert_no_overwrite(const Key& k, const Data& d){ + bool res = d_trailMap->insert_no_overwrite(k, d); + if(res){ + internalMakeCurrent(); + ++d_trailSize; + } + Assert(d_trailMap->trailSize() == d_trailSize); + return res; + } + + /** Returns true if k is a mapped key in the context. */ + bool contains(const Key& k) const { + return d_trailMap->contains(k); + } + + /** + * Returns a reference the data mapped by k. + * k must be in the map in this context. + */ + const Data& operator[](const Key& k) const { + return (*d_trailMap)[k]; + } + /* +// While the following code "works", I wonder if it is not better to disable it? +// Non-const operator[] has strange semantics for a context-dependent +// data structure. + Data& operator[](const Key& k) { + internalMakeCurrent(); + std::pair<bool, bool> res = d_trailMap->hasAfter(k, d_prevTrailSize); + if(!res.first){ + std::pair<bool, bool> res = d_trailMap->compacting_push_back(k, Data(), d_prevTrailSize); + if(res.second){ + ++d_trailSize; + } + }else if(!res.second){ + std::pair<bool, bool> res = d_trailMap->compacting_push_back(k, (*d_trailMap)[k], d_prevTrailSize); + if(res.second){ + ++d_trailSize; + } + } + return d_trailMap->lookup(k); + } + */ + + /** + * Returns a const_iterator to the value_type if k is a mapped key in + * the context. + */ + const_iterator find(const Key& k) const { + return d_trailMap->find(k); + } + + /** Returns an iterator to the begining of the map. */ + const_iterator begin() const{ + return d_trailMap->begin(); + } + /** Returns an iterator to the end of the map. */ + const_iterator end() const{ + return d_trailMap->end(); + } + +};/* class CDTrailHashMap<> */ + +template <class Data, class HashFcn> +class CDTrailHashMap <TNode, Data, HashFcn > : public ContextObj { + /* CDTrailHashMap is challenging to get working with TNode. + * Consider using CDHashMap<TNode,...> instead. + * + * Explanation: + * CDTrailHashMap uses keys during deallocation. + * If the key is a TNode and the backing (the hard node reference) + * for the key in another data structure removes the key at the same context + * the ref count could drop to 0. The key would then not be eligible to be + * hashed. Getting the order right with a guarentee is to hard. + */ + + BOOST_STATIC_ASSERT(sizeof(Data) == 0); +}; + +}/* CVC4::context namespace */ +}/* CVC4 namespace */ diff --git a/src/context/cdtrail_hashmap_forward.h b/src/context/cdtrail_hashmap_forward.h new file mode 100644 index 000000000..549ecd738 --- /dev/null +++ b/src/context/cdtrail_hashmap_forward.h @@ -0,0 +1,38 @@ +/********************* */ +/*! \file cdtrail_hashmap_forward.h + ** \verbatim + ** Original author: taking + ** Major contributors: none + ** Minor contributors (to current version): none + ** This file is part of the CVC4 prototype. + ** Copyright (c) 2009-2012 New York University and The University of Iowa + ** See the file COPYING in the top-level source directory for licensing + ** information.\endverbatim + ** + ** \brief This is a forward declaration header to declare the + ** CDTrailHashMap<> template + ** + ** This is a forward declaration header to declare the CDTrailHashMap<> + ** template. It's useful if you want to forward-declare CDTrailHashMap<> + ** without including the full cdtrail_hash_map.h header, for example, in a + ** public header context. + ** + ** For CDTrailHashMap<> in particular, it's difficult to forward-declare it + ** yourself, because it has a default template argument. + **/ + +#include "cvc4_public.h" + +#pragma once + +namespace __gnu_cxx { + template <class Key> struct hash; +}/* __gnu_cxx namespace */ + +namespace CVC4 { + namespace context { + template <class Key, class Data, class HashFcn = __gnu_cxx::hash<Key> > + class CDTrailHashMap; + }/* CVC4::context namespace */ +}/* CVC4 namespace */ + diff --git a/src/decision/decision_engine.cpp b/src/decision/decision_engine.cpp index 22c70eb6d..9e8add752 100644 --- a/src/decision/decision_engine.cpp +++ b/src/decision/decision_engine.cpp @@ -33,7 +33,7 @@ DecisionEngine::DecisionEngine(context::Context *sc, d_enabledStrategies(), d_needIteSkolemMap(), d_relevancyStrategy(NULL), - d_assertions(), + d_assertions(uc), d_cnfStream(NULL), d_satSolver(NULL), d_satContext(sc), @@ -50,18 +50,6 @@ void DecisionEngine::init() d_engineState = 1; Trace("decision-init") << "DecisionEngine::init()" << std::endl; - if(options::incrementalSolving()) { - if(options::decisionMode() != decision::DECISION_STRATEGY_INTERNAL) { - if(options::decisionMode.wasSetByUser()) { - Warning() << "Ignorning decision option since using incremental mode (currently not supported together)" - << std::endl; - } else { - Notice() << "Using internal decision heuristic since using incremental mode (not supported currently)" - << std::endl; - } - } - return; - } Trace("decision-init") << " * options->decisionMode: " << options::decisionMode() << std:: endl; Trace("decision-init") << " * options->decisionStopOnly: " @@ -70,11 +58,16 @@ void DecisionEngine::init() if(options::decisionMode() == decision::DECISION_STRATEGY_INTERNAL) { } if(options::decisionMode() == decision::DECISION_STRATEGY_JUSTIFICATION) { ITEDecisionStrategy* ds = - new decision::JustificationHeuristic(this, d_satContext); + new decision::JustificationHeuristic(this, d_userContext, d_satContext); enableStrategy(ds); d_needIteSkolemMap.push_back(ds); } if(options::decisionMode() == decision::DECISION_STRATEGY_RELEVANCY) { + if(options::incrementalSolving()) { + Warning() << "Relevancy decision heuristic and incremental not supported together" + << std::endl; + return; // Currently not supported with incremental + } RelevancyStrategy* ds = new decision::Relevancy(this, d_satContext); enableStrategy(ds); @@ -137,7 +130,7 @@ void DecisionEngine::addAssertions(const vector<Node> &assertions, // new assertions, reset whatever result we knew d_result = SAT_VALUE_UNKNOWN; - d_assertions.reserve(assertions.size()); + // d_assertions.reserve(assertions.size()); for(unsigned i = 0; i < assertions.size(); ++i) d_assertions.push_back(assertions[i]); diff --git a/src/decision/decision_engine.h b/src/decision/decision_engine.h index 4d354af2a..ea16cec16 100644 --- a/src/decision/decision_engine.h +++ b/src/decision/decision_engine.h @@ -42,7 +42,8 @@ class DecisionEngine { vector <ITEDecisionStrategy* > d_needIteSkolemMap; RelevancyStrategy* d_relevancyStrategy; - vector <Node> d_assertions; + typedef context::CDList<Node> AssertionsList; + AssertionsList d_assertions; // PropEngine* d_propEngine; CnfStream* d_cnfStream; @@ -55,7 +56,7 @@ class DecisionEngine { context::CDO<SatValue> d_result; // Disable creating decision engine without required parameters - DecisionEngine() : d_result(NULL) {} + DecisionEngine(); // init/shutdown state unsigned d_engineState; // 0=pre-init; 1=init,pre-shutdown; 2=shutdown @@ -68,8 +69,6 @@ public: /** Destructor, currently does nothing */ ~DecisionEngine() { Trace("decision") << "Destroying decision engine" << std::endl; - for(unsigned i = 0; i < d_enabledStrategies.size(); ++i) - delete d_enabledStrategies[i]; } // void setPropEngine(PropEngine* pe) { @@ -99,14 +98,15 @@ public: /** * This is called by SmtEngine, at shutdown time, just before * destruction. It is important because there are destruction - * ordering issues between some parts of the system. For now, - * there's nothing to do here in the DecisionEngine. + * ordering issues between some parts of the system. */ void shutdown() { Assert(d_engineState == 1); d_engineState = 2; Trace("decision") << "Shutting down decision engine" << std::endl; + for(unsigned i = 0; i < d_enabledStrategies.size(); ++i) + delete d_enabledStrategies[i]; } // Interface for External World to use our services @@ -191,7 +191,7 @@ public: /** * Get the assertions. Strategies are notified when these are available. */ - const vector<Node>& getAssertions() { + AssertionsList& getAssertions() { return d_assertions; } diff --git a/src/decision/justification_heuristic.cpp b/src/decision/justification_heuristic.cpp index 4ec4588f3..46ec6f09f 100644 --- a/src/decision/justification_heuristic.cpp +++ b/src/decision/justification_heuristic.cpp @@ -74,7 +74,7 @@ void JustificationHeuristic::computeITEs(TNode n, IteList &l) for(unsigned i=0; i<n.getNumChildren(); ++i) { SkolemMap::iterator it2 = d_iteAssertions.find(n[i]); if(it2 != d_iteAssertions.end()) { - l.push_back(make_pair(n[i], it2->second)); + l.push_back(make_pair(n[i], (*it2).second)); Assert(n[i].getNumChildren() == 0); } if(d_visitedComputeITE.find(n[i]) == @@ -103,6 +103,15 @@ bool JustificationHeuristic::findSplitterRec(TNode node, SatValue desiredVal, SatLiteral* litDecision) { + /** + * Main idea + * + * Given a boolean formula "node", the goal is to try to make it + * evaluate to "desiredVal" (true/false). for instance if "node" is a AND + * formula we want to make it evaluate to true, we'd like one of the + * children to be true. this is done recursively. + */ + Trace("jh-findSplitterRec") << "findSplitterRec(" << node << ", " << desiredVal << ", .. )" << std::endl; diff --git a/src/decision/justification_heuristic.h b/src/decision/justification_heuristic.h index de6bf5095..ea67fee29 100644 --- a/src/decision/justification_heuristic.h +++ b/src/decision/justification_heuristic.h @@ -27,6 +27,8 @@ #include "decision_strategy.h" #include "context/cdhashset.h" +#include "context/cdlist.h" +#include "context/cdhashmap.h" #include "expr/node.h" #include "prop/sat_solver_types.h" @@ -44,10 +46,10 @@ public: class JustificationHeuristic : public ITEDecisionStrategy { typedef std::vector<pair<TNode,TNode> > IteList; typedef hash_map<TNode,IteList,TNodeHashFunction> IteCache; - typedef hash_map<TNode,TNode,TNodeHashFunction> SkolemMap; + typedef context::CDHashMap<TNode,TNode,TNodeHashFunction> SkolemMap; // being 'justified' is monotonic with respect to decisions - typedef context::CDHashSet<TNode,TNodeHashFunction> JustifiedSet; + typedef context::CDHashSet<Node,NodeHashFunction> JustifiedSet; JustifiedSet d_justified; context::CDO<unsigned> d_prvsIndex; @@ -59,7 +61,7 @@ class JustificationHeuristic : public ITEDecisionStrategy { * A copy of the assertions that need to be justified * directly. Doesn't have ones introduced during during ITE-removal. */ - std::vector<TNode> d_assertions; + context::CDList<TNode> d_assertions; //TNode is fine since decisionEngine has them too /** map from ite-rewrite skolem to a boolean-ite assertion */ @@ -83,13 +85,17 @@ class JustificationHeuristic : public ITEDecisionStrategy { */ hash_set<TNode,TNodeHashFunction> d_visitedComputeITE; public: - JustificationHeuristic(CVC4::DecisionEngine* de, context::Context *c): + JustificationHeuristic(CVC4::DecisionEngine* de, + context::Context *uc, + context::Context *c): ITEDecisionStrategy(de, c), d_justified(c), d_prvsIndex(c, 0), d_helfulness("decision::jh::helpfulness", 0), d_giveup("decision::jh::giveup", 0), - d_timestat("decision::jh::time") { + d_timestat("decision::jh::time"), + d_assertions(uc), + d_iteAssertions(uc) { StatisticsRegistry::registerStat(&d_helfulness); StatisticsRegistry::registerStat(&d_giveup); StatisticsRegistry::registerStat(&d_timestat); @@ -97,6 +103,7 @@ public: } ~JustificationHeuristic() { StatisticsRegistry::unregisterStat(&d_helfulness); + StatisticsRegistry::unregisterStat(&d_giveup); StatisticsRegistry::unregisterStat(&d_timestat); } prop::SatLiteral getNext(bool &stopSearch) { @@ -106,8 +113,8 @@ public: d_visited.clear(); if(Trace.isOn("justified")) { - for(JustifiedSet::iterator i = d_justified.begin(); - i != d_justified.end(); ++i) { + for(JustifiedSet::key_iterator i = d_justified.key_begin(); + i != d_justified.key_end(); ++i) { TNode n = *i; SatLiteral l = d_decisionEngine->hasSatLiteral(n) ? d_decisionEngine->getSatLiteral(n) : -1; diff --git a/src/decision/relevancy.h b/src/decision/relevancy.h index 8a6eb54ef..bfd30ddde 100644 --- a/src/decision/relevancy.h +++ b/src/decision/relevancy.h @@ -60,7 +60,7 @@ class Relevancy : public RelevancyStrategy { typedef hash_map<TNode,SatValue,TNodeHashFunction> PolarityCache; // being 'justified' is monotonic with respect to decisions - context::CDHashSet<TNode,TNodeHashFunction> d_justified; + context::CDHashSet<Node, NodeHashFunction> d_justified; context::CDO<unsigned> d_prvsIndex; IntStat d_helfulness; diff --git a/src/expr/attribute_internals.h b/src/expr/attribute_internals.h index a085161bc..9a14caec5 100644 --- a/src/expr/attribute_internals.h +++ b/src/expr/attribute_internals.h @@ -752,7 +752,7 @@ public: table_value_type table_value_type; typedef attr::AttributeTraits<table_value_type, context_dep> traits; uint64_t id = attr::LastAttributeId<table_value_type, context_dep>::s_id++; - Assert(traits::cleanup.size() == id);// sanity check + //Assert(traits::cleanup.size() == id);// sanity check traits::cleanup.push_back(attr::getCleanupStrategy<value_t, CleanupStrategy>::fn); return id; diff --git a/src/expr/expr_manager_template.h b/src/expr/expr_manager_template.h index b9cae9431..09018cbfd 100644 --- a/src/expr/expr_manager_template.h +++ b/src/expr/expr_manager_template.h @@ -43,7 +43,7 @@ class SmtEngine; class NodeManager; class Options; class IntStat; -class ExprManagerMapCollection; +struct ExprManagerMapCollection; class StatisticsRegistry; namespace expr { diff --git a/src/expr/expr_template.h b/src/expr/expr_template.h index 442d29ac9..b353ec5dc 100644 --- a/src/expr/expr_template.h +++ b/src/expr/expr_template.h @@ -67,7 +67,7 @@ namespace prop { class TheoryProxy; }/* CVC4::prop namespace */ -class ExprManagerMapCollection; +struct ExprManagerMapCollection; struct ExprHashFunction; diff --git a/src/expr/kind_template.h b/src/expr/kind_template.h index 47504b0e4..0cab4e628 100644 --- a/src/expr/kind_template.h +++ b/src/expr/kind_template.h @@ -27,7 +27,7 @@ namespace CVC4 { namespace kind { -enum Kind_t { +enum CVC4_PUBLIC Kind_t { UNDEFINED_KIND = -1, /**< undefined */ NULL_EXPR, /**< Null kind */ ${kind_decls} diff --git a/src/expr/type.cpp b/src/expr/type.cpp index cc52b11b9..4e95c0fe2 100644 --- a/src/expr/type.cpp +++ b/src/expr/type.cpp @@ -204,111 +204,48 @@ bool Type::isBoolean() const { return d_typeNode->isBoolean(); } -/** Cast to a Boolean type */ -Type::operator BooleanType() const throw(IllegalArgumentException) { - NodeManagerScope nms(d_nodeManager); - CheckArgument(isNull() || isBoolean(), this); - return BooleanType(*this); -} - /** Is this the integer type? */ bool Type::isInteger() const { NodeManagerScope nms(d_nodeManager); return d_typeNode->isInteger(); } -/** Cast to a integer type */ -Type::operator IntegerType() const throw(IllegalArgumentException) { - NodeManagerScope nms(d_nodeManager); - CheckArgument(isNull() || isInteger(), this); - return IntegerType(*this); -} - /** Is this the real type? */ bool Type::isReal() const { NodeManagerScope nms(d_nodeManager); return d_typeNode->isReal(); } -/** Cast to a real type */ -Type::operator RealType() const throw(IllegalArgumentException) { - NodeManagerScope nms(d_nodeManager); - CheckArgument(isNull() || isReal(), this); - return RealType(*this); -} - /** Is this the string type? */ bool Type::isString() const { NodeManagerScope nms(d_nodeManager); return d_typeNode->isString(); } -/** Cast to a string type */ -Type::operator StringType() const throw(IllegalArgumentException) { - NodeManagerScope nms(d_nodeManager); - CheckArgument(isNull() || isString(), this); - return StringType(*this); -} - /** Is this the bit-vector type? */ bool Type::isBitVector() const { NodeManagerScope nms(d_nodeManager); return d_typeNode->isBitVector(); } -/** Cast to a bit-vector type */ -Type::operator BitVectorType() const throw(IllegalArgumentException) { - NodeManagerScope nms(d_nodeManager); - CheckArgument(isNull() || isBitVector(), this); - return BitVectorType(*this); -} - -/** Cast to a Constructor type */ -Type::operator DatatypeType() const throw(IllegalArgumentException) { - NodeManagerScope nms(d_nodeManager); - CheckArgument(isNull() || isDatatype(), this); - return DatatypeType(*this); -} - /** Is this a datatype type? */ bool Type::isDatatype() const { NodeManagerScope nms(d_nodeManager); return d_typeNode->isDatatype() || d_typeNode->isParametricDatatype(); } -/** Cast to a Constructor type */ -Type::operator ConstructorType() const throw(IllegalArgumentException) { - NodeManagerScope nms(d_nodeManager); - CheckArgument(isNull() || isConstructor(), this); - return ConstructorType(*this); -} - /** Is this the Constructor type? */ bool Type::isConstructor() const { NodeManagerScope nms(d_nodeManager); return d_typeNode->isConstructor(); } -/** Cast to a Selector type */ -Type::operator SelectorType() const throw(IllegalArgumentException) { - NodeManagerScope nms(d_nodeManager); - CheckArgument(isNull() || isSelector(), this); - return SelectorType(*this); -} - /** Is this the Selector type? */ bool Type::isSelector() const { NodeManagerScope nms(d_nodeManager); return d_typeNode->isSelector(); } -/** Cast to a Tester type */ -Type::operator TesterType() const throw(IllegalArgumentException) { - NodeManagerScope nms(d_nodeManager); - CheckArgument(isNull() || isTester(), this); - return TesterType(*this); -} - /** Is this the Tester type? */ bool Type::isTester() const { NodeManagerScope nms(d_nodeManager); @@ -330,64 +267,30 @@ bool Type::isPredicate() const { return d_typeNode->isPredicate(); } -/** Cast to a function type */ -Type::operator FunctionType() const throw(IllegalArgumentException) { - NodeManagerScope nms(d_nodeManager); - CheckArgument(isNull() || isFunction(), this); - return FunctionType(*this); -} - /** Is this a tuple type? */ bool Type::isTuple() const { NodeManagerScope nms(d_nodeManager); return d_typeNode->isTuple(); } -/** Cast to a tuple type */ -Type::operator TupleType() const throw(IllegalArgumentException) { - NodeManagerScope nms(d_nodeManager); - CheckArgument(isNull() || isTuple(), this); - return TupleType(*this); -} - /** Is this a record type? */ bool Type::isRecord() const { NodeManagerScope nms(d_nodeManager); return d_typeNode->isRecord(); } -/** Cast to a record type */ -Type::operator RecordType() const throw(IllegalArgumentException) { - NodeManagerScope nms(d_nodeManager); - CheckArgument(isNull() || isRecord(), this); - return RecordType(*this); -} - /** Is this a symbolic expression type? */ bool Type::isSExpr() const { NodeManagerScope nms(d_nodeManager); return d_typeNode->isSExpr(); } -/** Cast to a symbolic expression type */ -Type::operator SExprType() const throw(IllegalArgumentException) { - NodeManagerScope nms(d_nodeManager); - CheckArgument(isNull() || isSExpr(), this); - return SExprType(*this); -} - /** Is this an array type? */ bool Type::isArray() const { NodeManagerScope nms(d_nodeManager); return d_typeNode->isArray(); } -/** Cast to an array type */ -Type::operator ArrayType() const throw(IllegalArgumentException) { - NodeManagerScope nms(d_nodeManager); - return ArrayType(*this); -} - /** Is this a sort kind */ bool Type::isSort() const { NodeManagerScope nms(d_nodeManager); @@ -395,25 +298,11 @@ bool Type::isSort() const { } /** Cast to a sort type */ -Type::operator SortType() const throw(IllegalArgumentException) { - NodeManagerScope nms(d_nodeManager); - CheckArgument(isNull() || isSort(), this); - return SortType(*this); -} - -/** Is this a sort constructor kind */ bool Type::isSortConstructor() const { NodeManagerScope nms(d_nodeManager); return d_typeNode->isSortConstructor(); } -/** Cast to a sort constructor type */ -Type::operator SortConstructorType() const throw(IllegalArgumentException) { - NodeManagerScope nms(d_nodeManager); - CheckArgument(isNull() || isSortConstructor(), this); - return SortConstructorType(*this); -} - /** Is this a predicate subtype */ /* - not in release 1.0 bool Type::isPredicateSubtype() const { @@ -422,28 +311,12 @@ bool Type::isPredicateSubtype() const { } */ -/** Cast to a predicate subtype */ -/* - not in release 1.0 -Type::operator PredicateSubtype() const throw(IllegalArgumentException) { - NodeManagerScope nms(d_nodeManager); - CheckArgument(isNull() || isPredicateSubtype(), this); - return PredicateSubtype(*this); -} -*/ - /** Is this an integer subrange */ bool Type::isSubrange() const { NodeManagerScope nms(d_nodeManager); return d_typeNode->isSubrange(); } -/** Cast to a predicate subtype */ -Type::operator SubrangeType() const throw(IllegalArgumentException) { - NodeManagerScope nms(d_nodeManager); - CheckArgument(isNull() || isSubrange(), this); - return SubrangeType(*this); -} - vector<Type> FunctionType::getArgTypes() const { NodeManagerScope nms(d_nodeManager); vector<Type> args; diff --git a/src/expr/type.h b/src/expr/type.h index 4223d71ab..ce6291cd8 100644 --- a/src/expr/type.h +++ b/src/expr/type.h @@ -30,15 +30,15 @@ namespace CVC4 { class NodeManager; -class ExprManager; -class Expr; +class CVC4_PUBLIC ExprManager; +class CVC4_PUBLIC Expr; class TypeNode; -class ExprManagerMapCollection; +struct CVC4_PUBLIC ExprManagerMapCollection; -class SmtEngine; +class CVC4_PUBLIC SmtEngine; -class Datatype; -class Record; +class CVC4_PUBLIC Datatype; +class CVC4_PUBLIC Record; template <bool ref_count> class NodeTemplate; @@ -240,60 +240,30 @@ public: bool isBoolean() const; /** - * Cast this type to a Boolean type - * @return the BooleanType - */ - operator BooleanType() const throw(IllegalArgumentException); - - /** * Is this the integer type? * @return true if the type is a integer type */ bool isInteger() const; /** - * Cast this type to a integer type - * @return the IntegerType - */ - operator IntegerType() const throw(IllegalArgumentException); - - /** * Is this the real type? * @return true if the type is a real type */ bool isReal() const; /** - * Cast this type to a real type - * @return the RealType - */ - operator RealType() const throw(IllegalArgumentException); - - /** * Is this the string type? * @return true if the type is the string type */ bool isString() const; /** - * Cast this type to a string type - * @return the StringType - */ - operator StringType() const throw(IllegalArgumentException); - - /** * Is this the bit-vector type? * @return true if the type is a bit-vector type */ bool isBitVector() const; /** - * Cast this type to a bit-vector type - * @return the BitVectorType - */ - operator BitVectorType() const throw(IllegalArgumentException); - - /** * Is this a function type? * @return true if the type is a function type */ @@ -307,132 +277,66 @@ public: bool isPredicate() const; /** - * Cast this type to a function type - * @return the FunctionType - */ - operator FunctionType() const throw(IllegalArgumentException); - - /** * Is this a tuple type? * @return true if the type is a tuple type */ bool isTuple() const; /** - * Cast this type to a tuple type - * @return the TupleType - */ - operator TupleType() const throw(IllegalArgumentException); - - /** * Is this a record type? * @return true if the type is a record type */ bool isRecord() const; /** - * Cast this type to a record type - * @return the RecordType - */ - operator RecordType() const throw(IllegalArgumentException); - - /** * Is this a symbolic expression type? * @return true if the type is a symbolic expression type */ bool isSExpr() const; /** - * Cast this type to a symbolic expression type - * @return the SExprType - */ - operator SExprType() const throw(IllegalArgumentException); - - /** * Is this an array type? * @return true if the type is a array type */ bool isArray() const; /** - * Cast this type to an array type - * @return the ArrayType - */ - operator ArrayType() const throw(IllegalArgumentException); - - /** * Is this a datatype type? * @return true if the type is a datatype type */ bool isDatatype() const; /** - * Cast this type to a datatype type - * @return the DatatypeType - */ - operator DatatypeType() const throw(IllegalArgumentException); - - /** * Is this a constructor type? * @return true if the type is a constructor type */ bool isConstructor() const; /** - * Cast this type to a constructor type - * @return the ConstructorType - */ - operator ConstructorType() const throw(IllegalArgumentException); - - /** * Is this a selector type? * @return true if the type is a selector type */ bool isSelector() const; /** - * Cast this type to a selector type - * @return the SelectorType - */ - operator SelectorType() const throw(IllegalArgumentException); - - /** * Is this a tester type? * @return true if the type is a tester type */ bool isTester() const; /** - * Cast this type to a tester type - * @return the TesterType - */ - operator TesterType() const throw(IllegalArgumentException); - - /** * Is this a sort kind? * @return true if this is a sort kind */ bool isSort() const; /** - * Cast this type to a sort type - * @return the sort type - */ - operator SortType() const throw(IllegalArgumentException); - - /** * Is this a sort constructor kind? * @return true if this is a sort constructor kind */ bool isSortConstructor() const; /** - * Cast this type to a sort constructor type - * @return the sort constructor type - */ - operator SortConstructorType() const throw(IllegalArgumentException); - - /** * Is this a predicate subtype? * @return true if this is a predicate subtype */ @@ -440,25 +344,12 @@ public: //bool isPredicateSubtype() const; /** - * Cast this type to a predicate subtype - * @return the predicate subtype - */ - // not in release 1.0 - //operator PredicateSubtype() const throw(IllegalArgumentException); - - /** * Is this an integer subrange type? * @return true if this is an integer subrange type */ bool isSubrange() const; /** - * Cast this type to an integer subrange type - * @return the integer subrange type - */ - operator SubrangeType() const throw(IllegalArgumentException); - - /** * Outputs a string representation of this type to the stream. * @param out the stream to output to */ diff --git a/src/expr/type.i b/src/expr/type.i index 870cb228c..e227cca23 100644 --- a/src/expr/type.i +++ b/src/expr/type.i @@ -14,24 +14,6 @@ %rename(greater) CVC4::Type::operator>(const Type&) const; %rename(greaterEqual) CVC4::Type::operator>=(const Type&) const; -%rename(toBooleanType) CVC4::Type::operator BooleanType() const; -%rename(toIntegerType) CVC4::Type::operator IntegerType() const; -%rename(toRealType) CVC4::Type::operator RealType() const; -%rename(toStringType) CVC4::Type::operator StringType() const; -%rename(toBitVectorType) CVC4::Type::operator BitVectorType() const; -%rename(toFunctionType) CVC4::Type::operator FunctionType() const; -%rename(toTupleType) CVC4::Type::operator TupleType() const; -%rename(toSExprType) CVC4::Type::operator SExprType() const; -%rename(toArrayType) CVC4::Type::operator ArrayType() const; -%rename(toDatatypeType) CVC4::Type::operator DatatypeType() const; -%rename(toConstructorType) CVC4::Type::operator ConstructorType() const; -%rename(toSelectorType) CVC4::Type::operator SelectorType() const; -%rename(toTesterType) CVC4::Type::operator TesterType() const; -%rename(toSortType) CVC4::Type::operator SortType() const; -%rename(toSortConstructorType) CVC4::Type::operator SortConstructorType() const; -%rename(toPredicateSubtype) CVC4::Type::operator PredicateSubtype() const; -%rename(toSubrangeType) CVC4::Type::operator SubrangeType() const; - namespace CVC4 { namespace expr { %ignore exportTypeInternal; diff --git a/src/include/cvc4_public.h b/src/include/cvc4_public.h index 6c546a147..9993e5f18 100644 --- a/src/include/cvc4_public.h +++ b/src/include/cvc4_public.h @@ -22,19 +22,7 @@ #include <stdint.h> #if defined _WIN32 || defined __CYGWIN__ -# ifdef BUILDING_DLL -# ifdef __GNUC__ -# define CVC4_PUBLIC __attribute__((__dllexport__)) -# else /* ! __GNUC__ */ -# define CVC4_PUBLIC __declspec(dllexport) -# endif /* __GNUC__ */ -# else /* BUILDING_DLL */ -# ifdef __GNUC__ -# define CVC4_PUBLIC __attribute__((__dllimport__)) -# else /* ! __GNUC__ */ -# define CVC4_PUBLIC __declspec(dllimport) -# endif /* __GNUC__ */ -# endif /* BUILDING_DLL */ +# define CVC4_PUBLIC #else /* !( defined _WIN32 || defined __CYGWIN__ ) */ # if __GNUC__ >= 4 # define CVC4_PUBLIC __attribute__ ((__visibility__("default"))) diff --git a/src/lib/Makefile.am b/src/lib/Makefile.am index a6ea59e95..61f9e2d70 100644 --- a/src/lib/Makefile.am +++ b/src/lib/Makefile.am @@ -15,5 +15,8 @@ libreplacements_la_LIBADD = \ EXTRA_DIST = \ replacements.h \ clock_gettime.c \ - clock_gettime.h - + clock_gettime.h \ + strtok_r.c \ + strtok_r.h \ + ffs.c \ + ffs.h diff --git a/src/lib/clock_gettime.c b/src/lib/clock_gettime.c index 77409c71a..054a8c112 100644 --- a/src/lib/clock_gettime.c +++ b/src/lib/clock_gettime.c @@ -18,25 +18,25 @@ #include "cvc4_private.h" -#include <stdio.h> -#include <errno.h> -#include <time.h> - #include "lib/clock_gettime.h" #ifdef __cplusplus extern "C" { #endif /* __cplusplus */ -#ifndef __APPLE__ -# warning This code assumes you're on Mac OS X, and you don't seem to be. You'll likely have problems. -#endif /* __APPLE__ */ +#if !(defined(__APPLE__) || defined(__WIN32__)) +# warning "This code assumes you're on Mac OS X or Win32, and you don't seem to be. You'll likely have problems." +#endif /* !(__APPLE__ || __WIN32__) */ +#ifdef __APPLE__ + +#include <stdio.h> +#include <errno.h> #include <mach/mach_time.h> static double s_clockconv = 0.0; -long clock_gettime(clockid_t which_clock, struct timespec *tp) { +long clock_gettime(clockid_t which_clock, struct timespec* tp) { if( s_clockconv == 0.0 ) { mach_timebase_info_data_t tb; kern_return_t err = mach_timebase_info(&tb); @@ -64,6 +64,24 @@ long clock_gettime(clockid_t which_clock, struct timespec *tp) { return 0; } +#else /* else we're __WIN32__ */ + +#include <time.h> +#include <windows.h> + +long clock_gettime(clockid_t which_clock, struct timespec* tp) { + if(tp != NULL) { + FILETIME ft; + GetSystemTimeAsFileTime(&ft); + uint64_t nanos = ((((uint64_t)ft.dwHighDateTime) << 32) | ft.dwLowDateTime) * 100; + tp->tv_sec = nanos / 1000000000ul; + tp->tv_nsec = nanos % 1000000000ul; + } + return 0; +} + +#endif /* __APPLE__ / __WIN32__ */ + #ifdef __cplusplus }/* extern "C" */ #endif /* __cplusplus */ diff --git a/src/lib/clock_gettime.h b/src/lib/clock_gettime.h index ac4ca1f85..6a8dd57ff 100644 --- a/src/lib/clock_gettime.h +++ b/src/lib/clock_gettime.h @@ -30,13 +30,34 @@ /* otherwise, we have to define it */ +#ifdef __WIN32__ + +#ifdef __cplusplus +extern "C" { +#endif /* __cplusplus */ + +struct timespec { + uint64_t tv_sec; + int32_t tv_nsec; +};/* struct timespec */ + +#ifdef __cplusplus +}/* extern "C" */ +#endif /* __cplusplus */ + +#else /* ! __WIN32__ */ + /* get timespec from <time.h> */ #include <time.h> +#endif /* __WIN32__ */ + #ifdef __cplusplus extern "C" { #endif /* __cplusplus */ +struct timespec; + typedef enum { CLOCK_REALTIME, CLOCK_MONOTONIC, @@ -44,7 +65,7 @@ typedef enum { CLOCK_MONOTONIC_HR } clockid_t; -long clock_gettime(clockid_t which_clock, struct timespec *tp); +long clock_gettime(clockid_t which_clock, struct timespec* tp); #ifdef __cplusplus }/* extern "C" */ @@ -52,4 +73,3 @@ long clock_gettime(clockid_t which_clock, struct timespec *tp); #endif /* HAVE_CLOCK_GETTIME */ #endif /*__CVC4__LIB__CLOCK_GETTIME_H */ - diff --git a/src/lib/ffs.c b/src/lib/ffs.c new file mode 100644 index 000000000..5c25211ce --- /dev/null +++ b/src/lib/ffs.c @@ -0,0 +1,40 @@ +/********************* */ +/*! \file ffs.c + ** \verbatim + ** Original author: mdeters + ** Major contributors: none + ** Minor contributors (to current version): none + ** This file is part of CVC4. + ** Copyright (c) 2009-2013 New York University and The University of Iowa + ** See the file COPYING in the top-level source directory for licensing + ** information.\endverbatim + ** + ** \brief Replacement for ffs() for systems without it (like Win32) + ** + ** Replacement for ffs() for systems without it (like Win32). + **/ + +#include "cvc4_private.h" + +#include "lib/ffs.h" + +#ifdef __cplusplus +extern "C" { +#endif /* __cplusplus */ + +int ffs(int i) { + long mask = 0x1; + int pos = 1; + while(pos <= sizeof(int) * 8) { + if((mask & i) != 0) { + return pos; + } + ++pos; + mask <<= 1; + } + return 0; +} + +#ifdef __cplusplus +}/* extern "C" */ +#endif /* __cplusplus */ diff --git a/src/lib/ffs.h b/src/lib/ffs.h new file mode 100644 index 000000000..9b038d429 --- /dev/null +++ b/src/lib/ffs.h @@ -0,0 +1,42 @@ +/********************* */ +/*! \file ffs.h + ** \verbatim + ** Original author: mdeters + ** Major contributors: none + ** Minor contributors (to current version): none + ** This file is part of CVC4. + ** Copyright (c) 2009-2013 New York University and The University of Iowa + ** See the file COPYING in the top-level source directory for licensing + ** information.\endverbatim + ** + ** \brief Replacement for ffs() for systems without it (like Win32) + ** + ** Replacement for ffs() for systems without it (like Win32). + **/ + +#include "cvc4_public.h" + +#ifndef __CVC4__LIB__FFS_H +#define __CVC4__LIB__FFS_H + +#ifdef HAVE_FFS + +// available in strings.h +#include <strings.h> + +#else /* ! HAVE_FFS */ + +#include "lib/replacements.h" + +#ifdef __cplusplus +extern "C" { +#endif /* __cplusplus */ + +int ffs(int i); + +#ifdef __cplusplus +}/* extern "C" */ +#endif /* __cplusplus */ + +#endif /* HAVE_FFS */ +#endif /* __CVC4__LIB__FFS_H */ diff --git a/src/lib/strtok_r.c b/src/lib/strtok_r.c new file mode 100644 index 000000000..b8df95359 --- /dev/null +++ b/src/lib/strtok_r.c @@ -0,0 +1,41 @@ +/********************* */ +/*! \file strtok_r.c + ** \verbatim + ** Original author: mdeters + ** Major contributors: none + ** Minor contributors (to current version): none + ** This file is part of CVC4. + ** Copyright (c) 2009-2013 New York University and The University of Iowa + ** See the file COPYING in the top-level source directory for licensing + ** information.\endverbatim + ** + ** \brief Replacement for strtok_r() for systems without it (like Win32) + ** + ** Replacement for strtok_r() for systems without it (like Win32). + **/ + +#include "cvc4_private.h" + +#include "lib/strtok_r.h" +#include <stdio.h> +#include <string.h> + +#ifdef __cplusplus +extern "C" { +#endif /* __cplusplus */ + +char* strtok_r(char *str, const char *delim, char **saveptr) { + if(str == NULL) { + char* retval = strtok(*saveptr, delim); + *saveptr = retval + strlen(retval) + 1; + return retval; + } else { + char* retval = strtok(str, delim); + *saveptr = retval + strlen(retval) + 1; + return retval; + } +} + +#ifdef __cplusplus +}/* extern "C" */ +#endif /* __cplusplus */ diff --git a/src/lib/strtok_r.h b/src/lib/strtok_r.h new file mode 100644 index 000000000..6b3387e6b --- /dev/null +++ b/src/lib/strtok_r.h @@ -0,0 +1,42 @@ +/********************* */ +/*! \file strtok_r.h + ** \verbatim + ** Original author: mdeters + ** Major contributors: none + ** Minor contributors (to current version): none + ** This file is part of CVC4. + ** Copyright (c) 2009-2013 New York University and The University of Iowa + ** See the file COPYING in the top-level source directory for licensing + ** information.\endverbatim + ** + ** \brief Replacement for strtok_r() for systems without it (like Win32) + ** + ** Replacement for strtok_r() for systems without it (like Win32). + **/ + +#include "cvc4_public.h" + +#ifndef __CVC4__LIB__STRTOK_R_H +#define __CVC4__LIB__STRTOK_R_H + +#ifdef HAVE_STRTOK_R + +// available in string.h +#include <string.h> + +#else /* ! HAVE_STRTOK_R */ + +#include "lib/replacements.h" + +#ifdef __cplusplus +extern "C" { +#endif /* __cplusplus */ + +char* strtok_r(char *str, const char *delim, char **saveptr); + +#ifdef __cplusplus +}/* extern "C" */ +#endif /* __cplusplus */ + +#endif /* HAVE_STRTOK_R */ +#endif /* __CVC4__LIB__STRTOK_R_H */ diff --git a/src/main/Makefile.am b/src/main/Makefile.am index 952951655..64a43eb02 100644 --- a/src/main/Makefile.am +++ b/src/main/Makefile.am @@ -41,9 +41,9 @@ pcvc4_LDADD += $(BOOST_THREAD_LIBS) -lpthread pcvc4_LDADD += $(BOOST_THREAD_LDFLAGS) if STATIC_BINARY -pcvc4_LINK = $(CXXLINK) -all-static +pcvc4_LINK = $(CXXLINK) -all-static $(pcvc4_LDFLAGS) else -pcvc4_LINK = $(CXXLINK) +pcvc4_LINK = $(CXXLINK) $(pcvc4_LDFLAGS) endif endif @@ -87,8 +87,8 @@ clean-local: rm -f $(BUILT_SOURCES) if STATIC_BINARY -cvc4_LINK = $(CXXLINK) -all-static +cvc4_LINK = $(CXXLINK) -all-static $(cvc4_LDFLAGS) else -cvc4_LINK = $(CXXLINK) +cvc4_LINK = $(CXXLINK) $(cvc4_LDFLAGS) endif diff --git a/src/main/command_executor.cpp b/src/main/command_executor.cpp index 14625f1d8..010d4a6f4 100644 --- a/src/main/command_executor.cpp +++ b/src/main/command_executor.cpp @@ -48,7 +48,7 @@ bool CommandExecutor::doCommand(Command* cmd) return status; } else { - if(d_options[options::verbosity] > 0) { + if(d_options[options::verbosity] > 2) { *d_options[options::out] << "Invoking: " << *cmd << std::endl; } diff --git a/src/main/util.cpp b/src/main/util.cpp index d4d3e96d8..a6fcddf3b 100644 --- a/src/main/util.cpp +++ b/src/main/util.cpp @@ -19,10 +19,15 @@ #include <cerrno> #include <exception> #include <string.h> + +#ifndef __WIN32__ + #include <signal.h> #include <sys/resource.h> #include <unistd.h> +#endif /* __WIN32__ */ + #include "util/exception.h" #include "options/options.h" #include "util/statistics.h" @@ -44,9 +49,6 @@ namespace CVC4 { namespace main { -size_t cvc4StackSize; -void* cvc4StackBase; - /** * If true, will not spin on segfault even when CVC4_DEBUG is on. * Useful for nightly regressions, noninteractive performance runs @@ -54,6 +56,11 @@ void* cvc4StackBase; */ bool segvNoSpin = false; +#ifndef __WIN32__ + +size_t cvc4StackSize; +void* cvc4StackBase; + /** Handler for SIGXCPU, i.e., timeout. */ void timeout_handler(int sig, siginfo_t* info, void*) { fprintf(stderr, "CVC4 interrupted by timeout.\n"); @@ -150,10 +157,12 @@ void ill_handler(int sig, siginfo_t* info, void*) { #endif /* CVC4_DEBUG */ } +#endif /* __WIN32__ */ + static terminate_handler default_terminator; void cvc4unexpected() { -#ifdef CVC4_DEBUG +#if defined(CVC4_DEBUG) && !defined(__WIN32__) fprintf(stderr, "\n" "CVC4 threw an \"unexpected\" exception (one that wasn't properly " "specified\nin the throws() specifier for the throwing function)." @@ -214,6 +223,7 @@ void cvc4terminate() { /** Initialize the driver. Sets signal handlers for SIGINT and SIGSEGV. */ void cvc4_init() throw(Exception) { +#ifndef __WIN32__ stack_t ss; ss.ss_sp = malloc(SIGSTKSZ); if(ss.ss_sp == NULL) { @@ -272,6 +282,8 @@ void cvc4_init() throw(Exception) { throw Exception(string("sigaction(SIGILL) failure: ") + strerror(errno)); } +#endif /* __WIN32__ */ + set_unexpected(cvc4unexpected); default_terminator = set_terminate(cvc4terminate); } diff --git a/src/options/options.h b/src/options/options.h index 2d49765f3..5f17f5a5c 100644 --- a/src/options/options.h +++ b/src/options/options.h @@ -31,7 +31,7 @@ namespace CVC4 { namespace options { - class OptionsHolder; + struct OptionsHolder; }/* CVC4::options namespace */ class ExprStream; diff --git a/src/parser/antlr_input.cpp b/src/parser/antlr_input.cpp index 8987a7572..fbf2b8650 100644 --- a/src/parser/antlr_input.cpp +++ b/src/parser/antlr_input.cpp @@ -63,8 +63,13 @@ AntlrInputStream* AntlrInputStream::newFileInputStream(const std::string& name, bool useMmap) throw (InputStreamException) { +#ifdef _WIN32 + if(useMmap) { + useMmap = false; + } +#endif pANTLR3_INPUT_STREAM input = NULL; - if( useMmap ) { + if(useMmap) { input = MemoryMappedInputBufferNew(name); } else { // libantlr3c v3.2 isn't source-compatible with v3.4 @@ -74,7 +79,7 @@ AntlrInputStream::newFileInputStream(const std::string& name, input = antlr3FileStreamNew((pANTLR3_UINT8) name.c_str(), ANTLR3_ENC_8BIT); #endif /* CVC4_ANTLR3_OLD_INPUT_STREAM */ } - if( input == NULL ) { + if(input == NULL) { throw InputStreamException("Couldn't open file: " + name); } return new AntlrInputStream( name, input ); diff --git a/src/parser/memory_mapped_input_buffer.cpp b/src/parser/memory_mapped_input_buffer.cpp index 9f72ac51c..f110b1145 100644 --- a/src/parser/memory_mapped_input_buffer.cpp +++ b/src/parser/memory_mapped_input_buffer.cpp @@ -18,10 +18,15 @@ #include <stdio.h> #include <stdint.h> +#include <antlr3input.h> + +#ifndef _WIN32 + #include <cerrno> #include <sys/mman.h> #include <sys/stat.h> -#include <antlr3input.h> + +#endif /* _WIN32 */ #include "parser/memory_mapped_input_buffer.h" #include "util/exception.h" @@ -31,6 +36,14 @@ namespace parser { extern "C" { +#ifdef _WIN32 + +pANTLR3_INPUT_STREAM MemoryMappedInputBufferNew(const std::string& filename) { + return 0; +} + +#else /* ! _WIN32 */ + static ANTLR3_UINT32 MemoryMapFile(pANTLR3_INPUT_STREAM input, const std::string& filename); @@ -112,6 +125,8 @@ void UnmapFile(pANTLR3_INPUT_STREAM input) { input->close(input); } +#endif /* _WIN32 */ + }/* extern "C" */ }/* CVC4::parser namespace */ diff --git a/src/parser/smt1/Smt1.g b/src/parser/smt1/Smt1.g index 6dade9530..0f76baace 100644 --- a/src/parser/smt1/Smt1.g +++ b/src/parser/smt1/Smt1.g @@ -1,4 +1,3 @@ -/* ******************* */ /*! \file Smt1.g ** \verbatim ** Original author: cconway @@ -235,10 +234,10 @@ annotatedFormula[CVC4::Expr& expr] Expr op; /* Operator expression FIXME: move away kill it */ } : /* a built-in operator application */ - LPAREN_TOK builtinOp[kind] annotatedFormulas[args,expr] RPAREN_TOK + LPAREN_TOK builtinOp[kind] annotatedFormulas[args,expr] { if((kind == CVC4::kind::AND || kind == CVC4::kind::OR) && args.size() == 1) { /* Unary AND/OR can be replaced with the argument. - It just so happens expr should already by the only argument. */ + * It just so happens expr should already be the only argument. */ assert( expr == args[0] ); } else if( CVC4::kind::isAssociative(kind) && args.size() > EXPR_MANAGER->maxArity(kind) ) { @@ -253,6 +252,7 @@ annotatedFormula[CVC4::Expr& expr] expr = MK_EXPR(kind, args); } } + termAnnotation[expr]* RPAREN_TOK | /* A quantifier */ LPAREN_TOK @@ -261,12 +261,13 @@ annotatedFormula[CVC4::Expr& expr] ( LPAREN_TOK let_identifier[name,CHECK_NONE] t=sortSymbol RPAREN_TOK { args.push_back(PARSER_STATE->mkBoundVar(name, t)); } )+ - annotatedFormula[expr] RPAREN_TOK + annotatedFormula[expr] { args2.push_back( MK_EXPR( kind::BOUND_VAR_LIST, args ) ); args2.push_back(expr); expr = MK_EXPR(kind, args2); - PARSER_STATE->popScope(); } + termAnnotation[expr]* RPAREN_TOK + { PARSER_STATE->popScope(); } | /* A non-built-in function application */ @@ -275,9 +276,10 @@ annotatedFormula[CVC4::Expr& expr] // { isFunction(LT(2)->getText()) }? LPAREN_TOK parameterizedOperator[op] - annotatedFormulas[args,expr] RPAREN_TOK + annotatedFormulas[args,expr] // TODO: check arity { expr = MK_EXPR(op,args); } + termAnnotation[expr]* RPAREN_TOK | /* An ite expression */ LPAREN_TOK ITE_TOK @@ -286,9 +288,9 @@ annotatedFormula[CVC4::Expr& expr] annotatedFormula[expr] { args.push_back(expr); } annotatedFormula[expr] - { args.push_back(expr); } - RPAREN_TOK - { expr = MK_EXPR(CVC4::kind::ITE, args); } + { args.push_back(expr); + expr = MK_EXPR(CVC4::kind::ITE, args); } + termAnnotation[expr]* RPAREN_TOK | /* a let/flet binding */ LPAREN_TOK @@ -298,7 +300,7 @@ annotatedFormula[CVC4::Expr& expr] { PARSER_STATE->pushScope(); PARSER_STATE->defineVar(name,expr); } annotatedFormula[expr] - RPAREN_TOK + termAnnotation[expr]* RPAREN_TOK { PARSER_STATE->popScope(); } /* constants */ @@ -310,7 +312,7 @@ annotatedFormula[CVC4::Expr& expr] { // FIXME: This doesn't work because an SMT rational is not a // valid GMP rational string expr = MK_CONST( AntlrInput::tokenToRational($RATIONAL_TOK) ); } - | n = BITVECTOR_BV_CONST '[' size = NUMERAL_TOK ']' + | n = BITVECTOR_BV_CONST '[' size = NUMERAL_TOK ']' { expr = MK_CONST( AntlrInput::tokenToBitvector($n, $size) ); } // NOTE: Theory constants go here /* TODO: quantifiers, arithmetic constants */ @@ -320,7 +322,6 @@ annotatedFormula[CVC4::Expr& expr] | let_identifier[name,CHECK_DECLARED] | flet_identifier[name,CHECK_DECLARED] ) { expr = PARSER_STATE->getVariable(name); } - ; /** @@ -458,7 +459,7 @@ functionSymbol[CVC4::Expr& fun] * Matches an attribute name from the input (:attribute_name). */ attribute[std::string& s] - : ATTR_IDENTIFIER + : ATTR_IDENTIFIER { s = AntlrInput::tokenText($ATTR_IDENTIFIER); } ; @@ -555,28 +556,56 @@ status[ CVC4::BenchmarkStatus& status ] /** * Matches an annotation, which is an attribute name, with an optional user + * value. */ annotation[CVC4::Command*& smt_command] @init { - std::string key; + std::string key, value; smt_command = NULL; + std::vector<Expr> pats; + Expr pat; } - : attribute[key] - ( USER_VALUE - { std::string value = AntlrInput::tokenText($USER_VALUE); - assert(*value.begin() == '{'); - assert(*value.rbegin() == '}'); - // trim whitespace - value.erase(value.begin(), value.begin() + 1); - value.erase(value.begin(), std::find_if(value.begin(), value.end(), std::not1(std::ptr_fun<int, int>(std::isspace)))); - value.erase(value.end() - 1); - value.erase(std::find_if(value.rbegin(), value.rend(), std::not1(std::ptr_fun<int, int>(std::isspace))).base(), value.end()); - smt_command = new SetInfoCommand(key.c_str() + 1, value); } - )? - { if(smt_command == NULL) { - smt_command = new EmptyCommand(std::string("annotation: ") + key); + : PATTERN_ANNOTATION_BEGIN + { PARSER_STATE->warning(":pat not supported here; ignored"); } + annotatedFormulas[pats,pat] '}' + | attribute[key] + ( userValue[value] + { smt_command = new SetInfoCommand(key.c_str() + 1, value); } + | { smt_command = new EmptyCommand(std::string("annotation: ") + key); } + ) + ; + +/** + * Matches an annotation, which is an attribute name, with an optional user + * value. + */ +termAnnotation[CVC4::Expr& expr] +@init { + std::string key, value; + std::vector<Expr> pats; + Expr pat; +} + : PATTERN_ANNOTATION_BEGIN annotatedFormulas[pats,pat] '}' + { if(expr.getKind() == kind::FORALL || expr.getKind() == kind::EXISTS) { + pat = MK_EXPR(kind::INST_PATTERN, pats); + if(expr.getNumChildren() == 3) { + // we have other user patterns attached to the quantifier + // already; add this one to the existing list + pats = expr[2].getChildren(); + pats.push_back(pat); + expr = MK_EXPR(expr.getKind(), expr[0], expr[1], MK_EXPR(kind::INST_PATTERN_LIST, pats)); + } else { + // this is the only user pattern for the quantifier + expr = MK_EXPR(expr.getKind(), expr[0], expr[1], MK_EXPR(kind::INST_PATTERN_LIST, pat)); + } + } else { + PARSER_STATE->warning(":pat only supported on quantifiers"); } } + | ':pat' + { PARSER_STATE->warning("expected an instantiation pattern after :pat"); } + | attribute[key] userValue[value]? + { PARSER_STATE->attributeNotSupported(key); } ; /** @@ -752,6 +781,15 @@ FLET_IDENTIFIER * only constraint imposed on a user-defined value is that it start * with an open brace and end with closed brace. */ +userValue[std::string& s] + : USER_VALUE + { s = AntlrInput::tokenText($USER_VALUE); } + ; + +PATTERN_ANNOTATION_BEGIN + : ':pat' (' ' | '\t' | '\f' | '\r' | '\n')* '{' + ; + USER_VALUE : '{' ('\\{' | '\\}' | ~('{' | '}'))* '}' ; diff --git a/src/printer/smt2/smt2_printer.cpp b/src/printer/smt2/smt2_printer.cpp index 5821fbc77..000fd2fbf 100644 --- a/src/printer/smt2/smt2_printer.cpp +++ b/src/printer/smt2/smt2_printer.cpp @@ -541,6 +541,13 @@ void Smt2Printer::toStream(std::ostream& out, const CommandStatus* s) const thro }/* Smt2Printer::toStream(CommandStatus*) */ +void Smt2Printer::toStream(std::ostream& out, Model& m) const throw() { + out << "(model" << std::endl; + this->Printer::toStream(out, m); + out << ")" << std::endl; +} + + void Smt2Printer::toStream(std::ostream& out, Model& m, const Command* c) const throw() { theory::TheoryModel& tm = (theory::TheoryModel&) m; if(dynamic_cast<const DeclareTypeCommand*>(c) != NULL) { diff --git a/src/printer/smt2/smt2_printer.h b/src/printer/smt2/smt2_printer.h index c6d932457..32a0c94ba 100644 --- a/src/printer/smt2/smt2_printer.h +++ b/src/printer/smt2/smt2_printer.h @@ -30,6 +30,7 @@ namespace smt2 { class Smt2Printer : public CVC4::Printer { void toStream(std::ostream& out, TNode n, int toDepth, bool types) const throw(); void toStream(std::ostream& out, Model& m, const Command* c) const throw(); + void toStream(std::ostream& out, Model& m) const throw(); public: void toStream(std::ostream& out, TNode n, int toDepth, bool types, size_t dag) const throw(); void toStream(std::ostream& out, const Command* c, int toDepth, bool types, size_t dag) const throw(); diff --git a/src/proof/proof_manager.cpp b/src/proof/proof_manager.cpp index d05fe24a7..c1351c6a2 100644 --- a/src/proof/proof_manager.cpp +++ b/src/proof/proof_manager.cpp @@ -26,7 +26,7 @@ namespace CVC4 { bool ProofManager::isInitialized = false; ProofManager* ProofManager::proofManager = NULL; -ProofManager::ProofManager(ProofFormat format = LFSC): +ProofManager::ProofManager(ProofFormat format): d_satProof(NULL), d_cnfProof(NULL), d_format(format) diff --git a/src/proof/proof_manager.h b/src/proof/proof_manager.h index 3bfff1456..91eb2ed99 100644 --- a/src/proof/proof_manager.h +++ b/src/proof/proof_manager.h @@ -52,7 +52,7 @@ class ProofManager { static ProofManager* proofManager; static bool isInitialized; - ProofManager(ProofFormat format); + ProofManager(ProofFormat format = LFSC); public: static ProofManager* currentPM(); diff --git a/src/prop/bvminisat/core/Solver.cc b/src/prop/bvminisat/core/Solver.cc index 978ac8d7b..68969c78b 100644 --- a/src/prop/bvminisat/core/Solver.cc +++ b/src/prop/bvminisat/core/Solver.cc @@ -32,7 +32,7 @@ OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWA #include "theory/interrupted.h" using namespace BVMinisat; -namespace CVC4 { +namespace BVMinisat { #define OUTPUT_TAG "bvminisat: [a=" << assumptions.size() << ",l=" << decisionLevel() << "] " diff --git a/src/prop/cnf_stream.cpp b/src/prop/cnf_stream.cpp index 9f2138e9d..89cd731e9 100644 --- a/src/prop/cnf_stream.cpp +++ b/src/prop/cnf_stream.cpp @@ -108,11 +108,10 @@ void TseitinCnfStream::ensureLiteral(TNode n) { Debug("cnf") << "ensureLiteral(" << n << ")" << endl; if(hasLiteral(n)) { SatLiteral lit = getLiteral(n); - LiteralToNodeMap::iterator i = d_literalToNodeMap.find(lit); - if(i == d_literalToNodeMap.end()) { + if(!d_literalToNodeMap.contains(lit)){ // Store backward-mappings - d_literalToNodeMap[lit] = n; - d_literalToNodeMap[~lit] = n.notNode(); + d_literalToNodeMap.insert(lit, n); + d_literalToNodeMap.insert(~lit, n.notNode()); } return; } @@ -140,8 +139,9 @@ void TseitinCnfStream::ensureLiteral(TNode n) { lit = toCNF(n, false); // Store backward-mappings - d_literalToNodeMap[lit] = n; - d_literalToNodeMap[~lit] = n.notNode(); + // These may already exist + d_literalToNodeMap.insert_safe(lit, n); + d_literalToNodeMap.insert_safe(~lit, n.notNode()); } else { // We have a theory atom or variable. lit = convertAtom(n); @@ -168,8 +168,8 @@ SatLiteral CnfStream::newLiteral(TNode node, bool theoryLiteral) { } else { lit = SatLiteral(d_satSolver->newVar(theoryLiteral)); } - d_nodeToLiteralMap[node] = lit; - d_nodeToLiteralMap[node.notNode()] = ~lit; + d_nodeToLiteralMap.insert(node, lit); + d_nodeToLiteralMap.insert(node.notNode(), ~lit); } else { lit = getLiteral(node); } @@ -178,8 +178,9 @@ SatLiteral CnfStream::newLiteral(TNode node, bool theoryLiteral) { if ( theoryLiteral || d_fullLitToNodeMap || ( CVC4_USE_REPLAY && options::replayLog() != NULL ) || (Dump.isOn("clauses")) ) { - d_literalToNodeMap[lit] = node; - d_literalToNodeMap[~lit] = node.notNode(); + + d_literalToNodeMap.insert_safe(lit, node); + d_literalToNodeMap.insert_safe(~lit, node.notNode()); } // If a theory literal, we pre-register it @@ -197,11 +198,8 @@ SatLiteral CnfStream::newLiteral(TNode node, bool theoryLiteral) { TNode CnfStream::getNode(const SatLiteral& literal) { Debug("cnf") << "getNode(" << literal << ")" << endl; - LiteralToNodeMap::iterator find = d_literalToNodeMap.find(literal); - Assert(find != d_literalToNodeMap.end()); - Assert(d_nodeToLiteralMap.find((*find).second) != d_nodeToLiteralMap.end()); - Debug("cnf") << "getNode(" << literal << ") => " << (*find).second << endl; - return (*find).second; + Debug("cnf") << "getNode(" << literal << ") => " << d_literalToNodeMap[literal] << endl; + return d_literalToNodeMap[literal]; } void CnfStream::getBooleanVariables(std::vector<TNode>& outputVariables) const { @@ -229,10 +227,9 @@ SatLiteral CnfStream::convertAtom(TNode node) { } SatLiteral CnfStream::getLiteral(TNode node) { - NodeToLiteralMap::iterator find = d_nodeToLiteralMap.find(node); Assert(!node.isNull(), "CnfStream: can't getLiteral() of null node"); - Assert(find != d_nodeToLiteralMap.end(), "Literal not in the CNF Cache: %s\n", node.toString().c_str()); - SatLiteral literal = (*find).second; + Assert(d_nodeToLiteralMap.contains(node), "Literal not in the CNF Cache: %s\n", node.toString().c_str()); + SatLiteral literal = d_nodeToLiteralMap[node]; Debug("cnf") << "CnfStream::getLiteral(" << node << ") => " << literal << std::endl; return literal; } diff --git a/src/prop/cnf_stream.h b/src/prop/cnf_stream.h index 6ab639712..042cccd56 100644 --- a/src/prop/cnf_stream.h +++ b/src/prop/cnf_stream.h @@ -29,6 +29,7 @@ #include "prop/theory_proxy.h" #include "prop/registrar.h" #include "context/cdlist.h" +#include "context/cdinsert_hashmap.h" #include <ext/hash_map> @@ -47,10 +48,10 @@ class CnfStream { public: /** Cache of what nodes have been registered to a literal. */ - typedef context::CDHashMap<SatLiteral, TNode, SatLiteralHashFunction> LiteralToNodeMap; + typedef context::CDInsertHashMap<SatLiteral, TNode, SatLiteralHashFunction> LiteralToNodeMap; /** Cache of what literals have been registered to a node. */ - typedef context::CDHashMap<Node, SatLiteral, NodeHashFunction> NodeToLiteralMap; + typedef context::CDInsertHashMap<Node, SatLiteral, NodeHashFunction> NodeToLiteralMap; protected: diff --git a/src/prop/sat_solver.h b/src/prop/sat_solver.h index e5d876b48..b4807b021 100644 --- a/src/prop/sat_solver.h +++ b/src/prop/sat_solver.h @@ -130,8 +130,6 @@ public: };/* class DPLLSatSolverInterface */ -}/* CVC4::prop namespace */ - inline std::ostream& operator <<(std::ostream& out, prop::SatLiteral lit) { out << lit.toString(); return out; @@ -167,6 +165,7 @@ inline std::ostream& operator <<(std::ostream& out, prop::SatValue val) { return out; } +}/* CVC4::prop namespace */ }/* CVC4 namespace */ #endif /* __CVC4__PROP__SAT_MODULE_H */ diff --git a/src/smt/options_handlers.h b/src/smt/options_handlers.h index a3065f29b..a0a6429a8 100644 --- a/src/smt/options_handlers.h +++ b/src/smt/options_handlers.h @@ -23,6 +23,7 @@ #include "util/dump.h" #include "smt/modal_exception.h" #include "smt/smt_engine.h" +#include "lib/strtok_r.h" #include <cerrno> #include <cstring> diff --git a/src/smt/smt_engine.cpp b/src/smt/smt_engine.cpp index 1d98ce115..0f0012971 100644 --- a/src/smt/smt_engine.cpp +++ b/src/smt/smt_engine.cpp @@ -36,6 +36,7 @@ #include "expr/metakind.h" #include "expr/node_builder.h" #include "expr/node.h" +#include "expr/node_self_iterator.h" #include "prop/prop_engine.h" #include "smt/modal_exception.h" #include "smt/smt_engine.h" @@ -111,7 +112,11 @@ struct SmtEngineStatistics { TimerStat d_rewriteBooleanTermsTime; /** time spent in non-clausal simplification */ TimerStat d_nonclausalSimplificationTime; - /** Num of constant propagations found during nonclausal simp */ + /** time spent in miplib pass */ + TimerStat d_miplibPassTime; + /** number of assertions removed by miplib pass */ + IntStat d_numMiplibAssertionsRemoved; + /** number of constant propagations found during nonclausal simp */ IntStat d_numConstantProps; /** time spent in static learning */ TimerStat d_staticLearningTime; @@ -136,6 +141,8 @@ struct SmtEngineStatistics { d_definitionExpansionTime("smt::SmtEngine::definitionExpansionTime"), d_rewriteBooleanTermsTime("smt::SmtEngine::rewriteBooleanTermsTime"), d_nonclausalSimplificationTime("smt::SmtEngine::nonclausalSimplificationTime"), + d_miplibPassTime("smt::SmtEngine::miplibPassTime"), + d_numMiplibAssertionsRemoved("smt::SmtEngine::numMiplibAssertionsRemoved", 0), d_numConstantProps("smt::SmtEngine::numConstantProps", 0), d_staticLearningTime("smt::SmtEngine::staticLearningTime"), d_simpITETime("smt::SmtEngine::simpITETime"), @@ -150,6 +157,8 @@ struct SmtEngineStatistics { StatisticsRegistry::registerStat(&d_definitionExpansionTime); StatisticsRegistry::registerStat(&d_rewriteBooleanTermsTime); StatisticsRegistry::registerStat(&d_nonclausalSimplificationTime); + StatisticsRegistry::registerStat(&d_miplibPassTime); + StatisticsRegistry::registerStat(&d_numMiplibAssertionsRemoved); StatisticsRegistry::registerStat(&d_numConstantProps); StatisticsRegistry::registerStat(&d_staticLearningTime); StatisticsRegistry::registerStat(&d_simpITETime); @@ -166,6 +175,8 @@ struct SmtEngineStatistics { StatisticsRegistry::unregisterStat(&d_definitionExpansionTime); StatisticsRegistry::unregisterStat(&d_rewriteBooleanTermsTime); StatisticsRegistry::unregisterStat(&d_nonclausalSimplificationTime); + StatisticsRegistry::unregisterStat(&d_miplibPassTime); + StatisticsRegistry::unregisterStat(&d_numMiplibAssertionsRemoved); StatisticsRegistry::unregisterStat(&d_numConstantProps); StatisticsRegistry::unregisterStat(&d_staticLearningTime); StatisticsRegistry::unregisterStat(&d_simpITETime); @@ -210,6 +221,8 @@ class SmtEnginePrivate : public NodeManagerListener { /** A circuit propagator for non-clausal propositional deduction */ booleans::CircuitPropagator d_propagator; + bool d_propagatorNeedsFinish; + std::vector<Node> d_boolVars; /** Assertions to push to sat */ vector<Node> d_assertionsToCheck; @@ -333,6 +346,14 @@ private: void constrainSubtypes(TNode n, std::vector<Node>& assertions) throw(); + // trace nodes back to their assertions using CircuitPropagator's BackEdgesMap + void traceBackToAssertions(const std::vector<Node>& nodes, std::vector<TNode>& assertions); + // remove conjuncts in toRemove from conjunction n; return # of removed conjuncts + size_t removeFromConjunction(Node& n, const std::hash_set<unsigned>& toRemove); + + // scrub miplib encodings + void doMiplibTrick(); + /** * Perform non-clausal simplification of a Node. This involves * Theory implementations, but does NOT involve the SAT solver in @@ -351,6 +372,7 @@ public: d_realAssertionsEnd(0), d_booleanTermConverter(d_smt), d_propagator(d_nonClausalLearnedLiterals, true, true), + d_propagatorNeedsFinish(false), d_assertionsToCheck(), d_fakeContext(), d_abstractValueMap(&d_fakeContext), @@ -365,6 +387,13 @@ public: d_smt.d_nodeManager->subscribeEvents(this); } + ~SmtEnginePrivate() { + if(d_propagatorNeedsFinish) { + d_propagator.finish(); + d_propagatorNeedsFinish = false; + } + } + void nmNotifyNewSort(TypeNode tn) { DeclareTypeCommand c(tn.getAttribute(expr::VarNameAttr()), 0, @@ -389,6 +418,9 @@ public: n.toExpr(), n.getType().toType()); d_smt.addToModelCommandAndDump(c, isGlobal); + if(n.getType().isBoolean() && !options::incrementalSolving()) { + d_boolVars.push_back(n); + } } void nmNotifyNewSkolem(TNode n, const std::string& comment, bool isGlobal) { @@ -400,6 +432,9 @@ public: Dump("skolems") << CommentCommand(id + " is " + comment); } d_smt.addToModelCommandAndDump(c, isGlobal, false, "skolems"); + if(n.getType().isBoolean() && !options::incrementalSolving()) { + d_boolVars.push_back(n); + } } Node applySubstitutions(TNode node) const { @@ -1558,6 +1593,10 @@ bool SmtEnginePrivate::nonClausalSimplify() { Trace("simplify") << "SmtEnginePrivate::nonClausalSimplify()" << endl; + if(d_propagatorNeedsFinish) { + d_propagator.finish(); + d_propagatorNeedsFinish = false; + } d_propagator.initialize(); // Assert all the assertions to the propagator @@ -1577,7 +1616,7 @@ bool SmtEnginePrivate::nonClausalSimplify() { << "conflict in non-clausal propagation" << endl; d_assertionsToPreprocess.clear(); d_assertionsToCheck.push_back(NodeManager::currentNM()->mkConst<bool>(false)); - d_propagator.finish(); + d_propagatorNeedsFinish = true; return false; } @@ -1612,7 +1651,7 @@ bool SmtEnginePrivate::nonClausalSimplify() { << d_nonClausalLearnedLiterals[i] << endl; d_assertionsToPreprocess.clear(); d_assertionsToCheck.push_back(NodeManager::currentNM()->mkConst<bool>(false)); - d_propagator.finish(); + d_propagatorNeedsFinish = true; return false; } } @@ -1644,7 +1683,7 @@ bool SmtEnginePrivate::nonClausalSimplify() { << learnedLiteral << endl; d_assertionsToPreprocess.clear(); d_assertionsToCheck.push_back(NodeManager::currentNM()->mkConst<bool>(false)); - d_propagator.finish(); + d_propagatorNeedsFinish = true; return false; default: if (d_doConstantProp && learnedLiteral.getKind() == kind::EQUAL && (learnedLiteral[0].isConst() || learnedLiteral[1].isConst())) { @@ -1812,7 +1851,7 @@ bool SmtEnginePrivate::nonClausalSimplify() { Rewriter::rewrite(Node(learnedBuilder)); } - d_propagator.finish(); + d_propagatorNeedsFinish = true; return true; } @@ -1894,6 +1933,366 @@ void SmtEnginePrivate::constrainSubtypes(TNode top, std::vector<Node>& assertion } while(! worklist.empty()); } +void SmtEnginePrivate::traceBackToAssertions(const std::vector<Node>& nodes, std::vector<TNode>& assertions) { + const booleans::CircuitPropagator::BackEdgesMap& backEdges = d_propagator.getBackEdges(); + for(vector<Node>::const_iterator i = nodes.begin(); i != nodes.end(); ++i) { + booleans::CircuitPropagator::BackEdgesMap::const_iterator j = backEdges.find(*i); + // term must appear in map, otherwise how did we get here?! + Assert(j != backEdges.end()); + // if term maps to empty, that means it's a top-level assertion + if(!(*j).second.empty()) { + traceBackToAssertions((*j).second, assertions); + } else { + assertions.push_back(*i); + } + } +} + +size_t SmtEnginePrivate::removeFromConjunction(Node& n, const std::hash_set<unsigned>& toRemove) { + Assert(n.getKind() == kind::AND); + Node trueNode = NodeManager::currentNM()->mkConst(true); + size_t removals = 0; + for(Node::iterator j = n.begin(); j != n.end(); ++j) { + size_t subremovals = 0; + Node sub = *j; + if(toRemove.find(sub.getId()) != toRemove.end() || + (sub.getKind() == kind::AND && (subremovals = removeFromConjunction(sub, toRemove)) > 0)) { + NodeBuilder<> b(kind::AND); + b.append(n.begin(), j); + if(subremovals > 0) { + removals += subremovals; + b << sub; + } else { + ++removals; + } + for(++j; j != n.end(); ++j) { + if(toRemove.find((*j).getId()) != toRemove.end()) { + ++removals; + } else if((*j).getKind() == kind::AND) { + sub = *j; + if((subremovals = removeFromConjunction(sub, toRemove)) > 0) { + removals += subremovals; + b << sub; + } else { + b << *j; + } + } else { + b << *j; + } + } + if(b.getNumChildren() == 0) { + n = trueNode; + b.clear(); + } else if(b.getNumChildren() == 1) { + n = b[0]; + b.clear(); + } else { + n = b; + } + n = Rewriter::rewrite(n); + return removals; + } + } + + Assert(removals == 0); + return 0; +} + +void SmtEnginePrivate::doMiplibTrick() { + Assert(d_assertionsToPreprocess.empty()); + Assert(d_realAssertionsEnd == d_assertionsToCheck.size()); + Assert(!options::incrementalSolving()); + + const booleans::CircuitPropagator::BackEdgesMap& backEdges = d_propagator.getBackEdges(); + hash_set<unsigned> removeAssertions; + + NodeManager* nm = NodeManager::currentNM(); + Node zero = nm->mkConst(Rational(0)), one = nm->mkConst(Rational(1)); + + hash_map<TNode, Node, TNodeHashFunction> intVars; + for(vector<Node>::const_iterator i = d_boolVars.begin(); i != d_boolVars.end(); ++i) { + if(d_propagator.isAssigned(*i)) { + Debug("miplib") << "ineligible: " << *i << " because assigned " << d_propagator.getAssignment(*i) << endl; + continue; + } + + vector<TNode> assertions; + booleans::CircuitPropagator::BackEdgesMap::const_iterator j = backEdges.find(*i); + // if not in back edges map, the bool var is unconstrained, showing up in no assertions. + // if maps to an empty vector, that means the bool var was asserted itself. + if(j != backEdges.end()) { + if(!(*j).second.empty()) { + traceBackToAssertions((*j).second, assertions); + } else { + assertions.push_back(*i); + } + } + Debug("miplib") << "for " << *i << endl; + bool eligible = true; + map<pair<Node, Node>, uint64_t> marks; + map<pair<Node, Node>, vector<Rational> > coef; + map<pair<Node, Node>, vector<Rational> > checks; + map<pair<Node, Node>, vector<TNode> > asserts; + for(vector<TNode>::const_iterator j = assertions.begin(); j != assertions.end(); ++j) { + Debug("miplib") << " found: " << *j << endl; + if((*j).getKind() != kind::IMPLIES) { + eligible = false; + Debug("miplib") << " -- INELIGIBLE -- (not =>)" << endl; + break; + } + Node conj = BooleanSimplification::simplify((*j)[0]); + if(conj.getKind() == kind::AND && conj.getNumChildren() > 6) { + eligible = false; + Debug("miplib") << " -- INELIGIBLE -- (N-ary /\\ too big)" << endl; + break; + } + if(conj.getKind() != kind::AND && !conj.isVar() && !(conj.getKind() == kind::NOT && conj[0].isVar())) { + eligible = false; + Debug("miplib") << " -- INELIGIBLE -- (not /\\ or literal)" << endl; + break; + } + if((*j)[1].getKind() != kind::EQUAL || + !( ( (*j)[1][0].isVar() && + (*j)[1][1].getKind() == kind::CONST_RATIONAL ) || + ( (*j)[1][0].getKind() == kind::CONST_RATIONAL && + (*j)[1][1].isVar() ) )) { + eligible = false; + Debug("miplib") << " -- INELIGIBLE -- (=> (and X X) X)" << endl; + break; + } + if(conj.getKind() == kind::AND) { + vector<Node> posv; + bool found_x = false; + map<TNode, bool> neg; + for(Node::iterator ii = conj.begin(); ii != conj.end(); ++ii) { + if((*ii).isVar()) { + posv.push_back(*ii); + neg[*ii] = false; + found_x = found_x || *i == *ii; + } else if((*ii).getKind() == kind::NOT && (*ii)[0].isVar()) { + posv.push_back((*ii)[0]); + neg[(*ii)[0]] = true; + found_x = found_x || *i == (*ii)[0]; + } else { + eligible = false; + Debug("miplib") << " -- INELIGIBLE -- (non-var: " << *ii << ")" << endl; + break; + } + if(d_propagator.isAssigned(posv.back())) { + eligible = false; + Debug("miplib") << " -- INELIGIBLE -- (" << posv.back() << " asserted)" << endl; + break; + } + } + if(!eligible) { + break; + } + if(!found_x) { + eligible = false; + Debug("miplib") << " --INELIGIBLE -- (couldn't find " << *i << " in conjunction)" << endl; + break; + } + sort(posv.begin(), posv.end()); + const Node pos = NodeManager::currentNM()->mkNode(kind::AND, posv); + const TNode var = ((*j)[1][0].getKind() == kind::CONST_RATIONAL) ? (*j)[1][1] : (*j)[1][0]; + const pair<Node, Node> pos_var(pos, var); + const Rational& constant = ((*j)[1][0].getKind() == kind::CONST_RATIONAL) ? (*j)[1][0].getConst<Rational>() : (*j)[1][1].getConst<Rational>(); + uint64_t mark = 0; + unsigned countneg = 0, thepos = 0; + for(unsigned ii = 0; ii < pos.getNumChildren(); ++ii) { + if(neg[pos[ii]]) { + ++countneg; + } else { + thepos = ii; + mark |= (0x1 << ii); + } + } + if((marks[pos_var] & (1lu << mark)) != 0) { + eligible = false; + Debug("miplib") << " -- INELIGIBLE -- (remarked)" << endl; + break; + } + Debug("miplib") << "mark is " << mark << " -- " << (1lu << mark) << endl; + marks[pos_var] |= (1lu << mark); + Debug("miplib") << "marks[" << pos << "," << var << "] now " << marks[pos_var] << endl; + if(countneg == pos.getNumChildren()) { + if(constant != 0) { + eligible = false; + Debug("miplib") << " -- INELIGIBLE -- (nonzero constant)" << endl; + break; + } + } else if(countneg == pos.getNumChildren() - 1) { + Assert(coef[pos_var].size() <= 6 && thepos < 6); + coef[pos_var].resize(6); + coef[pos_var][thepos] = constant; + } else { + if(checks[pos_var].size() <= mark) { + checks[pos_var].resize(mark + 1); + } + checks[pos_var][mark] = constant; + } + asserts[pos_var].push_back(*j); + } else { + TNode x = conj; + if(x != *i && x != (*i).notNode()) { + eligible = false; + Debug("miplib") << " -- INELIGIBLE -- (x not present where I expect it)" << endl; + break; + } + const bool xneg = (x.getKind() == kind::NOT); + x = xneg ? x[0] : x; + Debug("miplib") << " x:" << x << " " << xneg << endl; + const TNode var = ((*j)[1][0].getKind() == kind::CONST_RATIONAL) ? (*j)[1][1] : (*j)[1][0]; + const pair<Node, Node> x_var(x, var); + const Rational& constant = ((*j)[1][0].getKind() == kind::CONST_RATIONAL) ? (*j)[1][0].getConst<Rational>() : (*j)[1][1].getConst<Rational>(); + unsigned mark = (xneg ? 0 : 1); + if((marks[x_var] & (1u << mark)) != 0) { + eligible = false; + Debug("miplib") << " -- INELIGIBLE -- (remarked)" << endl; + break; + } + marks[x_var] |= (1u << mark); + if(xneg) { + if(constant != 0) { + eligible = false; + Debug("miplib") << " -- INELIGIBLE -- (nonzero constant)" << endl; + break; + } + } else { + Assert(coef[x_var].size() <= 6); + coef[x_var].resize(6); + coef[x_var][0] = constant; + if(checks[x_var].size() <= mark) { + checks[x_var].resize(mark + 1); + } + checks[x_var][mark] = constant; + } + asserts[x_var].push_back(*j); + } + } + if(eligible) { + for(map<pair<Node, Node>, uint64_t>::const_iterator j = marks.begin(); j != marks.end(); ++j) { + const TNode pos = (*j).first.first; + const TNode var = (*j).first.second; + const pair<Node, Node>& pos_var = (*j).first; + const uint64_t mark = (*j).second; + const unsigned numVars = pos.getKind() == kind::AND ? pos.getNumChildren() : 1; + uint64_t expected = (uint64_t(1) << (1 << numVars)) - 1; + expected = (expected == 0) ? -1 : expected;// fix for overflow + Debug("miplib") << "[" << pos << "] => " << hex << mark << " expect " << expected << dec << endl; + Assert(pos.getKind() == kind::AND || pos.isVar()); + if(mark != expected) { + Debug("miplib") << " -- INELIGIBLE " << pos << " -- (insufficiently marked, got " << mark << " for " << numVars << " vars, expected " << expected << endl; + } else { + if(false) { //checks[pos] != coef[pos][0] + coef[pos][1]) { + Debug("miplib") << " -- INELIGIBLE " << pos << " -- (not linear combination)" << endl; + } else { + Debug("miplib") << " -- ELIGIBLE " << *i << " , " << pos << " --" << endl; + vector<Node> newVars; + expr::NodeSelfIterator ii, iiend; + if(pos.getKind() == kind::AND) { + ii = pos.begin(); + iiend = pos.end(); + } else { + ii = expr::NodeSelfIterator::self(pos); + iiend = expr::NodeSelfIterator::selfEnd(pos); + } + for(; ii != iiend; ++ii) { + Node& varRef = intVars[*ii]; + if(varRef.isNull()) { + stringstream ss; + ss << "mipvar_" << *ii; + Node newVar = nm->mkSkolem(ss.str(), nm->integerType(), "a variable introduced due to scrubbing a miplib encoding", NodeManager::SKOLEM_EXACT_NAME); + Node geq = Rewriter::rewrite(nm->mkNode(kind::GEQ, newVar, zero)); + Node leq = Rewriter::rewrite(nm->mkNode(kind::LEQ, newVar, one)); + d_assertionsToCheck.push_back(Rewriter::rewrite(geq.andNode(leq))); + SubstitutionMap nullMap(&d_fakeContext); + Theory::PPAssertStatus status CVC4_UNUSED;// just for assertions + status = d_smt.d_theoryEngine->solve(geq, nullMap); + Assert(status == Theory::PP_ASSERT_STATUS_UNSOLVED, + "unexpected solution from arith's ppAssert()"); + Assert(nullMap.empty(), + "unexpected substitution from arith's ppAssert()"); + status = d_smt.d_theoryEngine->solve(leq, nullMap); + Assert(status == Theory::PP_ASSERT_STATUS_UNSOLVED, + "unexpected solution from arith's ppAssert()"); + Assert(nullMap.empty(), + "unexpected substitution from arith's ppAssert()"); + d_smt.d_theoryEngine->getModel()->addSubstitution(*ii, newVar.eqNode(one)); + newVars.push_back(newVar); + varRef = newVar; + } else { + newVars.push_back(varRef); + } + if(!d_smt.d_logic.areIntegersUsed()) { + d_smt.d_logic = d_smt.d_logic.getUnlockedCopy(); + d_smt.d_logic.enableIntegers(); + d_smt.d_logic.lock(); + } + } + Node sum; + if(pos.getKind() == kind::AND) { + NodeBuilder<> sumb(kind::PLUS); + for(size_t ii = 0; ii < pos.getNumChildren(); ++ii) { + sumb << nm->mkNode(kind::MULT, nm->mkConst(coef[pos_var][ii]), newVars[ii]); + } + sum = sumb; + } else { + sum = nm->mkNode(kind::MULT, nm->mkConst(coef[pos_var][0]), newVars[0]); + } + Debug("miplib") << "vars[] " << var << endl + << " eq " << Rewriter::rewrite(sum) << endl; + Node newAssertion = var.eqNode(Rewriter::rewrite(sum)); + if(d_topLevelSubstitutions.hasSubstitution(newAssertion[0])) { + //Warning() << "RE-SUBSTITUTION " << newAssertion[0] << endl; + //Warning() << "REPLACE " << newAssertion[1] << endl; + //Warning() << "ORIG " << d_topLevelSubstitutions.getSubstitution(newAssertion[0]) << endl; + Assert(d_topLevelSubstitutions.getSubstitution(newAssertion[0]) == newAssertion[1]); + } else if(pos.getNumChildren() <= options::arithMLTrickSubstitutions()) { + d_topLevelSubstitutions.addSubstitution(newAssertion[0], newAssertion[1]); + Debug("miplib") << "addSubs: " << newAssertion[0] << " to " << newAssertion[1] << endl; + } else { + Debug("miplib") << "skipSubs: " << newAssertion[0] << " to " << newAssertion[1] << " (threshold is " << options::arithMLTrickSubstitutions() << ")" << endl; + } + newAssertion = Rewriter::rewrite(newAssertion); + Debug("miplib") << " " << newAssertion << endl; + d_assertionsToCheck.push_back(newAssertion); + Debug("miplib") << " assertions to remove: " << endl; + for(vector<TNode>::const_iterator k = asserts[pos_var].begin(), k_end = asserts[pos_var].end(); k != k_end; ++k) { + Debug("miplib") << " " << *k << endl; + removeAssertions.insert((*k).getId()); + } + } + } + } + } + } + if(!removeAssertions.empty()) { + Debug("miplib") << "SmtEnginePrivate::simplify(): scrubbing miplib encoding..." << endl; + Node trueNode = nm->mkConst(true); + for(size_t i = 0; i < d_realAssertionsEnd; ++i) { + if(removeAssertions.find(d_assertionsToCheck[i].getId()) != removeAssertions.end()) { + Debug("miplib") << "SmtEnginePrivate::simplify(): - removing " << d_assertionsToCheck[i] << endl; + d_assertionsToCheck[i] = trueNode; + ++d_smt.d_stats->d_numMiplibAssertionsRemoved; + } else if(d_assertionsToCheck[i].getKind() == kind::AND) { + size_t removals = removeFromConjunction(d_assertionsToCheck[i], removeAssertions); + if(removals > 0) { + Debug("miplib") << "SmtEnginePrivate::simplify(): - reduced " << d_assertionsToCheck[i] << endl; + Debug("miplib") << "SmtEnginePrivate::simplify(): - by " << removals << " conjuncts" << endl; + d_smt.d_stats->d_numMiplibAssertionsRemoved += removals; + } + } + Debug("miplib") << "had: " << d_assertionsToCheck[i] << endl; + d_assertionsToCheck[i] = Rewriter::rewrite(d_topLevelSubstitutions.apply(d_assertionsToCheck[i])); + Debug("miplib") << "now: " << d_assertionsToCheck[i] << endl; + } + } else { + Debug("miplib") << "SmtEnginePrivate::simplify(): miplib pass found nothing." << endl; + } + d_realAssertionsEnd = d_assertionsToCheck.size(); +} + // returns false if simplification led to "false" bool SmtEnginePrivate::simplifyAssertions() throw(TypeCheckingException, LogicException) { @@ -1904,10 +2303,37 @@ bool SmtEnginePrivate::simplifyAssertions() if(options::simplificationMode() != SIMPLIFICATION_MODE_NONE) { // Perform non-clausal simplification + Chat() << "...performing nonclausal simplification..." << endl; Trace("simplify") << "SmtEnginePrivate::simplify(): " << "performing non-clausal simplification" << endl; bool noConflict = nonClausalSimplify(); - if(!noConflict) return false; + if(!noConflict) { + return false; + } + + // We piggy-back off of the BackEdgesMap in the CircuitPropagator to + // do the miplib trick. + if( // check that option is on + options::arithMLTrick() && + // miplib rewrites aren't safe in incremental mode + ! options::incrementalSolving() && + // only useful in arith + d_smt.d_logic.isTheoryEnabled(theory::THEORY_ARITH) && + // we add new assertions and need this (in practice, this + // restriction only disables miplib processing during + // re-simplification, which we don't expect to be useful anyway) + d_realAssertionsEnd == d_assertionsToCheck.size() ) { + Chat() << "...fixing miplib encodings..." << endl; + Trace("simplify") << "SmtEnginePrivate::simplify(): " + << "looking for miplib pseudobooleans..." << endl; + + TimerStat::CodeTimer miplibTimer(d_smt.d_stats->d_miplibPassTime); + + doMiplibTrick(); + } else { + Trace("simplify") << "SmtEnginePrivate::simplify(): " + << "skipping miplib pseudobooleans pass (either incrementalSolving is on, or miplib pbs are turned off)..." << endl; + } } else { Assert(d_assertionsToCheck.empty()); d_assertionsToCheck.swap(d_assertionsToPreprocess); @@ -1919,6 +2345,7 @@ bool SmtEnginePrivate::simplifyAssertions() // Theory preprocessing if (d_smt.d_earlyTheoryPP) { + Chat() << "...doing early theory preprocessing..." << endl; TimerStat::CodeTimer codeTimer(d_smt.d_stats->d_theoryPreprocessTime); // Call the theory preprocessors d_smt.d_theoryEngine->preprocessStart(); @@ -1935,6 +2362,7 @@ bool SmtEnginePrivate::simplifyAssertions() // ITE simplification if(options::doITESimp()) { + Chat() << "...doing ITE simplification..." << endl; simpITE(); } @@ -1944,6 +2372,7 @@ bool SmtEnginePrivate::simplifyAssertions() // Unconstrained simplification if(options::unconstrainedSimp()) { + Chat() << "...doing unconstrained simplification..." << endl; unconstrainedSimp(); } @@ -1952,6 +2381,7 @@ bool SmtEnginePrivate::simplifyAssertions() Debug("smt") << " d_assertionsToCheck : " << d_assertionsToCheck.size() << endl; if(options::repeatSimp() && options::simplificationMode() != SIMPLIFICATION_MODE_NONE) { + Chat() << "...doing another round of nonclausal simplification..." << endl; Trace("simplify") << "SmtEnginePrivate::simplify(): " << " doing repeated simplification" << std::endl; d_assertionsToCheck.swap(d_assertionsToPreprocess); @@ -2012,6 +2442,7 @@ Result SmtEngine::check() { resource = d_resourceBudgetPerCall; } + Chat() << "solving..." << endl; Trace("smt") << "SmtEngine::check(): running check" << endl; Result result = d_propEngine->checkSat(millis, resource); @@ -2209,8 +2640,7 @@ void SmtEnginePrivate::processAssertions() { if( options::sortInference() ){ //sort inference technique - SortInference si; - si.simplify( d_assertionsToPreprocess ); + d_smt.d_theoryEngine->getSortInference()->simplify( d_assertionsToPreprocess ); } dumpAssertions("pre-simplify", d_assertionsToPreprocess); @@ -2242,7 +2672,7 @@ void SmtEnginePrivate::processAssertions() { dumpAssertions("pre-repeat-simplify", d_assertionsToCheck); if(options::repeatSimp()) { d_assertionsToCheck.swap(d_assertionsToPreprocess); - Chat() << "simplifying assertions..." << endl; + Chat() << "re-simplifying assertions..." << endl; noConflict &= simplifyAssertions(); if (noConflict) { // Need to fix up assertion list to maintain invariants: diff --git a/src/smt/smt_engine.h b/src/smt/smt_engine.h index 3edcd6872..cdae68d96 100644 --- a/src/smt/smt_engine.h +++ b/src/smt/smt_engine.h @@ -47,7 +47,7 @@ namespace CVC4 { template <bool ref_count> class NodeTemplate; typedef NodeTemplate<true> Node; typedef NodeTemplate<false> TNode; -class NodeHashFunction; +struct NodeHashFunction; class Command; class GetModelCommand; @@ -77,7 +77,7 @@ namespace smt { */ class DefinedFunction; - class SmtEngineStatistics; + struct SmtEngineStatistics; class SmtEnginePrivate; class SmtScope; class BooleanTermConverter; diff --git a/src/theory/arith/Makefile.am b/src/theory/arith/Makefile.am index b2d1b9f09..76d8d9083 100644 --- a/src/theory/arith/Makefile.am +++ b/src/theory/arith/Makefile.am @@ -9,6 +9,7 @@ libarith_la_SOURCES = \ theory_arith_type_rules.h \ type_enumerator.h \ arithvar.h \ + arithvar.cpp \ arith_rewriter.h \ arith_rewriter.cpp \ arith_static_learner.h \ diff --git a/src/theory/arith/arith_static_learner.cpp b/src/theory/arith/arith_static_learner.cpp index 5b8d3befc..124fa8e2a 100644 --- a/src/theory/arith/arith_static_learner.cpp +++ b/src/theory/arith/arith_static_learner.cpp @@ -19,8 +19,7 @@ #include "theory/arith/arith_utilities.h" #include "theory/arith/arith_static_learner.h" - -#include "util/propositional_query.h" +#include "theory/arith/options.h" #include "expr/expr.h" #include "expr/convenience_node_builders.h" @@ -36,7 +35,6 @@ namespace arith { ArithStaticLearner::ArithStaticLearner(context::Context* userContext) : - d_miplibTrick(userContext), d_minMap(userContext), d_maxMap(userContext), d_statistics() @@ -44,21 +42,15 @@ ArithStaticLearner::ArithStaticLearner(context::Context* userContext) : ArithStaticLearner::Statistics::Statistics(): d_iteMinMaxApplications("theory::arith::iteMinMaxApplications", 0), - d_iteConstantApplications("theory::arith::iteConstantApplications", 0), - d_miplibtrickApplications("theory::arith::miplibtrickApplications", 0), - d_avgNumMiplibtrickValues("theory::arith::avgNumMiplibtrickValues") + d_iteConstantApplications("theory::arith::iteConstantApplications", 0) { StatisticsRegistry::registerStat(&d_iteMinMaxApplications); StatisticsRegistry::registerStat(&d_iteConstantApplications); - StatisticsRegistry::registerStat(&d_miplibtrickApplications); - StatisticsRegistry::registerStat(&d_avgNumMiplibtrickValues); } ArithStaticLearner::Statistics::~Statistics(){ StatisticsRegistry::unregisterStat(&d_iteMinMaxApplications); StatisticsRegistry::unregisterStat(&d_iteConstantApplications); - StatisticsRegistry::unregisterStat(&d_miplibtrickApplications); - StatisticsRegistry::unregisterStat(&d_avgNumMiplibtrickValues); } void ArithStaticLearner::staticLearning(TNode n, NodeBuilder<>& learned){ @@ -103,8 +95,6 @@ void ArithStaticLearner::staticLearning(TNode n, NodeBuilder<>& learned){ process(n,learned, defTrue); } - - postProcess(learned); } @@ -126,27 +116,10 @@ void ArithStaticLearner::process(TNode n, NodeBuilder<>& learned, const TNodeSet iteConstant(n, learned); } break; - case IMPLIES: - // == 3-FINITE VALUE SET : Collect information == - if(n[1].getKind() == EQUAL && - n[1][0].isVar() && - defTrue.find(n) != defTrue.end()){ - Node eqTo = n[1][1]; - Node rewriteEqTo = Rewriter::rewrite(eqTo); - if(rewriteEqTo.getKind() == CONST_RATIONAL){ - - TNode var = n[1][0]; - Node current = (d_miplibTrick.find(var) == d_miplibTrick.end()) ? - mkBoolNode(false) : d_miplibTrick[var]; - d_miplibTrick.insert(var, n.orNode(current)); - Debug("arith::miplib") << "insert " << var << " const " << n << endl; - } - } - break; case CONST_RATIONAL: // Mark constants as minmax - d_minMap[n] = n.getConst<Rational>(); - d_maxMap[n] = n.getConst<Rational>(); + d_minMap.insert(n, n.getConst<Rational>()); + d_maxMap.insert(n, n.getConst<Rational>()); break; case OR: { // Look for things like "x = 0 OR x = 1" (that are defTrue) and @@ -248,7 +221,7 @@ void ArithStaticLearner::iteConstant(TNode n, NodeBuilder<>& learned){ DeltaRational min = std::min(first, second); CDNodeToMinMaxMap::const_iterator minFind = d_minMap.find(n); if (minFind == d_minMap.end() || (*minFind).second < min) { - d_minMap[n] = min; + d_minMap.insert(n, min); Node nGeqMin; if (min.getInfinitesimalPart() == 0) { nGeqMin = NodeBuilder<2>(kind::GEQ) << n << mkRationalNode(min.getNoninfinitesimalPart()); @@ -267,7 +240,7 @@ void ArithStaticLearner::iteConstant(TNode n, NodeBuilder<>& learned){ DeltaRational max = std::max(first, second); CDNodeToMinMaxMap::const_iterator maxFind = d_maxMap.find(n); if (maxFind == d_maxMap.end() || (*maxFind).second > max) { - d_maxMap[n] = max; + d_maxMap.insert(n, max); Node nLeqMax; if (max.getInfinitesimalPart() == 0) { nLeqMax = NodeBuilder<2>(kind::LEQ) << n << mkRationalNode(max.getNoninfinitesimalPart()); @@ -291,99 +264,6 @@ std::set<Node> listToSet(TNode l){ return ret; } -void ArithStaticLearner::postProcess(NodeBuilder<>& learned){ - // == 3-FINITE VALUE SET == - CDNodeToNodeListMap::const_iterator keyIter = d_miplibTrick.begin(); - CDNodeToNodeListMap::const_iterator endKeys = d_miplibTrick.end(); - while(keyIter != endKeys) { - TNode var = (*keyIter).first; - Node list = (*keyIter).second; - const set<Node> imps = listToSet(list); - - if(imps.empty()){ - ++keyIter; - continue; - } - - Assert(!imps.empty()); - vector<Node> conditions; - set<Rational> values; - set<Node>::const_iterator j=imps.begin(), impsEnd=imps.end(); - for(; j != impsEnd; ++j){ - TNode imp = *j; - Assert(imp.getKind() == IMPLIES); - Assert(imp[1].getKind() == EQUAL); - - Node eqTo = imp[1][1]; - Node rewriteEqTo = Rewriter::rewrite(eqTo); - Assert(rewriteEqTo.getKind() == CONST_RATIONAL); - - conditions.push_back(imp[0]); - values.insert(rewriteEqTo.getConst<Rational>()); - } - - Node possibleTaut = Node::null(); - if(conditions.size() == 1){ - possibleTaut = conditions.front(); - }else{ - NodeBuilder<> orBuilder(OR); - orBuilder.append(conditions); - possibleTaut = orBuilder; - } - - - Debug("arith::miplib") << "var: " << var << endl; - Debug("arith::miplib") << "possibleTaut: " << possibleTaut << endl; - - Result isTaut = PropositionalQuery::isTautology(possibleTaut); - if(isTaut == Result(Result::VALID)){ - miplibTrick(var, values, learned); - d_miplibTrick.insert(var, mkBoolNode(false)); - } - ++keyIter; - } -} - - -void ArithStaticLearner::miplibTrick(TNode var, set<Rational>& values, NodeBuilder<>& learned){ - - Debug("arith::miplib") << var << " found a tautology!"<< endl; - - const Rational& min = *(values.begin()); - const Rational& max = *(values.rbegin()); - - Debug("arith::miplib") << "min: " << min << endl; - Debug("arith::miplib") << "max: " << max << endl; - - Assert(min <= max); - ++(d_statistics.d_miplibtrickApplications); - (d_statistics.d_avgNumMiplibtrickValues).addEntry(values.size()); - - Node nGeqMin = NodeBuilder<2>(GEQ) << var << mkRationalNode(min); - Node nLeqMax = NodeBuilder<2>(LEQ) << var << mkRationalNode(max); - Debug("arith::miplib") << nGeqMin << nLeqMax << endl; - learned << nGeqMin << nLeqMax; - set<Rational>::iterator valuesIter = values.begin(); - set<Rational>::iterator valuesEnd = values.end(); - set<Rational>::iterator valuesPrev = valuesIter; - ++valuesIter; - for(; valuesIter != valuesEnd; valuesPrev = valuesIter, ++valuesIter){ - const Rational& prev = *valuesPrev; - const Rational& curr = *valuesIter; - Assert(prev < curr); - - //The interval (last,curr) can be excluded: - //(not (and (> var prev) (< var curr)) - //<=> (or (not (> var prev)) (not (< var curr))) - //<=> (or (<= var prev) (>= var curr)) - Node leqPrev = NodeBuilder<2>(LEQ) << var << mkRationalNode(prev); - Node geqCurr = NodeBuilder<2>(GEQ) << var << mkRationalNode(curr); - Node excludedMiddle = NodeBuilder<2>(OR) << leqPrev << geqCurr; - Debug("arith::miplib") << excludedMiddle << endl; - learned << excludedMiddle; - } -} - void ArithStaticLearner::addBound(TNode n) { CDNodeToMinMaxMap::const_iterator minFind = d_minMap.find(n[0]); @@ -398,7 +278,7 @@ void ArithStaticLearner::addBound(TNode n) { /* fall through */ case kind::LEQ: if (maxFind == d_maxMap.end() || (*maxFind).second > bound) { - d_maxMap[n[0]] = bound; + d_maxMap.insert(n[0], bound); Debug("arith::static") << "adding bound " << n << endl; } break; @@ -407,7 +287,7 @@ void ArithStaticLearner::addBound(TNode n) { /* fall through */ case kind::GEQ: if (minFind == d_minMap.end() || (*minFind).second < bound) { - d_minMap[n[0]] = bound; + d_minMap.insert(n[0], bound); Debug("arith::static") << "adding bound " << n << endl; } break; diff --git a/src/theory/arith/arith_static_learner.h b/src/theory/arith/arith_static_learner.h index b047018e8..48ee6a3bb 100644 --- a/src/theory/arith/arith_static_learner.h +++ b/src/theory/arith/arith_static_learner.h @@ -27,7 +27,7 @@ #include "context/context.h" #include "context/cdlist.h" -#include "context/cdhashmap.h" +#include "context/cdtrail_hashmap.h" #include <set> namespace CVC4 { @@ -37,21 +37,10 @@ namespace arith { class ArithStaticLearner { private: - /* Maps a variable, x, to the set of defTrue nodes of the form - * (=> _ (= x c)) - * where c is a constant. - */ - //typedef __gnu_cxx::hash_map<Node, std::set<Node>, NodeHashFunction> VarToNodeSetMap; - typedef context::CDHashMap<Node, Node, NodeHashFunction> CDNodeToNodeListMap; - // The domain is an implicit list OR(x, OR(y, ..., FALSE )) - // or FALSE - CDNodeToNodeListMap d_miplibTrick; - /** * Map from a node to it's minimum and maximum. */ - //typedef __gnu_cxx::hash_map<Node, DeltaRational, NodeHashFunction> NodeToMinMaxMap; - typedef context::CDHashMap<Node, DeltaRational, NodeHashFunction> CDNodeToMinMaxMap; + typedef context::CDTrailHashMap<Node, DeltaRational, NodeHashFunction> CDNodeToMinMaxMap; CDNodeToMinMaxMap d_minMap; CDNodeToMinMaxMap d_maxMap; @@ -64,23 +53,15 @@ public: private: void process(TNode n, NodeBuilder<>& learned, const TNodeSet& defTrue); - void postProcess(NodeBuilder<>& learned); - void iteMinMax(TNode n, NodeBuilder<>& learned); void iteConstant(TNode n, NodeBuilder<>& learned); - void miplibTrick(TNode var, std::set<Rational>& values, NodeBuilder<>& learned); - - /** These fields are designed to be accessible to ArithStaticLearner methods. */ class Statistics { public: IntStat d_iteMinMaxApplications; IntStat d_iteConstantApplications; - IntStat d_miplibtrickApplications; - AverageStat d_avgNumMiplibtrickValues; - Statistics(); ~Statistics(); }; diff --git a/src/theory/arith/arith_utilities.h b/src/theory/arith/arith_utilities.h index c7f511a98..76210fc7c 100644 --- a/src/theory/arith/arith_utilities.h +++ b/src/theory/arith/arith_utilities.h @@ -168,59 +168,6 @@ inline int deltaCoeff(Kind k){ } } - -// template <bool selectLeft> -// inline TNode getSide(TNode assertion, Kind simpleKind){ -// switch(simpleKind){ -// case kind::LT: -// case kind::GT: -// case kind::DISTINCT: -// return selectLeft ? (assertion[0])[0] : (assertion[0])[1]; -// case kind::LEQ: -// case kind::GEQ: -// case kind::EQUAL: -// return selectLeft ? assertion[0] : assertion[1]; -// default: -// Unreachable(); -// return TNode::null(); -// } -// } - -// inline DeltaRational determineRightConstant(TNode assertion, Kind simpleKind){ -// TNode right = getSide<false>(assertion, simpleKind); - -// Assert(right.getKind() == kind::CONST_RATIONAL); -// const Rational& noninf = right.getConst<Rational>(); - -// Rational inf = Rational(Integer(deltaCoeff(simpleKind))); -// return DeltaRational(noninf, inf); -// } - -// inline DeltaRational asDeltaRational(TNode n){ -// Kind simp = simplifiedKind(n); -// return determineRightConstant(n, simp); -// } - -// /** -// * Takes two nodes with exactly 2 children, -// * the second child of both are of kind CONST_RATIONAL, -// * and compares value of the two children. -// * This is for comparing inequality nodes. -// * RightHandRationalLT((<= x 50), (< x 75)) == true -// */ -// struct RightHandRationalLT -// { -// bool operator()(TNode s1, TNode s2) const -// { -// TNode rh1 = s1[1]; -// TNode rh2 = s2[1]; -// const Rational& c1 = rh1.getConst<Rational>(); -// const Rational& c2 = rh2.getConst<Rational>(); -// int cmpRes = c1.cmp(c2); -// return cmpRes < 0; -// } -// }; - inline Node negateConjunctionAsClause(TNode conjunction){ Assert(conjunction.getKind() == kind::AND); NodeBuilder<> orBuilder(kind::OR); diff --git a/src/theory/arith/arithvar.cpp b/src/theory/arith/arithvar.cpp new file mode 100644 index 000000000..76b143fff --- /dev/null +++ b/src/theory/arith/arithvar.cpp @@ -0,0 +1,13 @@ + +#include "theory/arith/arithvar.h" +#include <limits> + +namespace CVC4 { +namespace theory { +namespace arith { + +const ArithVar ARITHVAR_SENTINEL = std::numeric_limits<ArithVar>::max(); + +}/* CVC4::theory::arith namespace */ +}/* CVC4::theory namespace */ +}/* CVC4 namespace */ diff --git a/src/theory/arith/arithvar.h b/src/theory/arith/arithvar.h index 7cb6c6e99..95614a011 100644 --- a/src/theory/arith/arithvar.h +++ b/src/theory/arith/arithvar.h @@ -22,24 +22,23 @@ #ifndef __CVC4__THEORY__ARITH__ARITHVAR_H #define __CVC4__THEORY__ARITH__ARITHVAR_H -#include <limits> #include <ext/hash_map> #include "expr/node.h" #include "context/cdhashset.h" -#include "context/cdhashset.h" #include "util/index.h" +#include "util/dense_map.h" namespace CVC4 { namespace theory { namespace arith { typedef Index ArithVar; -const ArithVar ARITHVAR_SENTINEL = std::numeric_limits<ArithVar>::max(); +extern const ArithVar ARITHVAR_SENTINEL; //Maps from Nodes -> ArithVars, and vice versa typedef __gnu_cxx::hash_map<Node, ArithVar, NodeHashFunction> NodeToArithVarMap; -typedef __gnu_cxx::hash_map<ArithVar, Node> ArithVarToNodeMap; +typedef DenseMap<Node> ArithVarToNodeMap; /** * ArithVarCallBack provides a mechanism for agreeing on callbacks while @@ -50,6 +49,16 @@ public: virtual void operator()(ArithVar x) = 0; }; +/** + * Requests arithmetic variables for internal use, + * and releases arithmetic variables that are no longer being used. + */ +class ArithVarMalloc { +public: + virtual ArithVar request() = 0; + virtual void release(ArithVar v) = 0; +}; + class TNodeCallBack { public: virtual void operator()(TNode n) = 0; diff --git a/src/theory/arith/arithvar_node_map.h b/src/theory/arith/arithvar_node_map.h index 3a2cff236..e0e589e57 100644 --- a/src/theory/arith/arithvar_node_map.h +++ b/src/theory/arith/arithvar_node_map.h @@ -40,31 +40,50 @@ private: ArithVarToNodeMap d_arithVarToNodeMap; public: + + typedef ArithVarToNodeMap::const_iterator var_iterator; + ArithVarNodeMap() {} inline bool hasArithVar(TNode x) const { return d_nodeToArithVarMap.find(x) != d_nodeToArithVarMap.end(); } + inline bool hasNode(ArithVar a) const { + return d_arithVarToNodeMap.isKey(a); + } + inline ArithVar asArithVar(TNode x) const{ Assert(hasArithVar(x)); Assert((d_nodeToArithVarMap.find(x))->second <= ARITHVAR_SENTINEL); return (d_nodeToArithVarMap.find(x))->second; } + inline Node asNode(ArithVar a) const{ - Assert(d_arithVarToNodeMap.find(a) != d_arithVarToNodeMap.end()); - return (d_arithVarToNodeMap.find(a))->second; + Assert(hasNode(a)); + return d_arithVarToNodeMap[a]; } inline void setArithVar(TNode x, ArithVar a){ Assert(!hasArithVar(x)); - Assert(d_arithVarToNodeMap.find(a) == d_arithVarToNodeMap.end()); - d_arithVarToNodeMap[a] = x; + Assert(!d_arithVarToNodeMap.isKey(a)); + d_arithVarToNodeMap.set(a, x); d_nodeToArithVarMap[x] = a; } - const ArithVarToNodeMap& getArithVarToNodeMap() const { - return d_arithVarToNodeMap; + inline void remove(ArithVar x){ + Assert(hasNode(x)); + Node node = asNode(x); + + d_nodeToArithVarMap.erase(d_nodeToArithVarMap.find(node)); + d_arithVarToNodeMap.remove(x); + } + + var_iterator var_begin() const { + return d_arithVarToNodeMap.begin(); + } + var_iterator var_end() const { + return d_arithVarToNodeMap.end(); } };/* class ArithVarNodeMap */ diff --git a/src/theory/arith/congruence_manager.cpp b/src/theory/arith/congruence_manager.cpp index 5ee250c09..de4c7eac3 100644 --- a/src/theory/arith/congruence_manager.cpp +++ b/src/theory/arith/congruence_manager.cpp @@ -272,7 +272,7 @@ void ArithCongruenceManager::addWatchedPair(ArithVar s, TNode x, TNode y){ d_watchedVariables.add(s); Node eq = x.eqNode(y); - d_watchedEqualities[s] = eq; + d_watchedEqualities.set(s, eq); } void ArithCongruenceManager::assertionToEqualityEngine(bool isEquality, ArithVar s, TNode reason){ diff --git a/src/theory/arith/constraint.cpp b/src/theory/arith/constraint.cpp index 392d04f6c..cf3aeafee 100644 --- a/src/theory/arith/constraint.cpp +++ b/src/theory/arith/constraint.cpp @@ -371,6 +371,10 @@ void ConstraintValue::setAssertedToTheTheory(TNode witness) { d_database->pushAssertionOrderWatch(this, witness); } +// bool ConstraintValue::isPsuedoConstraint() const { +// return d_proof == d_database->d_psuedoConstraintProof; +// } + bool ConstraintValue::isSelfExplaining() const { return d_proof == d_database->d_selfExplainingProof; } @@ -481,6 +485,9 @@ ConstraintDatabase::ConstraintDatabase(context::Context* satContext, context::Co d_equalityEngineProof = d_proofs.size(); d_proofs.push_back(NullConstraint); + + // d_psuedoConstraintProof = d_proofs.size(); + // d_proofs.push_back(NullConstraint); } Constraint ConstraintDatabase::getConstraint(ArithVar v, ConstraintType t, const DeltaRational& r){ @@ -566,8 +573,32 @@ ConstraintDatabase::Statistics::~Statistics(){ } void ConstraintDatabase::addVariable(ArithVar v){ - Assert(v == d_varDatabases.size()); - d_varDatabases.push_back(new PerVariableDatabase(v)); + if(d_reclaimable.isMember(v)){ + SortedConstraintMap& scm = getVariableSCM(v); + + std::vector<Constraint> constraintList; + + for(SortedConstraintMapIterator i = scm.begin(), end = scm.end(); i != end; ++i){ + (i->second).push_into(constraintList); + } + while(!constraintList.empty()){ + Constraint c = constraintList.back(); + constraintList.pop_back(); + Assert(c->safeToGarbageCollect()); + delete c; + } + Assert(scm.empty()); + + d_reclaimable.remove(v); + }else{ + Assert(v == d_varDatabases.size()); + d_varDatabases.push_back(new PerVariableDatabase(v)); + } +} + +void ConstraintDatabase::removeVariable(ArithVar v){ + Assert(!d_reclaimable.isMember(v)); + d_reclaimable.add(v); } bool ConstraintValue::safeToGarbageCollect() const{ @@ -802,6 +833,13 @@ void ConstraintValue::impliedBy(const std::vector<Constraint>& b){ } } +// void ConstraintValue::setPsuedoConstraint(){ +// Assert(truthIsUnknown()); +// Assert(!hasLiteral()); + +// d_database->pushProofWatch(this, d_database->d_psuedoConstraintProof); +// } + void ConstraintValue::setEqualityEngineProof(){ Assert(truthIsUnknown()); Assert(hasLiteral()); @@ -818,6 +856,7 @@ void ConstraintValue::markAsTrue(){ void ConstraintValue::markAsTrue(Constraint imp){ Assert(truthIsUnknown()); Assert(imp->hasProof()); + //Assert(!imp->isPsuedoConstraint()); d_database->d_proofs.push_back(NullConstraint); d_database->d_proofs.push_back(imp); @@ -829,6 +868,8 @@ void ConstraintValue::markAsTrue(Constraint impA, Constraint impB){ Assert(truthIsUnknown()); Assert(impA->hasProof()); Assert(impB->hasProof()); + //Assert(!impA->isPsuedoConstraint()); + //Assert(!impB->isPsuedoConstraint()); d_database->d_proofs.push_back(NullConstraint); d_database->d_proofs.push_back(impA); @@ -845,6 +886,7 @@ void ConstraintValue::markAsTrue(const vector<Constraint>& a){ for(vector<Constraint>::const_iterator i = a.begin(), end = a.end(); i != end; ++i){ Constraint c_i = *i; Assert(c_i->hasProof()); + //Assert(!c_i->isPsuedoConstraint()); d_database->d_proofs.push_back(c_i); } @@ -861,6 +903,7 @@ SortedConstraintMap& ConstraintValue::constraintSet() const{ bool ConstraintValue::proofIsEmpty() const{ Assert(hasProof()); bool result = d_database->d_proofs[d_proof] == NullConstraint; + //Assert((!result) || isSelfExplaining() || hasEqualityEngineProof() || isPsuedoConstraint()); Assert((!result) || isSelfExplaining() || hasEqualityEngineProof()); return result; } @@ -869,6 +912,7 @@ void ConstraintValue::explainBefore(NodeBuilder<>& nb, AssertionOrder order) con Assert(hasProof()); Assert(!isSelfExplaining() || assertedToTheTheory()); + if(assertedBefore(order)){ nb << getWitness(); }else if(hasEqualityEngineProof()){ diff --git a/src/theory/arith/constraint.h b/src/theory/arith/constraint.h index 331fd2bcb..52aa5a5ce 100644 --- a/src/theory/arith/constraint.h +++ b/src/theory/arith/constraint.h @@ -485,6 +485,15 @@ public: void setEqualityEngineProof(); bool hasEqualityEngineProof() const; + + /** + * There cannot be a literal associated with this constraint. + * The explanation is the constant true. + * explainInto() does nothing. + */ + //void setPsuedoConstraint(); + //bool isPsuedoConstraint() const; + /** * Returns a explanation of the constraint that is appropriate for conflicts. * @@ -694,6 +703,14 @@ private: */ ProofId d_equalityEngineProof; + /** + * Marks a node as being true always. + * This is only okay for purely internal things. + * + * This is a special proof that is always a member of the list. + */ + //ProofId d_psuedoConstraintProof; + typedef context::CDList<Constraint, ConstraintValue::ProofCleanup> ProofCleanupList; typedef context::CDList<Constraint, ConstraintValue::CanBePropagatedCleanup> CBPList; typedef context::CDList<Constraint, ConstraintValue::AssertionOrderCleanup> AOList; @@ -817,6 +834,7 @@ public: void addVariable(ArithVar v); bool variableDatabaseIsSetup(ArithVar v) const; + void removeVariable(ArithVar v); Node eeExplain(ConstConstraint c) const; void eeExplain(ConstConstraint c, NodeBuilder<>& nb) const; @@ -881,6 +899,8 @@ public: private: void raiseUnateConflict(Constraint ant, Constraint cons); + DenseSet d_reclaimable; + class Statistics { public: IntStat d_unatePropagateCalls; diff --git a/src/theory/arith/linear_equality.cpp b/src/theory/arith/linear_equality.cpp index 360e45289..5063a05c7 100644 --- a/src/theory/arith/linear_equality.cpp +++ b/src/theory/arith/linear_equality.cpp @@ -80,7 +80,7 @@ void LinearEqualityModule::update(ArithVar x_i, const DeltaRational& v){ if(Debug.isOn("paranoid:check_tableau")){ debugCheckTableau(); } } -void LinearEqualityModule::pivotAndUpdate(ArithVar x_i, ArithVar x_j, DeltaRational& v){ +void LinearEqualityModule::pivotAndUpdate(ArithVar x_i, ArithVar x_j, const DeltaRational& v){ Assert(x_i != x_j); TimerStat::CodeTimer codeTimer(d_statistics.d_pivotTime); @@ -188,6 +188,23 @@ void LinearEqualityModule::debugCheckTableau(){ Assert(sum == shouldBe); } } +bool LinearEqualityModule::debugEntireLinEqIsConsistent(const string& s){ + bool result = true; + for(ArithVar var = 0, end = d_tableau.getNumColumns(); var != end; ++var){ + // for(VarIter i = d_variables.begin(), end = d_variables.end(); i != end; ++i){ + //ArithVar var = d_arithvarNodeMap.asArithVar(*i); + if(!d_partialModel.assignmentIsConsistent(var)){ + d_partialModel.printModel(var); + Warning() << s << ":" << "Assignment is not consistent for " << var ; + if(d_tableau.isBasic(var)){ + Warning() << " (basic)"; + } + Warning() << endl; + result = false; + } + } + return result; +} DeltaRational LinearEqualityModule::computeBound(ArithVar basic, bool upperBound){ DeltaRational sum(0,0); diff --git a/src/theory/arith/linear_equality.h b/src/theory/arith/linear_equality.h index f337ef0db..7df5ee9c3 100644 --- a/src/theory/arith/linear_equality.h +++ b/src/theory/arith/linear_equality.h @@ -79,7 +79,7 @@ public: * and then pivots x_i with the nonbasic variable in its row x_j. * Updates the assignment of the other basic variables accordingly. */ - void pivotAndUpdate(ArithVar x_i, ArithVar x_j, DeltaRational& v); + void pivotAndUpdate(ArithVar x_i, ArithVar x_j, const DeltaRational& v); ArithPartialModel& getPartialModel() const{ return d_partialModel; } @@ -141,6 +141,11 @@ public: /** Debugging information for a pivot. */ void debugPivot(ArithVar x_i, ArithVar x_j); + /** + * + */ + bool debugEntireLinEqIsConsistent(const std::string& s); + private: /** These fields are designed to be accessible to TheoryArith methods. */ diff --git a/src/theory/arith/matrix.cpp b/src/theory/arith/matrix.cpp index 8e7fe7894..cd7a8a9aa 100644 --- a/src/theory/arith/matrix.cpp +++ b/src/theory/arith/matrix.cpp @@ -247,7 +247,7 @@ void Tableau::rowPivot(ArithVar basicOld, ArithVar basicNew){ d_basic2RowIndex.remove(basicOld); d_basic2RowIndex.set(basicNew, rid); - d_rowIndex2basic[rid] = basicNew; + d_rowIndex2basic.set(rid, basicNew); } // void Tableau::addEntry(ArithVar row, ArithVar col, const Rational& coeff){ @@ -397,10 +397,11 @@ void Tableau::addRow(ArithVar basic, RowIndex newRow = Matrix<Rational>::addRow(coefficients, variables); addEntry(newRow, basic, Rational(-1)); - Assert(d_rowIndex2basic.size() == newRow); + Assert(!d_basic2RowIndex.isKey(basic)); + Assert(!d_rowIndex2basic.isKey(newRow)); d_basic2RowIndex.set(basic, newRow); - d_rowIndex2basic.push_back(basic); + d_rowIndex2basic.set(newRow, basic); if(Debug.isOn("matrix")){ printMatrix(); } @@ -558,6 +559,15 @@ void ReducedRowVector::enqueueNonBasicVariablesAndCoefficients(std::vector< Arit // return newId; // } +void Tableau::removeBasicRow(ArithVar basic){ + RowIndex rid = basicToRowIndex(basic); + + removeRow(rid); + d_basic2RowIndex.remove(basic); + d_rowIndex2basic.remove(rid); + +} + }/* CVC4::theory::arith namespace */ }/* CVC4::theory namespace */ diff --git a/src/theory/arith/matrix.h b/src/theory/arith/matrix.h index ea6c389b9..027397b6a 100644 --- a/src/theory/arith/matrix.h +++ b/src/theory/arith/matrix.h @@ -25,6 +25,7 @@ #include "util/dense_map.h" #include "theory/arith/arithvar.h" +#include "theory/arith/arithvar_node_map.h" #include "theory/arith/normal_form.h" #include <queue> @@ -377,6 +378,8 @@ protected: uint32_t d_entriesInUse; MatrixEntryVector<T> d_entries; + std::vector<RowIndex> d_pool; + T d_zero; public: @@ -446,6 +449,23 @@ protected: d_entries.freeEntry(id); } + private: + RowIndex requestRowIndex(){ + if(d_pool.empty()){ + RowIndex ridx = d_rows.size(); + d_rows.push_back(RowVectorT(&d_entries)); + return ridx; + }else{ + RowIndex rid = d_pool.back(); + d_pool.pop_back(); + return rid; + } + } + + void releaseRowIndex(RowIndex rid){ + d_pool.push_back(rid); + } + public: size_t getNumRows() const { @@ -485,8 +505,11 @@ public: */ RowIndex addRow(const std::vector<T>& coeffs, const std::vector<ArithVar>& variables){ - RowIndex ridx = d_rows.size(); - d_rows.push_back(RowVectorT(&d_entries)); + + RowIndex ridx = requestRowIndex(); + + //RowIndex ridx = d_rows.size(); + //d_rows.push_back(RowVectorT(&d_entries)); std::vector<Rational>::const_iterator coeffIter = coeffs.begin(); std::vector<ArithVar>::const_iterator varsIter = variables.begin(); @@ -701,36 +724,7 @@ public: EntryID id = i.getID(); removeEntry(id); } - } - - - Node rowAsEquality(RowIndex rid, const ArithVarToNodeMap& map){ - using namespace CVC4::kind; - - Assert(getRowLength(rid) >= 2); - - std::vector<Node> pairs; - for(RowIterator i = getRow(rid); !i.atEnd(); ++i){ - const Entry& entry = *i; - ArithVar colVar = entry.getColVar(); - - Node var = (map.find(colVar))->second; - Node coeff = mkRationalNode(entry.getCoefficient()); - - Node mult = NodeBuilder<2>(MULT) << coeff << var; - pairs.push_back(mult); - } - - Node sum = Node::null(); - if(pairs.size() == 1 ){ - sum = pairs.front(); - }else{ - Assert(pairs.size() >= 2); - NodeBuilder<> sumBuilder(PLUS); - sumBuilder.append(pairs); - sum = sumBuilder; - } - return NodeBuilder<2>(EQUAL) << sum << mkRationalNode(d_zero); + releaseRowIndex(rid); } double densityMeasure() const{ @@ -754,6 +748,15 @@ public: } } + void loadSignQueries(RowIndex rid, DenseMap<int>& target) const{ + + RowIterator i = getRow(rid).begin(), i_end = getRow(rid).end(); + for(; i != i_end; ++i){ + const MatrixEntry<T>& entry = *i; + target.set(entry.getColVar(), entry.getCoefficient().sgn()); + } + } + protected: uint32_t numNonZeroEntries() const { return size(); } @@ -833,8 +836,10 @@ private: // Set of all of the basic variables in the tableau. // ArithVarMap<RowIndex> : ArithVar |-> RowIndex BasicToRowMap d_basic2RowIndex; + // RowIndex |-> Basic Variable - std::vector<ArithVar> d_rowIndex2basic; + typedef DenseMap<ArithVar> RowIndexToBasicMap; + RowIndexToBasicMap d_rowIndex2basic; public: @@ -882,10 +887,6 @@ public: return getRow(basicToRowIndex(basic)).begin(); } - // RowIterator rowIterator(RowIndex r) const { - // return getRow(r).begin(); - // } - /** * Adds a row to the tableau. * The new row is equivalent to: @@ -911,7 +912,6 @@ public: void removeBasicRow(ArithVar basic); - private: /* Changes the basic variable on the row for basicOld to basicNew. */ void rowPivot(ArithVar basicOld, ArithVar basicNew); diff --git a/src/theory/arith/options b/src/theory/arith/options index 38cf07251..9e758a0ef 100644 --- a/src/theory/arith/options +++ b/src/theory/arith/options @@ -51,4 +51,16 @@ option arithRewriteEq --enable-arith-rewrite-equalities/--disable-arith-rewrite- turns on the preprocessing rewrite turning equalities into a conjunction of inequalities /turns off the preprocessing rewrite turning equalities into a conjunction of inequalities +option arithMLTrick miplib-trick --enable-miplib-trick/--disable-miplib-trick bool :default false + turns on the preprocessing step of attempting to infer bounds on miplib problems +/turns off the preprocessing step of attempting to infer bounds on miplib problems + +option arithMLTrickSubstitutions miplib-trick-subs --miplib-trick-subs unsigned :default 1 + do substitution for miplib 'tmp' vars if defined in <= N eliminated vars + +option doCutAllBounded --enable-cut-all-bounded/--disable-cut-all-bounded bool :default false :read-write + turns on the integer solving step of periodically cutting all integer variables that have both upper and lower bounds +/ turns off the integer solving step of periodically cutting all integer variables that have both upper and lower bounds + + endmodule diff --git a/src/theory/arith/partial_model.cpp b/src/theory/arith/partial_model.cpp index 0ffe67763..5dccd8747 100644 --- a/src/theory/arith/partial_model.cpp +++ b/src/theory/arith/partial_model.cpp @@ -72,7 +72,9 @@ void ArithPartialModel::setAssignment(ArithVar x, const DeltaRational& safe, con Debug("partial_model") << "pm: updating the assignment to" << x << " now " << r <<endl; if(safe == r){ - d_hasSafeAssignment[x] = false; + if(d_hasSafeAssignment[x]){ + d_safeAssignment[x] = safe; + } }else{ d_safeAssignment[x] = safe; @@ -177,6 +179,25 @@ void ArithPartialModel::setUpperBoundConstraint(Constraint c){ d_ubc.set(x, c); } +void ArithPartialModel::forceRelaxLowerBound(ArithVar v){ + AssertArgument(inMaps(v), "Calling forceRelaxLowerBound on a variable that is not properly setup."); + AssertArgument(hasLowerBound(v), "Calling forceRelaxLowerBound on a variable without a lowerbound."); + + Debug("partial_model") << "forceRelaxLowerBound(" << v << ") dropping :" << getLowerBoundConstraint(v) << endl; + + d_lbc.set(v, NullConstraint); +} + + +void ArithPartialModel::forceRelaxUpperBound(ArithVar v){ + AssertArgument(inMaps(v), "Calling forceRelaxUpperBound on a variable that is not properly setup."); + AssertArgument(hasUpperBound(v), "Calling forceRelaxUpperBound on a variable without an upper bound."); + + Debug("partial_model") << "forceRelaxUpperBound(" << v << ") dropping :" << getUpperBoundConstraint(v) << endl; + + d_ubc.set(v, NullConstraint); +} + int ArithPartialModel::cmpToLowerBound(ArithVar x, const DeltaRational& c) const{ if(!hasLowerBound(x)){ // l = -\intfy diff --git a/src/theory/arith/partial_model.h b/src/theory/arith/partial_model.h index 49cfd44a1..fdb4a8ffa 100644 --- a/src/theory/arith/partial_model.h +++ b/src/theory/arith/partial_model.h @@ -68,16 +68,40 @@ public: ArithPartialModel(context::Context* c, RationalCallBack& deltaComputation); + /** + * This sets the lower bound for a variable in the current context. + * This must be stronger the previous constraint. + */ void setLowerBoundConstraint(Constraint lb); + + /** + * This sets the upper bound for a variable in the current context. + * This must be stronger the previous constraint. + */ void setUpperBoundConstraint(Constraint ub); + /** Returns the constraint for the upper bound of a variable. */ inline Constraint getUpperBoundConstraint(ArithVar x) const{ return d_ubc[x]; } + /** Returns the constraint for the lower bound of a variable. */ inline Constraint getLowerBoundConstraint(ArithVar x) const{ return d_lbc[x]; } + /** + * This forces the lower bound for a variable to be relaxed in the current context. + * This is done by forcing the lower bound to be NullConstraint. + * This is an expert only operation! (See primal simplex for an example.) + */ + void forceRelaxLowerBound(ArithVar x); + + /** + * This forces the upper bound for a variable to be relaxed in the current context. + * This is done by forcing the upper bound to be NullConstraint. + * This is an expert only operation! (See primal simplex for an example.) + */ + void forceRelaxUpperBound(ArithVar x); /* Initializes a variable to a safe value.*/ void initialize(ArithVar x, const DeltaRational& r); @@ -190,7 +214,6 @@ public: d_deltaIsSafe = true; } - private: /** @@ -202,7 +225,7 @@ private: bool equalSizes(); bool inMaps(ArithVar x) const{ - return 0 <= x && x < d_mapSize; + return x < d_mapSize; } };/* class ArithPartialModel */ diff --git a/src/theory/arith/theory_arith.cpp b/src/theory/arith/theory_arith.cpp index c2c005767..52f234129 100644 --- a/src/theory/arith/theory_arith.cpp +++ b/src/theory/arith/theory_arith.cpp @@ -62,6 +62,8 @@ TheoryArith::TheoryArith(context::Context* c, context::UserContext* u, OutputCha d_unknownsInARow(0), d_hasDoneWorkSinceCut(false), d_learner(u), + d_numberOfVariables(0), + d_pool(), d_setupLiteralCallback(this), d_assertionsThatDoNotMatchTheirLiterals(c), d_nextIntegerCheckVar(0), @@ -79,12 +81,14 @@ TheoryArith::TheoryArith(context::Context* c, context::UserContext* u, OutputCha d_tableauResetPeriod(10), d_conflicts(c), d_raiseConflict(d_conflicts), + d_tempVarMalloc(*this), d_congruenceManager(c, d_constraintDatabase, d_setupLiteralCallback, d_arithvarNodeMap, d_raiseConflict), d_simplex(d_linEq, d_raiseConflict), d_constraintDatabase(c, u, d_arithvarNodeMap, d_congruenceManager, d_raiseConflict), d_deltaComputeCallback(this), d_basicVarModelUpdateCallBack(d_simplex), d_DELTA_ZERO(0), + d_fullCheckCounter(0), d_statistics() { } @@ -749,8 +753,8 @@ Theory::PPAssertStatus TheoryArith::ppAssert(TNode in, SubstitutionMap& outSubst Assert(elim == Rewriter::rewrite(elim)); - static const unsigned MAX_SUB_SIZE = 20; - if(false && right.size() > MAX_SUB_SIZE){ + static const unsigned MAX_SUB_SIZE = 2; + if(right.size() > MAX_SUB_SIZE){ Debug("simplify") << "TheoryArith::solve(): did not substitute due to the right hand side containing too many terms: " << minVar << ":" << elim << endl; Debug("simplify") << right.size() << endl; }else if(elim.hasSubterm(minVar)){ @@ -822,8 +826,9 @@ void TheoryArith::setupVariable(const Variable& x){ Assert(!isSetup(n)); ++(d_statistics.d_statUserVariables); - ArithVar varN = requestArithVar(n,false); - setupInitialValue(varN); + requestArithVar(n,false); + //ArithVar varN = requestArithVar(n,false); + //setupInitialValue(varN); markSetup(n); @@ -860,8 +865,9 @@ void TheoryArith::setupVariableList(const VarList& vl){ d_nlIncomplete = true; ++(d_statistics.d_statUserVariables); - ArithVar av = requestArithVar(vlNode, false); - setupInitialValue(av); + requestArithVar(vlNode, false); + //ArithVar av = requestArithVar(vlNode, false); + //setupInitialValue(av); markSetup(vlNode); } @@ -1054,7 +1060,7 @@ void TheoryArith::setupPolynomial(const Polynomial& poly) { ArithVar varSlack = requestArithVar(polyNode, true); d_tableau.addRow(varSlack, coefficients, variables); - setupInitialValue(varSlack); + setupBasicValue(varSlack); //Add differences to the difference manager Polynomial::iterator i = poly.begin(), end = poly.end(); @@ -1125,6 +1131,14 @@ void TheoryArith::preRegisterTerm(TNode n) { Debug("arith::preregister") << "end arith::preRegisterTerm("<< n <<")" << endl; } +void TheoryArith::releaseArithVar(ArithVar v){ + Assert(d_arithvarNodeMap.hasNode(v)); + + d_constraintDatabase.removeVariable(v); + d_arithvarNodeMap.remove(v); + + d_pool.push_back(v); +} ArithVar TheoryArith::requestArithVar(TNode x, bool slack){ //TODO : The VarList trick is good enough? @@ -1135,32 +1149,73 @@ ArithVar TheoryArith::requestArithVar(TNode x, bool slack){ Assert(!d_arithvarNodeMap.hasArithVar(x)); Assert(x.getType().isReal());// real or integer - ArithVar varX = d_variables.size(); - d_variables.push_back(Node(x)); - Debug("integers") << "isInteger[[" << x << "]]: " << x.getType().isInteger() << endl; + // ArithVar varX = d_variables.size(); + // d_variables.push_back(Node(x)); + + bool reclaim = !d_pool.empty(); + ArithVar varX; + + if(reclaim){ + varX = d_pool.back(); + d_pool.pop_back(); + + d_partialModel.setAssignment(varX, d_DELTA_ZERO, d_DELTA_ZERO); + }else{ + varX = d_numberOfVariables; + ++d_numberOfVariables; + + d_slackVars.push_back(true); + d_variableTypes.push_back(ATReal); + + d_simplex.increaseMax(); + d_tableau.increaseSize(); + d_tableauSizeHasBeenModified = true; + + d_partialModel.initialize(varX, d_DELTA_ZERO); + } + + ArithType type; if(slack){ //The type computation is not quite accurate for Rationals that are integral. //We'll use the isIntegral check from the polynomial package instead. Polynomial p = Polynomial::parsePolynomial(x); - d_variableTypes.push_back(p.isIntegral() ? ATInteger : ATReal); + type = p.isIntegral() ? ATInteger : ATReal; }else{ - d_variableTypes.push_back(nodeToArithType(x)); + type = nodeToArithType(x); } + d_variableTypes[varX] = type; + d_slackVars[varX] = slack; - d_slackVars.push_back(slack); - - d_simplex.increaseMax(); + d_constraintDatabase.addVariable(varX); d_arithvarNodeMap.setArithVar(x,varX); - d_tableau.increaseSize(); - d_tableauSizeHasBeenModified = true; + // Debug("integers") << "isInteger[[" << x << "]]: " << x.getType().isInteger() << endl; - d_constraintDatabase.addVariable(varX); + // if(slack){ + // //The type computation is not quite accurate for Rationals that are integral. + // //We'll use the isIntegral check from the polynomial package instead. + // Polynomial p = Polynomial::parsePolynomial(x); + // d_variableTypes.push_back(p.isIntegral() ? ATInteger : ATReal); + // }else{ + // d_variableTypes.push_back(nodeToArithType(x)); + // } + + // d_slackVars.push_back(slack); + + // d_simplex.increaseMax(); + + // d_tableau.increaseSize(); + // d_tableauSizeHasBeenModified = true; + + // d_constraintDatabase.addVariable(varX); Debug("arith::arithvar") << x << " |-> " << varX << endl; + Assert(!d_partialModel.hasUpperBound(varX)); + Assert(!d_partialModel.hasLowerBound(varX)); + return varX; } @@ -1179,18 +1234,7 @@ void TheoryArith::asVectors(const Polynomial& p, std::vector<Rational>& coeffs, Assert(theoryOf(n) != THEORY_ARITH || d_arithvarNodeMap.hasArithVar(n)); Assert(d_arithvarNodeMap.hasArithVar(n)); - ArithVar av; - // The first if is likely dead is likely dead code: - // if (theoryOf(n) != THEORY_ARITH && !d_arithvarNodeMap.hasArithVar(n)) { - // // The only way not to get it through pre-register is if it's a foreign term - // ++(d_statistics.d_statUserVariables); - // av = requestArithVar(n,false); - // setupInitialValue(av); - // } else { - // // Otherwise, we already have it's variable - // av = d_arithvarNodeMap.asArithVar(n); - // } - av = d_arithvarNodeMap.asArithVar(n); + ArithVar av = d_arithvarNodeMap.asArithVar(n); coeffs.push_back(constant.getValue()); variables.push_back(av); @@ -1200,11 +1244,12 @@ void TheoryArith::asVectors(const Polynomial& p, std::vector<Rational>& coeffs, /* Requirements: * For basic variables the row must have been added to the tableau. */ -void TheoryArith::setupInitialValue(ArithVar x){ +void TheoryArith::setupBasicValue(ArithVar x){ + Assert(d_tableau.isBasic(x)); - if(!d_tableau.isBasic(x)){ - d_partialModel.initialize(x, d_DELTA_ZERO); - }else{ + // if(!d_tableau.isBasic(x)){ + // d_partialModel.setAssignment(x, d_DELTA_ZERO, d_DELTA_ZERO); + // }else{ //If the variable is basic, assertions may have already happened and updates //may have occured before setting this variable up. @@ -1212,9 +1257,11 @@ void TheoryArith::setupInitialValue(ArithVar x){ //time instead of register DeltaRational safeAssignment = d_linEq.computeRowValue(x, true); DeltaRational assignment = d_linEq.computeRowValue(x, false); - d_partialModel.initialize(x,safeAssignment); - d_partialModel.setAssignment(x,assignment); - } + //d_partialModel.initialize(x,safeAssignment); + //d_partialModel.setAssignment(x,assignment); + d_partialModel.setAssignment(x,safeAssignment,assignment); + + // } Debug("arith") << "setupVariable("<<x<<")"<<std::endl; } @@ -1254,8 +1301,8 @@ Node TheoryArith::dioCutting(){ context::Context::ScopedPush speculativePush(getSatContext()); //DO NOT TOUCH THE OUTPUTSTREAM - //TODO: Improve this - for(ArithVar v = 0, end = d_variables.size(); v != end; ++v){ + for(var_iterator vi = var_begin(), vend = var_end(); vi != vend; ++vi){ + ArithVar v = *vi; if(isInteger(v)){ const DeltaRational& dr = d_partialModel.getAssignment(v); if(d_partialModel.equalsUpperBound(v, dr) || d_partialModel.equalsLowerBound(v, dr)){ @@ -1369,7 +1416,7 @@ Constraint TheoryArith::constraintFromFactQueue(){ if(assertion != reAssertion){ Debug("arith::nf") << "getting non-nf assertion " << assertion << " |-> " << reAssertion << endl; Assert(constraint != NullConstraint); - d_assertionsThatDoNotMatchTheirLiterals[assertion] = constraint; + d_assertionsThatDoNotMatchTheirLiterals.insert(assertion, constraint); } } @@ -1485,7 +1532,8 @@ bool TheoryArith::assertionCases(Constraint constraint){ * If this returns true, all integer variables have an integer assignment. */ bool TheoryArith::hasIntegerModel(){ - if(d_variables.size() > 0){ + //if(d_variables.size() > 0){ + if(getNumberOfVariables()){ const ArithVar rrEnd = d_nextIntegerCheckVar; do { //Do not include slack variables @@ -1495,7 +1543,7 @@ bool TheoryArith::hasIntegerModel(){ return false; } } - } while((d_nextIntegerCheckVar = (1 + d_nextIntegerCheckVar == d_variables.size() ? 0 : 1 + d_nextIntegerCheckVar)) != rrEnd); + } while((d_nextIntegerCheckVar = (1 + d_nextIntegerCheckVar == getNumberOfVariables() ? 0 : 1 + d_nextIntegerCheckVar)) != rrEnd); } return true; } @@ -1576,6 +1624,7 @@ void TheoryArith::check(Effort effortLevel){ Assert(d_conflicts.empty()); d_qflraStatus = d_simplex.findModel(fullEffort(effortLevel)); + switch(d_qflraStatus){ case Result::SAT: if(newFacts){ @@ -1682,6 +1731,20 @@ void TheoryArith::check(Effort effortLevel){ } Assert( d_currentPropagationList.empty()); + if(!emmittedConflictOrSplit && fullEffort(effortLevel)){ + ++d_fullCheckCounter; + } + static const int CUT_ALL_BOUNDED_PERIOD = 10; + if(!emmittedConflictOrSplit && fullEffort(effortLevel) && + d_fullCheckCounter % CUT_ALL_BOUNDED_PERIOD == 1){ + vector<Node> lemmas = cutAllBounded(); + //output the lemmas + for(vector<Node>::const_iterator i = lemmas.begin(); i != lemmas.end(); ++i){ + d_out->lemma(*i); + ++(d_statistics.d_externalBranchAndBounds); + } + emmittedConflictOrSplit = lemmas.size() > 0; + } if(!emmittedConflictOrSplit && fullEffort(effortLevel)){ emmittedConflictOrSplit = splitDisequalities(); @@ -1728,6 +1791,55 @@ void TheoryArith::check(Effort effortLevel){ Debug("arith") << "TheoryArith::check end" << std::endl; } +Node TheoryArith::branchIntegerVariable(ArithVar x) const { + const DeltaRational& d = d_partialModel.getAssignment(x); + Assert(!d.isIntegral()); + const Rational& r = d.getNoninfinitesimalPart(); + const Rational& i = d.getInfinitesimalPart(); + Trace("integers") << "integers: assignment to [[" << d_arithvarNodeMap.asNode(x) << "]] is " << r << "[" << i << "]" << endl; + + Assert(! (r.getDenominator() == 1 && i.getNumerator() == 0)); + Assert(!d.isIntegral()); + TNode var = d_arithvarNodeMap.asNode(x); + Integer floor_d = d.floor(); + + Node ub = Rewriter::rewrite(NodeManager::currentNM()->mkNode(kind::LEQ, var, mkRationalNode(floor_d))); + Node lb = ub.notNode(); + + + Node lem = NodeManager::currentNM()->mkNode(kind::OR, ub, lb); + Trace("integers") << "integers: branch & bound: " << lem << endl; + if(d_valuation.isSatLiteral(lem[0])) { + Debug("integers") << " " << lem[0] << " == " << d_valuation.getSatValue(lem[0]) << endl; + } else { + Debug("integers") << " " << lem[0] << " is not assigned a SAT literal" << endl; + } + if(d_valuation.isSatLiteral(lem[1])) { + Debug("integers") << " " << lem[1] << " == " << d_valuation.getSatValue(lem[1]) << endl; + } else { + Debug("integers") << " " << lem[1] << " is not assigned a SAT literal" << endl; + } + return lem; +} + +std::vector<Node> TheoryArith::cutAllBounded() const{ + vector<Node> lemmas; + if(options::doCutAllBounded() && getNumberOfVariables() > 0){ + for(ArithVar iter = 0; iter != getNumberOfVariables(); ++iter){ + //Do not include slack variables + const DeltaRational& d = d_partialModel.getAssignment(iter); + if(isInteger(iter) && !isSlackVariable(iter) && + d_partialModel.hasUpperBound(iter) && + d_partialModel.hasLowerBound(iter) && + !d.isIntegral()){ + Node lem = branchIntegerVariable(iter); + lemmas.push_back(lem); + } + } + } + return lemmas; +} + /** Returns true if the roundRobinBranching() issues a lemma. */ Node TheoryArith::roundRobinBranch(){ if(hasIntegerModel()){ @@ -1737,36 +1849,40 @@ Node TheoryArith::roundRobinBranch(){ Assert(isInteger(v)); Assert(!isSlackVariable(v)); + return branchIntegerVariable(v); - const DeltaRational& d = d_partialModel.getAssignment(v); - const Rational& r = d.getNoninfinitesimalPart(); - const Rational& i = d.getInfinitesimalPart(); - Trace("integers") << "integers: assignment to [[" << d_arithvarNodeMap.asNode(v) << "]] is " << r << "[" << i << "]" << endl; + // Assert(isInteger(v)); + // Assert(!isSlackVariable(v)); - Assert(! (r.getDenominator() == 1 && i.getNumerator() == 0)); - Assert(!d.isIntegral()); + // const DeltaRational& d = d_partialModel.getAssignment(v); + // const Rational& r = d.getNoninfinitesimalPart(); + // const Rational& i = d.getInfinitesimalPart(); + // Trace("integers") << "integers: assignment to [[" << d_arithvarNodeMap.asNode(v) << "]] is " << r << "[" << i << "]" << endl; - TNode var = d_arithvarNodeMap.asNode(v); - Integer floor_d = d.floor(); - Integer ceil_d = d.ceiling(); + // Assert(! (r.getDenominator() == 1 && i.getNumerator() == 0)); + // Assert(!d.isIntegral()); - Node leq = Rewriter::rewrite(NodeManager::currentNM()->mkNode(kind::LEQ, var, mkRationalNode(floor_d))); - Node geq = Rewriter::rewrite(NodeManager::currentNM()->mkNode(kind::GEQ, var, mkRationalNode(ceil_d))); + // TNode var = d_arithvarNodeMap.asNode(v); + // Integer floor_d = d.floor(); + // Integer ceil_d = d.ceiling(); + // Node leq = Rewriter::rewrite(NodeManager::currentNM()->mkNode(kind::LEQ, var, mkRationalNode(floor_d))); + // Node geq = Rewriter::rewrite(NodeManager::currentNM()->mkNode(kind::GEQ, var, mkRationalNode(ceil_d))); - Node lem = NodeManager::currentNM()->mkNode(kind::OR, leq, geq); - Trace("integers") << "integers: branch & bound: " << lem << endl; - if(d_valuation.isSatLiteral(lem[0])) { - Debug("integers") << " " << lem[0] << " == " << d_valuation.getSatValue(lem[0]) << endl; - } else { - Debug("integers") << " " << lem[0] << " is not assigned a SAT literal" << endl; - } - if(d_valuation.isSatLiteral(lem[1])) { - Debug("integers") << " " << lem[1] << " == " << d_valuation.getSatValue(lem[1]) << endl; - } else { - Debug("integers") << " " << lem[1] << " is not assigned a SAT literal" << endl; - } - return lem; + + // Node lem = NodeManager::currentNM()->mkNode(kind::OR, leq, geq); + // Trace("integers") << "integers: branch & bound: " << lem << endl; + // if(d_valuation.isSatLiteral(lem[0])) { + // Debug("integers") << " " << lem[0] << " == " << d_valuation.getSatValue(lem[0]) << endl; + // } else { + // Debug("integers") << " " << lem[0] << " is not assigned a SAT literal" << endl; + // } + // if(d_valuation.isSatLiteral(lem[1])) { + // Debug("integers") << " " << lem[1] << " == " << d_valuation.getSatValue(lem[1]) << endl; + // } else { + // Debug("integers") << " " << lem[1] << " is not assigned a SAT literal" << endl; + // } + // return lem; } } @@ -1822,7 +1938,8 @@ bool TheoryArith::splitDisequalities(){ */ void TheoryArith::debugPrintAssertions() { Debug("arith::print_assertions") << "Assertions:" << endl; - for (ArithVar i = 0; i < d_variables.size(); ++ i) { + for (var_iterator vi = var_begin(), vend = var_end(); vi != vend; ++vi){ + ArithVar i = *vi; if (d_partialModel.hasLowerBound(i)) { Constraint lConstr = d_partialModel.getLowerBoundConstraint(i); Debug("arith::print_assertions") << lConstr << endl; @@ -1842,13 +1959,15 @@ void TheoryArith::debugPrintAssertions() { void TheoryArith::debugPrintModel(){ Debug("arith::print_model") << "Model:" << endl; - - for (ArithVar i = 0; i < d_variables.size(); ++ i) { - Debug("arith::print_model") << d_variables[i] << " : " << - d_partialModel.getAssignment(i); - if(d_tableau.isBasic(i)) - Debug("arith::print_model") << " (basic)"; - Debug("arith::print_model") << endl; + for (var_iterator vi = var_begin(), vend = var_end(); vi != vend; ++vi){ + ArithVar i = *vi; + if(d_arithvarNodeMap.hasNode(i)){ + Debug("arith::print_model") << d_arithvarNodeMap.asNode(i) << " : " << + d_partialModel.getAssignment(i); + if(d_tableau.isBasic(i)) + Debug("arith::print_model") << " (basic)"; + Debug("arith::print_model") << endl; + } } } @@ -2057,7 +2176,8 @@ Rational TheoryArith::deltaValueForTotalOrder() const{ relevantDeltaValues.insert(val); } - for(ArithVar v = 0; v < d_variables.size(); ++v){ + for(var_iterator vi = var_begin(), vend = var_end(); vi != vend; ++vi){ + ArithVar v = *vi; const DeltaRational& value = d_partialModel.getAssignment(v); relevantDeltaValues.insert(value); if( d_partialModel.hasLowerBound(v)){ @@ -2108,7 +2228,8 @@ void TheoryArith::collectModelInfo( TheoryModel* m, bool fullModel ){ // TODO: // This is not very good for user push/pop.... // Revisit when implementing push/pop - for(ArithVar v = 0; v < d_variables.size(); ++v){ + for(var_iterator vi = var_begin(), vend = var_end(); vi != vend; ++vi){ + ArithVar v = *vi; if(!isSlackVariable(v)){ Node term = d_arithvarNodeMap.asNode(v); @@ -2187,13 +2308,13 @@ void TheoryArith::notifyRestart(){ } bool TheoryArith::entireStateIsConsistent(const string& s){ - typedef std::vector<Node>::const_iterator VarIter; bool result = true; - for(VarIter i = d_variables.begin(), end = d_variables.end(); i != end; ++i){ - ArithVar var = d_arithvarNodeMap.asArithVar(*i); + for(var_iterator vi = var_begin(), vend = var_end(); vi != vend; ++vi){ + ArithVar var = *vi; + //ArithVar var = d_arithvarNodeMap.asArithVar(*i); if(!d_partialModel.assignmentIsConsistent(var)){ d_partialModel.printModel(var); - Warning() << s << ":" << "Assignment is not consistent for " << var << *i; + Warning() << s << ":" << "Assignment is not consistent for " << var << d_arithvarNodeMap.asNode(var); if(d_tableau.isBasic(var)){ Warning() << " (basic)"; } @@ -2205,15 +2326,14 @@ bool TheoryArith::entireStateIsConsistent(const string& s){ } bool TheoryArith::unenqueuedVariablesAreConsistent(){ - typedef std::vector<Node>::const_iterator VarIter; bool result = true; - for(VarIter i = d_variables.begin(), end = d_variables.end(); i != end; ++i){ - ArithVar var = d_arithvarNodeMap.asArithVar(*i); + for(var_iterator vi = var_begin(), vend = var_end(); vi != vend; ++vi){ + ArithVar var = *vi; if(!d_partialModel.assignmentIsConsistent(var)){ if(!d_simplex.debugIsInCollectionQueue(var)){ d_partialModel.printModel(var); - Warning() << "Unenqueued var is not consistent for " << var << *i; + Warning() << "Unenqueued var is not consistent for " << var << d_arithvarNodeMap.asNode(var); if(d_tableau.isBasic(var)){ Warning() << " (basic)"; } @@ -2221,7 +2341,7 @@ bool TheoryArith::unenqueuedVariablesAreConsistent(){ result = false; } else if(Debug.isOn("arith::consistency::initial")){ d_partialModel.printModel(var); - Warning() << "Initial var is not consistent for " << var << *i; + Warning() << "Initial var is not consistent for " << var << d_arithvarNodeMap.asNode(var); if(d_tableau.isBasic(var)){ Warning() << " (basic)"; } diff --git a/src/theory/arith/theory_arith.h b/src/theory/arith/theory_arith.h index 6a83c501b..31f9bfcaf 100644 --- a/src/theory/arith/theory_arith.h +++ b/src/theory/arith/theory_arith.h @@ -22,6 +22,7 @@ #include "context/context.h" #include "context/cdlist.h" #include "context/cdhashset.h" +#include "context/cdinsert_hashmap.h" #include "context/cdqueue.h" #include "expr/node.h" @@ -88,17 +89,20 @@ private: /** Static learner. */ ArithStaticLearner d_learner; - /** - * List of the variables in the system. - * This is needed to keep a positive ref count on slack variables. - */ - std::vector<Node> d_variables; + + ArithVar d_numberOfVariables; + inline ArithVar getNumberOfVariables() const { return d_numberOfVariables; } + std::vector<ArithVar> d_pool; + void releaseArithVar(ArithVar v); /** * The map between arith variables to nodes. */ ArithVarNodeMap d_arithvarNodeMap; + typedef ArithVarNodeMap::var_iterator var_iterator; + var_iterator var_begin() const { return d_arithvarNodeMap.var_begin(); } + var_iterator var_end() const { return d_arithvarNodeMap.var_end(); } NodeSet d_setupNodes; bool isSetup(Node n) const { @@ -135,7 +139,7 @@ private: * A superset of all of the assertions that currently are not the literal for * their constraint do not match constraint literals. Not just the witnesses. */ - context::CDHashMap<TNode, Constraint, TNodeHashFunction> d_assertionsThatDoNotMatchTheirLiterals; + context::CDInsertHashMap<Node, Constraint, NodeHashFunction> d_assertionsThatDoNotMatchTheirLiterals; /** * (For the moment) the type hierarchy goes as: @@ -272,6 +276,18 @@ private: void outputConflicts(); + class TempVarMalloc : public ArithVarMalloc { + private: + TheoryArith& d_ta; + public: + TempVarMalloc(TheoryArith& ta) : d_ta(ta) {} + ArithVar request(){ + Node skolem = mkRealSkolem("tmpVar"); + return d_ta.requestArithVar(skolem, false); + } + void release(ArithVar v){ d_ta.releaseArithVar(v); } + } d_tempVarMalloc; + /** * A copy of the tableau. * This is equivalent to the original tableau if d_tableauSizeHasBeenModified @@ -432,7 +448,7 @@ private: ArithVar requestArithVar(TNode x, bool slack); /** Initial (not context dependent) sets up for a variable.*/ - void setupInitialValue(ArithVar x); + void setupBasicValue(ArithVar x); /** Initial (not context dependent) sets up for a new slack variable.*/ void setupSlack(TNode left); @@ -521,6 +537,11 @@ private: /** Debugging only routine. Prints the model. */ void debugPrintModel(); + /** Counts the number of fullCheck calls to arithmetic. */ + uint32_t d_fullCheckCounter; + std::vector<Node> cutAllBounded() const; + Node branchIntegerVariable(ArithVar x) const; + /** These fields are designed to be accessible to TheoryArith methods. */ class Statistics { public: diff --git a/src/theory/arrays/theory_arrays.cpp b/src/theory/arrays/theory_arrays.cpp index a05d30517..aabd3a62d 100644 --- a/src/theory/arrays/theory_arrays.cpp +++ b/src/theory/arrays/theory_arrays.cpp @@ -537,7 +537,7 @@ EqualityStatus TheoryArrays::getEqualityStatus(TNode a, TNode b) { void TheoryArrays::computeCareGraph() { if (d_sharedArrays.size() > 0) { - context::CDHashSet<TNode, TNodeHashFunction>::iterator it1 = d_sharedArrays.begin(), it2, iend = d_sharedArrays.end(); + CDNodeSet::key_iterator it1 = d_sharedArrays.key_begin(), it2, iend = d_sharedArrays.key_end(); for (; it1 != iend; ++it1) { for (it2 = it1, ++it2; it2 != iend; ++it2) { if ((*it1).getType() != (*it2).getType()) { @@ -1261,7 +1261,7 @@ void TheoryArrays::checkRowLemmas(TNode a, TNode b) void TheoryArrays::queueRowLemma(RowLemmaType lem) { - if (d_conflict || d_RowAlreadyAdded.count(lem) != 0) { + if (d_conflict || d_RowAlreadyAdded.contains(lem)) { return; } TNode a = lem.first; @@ -1407,7 +1407,7 @@ void TheoryArrays::dischargeLemmas() for (unsigned count = 0; count < sz; ++count) { RowLemmaType l = d_RowQueue.front(); d_RowQueue.pop(); - if (d_RowAlreadyAdded.count(l) != 0) { + if (d_RowAlreadyAdded.contains(l)) { continue; } diff --git a/src/theory/arrays/theory_arrays.h b/src/theory/arrays/theory_arrays.h index 240cfad9a..172482e71 100644 --- a/src/theory/arrays/theory_arrays.h +++ b/src/theory/arrays/theory_arrays.h @@ -333,8 +333,10 @@ class TheoryArrays : public Theory { context::CDQueue<RowLemmaType> d_RowQueue; context::CDHashSet<RowLemmaType, RowLemmaTypeHashFunction > d_RowAlreadyAdded; - context::CDHashSet<TNode, TNodeHashFunction> d_sharedArrays; - context::CDHashSet<TNode, TNodeHashFunction> d_sharedOther; + typedef context::CDHashSet<Node, NodeHashFunction> CDNodeSet; + + CDNodeSet d_sharedArrays; + CDNodeSet d_sharedOther; context::CDO<bool> d_sharedTerms; context::CDList<TNode> d_reads; std::hash_map<TNode, Node, TNodeHashFunction> d_diseqCache; diff --git a/src/theory/arrays/theory_arrays_model.h b/src/theory/arrays/theory_arrays_model.h index 4825c710d..c82c7635d 100644 --- a/src/theory/arrays/theory_arrays_model.h +++ b/src/theory/arrays/theory_arrays_model.h @@ -1,11 +1,11 @@ /********************* */ /*! \file theory_arrays_model.h ** \verbatim - ** Original author: ajreynol - ** Major contributors: none + ** Original author: Andrew Reynolds <andrew.j.reynolds@gmail.com> + ** Major contributors: Morgan Deters <mdeters@cs.nyu.edu> ** Minor contributors (to current version): none - ** This file is part of the CVC4 prototype. - ** Copyright (c) 2009-2012 New York University and The University of Iowa + ** This file is part of the CVC4 project. + ** Copyright (c) 2009-2013 New York University and The University of Iowa ** See the file COPYING in the top-level source directory for licensing ** information.\endverbatim ** diff --git a/src/theory/booleans/circuit_propagator.h b/src/theory/booleans/circuit_propagator.h index e62f9b7a1..de4bb30d2 100644 --- a/src/theory/booleans/circuit_propagator.h +++ b/src/theory/booleans/circuit_propagator.h @@ -64,6 +64,8 @@ public: else return ASSIGNED_TO_TRUE; } + typedef std::hash_map<Node, std::vector<Node>, NodeHashFunction> BackEdgesMap; + private: context::Context d_context; @@ -96,7 +98,7 @@ private: */ DataClearer< std::vector<TNode> > d_propagationQueueClearer; - /** Are we in conflict */ + /** Are we in conflict? */ context::CDO<bool> d_conflict; /** Map of substitutions */ @@ -107,8 +109,9 @@ private: */ DataClearer< std::vector<Node> > d_learnedLiteralClearer; - /** Back edges from nodes to where they are used */ - typedef std::hash_map<Node, std::vector<Node>, NodeHashFunction> BackEdgesMap; + /** + * Back edges from nodes to where they are used. + */ BackEdgesMap d_backEdges; /** @@ -118,7 +121,7 @@ private: /** Nodes that have been attached already (computed forward edges for) */ // All the nodes we've visited so far - context::CDHashSet<TNode, TNodeHashFunction> d_seen; + context::CDHashSet<Node, NodeHashFunction> d_seen; /** * Assignment status of each node. @@ -157,6 +160,7 @@ private: } } +public: /** True iff Node is assigned in circuit (either true or false). */ bool isAssigned(TNode n) const { AssignmentMap::const_iterator i = d_state.find(n); @@ -179,6 +183,7 @@ private: return (*i).second == ASSIGNED_TO_TRUE; } +private: /** Predicate for use in STL functions. */ class IsAssigned : public std::unary_function<TNode, bool> { CircuitPropagator& d_circuit; @@ -268,6 +273,13 @@ public: */ bool propagate() CVC4_WARN_UNUSED_RESULT; + /** + * Get the back edges of this circuit. + */ + const BackEdgesMap& getBackEdges() const { + return d_backEdges; + } + };/* class CircuitPropagator */ }/* CVC4::theory::booleans namespace */ diff --git a/src/theory/bv/theory_bv.h b/src/theory/bv/theory_bv.h index 0c8df3fca..e38f3568c 100644 --- a/src/theory/bv/theory_bv.h +++ b/src/theory/bv/theory_bv.h @@ -40,8 +40,8 @@ class TheoryBV : public Theory { context::Context* d_context; /** Context dependent set of atoms we already propagated */ - context::CDHashSet<TNode, TNodeHashFunction> d_alreadyPropagatedSet; - context::CDHashSet<TNode, TNodeHashFunction> d_sharedTermsSet; + context::CDHashSet<Node, NodeHashFunction> d_alreadyPropagatedSet; + context::CDHashSet<Node, NodeHashFunction> d_sharedTermsSet; BitblastSolver d_bitblastSolver; EqualitySolver d_equalitySolver; diff --git a/src/theory/bv/theory_bv_rewrite_rules_simplification.h b/src/theory/bv/theory_bv_rewrite_rules_simplification.h index 23cd8381d..8bcc64414 100644 --- a/src/theory/bv/theory_bv_rewrite_rules_simplification.h +++ b/src/theory/bv/theory_bv_rewrite_rules_simplification.h @@ -430,10 +430,6 @@ Node RewriteRule<BitwiseNotOr>::apply(TNode node) { template<> inline bool RewriteRule<XorNot>::applies(TNode node) { Unreachable(); - if (node.getKind() == kind::BITVECTOR_XOR && - node.getNumChildren() == 2 && - node[0].getKind() == kind::BITVECTOR_NOT && - node[1].getKind() == kind::BITVECTOR_NOT); } template<> inline diff --git a/src/theory/datatypes/options b/src/theory/datatypes/options index d250bee74..1daa30981 100644 --- a/src/theory/datatypes/options +++ b/src/theory/datatypes/options @@ -11,7 +11,7 @@ module DATATYPES "theory/datatypes/options.h" Datatypes theory # cdr( nil ) has no set value. expert-option dtRewriteErrorSel /--disable-dt-rewrite-error-sel bool :default true disable rewriting incorrectly applied selectors to arbitrary ground term -expert-option dtForceAssignment /--dt-force-assignment bool :default false :read-write +option dtForceAssignment /--dt-force-assignment bool :default false :read-write force the datatypes solver to give specific values to all datatypes terms before answering sat endmodule diff --git a/src/theory/quantifiers/first_order_model.cpp b/src/theory/quantifiers/first_order_model.cpp index 3d98674a8..8272ce168 100644 --- a/src/theory/quantifiers/first_order_model.cpp +++ b/src/theory/quantifiers/first_order_model.cpp @@ -42,10 +42,6 @@ void FirstOrderModel::reset(){ TheoryModel::reset(); } -void FirstOrderModel::addTerm( Node n ){ - TheoryModel::addTerm( n ); -} - void FirstOrderModel::initialize( bool considerAxioms ){ //rebuild models d_uf_model_tree.clear(); diff --git a/src/theory/quantifiers/first_order_model.h b/src/theory/quantifiers/first_order_model.h index 3779579fd..50a941968 100644 --- a/src/theory/quantifiers/first_order_model.h +++ b/src/theory/quantifiers/first_order_model.h @@ -33,8 +33,6 @@ class TermDb; class FirstOrderModel : public TheoryModel { private: - //add term function - void addTerm( Node n ); //for initialize model void initializeModelForTerm( Node n ); /** whether an axiom is asserted */ diff --git a/src/theory/quantifiers/inst_gen.cpp b/src/theory/quantifiers/inst_gen.cpp index b5f92c5f8..dea371e9c 100755..100644 --- a/src/theory/quantifiers/inst_gen.cpp +++ b/src/theory/quantifiers/inst_gen.cpp @@ -1,13 +1,11 @@ /********************* */ /*! \file inst_gen.cpp ** \verbatim - ** Original author: ajreynol - ** Major contributors: none + ** Original author: Andrew Reynolds <andrew.j.reynolds@gmail.com> + ** Major contributors: Morgan Deters <mdeters@cs.nyu.edu> ** Minor contributors (to current version): none - ** This file is part of the CVC4 prototype. - ** Copyright (c) 2009, 2010, 2011 The Analysis of Computer Systems Group (ACSys) - ** Courant Institute of Mathematical Sciences - ** New York University + ** This file is part of the CVC4 project. + ** Copyright (c) 2009-2013 New York University and The University of Iowa ** See the file COPYING in the top-level source directory for licensing ** information.\endverbatim ** diff --git a/src/theory/quantifiers/inst_gen.h b/src/theory/quantifiers/inst_gen.h index c8de2c642..94922df18 100755..100644 --- a/src/theory/quantifiers/inst_gen.h +++ b/src/theory/quantifiers/inst_gen.h @@ -1,13 +1,11 @@ /********************* */ /*! \file inst_gen.h ** \verbatim - ** Original author: ajreynol - ** Major contributors: none + ** Original author: Andrew Reynolds <andrew.j.reynolds@gmail.com> + ** Major contributors: Morgan Deters <mdeters@cs.nyu.edu> ** Minor contributors (to current version): none - ** This file is part of the CVC4 prototype. - ** Copyright (c) 2009-2012 The Analysis of Computer Systems Group (ACSys) - ** Courant Institute of Mathematical Sciences - ** New York University + ** This file is part of the CVC4 project. + ** Copyright (c) 2009-2013 New York University and The University of Iowa ** See the file COPYING in the top-level source directory for licensing ** information.\endverbatim ** diff --git a/src/theory/quantifiers/inst_match_generator.cpp b/src/theory/quantifiers/inst_match_generator.cpp index 2822597e1..386834385 100755..100644 --- a/src/theory/quantifiers/inst_match_generator.cpp +++ b/src/theory/quantifiers/inst_match_generator.cpp @@ -1,15 +1,16 @@ /********************* */ /*! \file inst_match_generator.cpp -** \verbatim -** Original author: ajreynol -** Major contributors: bobot -** Minor contributors (to current version): barrett, mdeters -** This file is part of the CVC4 prototype. -** Copyright (c) 2009-2012 New York University and The University of Iowa -** See the file COPYING in the top-level source directory for licensing -** information.\endverbatim -** -** \brief Implementation of inst match generator class + ** \verbatim + ** Original author: Andrew Reynolds <andrew.j.reynolds@gmail.com> + ** Major contributors: Morgan Deters <mdeters@cs.nyu.edu> + ** Minor contributors (to current version): none + ** This file is part of the CVC4 project. + ** Copyright (c) 2009-2013 New York University and The University of Iowa + ** See the file COPYING in the top-level source directory for licensing + ** information.\endverbatim + ** + ** [[ Add lengthier description here ]] + ** \todo document this file **/ #include "theory/quantifiers/inst_match_generator.h" @@ -29,116 +30,111 @@ namespace theory { namespace inst { -InstMatchGenerator::InstMatchGenerator( Node pat, QuantifiersEngine* qe, int matchPolicy ) : d_matchPolicy( matchPolicy ){ - initializePattern( pat, qe ); -} - -InstMatchGenerator::InstMatchGenerator( std::vector< Node >& pats, QuantifiersEngine* qe, int matchPolicy ) : d_matchPolicy( matchPolicy ){ - if( pats.size()==1 ){ - initializePattern( pats[0], qe ); - }else{ - initializePatterns( pats, qe ); - } +InstMatchGenerator::InstMatchGenerator( Node pat, int matchPolicy ) : d_matchPolicy( matchPolicy ){ + d_active_add = false; + Assert( pat.hasAttribute(InstConstantAttribute()) ); + d_pattern = pat; + d_match_pattern = pat; + d_next = NULL; } -void InstMatchGenerator::initializePatterns( std::vector< Node >& pats, QuantifiersEngine* qe ){ - int childMatchPolicy = d_matchPolicy==MATCH_GEN_EFFICIENT_E_MATCH ? 0 : d_matchPolicy; - for( int i=0; i<(int)pats.size(); i++ ){ - d_children.push_back( new InstMatchGenerator( pats[i], qe, childMatchPolicy ) ); +void InstMatchGenerator::setActiveAdd(){ + d_active_add = true; + if( d_next!=NULL ){ + d_next->setActiveAdd(); } - d_pattern = Node::null(); - d_match_pattern = Node::null(); - d_cg = NULL; } -void InstMatchGenerator::initializePattern( Node pat, QuantifiersEngine* qe ){ - Debug("inst-match-gen") << "Pattern term is " << pat << std::endl; - Assert( pat.hasAttribute(InstConstantAttribute()) ); - d_pattern = pat; - d_match_pattern = pat; - if( d_match_pattern.getKind()==NOT ){ - //we want to add the children of the NOT - d_match_pattern = d_pattern[0]; - } - if( d_match_pattern.getKind()==IFF || d_match_pattern.getKind()==EQUAL ){ - if( !d_match_pattern[0].hasAttribute(InstConstantAttribute()) ){ - Assert( d_match_pattern[1].hasAttribute(InstConstantAttribute()) ); - //swap sides - d_pattern = NodeManager::currentNM()->mkNode( d_match_pattern.getKind(), d_match_pattern[1], d_match_pattern[0] ); - d_pattern = pat.getKind()==NOT ? d_pattern.notNode() : d_pattern; - if( pat.getKind()!=NOT ){ //TEMPORARY until we do better implementation of disequality matching - d_match_pattern = d_match_pattern[1]; - }else{ - d_match_pattern = d_pattern[0][0]; - } - }else if( !d_match_pattern[1].hasAttribute(InstConstantAttribute()) ){ - Assert( d_match_pattern[0].hasAttribute(InstConstantAttribute()) ); - if( pat.getKind()!=NOT ){ //TEMPORARY until we do better implementation of disequality matching - d_match_pattern = d_match_pattern[0]; +void InstMatchGenerator::initialize( QuantifiersEngine* qe, std::vector< InstMatchGenerator * > & gens ){ + if( !d_pattern.isNull() ){ + Debug("inst-match-gen") << "Pattern term is " << d_pattern << std::endl; + if( d_match_pattern.getKind()==NOT ){ + //we want to add the children of the NOT + d_match_pattern = d_pattern[0]; + } + if( d_match_pattern.getKind()==IFF || d_match_pattern.getKind()==EQUAL ){ + if( !d_match_pattern[0].hasAttribute(InstConstantAttribute()) ){ + Assert( d_match_pattern[1].hasAttribute(InstConstantAttribute()) ); + //swap sides + Node pat = d_pattern; + d_pattern = NodeManager::currentNM()->mkNode( d_match_pattern.getKind(), d_match_pattern[1], d_match_pattern[0] ); + d_pattern = pat.getKind()==NOT ? d_pattern.notNode() : d_pattern; + if( pat.getKind()!=NOT ){ //TEMPORARY until we do better implementation of disequality matching + d_match_pattern = d_match_pattern[1]; + }else{ + d_match_pattern = d_pattern[0][0]; + } + }else if( !d_match_pattern[1].hasAttribute(InstConstantAttribute()) ){ + Assert( d_match_pattern[0].hasAttribute(InstConstantAttribute()) ); + if( d_pattern.getKind()!=NOT ){ //TEMPORARY until we do better implementation of disequality matching + d_match_pattern = d_match_pattern[0]; + } } } - } - int childMatchPolicy = MATCH_GEN_DEFAULT; - for( int i=0; i<(int)d_match_pattern.getNumChildren(); i++ ){ - if( d_match_pattern[i].hasAttribute(InstConstantAttribute()) ){ - if( d_match_pattern[i].getKind()!=INST_CONSTANT ){ - d_children.push_back( new InstMatchGenerator( d_match_pattern[i], qe, childMatchPolicy ) ); - d_children_index.push_back( i ); + int childMatchPolicy = MATCH_GEN_DEFAULT; + for( int i=0; i<(int)d_match_pattern.getNumChildren(); i++ ){ + if( d_match_pattern[i].hasAttribute(InstConstantAttribute()) ){ + if( d_match_pattern[i].getKind()!=INST_CONSTANT ){ + InstMatchGenerator * cimg = new InstMatchGenerator( d_match_pattern[i], childMatchPolicy ); + d_children.push_back( cimg ); + d_children_index.push_back( i ); + gens.push_back( cimg ); + } } } - } - Debug("inst-match-gen") << "Pattern is " << d_pattern << ", match pattern is " << d_match_pattern << std::endl; + Debug("inst-match-gen") << "Pattern is " << d_pattern << ", match pattern is " << d_match_pattern << std::endl; - //create candidate generator - if( d_match_pattern.getKind()==EQUAL || d_match_pattern.getKind()==IFF ){ - Assert( d_matchPolicy==MATCH_GEN_DEFAULT ); - //we will be producing candidates via literal matching heuristics - if( d_pattern.getKind()!=NOT ){ - //candidates will be all equalities - d_cg = new inst::CandidateGeneratorQELitEq( qe, d_match_pattern ); - }else{ - //candidates will be all disequalities - d_cg = new inst::CandidateGeneratorQELitDeq( qe, d_match_pattern ); - } - }else if( d_pattern.getKind()==EQUAL || d_pattern.getKind()==IFF || d_pattern.getKind()==NOT ){ - Assert( d_matchPolicy==MATCH_GEN_DEFAULT ); - if( d_pattern.getKind()==NOT ){ - Unimplemented("Disequal generator unimplemented"); - }else{ - Assert( Trigger::isAtomicTrigger( d_match_pattern ) ); - //we are matching only in a particular equivalence class + //create candidate generator + if( d_match_pattern.getKind()==EQUAL || d_match_pattern.getKind()==IFF ){ + Assert( d_matchPolicy==MATCH_GEN_DEFAULT ); + //we will be producing candidates via literal matching heuristics + if( d_pattern.getKind()!=NOT ){ + //candidates will be all equalities + d_cg = new inst::CandidateGeneratorQELitEq( qe, d_match_pattern ); + }else{ + //candidates will be all disequalities + d_cg = new inst::CandidateGeneratorQELitDeq( qe, d_match_pattern ); + } + }else if( d_pattern.getKind()==EQUAL || d_pattern.getKind()==IFF || d_pattern.getKind()==NOT ){ + Assert( d_matchPolicy==MATCH_GEN_DEFAULT ); + if( d_pattern.getKind()==NOT ){ + Unimplemented("Disequal generator unimplemented"); + }else{ + Assert( Trigger::isAtomicTrigger( d_match_pattern ) ); + //we are matching only in a particular equivalence class + d_cg = new inst::CandidateGeneratorQE( qe, d_match_pattern.getOperator() ); + //store the equivalence class that we will call d_cg->reset( ... ) on + d_eq_class = d_pattern[1]; + } + }else if( Trigger::isAtomicTrigger( d_match_pattern ) ){ + //if( d_matchPolicy==MATCH_GEN_EFFICIENT_E_MATCH ){ + //Warning() << "Currently efficient e matching is not taken into account for quantifiers: " << d_pattern << std::endl; + //} + //we will be scanning lists trying to find d_match_pattern.getOperator() d_cg = new inst::CandidateGeneratorQE( qe, d_match_pattern.getOperator() ); - //store the equivalence class that we will call d_cg->reset( ... ) on - d_eq_class = d_pattern[1]; - } - }else if( Trigger::isAtomicTrigger( d_match_pattern ) ){ - //if( d_matchPolicy==MATCH_GEN_EFFICIENT_E_MATCH ){ - //Warning() << "Currently efficient e matching is not taken into account for quantifiers: " << d_pattern << std::endl; - //} - //we will be scanning lists trying to find d_match_pattern.getOperator() - d_cg = new inst::CandidateGeneratorQE( qe, d_match_pattern.getOperator() ); - }else{ - d_cg = new CandidateGeneratorQueue; - if( !Trigger::getPatternArithmetic( d_match_pattern.getAttribute(InstConstantAttribute()), d_match_pattern, d_arith_coeffs ) ){ - Debug("inst-match-gen") << "(?) Unknown matching pattern is " << d_match_pattern << std::endl; - //Warning() << "(?) Unknown matching pattern is " << d_match_pattern << std::endl; - d_matchPolicy = MATCH_GEN_INTERNAL_ERROR; }else{ - Debug("matching-arith") << "Generated arithmetic pattern for " << d_match_pattern << ": " << std::endl; - for( std::map< Node, Node >::iterator it = d_arith_coeffs.begin(); it != d_arith_coeffs.end(); ++it ){ - Debug("matching-arith") << " " << it->first << " -> " << it->second << std::endl; + d_cg = new CandidateGeneratorQueue; + if( !Trigger::getPatternArithmetic( d_match_pattern.getAttribute(InstConstantAttribute()), d_match_pattern, d_arith_coeffs ) ){ + Debug("inst-match-gen") << "(?) Unknown matching pattern is " << d_match_pattern << std::endl; + //Warning() << "(?) Unknown matching pattern is " << d_match_pattern << std::endl; + d_matchPolicy = MATCH_GEN_INTERNAL_ERROR; + }else{ + Debug("matching-arith") << "Generated arithmetic pattern for " << d_match_pattern << ": " << std::endl; + for( std::map< Node, Node >::iterator it = d_arith_coeffs.begin(); it != d_arith_coeffs.end(); ++it ){ + Debug("matching-arith") << " " << it->first << " -> " << it->second << std::endl; + } + //we will treat this as match gen internal arithmetic + d_matchPolicy = MATCH_GEN_INTERNAL_ARITHMETIC; } - //we will treat this as match gen internal arithmetic - d_matchPolicy = MATCH_GEN_INTERNAL_ARITHMETIC; } } } /** get match (not modulo equality) */ -bool InstMatchGenerator::getMatch( Node t, InstMatch& m, QuantifiersEngine* qe ){ +bool InstMatchGenerator::getMatch( Node f, Node t, InstMatch& m, QuantifiersEngine* qe ){ Debug("matching") << "Matching " << t << " against pattern " << d_match_pattern << " (" - << m.size() << ")" << ", " << d_children.size() << std::endl; + << m << ")" << ", " << d_children.size() << std::endl; Assert( !d_match_pattern.isNull() ); if( qe->d_optMatchIgnoreModelBasis && t.getAttribute(ModelBasisAttribute()) ){ return true; @@ -148,9 +144,8 @@ bool InstMatchGenerator::getMatch( Node t, InstMatch& m, QuantifiersEngine* qe ) return false; }else{ EqualityQuery* q = qe->getEqualityQuery(); - //add m to partial match vector - std::vector< InstMatch > partial; - partial.push_back( InstMatch( &m ) ); + //save previous match + InstMatch prev( &m ); //if t is null Assert( !t.isNull() ); Assert( !t.hasAttribute(InstConstantAttribute()) ); @@ -160,13 +155,13 @@ bool InstMatchGenerator::getMatch( Node t, InstMatch& m, QuantifiersEngine* qe ) for( int i=0; i<(int)d_match_pattern.getNumChildren(); i++ ){ if( d_match_pattern[i].hasAttribute(InstConstantAttribute()) ){ if( d_match_pattern[i].getKind()==INST_CONSTANT ){ - if( !partial[0].setMatch( q, d_match_pattern[i], t[i] ) ){ + if( !m.setMatch( q, d_match_pattern[i], t[i] ) ){ //match is in conflict Debug("matching-debug") << "Match in conflict " << t[i] << " and " << d_match_pattern[i] << " because " - << partial[0].get(d_match_pattern[i]) + << m.get(d_match_pattern[i]) << std::endl; - Debug("matching-fail") << "Match fail: " << partial[0].get(d_match_pattern[i]) << " and " << t[i] << std::endl; + Debug("matching-fail") << "Match fail: " << m.get(d_match_pattern[i]) << " and " << t[i] << std::endl; return false; } } @@ -184,48 +179,25 @@ bool InstMatchGenerator::getMatch( Node t, InstMatch& m, QuantifiersEngine* qe ) for( int i=0; i<(int)d_children.size(); i++ ){ Node rep = q->getRepresentative( t[ d_children_index[i] ] ); reps.push_back( rep ); - d_children[i]->d_cg->reset( rep ); + d_children[i]->reset( rep, qe ); } - - //combine child matches - int index = 0; - while( index>=0 && index<(int)d_children.size() ){ - partial.push_back( InstMatch( &partial[index] ) ); - if( d_children[index]->getNextMatch2( partial[index+1], qe ) ){ - index++; - }else{ - d_children[index]->d_cg->reset( reps[index] ); - partial.pop_back(); - if( !partial.empty() ){ - partial.pop_back(); - } - index--; + bool success = true; + if( d_next!=NULL ){ + success = d_next->getNextMatch( f, m, qe ); + }else{ + if( d_active_add ){ + Trace("active-add") << "Active Adding instantiation " << m << std::endl; + success = qe->addInstantiation( f, m ); + Trace("active-add") << "Success = " << success << std::endl; } } - if( index>=0 ){ - m = partial.back(); - return true; - }else{ - return false; + if( !success ){ + m = InstMatch( &prev ); } + return success; } } -bool InstMatchGenerator::getNextMatch2( InstMatch& m, QuantifiersEngine* qe, bool saveMatched ){ - bool success = false; - Node t; - do{ - //get the next candidate term t - t = d_cg->getNextCandidate(); - //if t not null, try to fit it into match m - if( !t.isNull() && t.getType()==d_match_pattern.getType() ){ - success = getMatch( t, m, qe ); - } - }while( !success && !t.isNull() ); - if (saveMatched) m.d_matched = t; - return success; -} - bool InstMatchGenerator::getMatchArithmetic( Node t, InstMatch& m, QuantifiersEngine* qe ){ Debug("matching-arith") << "Matching " << t << " " << d_match_pattern << std::endl; if( !d_arith_coeffs.empty() ){ @@ -298,74 +270,57 @@ void InstMatchGenerator::resetInstantiationRound( QuantifiersEngine* qe ){ } void InstMatchGenerator::reset( Node eqc, QuantifiersEngine* qe ){ - if( d_match_pattern.isNull() ){ - for( int i=0; i<(int)d_children.size(); i++ ){ - d_children[i]->reset( eqc, qe ); - } - d_partial.clear(); - }else{ - if( !d_eq_class.isNull() ){ - //we have a specific equivalence class in mind - //we are producing matches for f(E) ~ t, where E is a non-ground vector of terms, and t is a ground term - //just look in equivalence class of the RHS - d_cg->reset( d_eq_class ); - }else{ - d_cg->reset( eqc ); - } + if( !eqc.isNull() ){ + d_eq_class = eqc; } + //we have a specific equivalence class in mind + //we are producing matches for f(E) ~ t, where E is a non-ground vector of terms, and t is a ground term + //just look in equivalence class of the RHS + d_cg->reset( d_eq_class ); } -bool InstMatchGenerator::getNextMatch( InstMatch& m, QuantifiersEngine* qe ){ +bool InstMatchGenerator::getNextMatch( Node f, InstMatch& m, QuantifiersEngine* qe ){ m.d_matched = Node::null(); - if( d_match_pattern.isNull() ){ - int index = (int)d_partial.size(); - while( index>=0 && index<(int)d_children.size() ){ - if( index>0 ){ - d_partial.push_back( InstMatch( &d_partial[index-1] ) ); - }else{ - d_partial.push_back( InstMatch() ); - } - if( d_children[index]->getNextMatch( d_partial[index], qe ) ){ - index++; - }else{ - d_children[index]->reset( Node::null(), qe ); - d_partial.pop_back(); - if( !d_partial.empty() ){ - d_partial.pop_back(); - } - index--; - } - } - if( index>=0 ){ - m = d_partial.back(); - d_partial.pop_back(); - return true; - }else{ - return false; + //Debug("matching") << this << " " << d_pattern << " get next match 2 " << m << " in eq class " << d_eq_class << std::endl; + bool success = false; + Node t; + do{ + //get the next candidate term t + t = d_cg->getNextCandidate(); + //if t not null, try to fit it into match m + if( !t.isNull() && t.getType()==d_match_pattern.getType() ){ + success = getMatch( f, t, m, qe ); } - }else{ - bool res = getNextMatch2( m, qe, true ); - Assert(!res || !m.d_matched.isNull()); - return res; + }while( !success && !t.isNull() ); + m.d_matched = t; + if( !success ){ + //Debug("matching") << this << " failed, reset " << d_eq_class << std::endl; + //we failed, must reset + reset( d_eq_class, qe ); } + return success; } int InstMatchGenerator::addInstantiations( Node f, InstMatch& baseMatch, QuantifiersEngine* qe ){ - //now, try to add instantiation for each match produced + //try to add instantiation for each match produced int addedLemmas = 0; InstMatch m; - while( getNextMatch( m, qe ) ){ - //m.makeInternal( d_quantEngine->getEqualityQuery() ); - m.add( baseMatch ); - if( qe->addInstantiation( f, m ) ){ - addedLemmas++; - if( qe->d_optInstLimitActive && qe->d_optInstLimit<=0 ){ - return addedLemmas; + while( getNextMatch( f, m, qe ) ){ + if( !d_active_add ){ + //m.makeInternal( d_quantEngine->getEqualityQuery() ); + m.add( baseMatch ); + if( qe->addInstantiation( f, m ) ){ + addedLemmas++; + if( qe->d_optInstLimitActive && qe->d_optInstLimit<=0 ){ + return addedLemmas; + } } + m.clear(); + }else{ + addedLemmas++; } - m.clear(); } //return number of lemmas added return addedLemmas; @@ -375,7 +330,7 @@ int InstMatchGenerator::addTerm( Node f, Node t, QuantifiersEngine* qe ){ Assert( options::eagerInstQuant() ); if( !d_match_pattern.isNull() ){ InstMatch m; - if( getMatch( t, m, qe ) ){ + if( getMatch( f, t, m, qe ) ){ if( qe->addInstantiation( f, m ) ){ return 1; } @@ -388,6 +343,40 @@ int InstMatchGenerator::addTerm( Node f, Node t, QuantifiersEngine* qe ){ return 0; } + +InstMatchGenerator* InstMatchGenerator::mkInstMatchGenerator( Node pat, QuantifiersEngine* qe ) { + std::vector< Node > pats; + pats.push_back( pat ); + return mkInstMatchGenerator( pats, qe ); +} + +InstMatchGenerator* InstMatchGenerator::mkInstMatchGenerator( std::vector< Node >& pats, QuantifiersEngine* qe ) { + size_t pCounter = 0; + InstMatchGenerator* prev = NULL; + InstMatchGenerator* oinit = NULL; + while( pCounter<pats.size() ){ + size_t counter = 0; + std::vector< InstMatchGenerator* > gens; + InstMatchGenerator* init = new InstMatchGenerator(pats[pCounter]); + if(pCounter==0){ + oinit = init; + } + gens.push_back(init); + //chain the resulting match generators together + while (counter<gens.size()) { + InstMatchGenerator* curr = gens[counter]; + if( prev ){ + prev->d_next = curr; + } + curr->initialize(qe, gens); + prev = curr; + counter++; + } + pCounter++; + } + return oinit; +} + /** constructors */ InstMatchGeneratorMulti::InstMatchGeneratorMulti( Node f, std::vector< Node >& pats, QuantifiersEngine* qe, int matchOption ) : d_f( f ){ @@ -408,7 +397,7 @@ d_f( f ){ for( int i=0; i<(int)pats.size(); i++ ){ Node n = pats[i]; //make the match generator - d_children.push_back( new InstMatchGenerator( n, qe, matchOption ) ); + d_children.push_back( InstMatchGenerator::mkInstMatchGenerator( n, qe ) ); //compute unique/shared variables std::vector< int > unique_vars; std::map< int, bool > shared_vars; @@ -473,7 +462,7 @@ int InstMatchGeneratorMulti::addInstantiations( Node f, InstMatch& baseMatch, Qu Debug("smart-multi-trigger") << "Calculate matches " << i << std::endl; std::vector< InstMatch > newMatches; InstMatch m; - while( d_children[i]->getNextMatch( m, qe ) ){ + while( d_children[i]->getNextMatch( f, m, qe ) ){ m.makeRepresentative( qe ); newMatches.push_back( InstMatch( &m ) ); m.clear(); @@ -595,7 +584,7 @@ int InstMatchGeneratorMulti::addTerm( Node f, Node t, QuantifiersEngine* qe ){ if( ((InstMatchGenerator*)d_children[i])->d_match_pattern.getOperator()==t.getOperator() ){ InstMatch m; //if it produces a match, then process it with the rest - if( ((InstMatchGenerator*)d_children[i])->getMatch( t, m, qe ) ){ + if( ((InstMatchGenerator*)d_children[i])->getMatch( f, t, m, qe ) ){ processNewMatch( qe, m, i, addedLemmas ); } } diff --git a/src/theory/quantifiers/inst_match_generator.h b/src/theory/quantifiers/inst_match_generator.h index dd3663e0a..b201fa60f 100755..100644 --- a/src/theory/quantifiers/inst_match_generator.h +++ b/src/theory/quantifiers/inst_match_generator.h @@ -1,11 +1,11 @@ /********************* */ /*! \file inst_match_generator.h ** \verbatim - ** Original author: ajreynol - ** Major contributors: bobot - ** Minor contributors (to current version): mdeters - ** This file is part of the CVC4 prototype. - ** Copyright (c) 2009-2012 New York University and The University of Iowa + ** Original author: Andrew Reynolds <andrew.j.reynolds@gmail.com> + ** Major contributors: Morgan Deters <mdeters@cs.nyu.edu> + ** Minor contributors (to current version): none + ** This file is part of the CVC4 project. + ** Copyright (c) 2009-2013 New York University and The University of Iowa ** See the file COPYING in the top-level source directory for licensing ** information.\endverbatim ** @@ -38,11 +38,13 @@ public: /** reset, eqc is the equivalence class to search in (any if eqc=null) */ virtual void reset( Node eqc, QuantifiersEngine* qe ) = 0; /** get the next match. must call reset( eqc ) before this function. */ - virtual bool getNextMatch( InstMatch& m, QuantifiersEngine* qe ) = 0; + virtual bool getNextMatch( Node f, InstMatch& m, QuantifiersEngine* qe ) = 0; /** add instantiations directly */ virtual int addInstantiations( Node f, InstMatch& baseMatch, QuantifiersEngine* qe ) = 0; /** add ground term t, called when t is added to term db */ virtual int addTerm( Node f, Node t, QuantifiersEngine* qe ) = 0; + /** set active add */ + virtual void setActiveAdd() {} };/* class IMGenerator */ class CandidateGenerator; @@ -56,15 +58,14 @@ private: /** children generators */ std::vector< InstMatchGenerator* > d_children; std::vector< int > d_children_index; - /** partial vector */ - std::vector< InstMatch > d_partial; + /** the next generator in order */ + InstMatchGenerator* d_next; /** eq class */ Node d_eq_class; /** for arithmetic matching */ std::map< Node, Node > d_arith_coeffs; /** initialize pattern */ - void initializePatterns( std::vector< Node >& pats, QuantifiersEngine* qe ); - void initializePattern( Node pat, QuantifiersEngine* qe ); + void initialize( QuantifiersEngine* qe, std::vector< InstMatchGenerator * > & gens ); public: enum { //options for producing matches @@ -75,10 +76,6 @@ public: MATCH_GEN_INTERNAL_ERROR, }; private: - /** get the next match. must call d_cg->reset( ... ) before using. - only valid for use where !d_match_pattern.isNull(). - */ - bool getNextMatch2( InstMatch& m, QuantifiersEngine* qe, bool saveMatched = false ); /** for arithmetic */ bool getMatchArithmetic( Node t, InstMatch& m, QuantifiersEngine* qe ); public: @@ -86,11 +83,10 @@ public: d_match_pattern and t should have the same shape. only valid for use where !d_match_pattern.isNull(). */ - bool getMatch( Node t, InstMatch& m, QuantifiersEngine* qe ); + bool getMatch( Node f, Node t, InstMatch& m, QuantifiersEngine* qe ); /** constructors */ - InstMatchGenerator( Node pat, QuantifiersEngine* qe, int matchOption = 0 ); - InstMatchGenerator( std::vector< Node >& pats, QuantifiersEngine* qe, int matchOption = 0 ); + InstMatchGenerator( Node pat, int matchOption = 0 ); /** destructor */ ~InstMatchGenerator(){} /** The pattern we are producing matches for. @@ -105,11 +101,17 @@ public: /** reset, eqc is the equivalence class to search in (any if eqc=null) */ void reset( Node eqc, QuantifiersEngine* qe ); /** get the next match. must call reset( eqc ) before this function. */ - bool getNextMatch( InstMatch& m, QuantifiersEngine* qe ); + bool getNextMatch( Node f, InstMatch& m, QuantifiersEngine* qe ); /** add instantiations */ int addInstantiations( Node f, InstMatch& baseMatch, QuantifiersEngine* qe ); /** add ground term t */ int addTerm( Node f, Node t, QuantifiersEngine* qe ); + + bool d_active_add; + void setActiveAdd(); + + static InstMatchGenerator* mkInstMatchGenerator( Node pat, QuantifiersEngine* qe ); + static InstMatchGenerator* mkInstMatchGenerator( std::vector< Node >& pats, QuantifiersEngine* qe ); };/* class InstMatchGenerator */ /** smart multi-trigger implementation */ @@ -152,7 +154,7 @@ public: /** reset, eqc is the equivalence class to search in (any if eqc=null) */ void reset( Node eqc, QuantifiersEngine* qe ); /** get the next match. must call reset( eqc ) before this function. (not implemented) */ - bool getNextMatch( InstMatch& m, QuantifiersEngine* qe ) { return false; } + bool getNextMatch( Node f, InstMatch& m, QuantifiersEngine* qe ) { return false; } /** add instantiations */ int addInstantiations( Node f, InstMatch& baseMatch, QuantifiersEngine* qe ); /** add ground term t */ @@ -178,7 +180,7 @@ public: /** reset, eqc is the equivalence class to search in (any if eqc=null) */ void reset( Node eqc, QuantifiersEngine* qe ) {} /** get the next match. must call reset( eqc ) before this function. (not implemented) */ - bool getNextMatch( InstMatch& m, QuantifiersEngine* qe ) { return false; } + bool getNextMatch( Node f, InstMatch& m, QuantifiersEngine* qe ) { return false; } /** add instantiations */ int addInstantiations( Node f, InstMatch& baseMatch, QuantifiersEngine* qe ); /** add ground term t, possibly add instantiations */ diff --git a/src/theory/quantifiers/inst_strategy_cbqi.cpp b/src/theory/quantifiers/inst_strategy_cbqi.cpp index aba311500..b12fed619 100755..100644 --- a/src/theory/quantifiers/inst_strategy_cbqi.cpp +++ b/src/theory/quantifiers/inst_strategy_cbqi.cpp @@ -1,11 +1,11 @@ /********************* */ /*! \file inst_strategy_cbqi.cpp ** \verbatim - ** Original author: ajreynol - ** Major contributors: none - ** Minor contributors (to current version): bobot, mdeters - ** This file is part of the CVC4 prototype. - ** Copyright (c) 2009-2012 New York University and The University of Iowa + ** Original author: Andrew Reynolds <andrew.j.reynolds@gmail.com> + ** Major contributors: Morgan Deters <mdeters@cs.nyu.edu> + ** Minor contributors (to current version): none + ** This file is part of the CVC4 project. + ** Copyright (c) 2009-2013 New York University and The University of Iowa ** See the file COPYING in the top-level source directory for licensing ** information.\endverbatim ** @@ -46,11 +46,12 @@ void InstStrategySimplex::processResetInstantiationRound( Theory::Effort effort d_tableaux.clear(); d_ceTableaux.clear(); //search for instantiation rows in simplex tableaux - ArithVarToNodeMap avtnm = d_th->d_arithvarNodeMap.getArithVarToNodeMap(); - for( ArithVarToNodeMap::iterator it = avtnm.begin(); it != avtnm.end(); ++it ){ - ArithVar x = (*it).first; + ArithVarNodeMap& avnm = d_th->d_arithvarNodeMap; + ArithVarNodeMap::var_iterator vi, vend; + for(vi = avnm.var_begin(), vend = avnm.var_end(); vi != vend; ++vi ){ + ArithVar x = *vi; if( d_th->d_partialModel.hasEitherBound( x ) ){ - Node n = (*it).second; + Node n = avnm.asNode(x); Node f; NodeBuilder<> t(kind::PLUS); if( n.getKind()==PLUS ){ @@ -167,10 +168,11 @@ void InstStrategySimplex::addTermToRow( ArithVar x, Node n, Node& f, NodeBuilder } void InstStrategySimplex::debugPrint( const char* c ){ - ArithVarToNodeMap avtnm = d_th->d_arithvarNodeMap.getArithVarToNodeMap(); - for( ArithVarToNodeMap::iterator it = avtnm.begin(); it != avtnm.end(); ++it ){ - ArithVar x = (*it).first; - Node n = (*it).second; + const ArithVarNodeMap& avnm = d_th->d_arithvarNodeMap; + ArithVarNodeMap::var_iterator vi, vend; + for(vi = avnm.var_begin(), vend = avnm.var_end(); vi != vend; ++vi ){ + ArithVar x = *vi; + Node n = avnm.asNode(x); //if( ((TheoryArith*)getTheory())->d_partialModel.hasEitherBound( x ) ){ Debug(c) << x << " : " << n << ", bounds = "; if( d_th->d_partialModel.hasLowerBound( x ) ){ diff --git a/src/theory/quantifiers/inst_strategy_cbqi.h b/src/theory/quantifiers/inst_strategy_cbqi.h index 1c9565de6..de548ab14 100755..100644 --- a/src/theory/quantifiers/inst_strategy_cbqi.h +++ b/src/theory/quantifiers/inst_strategy_cbqi.h @@ -1,11 +1,11 @@ /********************* */ /*! \file inst_strategy_cbqi.h ** \verbatim - ** Original author: ajreynol - ** Major contributors: none - ** Minor contributors (to current version): mdeters - ** This file is part of the CVC4 prototype. - ** Copyright (c) 2009-2012 New York University and The University of Iowa + ** Original author: Andrew Reynolds <andrew.j.reynolds@gmail.com> + ** Major contributors: Morgan Deters <mdeters@cs.nyu.edu> + ** Minor contributors (to current version): none + ** This file is part of the CVC4 project. + ** Copyright (c) 2009-2013 New York University and The University of Iowa ** See the file COPYING in the top-level source directory for licensing ** information.\endverbatim ** diff --git a/src/theory/quantifiers/inst_strategy_e_matching.cpp b/src/theory/quantifiers/inst_strategy_e_matching.cpp index edf9d976c..3f5cc7666 100755..100644 --- a/src/theory/quantifiers/inst_strategy_e_matching.cpp +++ b/src/theory/quantifiers/inst_strategy_e_matching.cpp @@ -1,11 +1,11 @@ /********************* */ /*! \file inst_strategy_e_matching.cpp ** \verbatim - ** Original author: ajreynol - ** Major contributors: mdeters - ** Minor contributors (to current version): bobot - ** This file is part of the CVC4 prototype. - ** Copyright (c) 2009-2012 New York University and The University of Iowa + ** Original author: Andrew Reynolds <andrew.j.reynolds@gmail.com> + ** Major contributors: Morgan Deters <mdeters@cs.nyu.edu> + ** Minor contributors (to current version): none + ** This file is part of the CVC4 project. + ** Copyright (c) 2009-2013 New York University and The University of Iowa ** See the file COPYING in the top-level source directory for licensing ** information.\endverbatim ** @@ -27,7 +27,6 @@ using namespace CVC4::theory; using namespace CVC4::theory::inst; using namespace CVC4::theory::quantifiers; -#define USE_SINGLE_TRIGGER_BEFORE_MULTI_TRIGGER //#define MULTI_TRIGGER_FULL_EFFORT_HALF #define MULTI_MULTI_TRIGGERS @@ -65,18 +64,13 @@ int InstStrategyUserPatterns::process( Node f, Theory::Effort effort, int e ){ //Notice() << "Try user-provided patterns..." << std::endl; for( int i=0; i<(int)d_user_gen[f].size(); i++ ){ bool processTrigger = true; - if( effort!=Theory::EFFORT_LAST_CALL && d_user_gen[f][i]->isMultiTrigger() ){ -//#ifdef MULTI_TRIGGER_FULL_EFFORT_HALF -// processTrigger = d_counter[f]%2==0; -//#endif - } if( processTrigger ){ //if( d_user_gen[f][i]->isMultiTrigger() ) - //Notice() << " Process (user) " << (*d_user_gen[f][i]) << " for " << f << "..." << std::endl; + Trace("process-trigger") << " Process (user) " << (*d_user_gen[f][i]) << "..." << std::endl; InstMatch baseMatch; int numInst = d_user_gen[f][i]->addInstantiations( baseMatch ); //if( d_user_gen[f][i]->isMultiTrigger() ) - //Notice() << " Done, numInst = " << numInst << "." << std::endl; + Trace("process-trigger") << " Done, numInst = " << numInst << "." << std::endl; d_quantEngine->getInstantiationEngine()->d_statistics.d_instantiations_user_patterns += numInst; if( d_user_gen[f][i]->isMultiTrigger() ){ d_quantEngine->d_statistics.d_multi_trigger_instantiations += numInst; @@ -125,6 +119,7 @@ void InstStrategyAutoGenTriggers::processResetInstantiationRound( Theory::Effort itt->first->reset( Node::null() ); } } + d_processed_trigger.clear(); } int InstStrategyAutoGenTriggers::process( Node f, Theory::Effort effort, int e ){ @@ -134,6 +129,7 @@ int InstStrategyAutoGenTriggers::process( Node f, Theory::Effort effort, int e ) if( e<peffort ){ return STATUS_UNFINISHED; }else{ + int status = STATUS_UNKNOWN; bool gen = false; if( e==peffort ){ if( d_counter.find( f )==d_counter.end() ){ @@ -147,7 +143,7 @@ int InstStrategyAutoGenTriggers::process( Node f, Theory::Effort effort, int e ) gen = true; } if( gen ){ - generateTriggers( f ); + generateTriggers( f, effort, e, status ); } Debug("quant-uf-strategy") << "Try auto-generated triggers... " << d_tr_strategy << " " << e << std::endl; //Notice() << "Try auto-generated triggers..." << std::endl; @@ -155,18 +151,14 @@ int InstStrategyAutoGenTriggers::process( Node f, Theory::Effort effort, int e ) Trigger* tr = itt->first; if( tr ){ bool processTrigger = itt->second; - if( effort!=Theory::EFFORT_LAST_CALL && tr->isMultiTrigger() ){ -#ifdef MULTI_TRIGGER_FULL_EFFORT_HALF - processTrigger = d_counter[f]%2==0; -#endif - } - if( processTrigger ){ + if( processTrigger && d_processed_trigger[f].find( tr )==d_processed_trigger[f].end() ){ + d_processed_trigger[f][tr] = true; //if( tr->isMultiTrigger() ) - Debug("quant-uf-strategy-auto-gen-triggers") << " Process " << (*tr) << "..." << std::endl; + Trace("process-trigger") << " Process " << (*tr) << "..." << std::endl; InstMatch baseMatch; int numInst = tr->addInstantiations( baseMatch ); //if( tr->isMultiTrigger() ) - Debug("quant-uf-strategy-auto-gen-triggers") << " Done, numInst = " << numInst << "." << std::endl; + Trace("process-trigger") << " Done, numInst = " << numInst << "." << std::endl; if( d_tr_strategy==Trigger::TS_MIN_TRIGGER ){ d_quantEngine->getInstantiationEngine()->d_statistics.d_instantiations_auto_gen_min += numInst; }else{ @@ -181,24 +173,24 @@ int InstStrategyAutoGenTriggers::process( Node f, Theory::Effort effort, int e ) } Debug("quant-uf-strategy") << "done." << std::endl; //Notice() << "done" << std::endl; + return status; } - return STATUS_UNKNOWN; } -void InstStrategyAutoGenTriggers::generateTriggers( Node f ){ - Debug("auto-gen-trigger") << "Generate trigger for " << f << std::endl; +void InstStrategyAutoGenTriggers::generateTriggers( Node f, Theory::Effort effort, int e, int & status ){ + Trace("auto-gen-trigger-debug") << "Generate trigger for " << f << std::endl; if( d_patTerms[0].find( f )==d_patTerms[0].end() ){ //determine all possible pattern terms based on trigger term selection strategy d_tr_strategy d_patTerms[0][f].clear(); d_patTerms[1][f].clear(); std::vector< Node > patTermsF; Trigger::collectPatTerms( d_quantEngine, f, d_quantEngine->getTermDatabase()->getInstConstantBody( f ), patTermsF, d_tr_strategy, true ); - Debug("auto-gen-trigger") << "Collected pat terms for " << d_quantEngine->getTermDatabase()->getInstConstantBody( f ) << std::endl; - Debug("auto-gen-trigger") << " "; + Trace("auto-gen-trigger") << "Collected pat terms for " << d_quantEngine->getTermDatabase()->getInstConstantBody( f ) << std::endl; + Trace("auto-gen-trigger") << " "; for( int i=0; i<(int)patTermsF.size(); i++ ){ - Debug("auto-gen-trigger") << patTermsF[i] << " "; + Trace("auto-gen-trigger") << patTermsF[i] << " "; } - Debug("auto-gen-trigger") << std::endl; + Trace("auto-gen-trigger") << std::endl; //extend to literal matching (if applicable) d_quantEngine->getPhaseReqTerms( f, patTermsF ); //sort into single/multi triggers @@ -214,23 +206,22 @@ void InstStrategyAutoGenTriggers::generateTriggers( Node f ){ } } d_made_multi_trigger[f] = false; - Debug("auto-gen-trigger") << "Single triggers for " << f << " : " << std::endl; - Debug("auto-gen-trigger") << " "; + Trace("auto-gen-trigger") << "Single triggers for " << f << " : " << std::endl; + Trace("auto-gen-trigger") << " "; for( int i=0; i<(int)d_patTerms[0][f].size(); i++ ){ - Debug("auto-gen-trigger") << d_patTerms[0][f][i] << " "; + Trace("auto-gen-trigger") << d_patTerms[0][f][i] << " "; } - Debug("auto-gen-trigger") << std::endl; - Debug("auto-gen-trigger") << "Multi-trigger term pool for " << f << " : " << std::endl; - Debug("auto-gen-trigger") << " "; + Trace("auto-gen-trigger") << std::endl; + Trace("auto-gen-trigger") << "Multi-trigger term pool for " << f << " : " << std::endl; + Trace("auto-gen-trigger") << " "; for( int i=0; i<(int)d_patTerms[1][f].size(); i++ ){ - Debug("auto-gen-trigger") << d_patTerms[1][f][i] << " "; + Trace("auto-gen-trigger") << d_patTerms[1][f][i] << " "; } - Debug("auto-gen-trigger") << std::endl; + Trace("auto-gen-trigger") << std::endl; } //populate candidate pattern term vector for the current trigger std::vector< Node > patTerms; -#ifdef USE_SINGLE_TRIGGER_BEFORE_MULTI_TRIGGER //try to add single triggers first for( int i=0; i<(int)d_patTerms[0][f].size(); i++ ){ if( !d_single_trigger_gen[d_patTerms[0][f][i]] ){ @@ -241,13 +232,9 @@ void InstStrategyAutoGenTriggers::generateTriggers( Node f ){ if( patTerms.empty() ){ patTerms.insert( patTerms.begin(), d_patTerms[1][f].begin(), d_patTerms[1][f].end() ); } -#else - patTerms.insert( patTerms.begin(), d_patTerms[0][f].begin(), d_patTerms[0][f].end() ); - patTerms.insert( patTerms.begin(), d_patTerms[1][f].begin(), d_patTerms[1][f].end() ); -#endif if( !patTerms.empty() ){ - Debug("auto-gen-trigger") << "Generate trigger for " << f << std::endl; + Trace("auto-gen-trigger") << "Generate trigger for " << f << std::endl; //sort terms based on relevance if( d_rlv_strategy==RELEVANCE_DEFAULT ){ sortQuantifiersForSymbol sqfs; @@ -273,6 +260,15 @@ void InstStrategyAutoGenTriggers::generateTriggers( Node f ){ options::smartTriggers() ); d_single_trigger_gen[ patTerms[0] ] = true; }else{ + //only generate multi trigger if effort level > 5, or if no single triggers exist + if( !d_patTerms[0][f].empty() ){ + if( e<=5 ){ + status = STATUS_UNFINISHED; + return; + }else{ + Trace("multi-trigger-debug") << "Resort to choosing multi-triggers..." << std::endl; + } + } //if we are re-generating triggers, shuffle based on some method if( d_made_multi_trigger[f] ){ #ifndef MULTI_MULTI_TRIGGERS diff --git a/src/theory/quantifiers/inst_strategy_e_matching.h b/src/theory/quantifiers/inst_strategy_e_matching.h index b5ff90a62..13d443c6a 100755..100644 --- a/src/theory/quantifiers/inst_strategy_e_matching.h +++ b/src/theory/quantifiers/inst_strategy_e_matching.h @@ -1,11 +1,11 @@ /********************* */ /*! \file inst_strategy_e_matching.h ** \verbatim - ** Original author: ajreynol - ** Major contributors: none - ** Minor contributors (to current version): bobot, mdeters - ** This file is part of the CVC4 prototype. - ** Copyright (c) 2009-2012 New York University and The University of Iowa + ** Original author: Andrew Reynolds <andrew.j.reynolds@gmail.com> + ** Major contributors: Morgan Deters <mdeters@cs.nyu.edu> + ** Minor contributors (to current version): none + ** This file is part of the CVC4 project. + ** Copyright (c) 2009-2013 New York University and The University of Iowa ** See the file COPYING in the top-level source directory for licensing ** information.\endverbatim ** @@ -80,12 +80,14 @@ private: std::map< Node, bool > d_is_single_trigger; std::map< Node, bool > d_single_trigger_gen; std::map< Node, bool > d_made_multi_trigger; + //processed trigger this round + std::map< Node, std::map< inst::Trigger*, bool > > d_processed_trigger; private: /** process functions */ void processResetInstantiationRound( Theory::Effort effort ); int process( Node f, Theory::Effort effort, int e ); /** generate triggers */ - void generateTriggers( Node f ); + void generateTriggers( Node f, Theory::Effort effort, int e, int & status ); public: /** tstrt is the type of triggers to use (maximum depth, minimum depth, or all) rstrt is the relevance setting for trigger (use only relevant triggers vs. use all) diff --git a/src/theory/quantifiers/macros.cpp b/src/theory/quantifiers/macros.cpp index 5c7c9415e..9f08764a9 100755..100644 --- a/src/theory/quantifiers/macros.cpp +++ b/src/theory/quantifiers/macros.cpp @@ -1,11 +1,11 @@ /********************* */ /*! \file macros.cpp ** \verbatim - ** Original author: ajreynol - ** Major contributors: none + ** Original author: Andrew Reynolds <andrew.j.reynolds@gmail.com> + ** Major contributors: Morgan Deters <mdeters@cs.nyu.edu> ** Minor contributors (to current version): none - ** This file is part of the CVC4 prototype. - ** Copyright (c) 2009-2012 New York University and The University of Iowa + ** This file is part of the CVC4 project. + ** Copyright (c) 2009-2013 New York University and The University of Iowa ** See the file COPYING in the top-level source directory for licensing ** information.\endverbatim ** diff --git a/src/theory/quantifiers/macros.h b/src/theory/quantifiers/macros.h index f4e58665d..140f02966 100755..100644 --- a/src/theory/quantifiers/macros.h +++ b/src/theory/quantifiers/macros.h @@ -1,11 +1,11 @@ /********************* */ /*! \file macros.h ** \verbatim - ** Original author: ajreynol - ** Major contributors: none + ** Original author: Andrew Reynolds <andrew.j.reynolds@gmail.com> + ** Major contributors: Morgan Deters <mdeters@cs.nyu.edu> ** Minor contributors (to current version): none - ** This file is part of the CVC4 prototype. - ** Copyright (c) 2009-2012 New York University and The University of Iowa + ** This file is part of the CVC4 project. + ** Copyright (c) 2009-2013 New York University and The University of Iowa ** See the file COPYING in the top-level source directory for licensing ** information.\endverbatim ** diff --git a/src/theory/quantifiers/model_builder.cpp b/src/theory/quantifiers/model_builder.cpp index 2f44140c2..d1c04ceab 100644 --- a/src/theory/quantifiers/model_builder.cpp +++ b/src/theory/quantifiers/model_builder.cpp @@ -526,7 +526,7 @@ int ModelEngineBuilderDefault::doInstGen( FirstOrderModel* fm, Node f ){ //if applicable, try to add exceptions here if( !tr_terms.empty() ){ //make a trigger for these terms, add instantiations - inst::Trigger* tr = inst::Trigger::mkTrigger( d_qe, f, tr_terms ); + inst::Trigger* tr = inst::Trigger::mkTrigger( d_qe, f, tr_terms, 0, true, inst::Trigger::TR_MAKE_NEW, options::smartTriggers() ); //Notice() << "Trigger = " << (*tr) << std::endl; tr->resetInstantiationRound(); tr->reset( Node::null() ); diff --git a/src/theory/quantifiers/options b/src/theory/quantifiers/options index bc45e6051..eace177b7 100644 --- a/src/theory/quantifiers/options +++ b/src/theory/quantifiers/options @@ -45,8 +45,8 @@ option macrosQuant --macros-quant bool :default false option smartTriggers /--disable-smart-triggers bool :default true disable smart triggers # Whether to use relevent triggers -option relevantTriggers /--relevant-triggers bool :default true - prefer triggers that are more relevant based on SInE style method +option relevantTriggers --relevant-triggers bool :default true + prefer triggers that are more relevant based on SInE style analysis # Whether to consider terms in the bodies of quantifiers for matching option registerQuantBodyTerms --register-quant-body-terms bool :default false diff --git a/src/theory/quantifiers/quant_util.cpp b/src/theory/quantifiers/quant_util.cpp index a78cd5612..9e4a2a14a 100755..100644 --- a/src/theory/quantifiers/quant_util.cpp +++ b/src/theory/quantifiers/quant_util.cpp @@ -1,11 +1,11 @@ /********************* */ /*! \file quant_util.cpp ** \verbatim - ** Original author: ajreynol - ** Major contributors: bobot, mdeters + ** Original author: Andrew Reynolds <andrew.j.reynolds@gmail.com> + ** Major contributors: Morgan Deters <mdeters@cs.nyu.edu> ** Minor contributors (to current version): none - ** This file is part of the CVC4 prototype. - ** Copyright (c) 2009-2012 New York University and The University of Iowa + ** This file is part of the CVC4 project. + ** Copyright (c) 2009-2013 New York University and The University of Iowa ** See the file COPYING in the top-level source directory for licensing ** information.\endverbatim ** diff --git a/src/theory/quantifiers/quant_util.h b/src/theory/quantifiers/quant_util.h index 1daaf3ea1..85602dbab 100755..100644 --- a/src/theory/quantifiers/quant_util.h +++ b/src/theory/quantifiers/quant_util.h @@ -1,11 +1,11 @@ /********************* */ /*! \file quant_util.h ** \verbatim - ** Original author: ajreynol - ** Major contributors: none - ** Minor contributors (to current version): mdeters, bobot - ** This file is part of the CVC4 prototype. - ** Copyright (c) 2009-2012 New York University and The University of Iowa + ** Original author: Andrew Reynolds <andrew.j.reynolds@gmail.com> + ** Major contributors: Morgan Deters <mdeters@cs.nyu.edu> + ** Minor contributors (to current version): none + ** This file is part of the CVC4 project. + ** Copyright (c) 2009-2013 New York University and The University of Iowa ** See the file COPYING in the top-level source directory for licensing ** information.\endverbatim ** diff --git a/src/theory/quantifiers/quantifiers_attributes.cpp b/src/theory/quantifiers/quantifiers_attributes.cpp index 108c09c87..b00fe45f4 100644 --- a/src/theory/quantifiers/quantifiers_attributes.cpp +++ b/src/theory/quantifiers/quantifiers_attributes.cpp @@ -1,11 +1,11 @@ /********************* */ /*! \file quantifiers_attributes.cpp ** \verbatim - ** Original author: ajreynol - ** Major contributors: none + ** Original author: Andrew Reynolds <andrew.j.reynolds@gmail.com> + ** Major contributors: Morgan Deters <mdeters@cs.nyu.edu> ** Minor contributors (to current version): none - ** This file is part of the CVC4 prototype. - ** Copyright (c) 2009-2012 New York University and The University of Iowa + ** This file is part of the CVC4 project. + ** Copyright (c) 2009-2013 New York University and The University of Iowa ** See the file COPYING in the top-level source directory for licensing ** information.\endverbatim ** diff --git a/src/theory/quantifiers/quantifiers_attributes.h b/src/theory/quantifiers/quantifiers_attributes.h index f5a8a749a..8e8ebe97a 100644 --- a/src/theory/quantifiers/quantifiers_attributes.h +++ b/src/theory/quantifiers/quantifiers_attributes.h @@ -1,11 +1,11 @@ /********************* */ /*! \file quantifiers_attributes.h ** \verbatim - ** Original author: ajreynol - ** Major contributors: none + ** Original author: Andrew Reynolds <andrew.j.reynolds@gmail.com> + ** Major contributors: Morgan Deters <mdeters@cs.nyu.edu> ** Minor contributors (to current version): none - ** This file is part of the CVC4 prototype. - ** Copyright (c) 2009-2012 New York University and The University of Iowa + ** This file is part of the CVC4 project. + ** Copyright (c) 2009-2013 New York University and The University of Iowa ** See the file COPYING in the top-level source directory for licensing ** information.\endverbatim ** diff --git a/src/theory/quantifiers/term_database.cpp b/src/theory/quantifiers/term_database.cpp index d60aa2ef4..78109ea37 100644 --- a/src/theory/quantifiers/term_database.cpp +++ b/src/theory/quantifiers/term_database.cpp @@ -206,6 +206,7 @@ Node TermDb::getModelBasisTerm( TypeNode tn, int i ){ ModelBasisAttribute mba; mbt.setAttribute(mba,true); d_model_basis_term[tn] = mbt; + Trace("model-basis-term") << "Choose " << mbt << " as model basis term for " << tn << std::endl; } return d_model_basis_term[tn]; } @@ -367,6 +368,10 @@ Node TermDb::getSkolemizedBody( Node f ){ Node skv = NodeManager::currentNM()->mkSkolem( "skv_$$", f[0][i].getType(), "is a termdb-created skolemized body" ); d_skolem_constants[ f ].push_back( skv ); vars.push_back( f[0][i] ); + //carry information for sort inference + if( options::sortInference() ){ + d_quantEngine->getTheoryEngine()->getSortInference()->setSkolemVar( f, f[0][i], skv ); + } } d_skolem_body[ f ] = f[ 1 ].substitute( vars.begin(), vars.end(), d_skolem_constants[ f ].begin(), d_skolem_constants[ f ].end() ); @@ -515,6 +520,34 @@ int TermDb::isInstanceOf( Node n1, Node n2 ){ return 0; } +bool TermDb::isUnifiableInstanceOf( Node n1, Node n2, std::map< Node, Node >& subs ){ + if( n1==n2 ){ + return true; + }else if( n2.getKind()==INST_CONSTANT ){ + //if( !node_contains( n1, n2 ) ){ + // return false; + //} + if( subs.find( n2 )==subs.end() ){ + subs[n2] = n1; + }else if( subs[n2]!=n1 ){ + return false; + } + return true; + }else if( n1.getKind()==n2.getKind() && n1.getMetaKind()==kind::metakind::PARAMETERIZED ){ + if( n1.getOperator()!=n2.getOperator() ){ + return false; + } + for( int i=0; i<(int)n1.getNumChildren(); i++ ){ + if( !isUnifiableInstanceOf( n1[i], n2[i], subs ) ){ + return false; + } + } + return true; + }else{ + return false; + } +} + void TermDb::filterInstances( std::vector< Node >& nodes ){ std::vector< bool > active; active.resize( nodes.size(), true ); @@ -523,8 +556,10 @@ void TermDb::filterInstances( std::vector< Node >& nodes ){ if( active[i] && active[j] ){ int result = isInstanceOf( nodes[i], nodes[j] ); if( result==1 ){ + Trace("filter-instances") << nodes[j] << " is an instance of " << nodes[i] << std::endl; active[j] = false; }else if( result==-1 ){ + Trace("filter-instances") << nodes[i] << " is an instance of " << nodes[j] << std::endl; active[i] = false; } } diff --git a/src/theory/quantifiers/term_database.h b/src/theory/quantifiers/term_database.h index a1f1de1dc..9ac431107 100644 --- a/src/theory/quantifiers/term_database.h +++ b/src/theory/quantifiers/term_database.h @@ -212,6 +212,8 @@ private: std::map< TNode, std::vector< TNode > > d_var_contains; /** triggers for each operator */ std::map< Node, std::vector< inst::Trigger* > > d_op_triggers; + /** helper for is intance of */ + bool isUnifiableInstanceOf( Node n1, Node n2, std::map< Node, Node >& subs ); public: /** compute var contains */ void computeVarContains( Node n ); diff --git a/src/theory/quantifiers/theory_quantifiers.cpp b/src/theory/quantifiers/theory_quantifiers.cpp index 2e33c7c4a..d1dbae90c 100644 --- a/src/theory/quantifiers/theory_quantifiers.cpp +++ b/src/theory/quantifiers/theory_quantifiers.cpp @@ -93,11 +93,13 @@ Node TheoryQuantifiers::getValue(TNode n) { } void TheoryQuantifiers::collectModelInfo( TheoryModel* m, bool fullModel ){ - for(assertions_iterator i = facts_begin(); i != facts_end(); ++i) { - if((*i).assertion.getKind() == kind::NOT) { - m->assertPredicate((*i).assertion[0], false); - } else { - m->assertPredicate(*i, true); + if( fullModel ){ + for(assertions_iterator i = facts_begin(); i != facts_end(); ++i) { + if((*i).assertion.getKind() == kind::NOT) { + m->assertPredicate((*i).assertion[0], false); + } else { + m->assertPredicate(*i, true); + } } } } diff --git a/src/theory/quantifiers/trigger.cpp b/src/theory/quantifiers/trigger.cpp index bc577fda6..c4bc248d3 100644 --- a/src/theory/quantifiers/trigger.cpp +++ b/src/theory/quantifiers/trigger.cpp @@ -34,24 +34,26 @@ using namespace CVC4::theory::inst; Trigger::Trigger( QuantifiersEngine* qe, Node f, std::vector< Node >& nodes, int matchOption, bool smartTriggers ) : d_quantEngine( qe ), d_f( f ){ d_nodes.insert( d_nodes.begin(), nodes.begin(), nodes.end() ); + Trace("trigger") << "Trigger for " << f << ": " << std::endl; + for( int i=0; i<(int)d_nodes.size(); i++ ){ + Trace("trigger") << " " << d_nodes[i] << std::endl; + } + Trace("trigger") << ", smart triggers = " << smartTriggers << std::endl; if( smartTriggers ){ if( d_nodes.size()==1 ){ if( isSimpleTrigger( d_nodes[0] ) ){ d_mg = new InstMatchGeneratorSimple( f, d_nodes[0] ); }else{ - d_mg = new InstMatchGenerator( d_nodes[0], qe, matchOption ); + d_mg = InstMatchGenerator::mkInstMatchGenerator( d_nodes[0], qe ); + d_mg->setActiveAdd(); } }else{ d_mg = new InstMatchGeneratorMulti( f, d_nodes, qe, matchOption ); } }else{ - d_mg = new InstMatchGenerator( d_nodes, qe, matchOption ); - } - Trace("trigger") << "Trigger for " << f << ": " << std::endl; - for( int i=0; i<(int)d_nodes.size(); i++ ){ - Trace("trigger") << " " << d_nodes[i] << std::endl; + d_mg = InstMatchGenerator::mkInstMatchGenerator( d_nodes, qe ); + d_mg->setActiveAdd(); } - Trace("trigger") << std::endl; if( d_nodes.size()==1 ){ if( isSimpleTrigger( d_nodes[0] ) ){ ++(qe->d_statistics.d_triggers); @@ -59,7 +61,7 @@ d_quantEngine( qe ), d_f( f ){ ++(qe->d_statistics.d_simple_triggers); } }else{ - Debug("multi-trigger") << "Multi-trigger " << (*this) << std::endl; + Trace("multi-trigger") << "Multi-trigger " << (*this) << " for " << f << std::endl; //Notice() << "Multi-trigger for " << f << " : " << std::endl; //Notice() << " " << (*this) << std::endl; ++(qe->d_statistics.d_multi_triggers); @@ -80,14 +82,14 @@ void Trigger::reset( Node eqc ){ d_mg->reset( eqc, d_quantEngine ); } -bool Trigger::getNextMatch( InstMatch& m ){ - bool retVal = d_mg->getNextMatch( m, d_quantEngine ); +bool Trigger::getNextMatch( Node f, InstMatch& m ){ + bool retVal = d_mg->getNextMatch( f, m, d_quantEngine ); return retVal; } -bool Trigger::getMatch( Node t, InstMatch& m ){ +bool Trigger::getMatch( Node f, Node t, InstMatch& m ){ //FIXME: this assumes d_mg is an inst match generator - return ((InstMatchGenerator*)d_mg)->getMatch( t, m, d_quantEngine ); + return ((InstMatchGenerator*)d_mg)->getMatch( f, t, m, d_quantEngine ); } int Trigger::addTerm( Node t ){ @@ -115,6 +117,7 @@ Trigger* Trigger::mkTrigger( QuantifiersEngine* qe, Node f, std::vector< Node >& temp.insert( temp.begin(), nodes.begin(), nodes.end() ); std::map< Node, bool > vars; std::map< Node, std::vector< Node > > patterns; + size_t varCount = 0; for( int i=0; i<(int)temp.size(); i++ ){ bool foundVar = false; qe->getTermDatabase()->computeVarContains( temp[i] ); @@ -122,6 +125,7 @@ Trigger* Trigger::mkTrigger( QuantifiersEngine* qe, Node f, std::vector< Node >& Node v = qe->getTermDatabase()->d_var_contains[ temp[i] ][j]; if( v.getAttribute(InstConstantAttribute())==f ){ if( vars.find( v )==vars.end() ){ + varCount++; vars[ v ] = true; foundVar = true; } @@ -134,32 +138,40 @@ Trigger* Trigger::mkTrigger( QuantifiersEngine* qe, Node f, std::vector< Node >& patterns[ v ].push_back( temp[i] ); } } - } - //now, minimalize the trigger - for( int i=0; i<(int)trNodes.size(); i++ ){ - bool keepPattern = false; - Node n = trNodes[i]; - for( int j=0; j<(int)qe->getTermDatabase()->d_var_contains[ n ].size(); j++ ){ - Node v = qe->getTermDatabase()->d_var_contains[ n ][j]; - if( patterns[v].size()==1 ){ - keepPattern = true; - break; - } + if( varCount==f[0].getNumChildren() ){ + break; } - if( !keepPattern ){ - //remove from pattern vector + } + if( varCount<f[0].getNumChildren() ){ + //do not generate multi-trigger if it does not contain all variables + return NULL; + }else{ + //now, minimize the trigger + for( int i=0; i<(int)trNodes.size(); i++ ){ + bool keepPattern = false; + Node n = trNodes[i]; for( int j=0; j<(int)qe->getTermDatabase()->d_var_contains[ n ].size(); j++ ){ Node v = qe->getTermDatabase()->d_var_contains[ n ][j]; - for( int k=0; k<(int)patterns[v].size(); k++ ){ - if( patterns[v][k]==n ){ - patterns[v].erase( patterns[v].begin() + k, patterns[v].begin() + k + 1 ); - break; + if( patterns[v].size()==1 ){ + keepPattern = true; + break; + } + } + if( !keepPattern ){ + //remove from pattern vector + for( int j=0; j<(int)qe->getTermDatabase()->d_var_contains[ n ].size(); j++ ){ + Node v = qe->getTermDatabase()->d_var_contains[ n ][j]; + for( int k=0; k<(int)patterns[v].size(); k++ ){ + if( patterns[v][k]==n ){ + patterns[v].erase( patterns[v].begin() + k, patterns[v].begin() + k + 1 ); + break; + } } } + //remove from trigger nodes + trNodes.erase( trNodes.begin() + i, trNodes.begin() + i + 1 ); + i--; } - //remove from trigger nodes - trNodes.erase( trNodes.begin() + i, trNodes.begin() + i + 1 ); - i--; } } }else{ @@ -322,16 +334,16 @@ void Trigger::collectPatTerms( QuantifiersEngine* qe, Node f, Node n, std::vecto temp.insert( temp.begin(), patTerms2.begin(), patTerms2.end() ); qe->getTermDatabase()->filterInstances( temp ); if( temp.size()!=patTerms2.size() ){ - Debug("trigger-filter-instance") << "Filtered an instance: " << std::endl; - Debug("trigger-filter-instance") << "Old: "; + Trace("trigger-filter-instance") << "Filtered an instance: " << std::endl; + Trace("trigger-filter-instance") << "Old: "; for( int i=0; i<(int)patTerms2.size(); i++ ){ - Debug("trigger-filter-instance") << patTerms2[i] << " "; + Trace("trigger-filter-instance") << patTerms2[i] << " "; } - Debug("trigger-filter-instance") << std::endl << "New: "; + Trace("trigger-filter-instance") << std::endl << "New: "; for( int i=0; i<(int)temp.size(); i++ ){ - Debug("trigger-filter-instance") << temp[i] << " "; + Trace("trigger-filter-instance") << temp[i] << " "; } - Debug("trigger-filter-instance") << std::endl; + Trace("trigger-filter-instance") << std::endl; } if( tstrt==TS_ALL ){ patTerms.insert( patTerms.begin(), temp.begin(), temp.end() ); diff --git a/src/theory/quantifiers/trigger.h b/src/theory/quantifiers/trigger.h index 6fcd316f4..93731283b 100644 --- a/src/theory/quantifiers/trigger.h +++ b/src/theory/quantifiers/trigger.h @@ -56,12 +56,12 @@ public: /** reset, eqc is the equivalence class to search in (search in any if eqc=null) */ void reset( Node eqc ); /** get next match. must call reset( eqc ) once before this function. */ - bool getNextMatch( InstMatch& m ); + bool getNextMatch( Node f, InstMatch& m ); /** get the match against ground term or formula t. the trigger and t should have the same shape. Currently the trigger should not be a multi-trigger. */ - bool getMatch( Node t, InstMatch& m); + bool getMatch( Node f, Node t, InstMatch& m); /** add ground term t, called when t is added to the TermDb */ int addTerm( Node t ); /** return whether this is a multi-trigger */ diff --git a/src/theory/quantifiers_engine.cpp b/src/theory/quantifiers_engine.cpp index 08bdd496b..f938199f8 100644 --- a/src/theory/quantifiers_engine.cpp +++ b/src/theory/quantifiers_engine.cpp @@ -71,6 +71,7 @@ d_lemmas_produced_c(u){ d_optMatchIgnoreModelBasis = false; d_optInstLimitActive = false; d_optInstLimit = 0; + d_total_inst_count_debug = 0; } QuantifiersEngine::~QuantifiersEngine(){ @@ -142,10 +143,23 @@ void QuantifiersEngine::check( Theory::Effort e ){ } //build the model if not done so already // this happens if no quantifiers are currently asserted and no model-building module is enabled - if( options::produceModels() && e==Theory::EFFORT_LAST_CALL && !d_hasAddedLemma && !d_model->isModelSet() ){ - d_te->getModelBuilder()->buildModel( d_model, true ); + if( e==Theory::EFFORT_LAST_CALL && !d_hasAddedLemma ){ + if( options::produceModels() && !d_model->isModelSet() ){ + d_te->getModelBuilder()->buildModel( d_model, true ); + } + if( Trace.isOn("inst-per-quant") ){ + for( std::map< Node, int >::iterator it = d_total_inst_debug.begin(); it != d_total_inst_debug.end(); ++it ){ + Trace("inst-per-quant") << " * " << it->second << " for " << it->first << std::endl; + } + } + }else{ + if( Trace.isOn("inst-per-quant-round") ){ + for( std::map< Node, int >::iterator it = d_temp_inst_debug.begin(); it != d_temp_inst_debug.end(); ++it ){ + Trace("inst-per-quant-round") << " * " << it->second << " for " << it->first << std::endl; + d_temp_inst_debug[it->first] = 0; + } + } } - Trace("quant-engine") << "Finished quantifiers engine check." << std::endl; } } @@ -242,6 +256,9 @@ bool QuantifiersEngine::addInstantiation( Node f, std::vector< Node >& vars, std Node lem = nb; //check for duplication if( addLemma( lem ) ){ + d_total_inst_debug[f]++; + d_temp_inst_debug[f]++; + d_total_inst_count_debug++; Trace("inst") << "*** Instantiate " << f << " with " << std::endl; uint64_t maxInstLevel = 0; for( int i=0; i<(int)terms.size(); i++ ){ diff --git a/src/theory/quantifiers_engine.h b/src/theory/quantifiers_engine.h index 29381a309..fa8a51d1f 100644 --- a/src/theory/quantifiers_engine.h +++ b/src/theory/quantifiers_engine.h @@ -119,6 +119,10 @@ private: rrinst::TriggerTrie* d_rr_tr_trie; /** extended model object */ quantifiers::FirstOrderModel* d_model; + /** statistics for debugging */ + std::map< Node, int > d_total_inst_debug; + std::map< Node, int > d_temp_inst_debug; + int d_total_inst_count_debug; private: KEEP_STATISTIC(TimerStat, d_time, "theory::QuantifiersEngine::time"); public: diff --git a/src/theory/rep_set.cpp b/src/theory/rep_set.cpp index 3b5ba0cef..4ae7f2d0c 100644 --- a/src/theory/rep_set.cpp +++ b/src/theory/rep_set.cpp @@ -1,11 +1,11 @@ /********************* */ /*! \file rep_set.cpp ** \verbatim - ** Original author: ajreynol - ** Major contributors: none - ** Minor contributors (to current version): mdeters - ** This file is part of the CVC4 prototype. - ** Copyright (c) 2009-2012 New York University and The University of Iowa + ** Original author: Andrew Reynolds <andrew.j.reynolds@gmail.com> + ** Major contributors: Morgan Deters <mdeters@cs.nyu.edu> + ** Minor contributors (to current version): none + ** This file is part of the CVC4 project. + ** Copyright (c) 2009-2013 New York University and The University of Iowa ** See the file COPYING in the top-level source directory for licensing ** information.\endverbatim ** diff --git a/src/theory/rep_set.h b/src/theory/rep_set.h index fec5d3ed8..dc31f2d5f 100644 --- a/src/theory/rep_set.h +++ b/src/theory/rep_set.h @@ -1,11 +1,11 @@ /********************* */ /*! \file rep_set.h ** \verbatim - ** Original author: ajreynol - ** Major contributors: none + ** Original author: Andrew Reynolds <andrew.j.reynolds@gmail.com> + ** Major contributors: Morgan Deters <mdeters@cs.nyu.edu> ** Minor contributors (to current version): none - ** This file is part of the CVC4 prototype. - ** Copyright (c) 2009-2012 New York University and The University of Iowa + ** This file is part of the CVC4 project. + ** Copyright (c) 2009-2013 New York University and The University of Iowa ** See the file COPYING in the top-level source directory for licensing ** information.\endverbatim ** diff --git a/src/theory/rewriterules/efficient_e_matching.cpp b/src/theory/rewriterules/efficient_e_matching.cpp index 24693d496..5ed34d46c 100755..100644 --- a/src/theory/rewriterules/efficient_e_matching.cpp +++ b/src/theory/rewriterules/efficient_e_matching.cpp @@ -1,11 +1,11 @@ /********************* */ /*! \file efficient_e_matching.cpp ** \verbatim - ** Original author: ajreynol - ** Major contributors: bobot - ** Minor contributors (to current version): mdeters - ** This file is part of the CVC4 prototype. - ** Copyright (c) 2009-2012 New York University and The University of Iowa + ** Original author: Andrew Reynolds <andrew.j.reynolds@gmail.com> + ** Major contributors: Morgan Deters <mdeters@cs.nyu.edu> + ** Minor contributors (to current version): none + ** This file is part of the CVC4 project. + ** Copyright (c) 2009-2013 New York University and The University of Iowa ** See the file COPYING in the top-level source directory for licensing ** information.\endverbatim ** diff --git a/src/theory/rewriterules/efficient_e_matching.h b/src/theory/rewriterules/efficient_e_matching.h index fe65362ef..11c6b783e 100755..100644 --- a/src/theory/rewriterules/efficient_e_matching.h +++ b/src/theory/rewriterules/efficient_e_matching.h @@ -1,11 +1,11 @@ /********************* */ /*! \file efficient_e_matching.h ** \verbatim - ** Original author: ajreynol - ** Major contributors: bobot - ** Minor contributors (to current version): mdeters - ** This file is part of the CVC4 prototype. - ** Copyright (c) 2009-2012 New York University and The University of Iowa + ** Original author: Andrew Reynolds <andrew.j.reynolds@gmail.com> + ** Major contributors: Morgan Deters <mdeters@cs.nyu.edu> + ** Minor contributors (to current version): none + ** This file is part of the CVC4 project. + ** Copyright (c) 2009-2013 New York University and The University of Iowa ** See the file COPYING in the top-level source directory for licensing ** information.\endverbatim ** diff --git a/src/theory/rewriterules/theory_rewriterules.cpp b/src/theory/rewriterules/theory_rewriterules.cpp index c6fd9611c..a82b94f73 100644 --- a/src/theory/rewriterules/theory_rewriterules.cpp +++ b/src/theory/rewriterules/theory_rewriterules.cpp @@ -276,7 +276,7 @@ void TheoryRewriteRules::check(Effort level) { if(glast.inst == RULEINST_TRUE||glast.inst == RULEINST_FALSE) continue; // If it has a value it should already has been notified - bool value; value = value; // avoiding the warning in non debug mode + bool value CVC4_UNUSED; Assert(!getValuation().hasSatValue(g,value)); Debug("rewriterules::check") << "RewriteRules::Check Narrowing on:" << g << std::endl; /** Can split on already rewritten instrule... but... */ diff --git a/src/theory/shared_terms_database.h b/src/theory/shared_terms_database.h index 655918986..c7036a9ad 100644 --- a/src/theory/shared_terms_database.h +++ b/src/theory/shared_terms_database.h @@ -66,7 +66,7 @@ private: AlreadyNotifiedMap d_alreadyNotifiedMap; /** The registered equalities for propagation */ - typedef context::CDHashSet<TNode, TNodeHashFunction> RegisteredEqualitiesSet; + typedef context::CDHashSet<Node, NodeHashFunction> RegisteredEqualitiesSet; RegisteredEqualitiesSet d_registeredEqualities; private: diff --git a/src/theory/theory.h b/src/theory/theory.h index f317d4b92..5b2032430 100644 --- a/src/theory/theory.h +++ b/src/theory/theory.h @@ -33,6 +33,7 @@ #include "options/options.h" #include "util/statistics_registry.h" #include "util/dump.h" +#include "lib/ffs.h" #include <string> #include <iostream> @@ -49,13 +50,13 @@ namespace theory { class QuantifiersEngine; class TheoryModel; -namespace rrinst{ -class CandidateGenerator; -} +namespace rrinst { + class CandidateGenerator; +}/* CVC4::theory::rrinst namespace */ namespace eq { -class EqualityEngine; -} + class EqualityEngine; +}/* CVC4::theory::eq namespace */ /** * Information about an assertion for the theories. @@ -786,14 +787,10 @@ public: std::hash_set<TNode, TNodeHashFunction> currentlySharedTerms() const; };/* class Theory */ -std::ostream& operator<<(std::ostream& os, Theory::Effort level); - -namespace eq{ - class EqualityEngine; -} - +std::ostream& operator<<(std::ostream& os, theory::Theory::Effort level); +inline std::ostream& operator<<(std::ostream& out, const theory::Assertion& a); -inline Assertion Theory::get() { +inline theory::Assertion Theory::get() { Assert( !done(), "Theory::get() called with assertion queue empty!" ); // Get the assertion @@ -809,7 +806,9 @@ inline Assertion Theory::get() { return fact; } -}/* CVC4::theory namespace */ +inline std::ostream& operator<<(std::ostream& out, const theory::Assertion& a) { + return out << a.assertion; +} inline std::ostream& operator<<(std::ostream& out, const CVC4::theory::Theory& theory) { @@ -830,6 +829,7 @@ inline std::ostream& operator << (std::ostream& out, theory::Theory::PPAssertSta return out; } +}/* CVC4::theory namespace */ }/* CVC4 namespace */ #endif /* __CVC4__THEORY__THEORY_H */ diff --git a/src/theory/theory_engine.cpp b/src/theory/theory_engine.cpp index 35ed63bed..efbc42ebf 100644 --- a/src/theory/theory_engine.cpp +++ b/src/theory/theory_engine.cpp @@ -286,7 +286,9 @@ void TheoryEngine::check(Theory::Effort effort) { #endif #define CVC4_FOR_EACH_THEORY_STATEMENT(THEORY) \ if (theory::TheoryTraits<THEORY>::hasCheck && d_logicInfo.isTheoryEnabled(THEORY)) { \ +Debug("theory") << "check<" << THEORY << ">" << std::endl; \ theoryOf(THEORY)->check(effort); \ +Debug("theory") << "done<" << THEORY << ">" << std::endl; \ if (d_inConflict) { \ break; \ } \ diff --git a/src/theory/theory_engine.h b/src/theory/theory_engine.h index 063943056..388c0edf0 100644 --- a/src/theory/theory_engine.h +++ b/src/theory/theory_engine.h @@ -41,6 +41,7 @@ #include "util/hash.h" #include "util/cache.h" #include "util/cvc4_assert.h" +#include "util/sort_inference.h" #include "theory/ite_simplifier.h" #include "theory/unconstrained_simplifier.h" #include "theory/uf/equality_engine.h" @@ -190,7 +191,7 @@ class TheoryEngine { * context-dependent set of those theory-propagable literals that * have been propagated. */ - context::CDHashSet<TNode, TNodeHashFunction> d_hasPropagated; + context::CDHashSet<Node, NodeHashFunction> d_hasPropagated; /** * Statistics for a particular theory. @@ -422,6 +423,9 @@ class TheoryEngine { RemoveITE& d_iteRemover; + /** sort inference module */ + SortInference d_sortInfer; + /** Time spent in theory combination */ TimerStat d_combineTheoriesTime; @@ -732,6 +736,7 @@ public: SharedTermsDatabase* getSharedTermsDatabase() { return &d_sharedTerms; } + SortInference* getSortInference() { return &d_sortInfer; } private: std::map< std::string, std::vector< theory::Theory* > > d_attr_handle; public: diff --git a/src/theory/uf/options b/src/theory/uf/options index 2569ccbff..d6a2bb025 100644 --- a/src/theory/uf/options +++ b/src/theory/uf/options @@ -25,6 +25,8 @@ option ufssAbortCardinality --uf-ss-abort-card=N int :default -1 option ufssSmartSplits --uf-ss-smart-split bool :default false use smart splitting heuristic for uf strong solver option ufssExplainedCliques --uf-ss-explained-cliques bool :default false - add explained clique lemmas for uf strong solver + use explained clique lemmas for uf strong solver +option ufssSimpleCliques --uf-ss-simple-cliques bool :default true + always use simple clique lemmas for uf strong solver endmodule diff --git a/src/theory/uf/theory_uf_strong_solver.cpp b/src/theory/uf/theory_uf_strong_solver.cpp index 46ac5aa60..0a96cf548 100644 --- a/src/theory/uf/theory_uf_strong_solver.cpp +++ b/src/theory/uf/theory_uf_strong_solver.cpp @@ -533,6 +533,7 @@ void StrongSolverTheoryUf::SortRepModel::assertDisequal( Node a, Node b, Node re //internal disequality d_regions[ai]->setDisequal( a, b, 1, true ); d_regions[ai]->setDisequal( b, a, 1, true ); + checkRegion( ai, false ); //do not need to check if it needs to combine (no new ext. disequalities) }else{ //external disequality d_regions[ai]->setDisequal( a, b, 0, true ); @@ -610,14 +611,33 @@ void StrongSolverTheoryUf::SortRepModel::check( Theory::Effort level, OutputChan if( level==Theory::EFFORT_FULL ){ if( !addedLemma ){ Trace("uf-ss-debug") << "No splits added. " << d_cardinality << std::endl; - if( !options::ufssColoringSat() ){ + Trace("uf-ss-si") << "Must combine region" << std::endl; + if( true || !options::ufssColoringSat() ){ bool recheck = false; //naive strategy, force region combination involving the first valid region - for( int i=0; i<(int)d_regions_index; i++ ){ - if( d_regions[i]->d_valid ){ - forceCombineRegion( i, false ); - recheck = true; - break; + if( options::sortInference()){ + std::map< int, int > sortsFound; + for( int i=0; i<(int)d_regions_index; i++ ){ + if( d_regions[i]->d_valid ){ + Node op = d_regions[i]->d_nodes.begin()->first; + int sort_id = d_th->getQuantifiersEngine()->getTheoryEngine()->getSortInference()->getSortId(op) ; + if( sortsFound.find( sort_id )!=sortsFound.end() ){ + combineRegions( sortsFound[sort_id], i ); + recheck = true; + break; + }else{ + sortsFound[sort_id] = i; + } + } + } + } + if( !recheck ) { + for( int i=0; i<(int)d_regions_index; i++ ){ + if( d_regions[i]->d_valid ){ + forceCombineRegion( i, false ); + recheck = true; + break; + } } } if( recheck ){ @@ -803,15 +823,10 @@ void StrongSolverTheoryUf::SortRepModel::assertCardinality( OutputChannel* out, } } -void StrongSolverTheoryUf::SortRepModel::checkRegion( int ri, bool rec ){ +void StrongSolverTheoryUf::SortRepModel::checkRegion( int ri, bool checkCombine ){ if( isValid(ri) && d_hasCard ){ Assert( d_cardinality>0 ); - //first check if region is in conflict - std::vector< Node > clique; - if( d_regions[ri]->check( Theory::EFFORT_STANDARD, d_cardinality, clique ) ){ - //explain clique - addCliqueLemma( clique, &d_th->getOutputChannel() ); - }else if( d_regions[ri]->getMustCombine( d_cardinality ) ){ + if( checkCombine && d_regions[ri]->getMustCombine( d_cardinality ) ){ ////alternatively, check if we can reduce the number of external disequalities by moving single nodes //for( std::map< Node, bool >::iterator it = d_regions[i]->d_reps.begin(); it != d_regions[i]->d_reps.end(); ++it ){ // if( it->second ){ @@ -822,10 +837,16 @@ void StrongSolverTheoryUf::SortRepModel::checkRegion( int ri, bool rec ){ // } //} int riNew = forceCombineRegion( ri, true ); - if( riNew>=0 && rec ){ - checkRegion( riNew, rec ); + if( riNew>=0 ){ + checkRegion( riNew, checkCombine ); } } + //now check if region is in conflict + std::vector< Node > clique; + if( d_regions[ri]->check( Theory::EFFORT_STANDARD, d_cardinality, clique ) ){ + //explain clique + addCliqueLemma( clique, &d_th->getOutputChannel() ); + } } } @@ -996,6 +1017,13 @@ bool StrongSolverTheoryUf::SortRepModel::addSplit( Region* r, OutputChannel* out Assert( s!=Node::null() && s.getKind()==EQUAL ); s = Rewriter::rewrite( s ); Trace("uf-ss-lemma") << "*** Split on " << s << std::endl; + if( options::sortInference()) { + for( int i=0; i<2; i++ ){ + int si = d_th->getQuantifiersEngine()->getTheoryEngine()->getSortInference()->getSortId( s[i] ); + Trace("uf-ss-split-si") << si << " "; + } + Trace("uf-ss-split-si") << std::endl; + } //Trace("uf-ss-lemma") << d_th->getEqualityEngine()->areEqual( s[0], s[1] ) << " "; //Trace("uf-ss-lemma") << d_th->getEqualityEngine()->areDisequal( s[0], s[1] ) << std::endl; //Trace("uf-ss-lemma") << s[0].getType() << " " << s[1].getType() << std::endl; @@ -1018,117 +1046,149 @@ void StrongSolverTheoryUf::SortRepModel::addCliqueLemma( std::vector< Node >& cl while( clique.size()>size_t(d_cardinality+1) ){ clique.pop_back(); } - if( !options::ufssExplainedCliques() ){ + if( options::ufssSimpleCliques() && !options::ufssExplainedCliques() ){ //add as lemma std::vector< Node > eqs; for( int i=0; i<(int)clique.size(); i++ ){ for( int j=0; j<i; j++ ){ + Node r1 = d_th->d_equalityEngine.getRepresentative(clique[i]); + Node r2 = d_th->d_equalityEngine.getRepresentative(clique[j]); eqs.push_back( clique[i].eqNode( clique[j] ) ); } } eqs.push_back( d_cardinality_literal[ d_cardinality ].notNode() ); Node lem = NodeManager::currentNM()->mkNode( OR, eqs ); + Trace("uf-ss-lemma") << "*** Add clique conflict " << lem << std::endl; + ++( d_th->getStrongSolver()->d_statistics.d_clique_lemmas ); out->lemma( lem ); - return; - } - //if( options::ufssModelInference() || - if( Trace.isOn("uf-ss-cliques") ){ - std::vector< Node > clique_vec; - clique_vec.insert( clique_vec.begin(), clique.begin(), clique.end() ); - d_cliques[ d_cardinality ].push_back( clique_vec ); - } - - //found a clique - Debug("uf-ss-cliques") << "Found a clique (cardinality=" << d_cardinality << ") :" << std::endl; - Debug("uf-ss-cliques") << " "; - for( int i=0; i<(int)clique.size(); i++ ){ - Debug("uf-ss-cliques") << clique[i] << " "; - } - Debug("uf-ss-cliques") << std::endl; - Debug("uf-ss-cliques") << "Finding clique disequalities..." << std::endl; - std::vector< Node > conflict; - //collect disequalities, and nodes that must be equal within representatives - std::map< Node, std::map< Node, bool > > explained; - std::map< Node, std::map< Node, bool > > nodesWithinRep; - for( int i=0; i<(int)d_disequalities_index; i++ ){ - //if both sides of disequality exist in clique - Node r1 = d_th->d_equalityEngine.getRepresentative( d_disequalities[i][0][0] ); - Node r2 = d_th->d_equalityEngine.getRepresentative( d_disequalities[i][0][1] ); - if( r1!=r2 && ( explained.find( r1 )==explained.end() || explained[r1].find( r2 )==explained[r1].end() ) && - std::find( clique.begin(), clique.end(), r1 )!=clique.end() && - std::find( clique.begin(), clique.end(), r2 )!=clique.end() ){ - explained[r1][r2] = true; - explained[r2][r1] = true; - conflict.push_back( d_disequalities[i] ); - Debug("uf-ss-cliques") << " -> disequality : " << d_disequalities[i] << std::endl; - nodesWithinRep[r1][ d_disequalities[i][0][0] ] = true; - nodesWithinRep[r2][ d_disequalities[i][0][1] ] = true; - if( conflict.size()==(clique.size()*( clique.size()-1 )/2) ){ - break; + }else{ + //debugging information + if( Trace.isOn("uf-ss-cliques") ){ + std::vector< Node > clique_vec; + clique_vec.insert( clique_vec.begin(), clique.begin(), clique.end() ); + d_cliques[ d_cardinality ].push_back( clique_vec ); + } + //found a clique + Debug("uf-ss-cliques") << "Found a clique (cardinality=" << d_cardinality << ") :" << std::endl; + Debug("uf-ss-cliques") << " "; + for( int i=0; i<(int)clique.size(); i++ ){ + Debug("uf-ss-cliques") << clique[i] << " "; + } + Debug("uf-ss-cliques") << std::endl; + Debug("uf-ss-cliques") << "Finding clique disequalities..." << std::endl; + + //we will scan through each of the disequaltities + bool isSatConflict = true; + std::vector< Node > conflict; + //collect disequalities, and nodes that must be equal within representatives + std::map< Node, std::map< Node, bool > > explained; + std::map< Node, std::map< Node, bool > > nodesWithinRep; + //map from the reprorted clique members to those reported in the lemma + std::map< Node, Node > cliqueRepMap; + for( int i=0; i<(int)d_disequalities_index; i++ ){ + //if both sides of disequality exist in clique + Node r1 = d_th->d_equalityEngine.getRepresentative( d_disequalities[i][0][0] ); + Node r2 = d_th->d_equalityEngine.getRepresentative( d_disequalities[i][0][1] ); + if( r1!=r2 && ( explained.find( r1 )==explained.end() || explained[r1].find( r2 )==explained[r1].end() ) && + std::find( clique.begin(), clique.end(), r1 )!=clique.end() && + std::find( clique.begin(), clique.end(), r2 )!=clique.end() ){ + explained[r1][r2] = true; + explained[r2][r1] = true; + if( options::ufssExplainedCliques() ){ + conflict.push_back( d_disequalities[i] ); + Debug("uf-ss-cliques") << " -> disequality : " << d_disequalities[i] << std::endl; + nodesWithinRep[r1][ d_disequalities[i][0][0] ] = true; + nodesWithinRep[r2][ d_disequalities[i][0][1] ] = true; + }else{ + //get the terms we report in the lemma + Node ru1 = r1; + if( cliqueRepMap.find( r1 )==cliqueRepMap.end() ){ + ru1 = d_disequalities[i][0][0]; + cliqueRepMap[r1] = ru1; + }else{ + ru1 = cliqueRepMap[r1]; + } + Node ru2 = r2; + if( cliqueRepMap.find( r2 )==cliqueRepMap.end() ){ + ru2 = d_disequalities[i][0][1]; + cliqueRepMap[r2] = ru2; + }else{ + ru2 = cliqueRepMap[r2]; + } + if( ru1!=d_disequalities[i][0][0] || ru2!=d_disequalities[i][0][1] ){ + //disequalities have endpoints that are not connected within an equivalence class + // we will be producing a lemma, introducing a new literal ru1 != ru2 + conflict.push_back( ru1.eqNode( ru2 ).notNode() ); + isSatConflict = false; + }else{ + conflict.push_back( d_disequalities[i] ); + } + } + if( conflict.size()==(clique.size()*( clique.size()-1 )/2) ){ + break; + } } } - } - //Debug("uf-ss-cliques") << conflict.size() << " " << clique.size() << std::endl; - Assert( (int)conflict.size()==((int)clique.size()*( (int)clique.size()-1 )/2) ); - //Assert( (int)conflict.size()==(int)clique.size()*( (int)clique.size()-1 )/2 ); - Debug("uf-ss-cliques") << "Finding clique equalities internal to eq classes..." << std::endl; - //now, we must explain equalities within each equivalence class - for( std::map< Node, std::map< Node, bool > >::iterator it = nodesWithinRep.begin(); it != nodesWithinRep.end(); ++it ){ - if( it->second.size()>1 ){ - Node prev; - //add explanation of t1 = t2 = ... = tn - Debug("uf-ss-cliques") << "Explain "; - for( std::map< Node, bool >::iterator it2 = it->second.begin(); it2 != it->second.end(); ++it2 ){ - if( prev!=Node::null() ){ - Debug("uf-ss-cliques") << " = "; - //explain it2->first and prev - std::vector< TNode > expl; - d_th->d_equalityEngine.explainEquality( it2->first, prev, true, expl ); - for( int i=0; i<(int)expl.size(); i++ ){ - if( std::find( conflict.begin(), conflict.end(), expl[i] )==conflict.end() ){ - conflict.push_back( expl[i] ); + if( options::ufssExplainedCliques() ){ + //Debug("uf-ss-cliques") << conflict.size() << " " << clique.size() << std::endl; + Assert( (int)conflict.size()==((int)clique.size()*( (int)clique.size()-1 )/2) ); + //Assert( (int)conflict.size()==(int)clique.size()*( (int)clique.size()-1 )/2 ); + Debug("uf-ss-cliques") << "Finding clique equalities internal to eq classes..." << std::endl; + //now, we must explain equalities within each equivalence class + for( std::map< Node, std::map< Node, bool > >::iterator it = nodesWithinRep.begin(); it != nodesWithinRep.end(); ++it ){ + if( it->second.size()>1 ){ + Node prev; + //add explanation of t1 = t2 = ... = tn + Debug("uf-ss-cliques") << "Explain "; + for( std::map< Node, bool >::iterator it2 = it->second.begin(); it2 != it->second.end(); ++it2 ){ + if( prev!=Node::null() ){ + Debug("uf-ss-cliques") << " = "; + //explain it2->first and prev + std::vector< TNode > expl; + d_th->d_equalityEngine.explainEquality( it2->first, prev, true, expl ); + for( int i=0; i<(int)expl.size(); i++ ){ + if( std::find( conflict.begin(), conflict.end(), expl[i] )==conflict.end() ){ + conflict.push_back( expl[i] ); + } + } } + prev = it2->first; + Debug("uf-ss-cliques") << prev; } + Debug("uf-ss-cliques") << std::endl; } - prev = it2->first; - Debug("uf-ss-cliques") << prev; + } + Debug("uf-ss-cliques") << "Explanation of clique (size=" << conflict.size() << ") = " << std::endl; + for( int i=0; i<(int)conflict.size(); i++ ){ + Debug("uf-ss-cliques") << conflict[i] << " "; } Debug("uf-ss-cliques") << std::endl; } - } - Debug("uf-ss-cliques") << "Explanation of clique (size=" << conflict.size() << ") = " << std::endl; - for( int i=0; i<(int)conflict.size(); i++ ){ - Debug("uf-ss-cliques") << conflict[i] << " "; - //bool value; - //bool hasValue = d_th->getValuation().hasSatValue( conflict[i], value ); - //Assert( hasValue ); - //Assert( value ); - } - Debug("uf-ss-cliques") << std::endl; - //now, make the conflict -#if 1 - conflict.push_back( d_cardinality_literal[ d_cardinality ] ); - Node conflictNode = NodeManager::currentNM()->mkNode( AND, conflict ); - Trace("uf-ss-lemma") << "*** Add clique conflict " << conflictNode << std::endl; - //Notice() << "*** Add clique conflict " << conflictNode << std::endl; - out->conflict( conflictNode ); - d_conflict = true; -#else - Node conflictNode = conflict.size()==1 ? conflict[0] : NodeManager::currentNM()->mkNode( AND, conflict ); - //add cardinality constraint - Node cardNode = d_cardinality_literal[ d_cardinality ]; - //bool value; - //bool hasValue = d_th->getValuation().hasSatValue( cardNode, value ); - //Assert( hasValue ); - //Assert( value ); - conflictNode = NodeManager::currentNM()->mkNode( IMPLIES, conflictNode, cardNode.notNode() ); - Trace("uf-ss-lemma") << "*** Add clique conflict " << conflictNode << std::endl; - //Notice() << "*** Add clique conflict " << conflictNode << std::endl; - out->lemma( conflictNode ); -#endif - ++( d_th->getStrongSolver()->d_statistics.d_clique_lemmas ); + //now, make the conflict + if( isSatConflict ){ + conflict.push_back( d_cardinality_literal[ d_cardinality ] ); + Node conflictNode = NodeManager::currentNM()->mkNode( AND, conflict ); + Trace("uf-ss-lemma") << "*** Add clique conflict " << conflictNode << std::endl; + //Notice() << "*** Add clique conflict " << conflictNode << std::endl; + out->conflict( conflictNode ); + d_conflict = true; + ++( d_th->getStrongSolver()->d_statistics.d_clique_conflicts ); + }else{ + Node conflictNode = conflict.size()==1 ? conflict[0] : NodeManager::currentNM()->mkNode( AND, conflict ); + //add cardinality constraint + Node cardNode = d_cardinality_literal[ d_cardinality ]; + //bool value; + //bool hasValue = d_th->getValuation().hasSatValue( cardNode, value ); + //Assert( hasValue ); + //Assert( value ); + conflictNode = NodeManager::currentNM()->mkNode( IMPLIES, conflictNode, cardNode.notNode() ); + Trace("uf-ss-lemma") << "*** Add clique lemma " << conflictNode << std::endl; + out->lemma( conflictNode ); + ++( d_th->getStrongSolver()->d_statistics.d_clique_lemmas ); + } - //DO_THIS: ensure that the same clique is not reported??? Check standard effort after assertDisequal can produce same clique. + //DO_THIS: ensure that the same clique is not reported??? Check standard effort after assertDisequal can produce same clique. + } } void StrongSolverTheoryUf::SortRepModel::addTotalityAxiom( Node n, int cardinality, OutputChannel* out ){ @@ -1222,7 +1282,7 @@ int StrongSolverTheoryUf::SortRepModel::getNumRegions(){ } void StrongSolverTheoryUf::SortRepModel::getRepresentatives( std::vector< Node >& reps ){ - if( !options::ufssColoringSat() ){ + //if( !options::ufssColoringSat() ){ bool foundRegion = false; for( int i=0; i<(int)d_regions_index; i++ ){ //should not have multiple regions at this point @@ -1235,123 +1295,9 @@ void StrongSolverTheoryUf::SortRepModel::getRepresentatives( std::vector< Node > foundRegion = true; } } - }else{ - Unimplemented("Build representatives for fmf region sat is not implemented"); - } -} - - -/** initialize */ -void StrongSolverTheoryUf::InfRepModel::initialize( OutputChannel* out ){ - -} - -/** new node */ -void StrongSolverTheoryUf::InfRepModel::newEqClass( Node n ){ - d_rep[n] = n; - //d_const_rep[n] = n.getMetaKind()==metakind::CONSTANT; -} - -/** merge */ -void StrongSolverTheoryUf::InfRepModel::merge( Node a, Node b ){ - //d_rep[b] = false; - //d_const_rep[a] = d_const_rep[a] || d_const_rep[b]; - Node repb = d_rep[b]; - Assert( !repb.isNull() ); - if( repb.getMetaKind()==metakind::CONSTANT || isBadRepresentative( d_rep[a] ) ){ - d_rep[a] = repb; - } - d_rep[b] = Node::null(); -} - -/** check */ -void StrongSolverTheoryUf::InfRepModel::check( Theory::Effort level, OutputChannel* out ){ - -} - -/** minimize */ -bool StrongSolverTheoryUf::InfRepModel::minimize( OutputChannel* out ){ -#if 0 - bool retVal = true; -#else - bool retVal = !addSplit( out ); -#endif - if( retVal ){ - std::vector< Node > reps; - getRepresentatives( reps ); - Trace("uf-ss-fmf") << "Num representatives of type " << d_type << " : " << reps.size() << std::endl; - /* - for( int i=0; i<(int)reps.size(); i++ ){ - std::cout << reps[i] << " "; - } - std::cout << std::endl; - for( int i=0; i<(int)reps.size(); i++ ){ - std::cout << reps[i].getMetaKind() << " "; - } - std::cout << std::endl; - for( NodeNodeMap::iterator it = d_rep.begin(); it != d_rep.end(); ++it ){ - Node rep = (*it).second; - if( !rep.isNull() && !isBadRepresentative( rep ) ){ - for( NodeNodeMap::iterator it2 = d_rep.begin(); it2 != d_rep.end(); ++it2 ){ - Node rep2 = (*it2).second; - if( !rep2.isNull() && !isBadRepresentative( rep2 ) ){ - if( d_th->getQuantifiersEngine()->getEqualityQuery()->areDisequal( rep, rep2 ) ){ - std::cout << "1 "; - }else{ - std::cout << "0 "; - } - } - } - //std::cout << " : " << rep; - std::cout << std::endl; - } - } - */ - } - return retVal; -} - -/** get representatives */ -void StrongSolverTheoryUf::InfRepModel::getRepresentatives( std::vector< Node >& reps ){ - for( NodeNodeMap::iterator it = d_rep.begin(); it != d_rep.end(); ++it ){ - if( !(*it).second.isNull() ){ - reps.push_back( (*it).first ); - } - } -} - - -/** add split function */ -bool StrongSolverTheoryUf::InfRepModel::addSplit( OutputChannel* out ){ - std::vector< Node > visited; - for( NodeNodeMap::iterator it = d_rep.begin(); it != d_rep.end(); ++it ){ - Node rep = (*it).second; - if( !rep.isNull() && !isBadRepresentative( rep ) ){ - bool constRep = rep.getMetaKind()==metakind::CONSTANT; - for( size_t i=0; i<visited.size(); i++ ){ - if( !constRep || !visited[i].getMetaKind()==metakind::CONSTANT ){ - if( !d_th->getQuantifiersEngine()->getEqualityQuery()->areDisequal( rep, visited[i] ) ){ - //split on these nodes - Node eq = rep.eqNode( visited[i] ); - Trace("uf-ss-lemma") << "*** Split on " << eq << std::endl; - eq = Rewriter::rewrite( eq ); - Debug("uf-ss-lemma-debug") << "Rewritten " << eq << std::endl; - out->split( eq ); - //explore the equals branch first - out->requirePhase( eq, true ); - ++( d_th->getStrongSolver()->d_statistics.d_split_lemmas ); - return true; - } - } - } - visited.push_back( rep ); - } - } - return false; -} - -bool StrongSolverTheoryUf::InfRepModel::isBadRepresentative( Node n ){ - return n.getKind()==kind::PLUS; + //}else{ + // Unimplemented("Build representatives for fmf region sat is not implemented"); + //} } StrongSolverTheoryUf::StrongSolverTheoryUf(context::Context* c, context::UserContext* u, OutputChannel& out, TheoryUF* th) : @@ -1438,6 +1384,13 @@ void StrongSolverTheoryUf::check( Theory::Effort level ){ if( level==Theory::EFFORT_FULL ){ debugPrint( "uf-ss-debug" ); } + if( !d_conflict && level==Theory::EFFORT_FULL && options::ufssColoringSat() ){ + int lemmas = d_term_amb->disambiguateTerms( d_out ); + d_statistics.d_disamb_term_lemmas += lemmas; + if( lemmas>=0 ){ + return; + } + } for( std::map< TypeNode, RepModel* >::iterator it = d_rep_model.begin(); it != d_rep_model.end(); ++it ){ it->second->check( level, d_out ); if( it->second->isConflict() ){ @@ -1446,10 +1399,10 @@ void StrongSolverTheoryUf::check( Theory::Effort level ){ } } //disambiguate terms if necessary - if( !d_conflict && level==Theory::EFFORT_FULL && options::ufssColoringSat() ){ - Assert( d_term_amb!=NULL ); - d_statistics.d_disamb_term_lemmas += d_term_amb->disambiguateTerms( d_out ); - } + //if( !d_conflict && level==Theory::EFFORT_FULL && options::ufssColoringSat() ){ + // Assert( d_term_amb!=NULL ); + // d_statistics.d_disamb_term_lemmas += d_term_amb->disambiguateTerms( d_out ); + //} Trace("uf-ss-solver") << "Done StrongSolverTheoryUf: check " << level << std::endl; } } @@ -1481,9 +1434,6 @@ void StrongSolverTheoryUf::preRegisterTerm( TNode n ){ if( tn.isSort() ){ Trace("uf-ss-register") << "Preregister sort " << tn << "." << std::endl; rm = new SortRepModel( n, d_th->getSatContext(), d_th ); - }else if( tn.isInteger() ){ - //rm = new InfRepModel( tn, d_th->getSatContext(), d_th ); - //rm = new SortRepModel( tn, d_th->getSatContext(), d_th ); }else{ /* if( tn==NodeManager::currentNM()->integerType() || tn==NodeManager::currentNM()->realType() ){ @@ -1603,12 +1553,14 @@ void StrongSolverTheoryUf::debugModel( TheoryModel* m ){ } StrongSolverTheoryUf::Statistics::Statistics(): + d_clique_conflicts("StrongSolverTheoryUf::Clique_Conflicts", 0), d_clique_lemmas("StrongSolverTheoryUf::Clique_Lemmas", 0), d_split_lemmas("StrongSolverTheoryUf::Split_Lemmas", 0), d_disamb_term_lemmas("StrongSolverTheoryUf::Disambiguate_Term_Lemmas", 0), d_totality_lemmas("StrongSolverTheoryUf::Totality_Lemmas", 0), d_max_model_size("StrongSolverTheoryUf::Max_Model_Size", 1) { + StatisticsRegistry::registerStat(&d_clique_conflicts); StatisticsRegistry::registerStat(&d_clique_lemmas); StatisticsRegistry::registerStat(&d_split_lemmas); StatisticsRegistry::registerStat(&d_disamb_term_lemmas); @@ -1617,6 +1569,7 @@ StrongSolverTheoryUf::Statistics::Statistics(): } StrongSolverTheoryUf::Statistics::~Statistics(){ + StatisticsRegistry::unregisterStat(&d_clique_conflicts); StatisticsRegistry::unregisterStat(&d_clique_lemmas); StatisticsRegistry::unregisterStat(&d_split_lemmas); StatisticsRegistry::unregisterStat(&d_disamb_term_lemmas); @@ -1667,11 +1620,12 @@ int TermDisambiguator::disambiguateTerms( OutputChannel* out ){ } Assert( children.size()>1 ); Node lem = NodeManager::currentNM()->mkNode( OR, children ); - Debug( "uf-ss-lemma" ) << "*** Disambiguate lemma : " << lem << std::endl; + Trace( "uf-ss-lemma" ) << "*** Disambiguate lemma : " << lem << std::endl; //Notice() << "*** Disambiguate lemma : " << lem << std::endl; out->lemma( lem ); d_term_amb[ eq ] = false; lemmaAdded++; + return lemmaAdded; } } } diff --git a/src/theory/uf/theory_uf_strong_solver.h b/src/theory/uf/theory_uf_strong_solver.h index febae2eae..ceb59d5c3 100644 --- a/src/theory/uf/theory_uf_strong_solver.h +++ b/src/theory/uf/theory_uf_strong_solver.h @@ -213,7 +213,7 @@ public: void setSplitScore( Node n, int s ); private: /** check if we need to combine region ri */ - void checkRegion( int ri, bool rec = true ); + void checkRegion( int ri, bool checkCombine = true ); /** force combine region */ int forceCombineRegion( int ri, bool useDensity = true ); /** merge regions */ @@ -293,42 +293,6 @@ public: int getNumRegions(); }; /** class SortRepModel */ private: - /** infinite rep model */ - class InfRepModel : public RepModel - { - protected: - /** theory uf pointer */ - TheoryUF* d_th; - /** list of representatives */ - NodeNodeMap d_rep; - /** whether representatives are constant */ - NodeBoolMap d_const_rep; - /** add split */ - bool addSplit( OutputChannel* out ); - /** is bad representative */ - bool isBadRepresentative( Node n ); - public: - InfRepModel( TypeNode tn, context::Context* c, TheoryUF* th ) : RepModel( tn ), - d_th( th ), d_rep( c ), d_const_rep( c ){} - virtual ~InfRepModel(){} - /** initialize */ - void initialize( OutputChannel* out ); - /** new node */ - void newEqClass( Node n ); - /** merge */ - void merge( Node a, Node b ); - /** assert terms are disequal */ - void assertDisequal( Node a, Node b, Node reason ){} - /** check */ - void check( Theory::Effort level, OutputChannel* out ); - /** minimize */ - bool minimize( OutputChannel* out ); - /** get representatives */ - void getRepresentatives( std::vector< Node >& reps ); - /** print debug */ - void debugPrint( const char* c ){} - }; -private: /** The output channel for the strong solver. */ OutputChannel* d_out; /** theory uf pointer */ @@ -393,6 +357,7 @@ public: class Statistics { public: + IntStat d_clique_conflicts; IntStat d_clique_lemmas; IntStat d_split_lemmas; IntStat d_disamb_term_lemmas; diff --git a/src/util/dense_map.h b/src/util/dense_map.h index fa78e6787..222a761c3 100644 --- a/src/util/dense_map.h +++ b/src/util/dense_map.h @@ -151,6 +151,7 @@ public: pop_back(); } + /** Returns the key at the back of a non-empty list.*/ Key back() const { return d_list.back(); } @@ -164,6 +165,27 @@ public: d_list.pop_back(); } + + /** Adds at least a constant fraction of the elements in the current map to another map. */ + void splitInto(DenseMap<T>& target){ + uint32_t targetSize = size()/2; + while(size() > targetSize){ + Key key = back(); + target.set(key, get(key)); + pop_back(); + } + } + + /** Adds the current target map to the current map.*/ + void addAll(const DenseMap<T>& target){ + for(const_iterator i = target.begin(), e = target.end(); i != e; ++i){ + Key k = *i; + set(k, target[k]); + } + } + + + private: size_t allocated() const { diff --git a/src/util/node_visitor.h b/src/util/node_visitor.h index e444ba6e2..4c8e646bd 100644 --- a/src/util/node_visitor.h +++ b/src/util/node_visitor.h @@ -36,10 +36,11 @@ class NodeVisitor { /** * Guard against NodeVisitor<> being re-entrant. */ + template <class T> class GuardReentry { - bool& d_guard; + T& d_guard; public: - GuardReentry(bool& guard) + GuardReentry(T& guard) : d_guard(guard) { Assert(!d_guard); d_guard = true; @@ -71,7 +72,7 @@ public: */ static typename Visitor::return_type run(Visitor& visitor, TNode node) { - GuardReentry guard(bool(s_inRun)); + GuardReentry<CVC4_THREADLOCAL_TYPE(bool)> guard(s_inRun); // Notify of a start visitor.start(node); diff --git a/src/util/record.h b/src/util/record.h index 2c15d30e0..27b090e1d 100644 --- a/src/util/record.h +++ b/src/util/record.h @@ -29,7 +29,7 @@ namespace CVC4 { -class Record; +class CVC4_PUBLIC Record; // operators for record select and update diff --git a/src/util/sort_inference.cpp b/src/util/sort_inference.cpp index 2a037a020..0304a8e35 100755..100644 --- a/src/util/sort_inference.cpp +++ b/src/util/sort_inference.cpp @@ -1,11 +1,11 @@ /********************* */ /*! \file sort_inference.cpp ** \verbatim - ** Original author: ajreynol - ** Major contributors: none + ** Original author: Andrew Reynolds <andrew.j.reynolds@gmail.com> + ** Major contributors: Morgan Deters <mdeters@cs.nyu.edu> ** Minor contributors (to current version): none - ** This file is part of the CVC4 prototype. - ** Copyright (c) 2009-2012 New York University and The University of Iowa + ** This file is part of the CVC4 project. + ** Copyright (c) 2009-2013 New York University and The University of Iowa ** See the file COPYING in the top-level source directory for licensing ** information.\endverbatim ** @@ -58,6 +58,14 @@ void SortInference::simplify( std::vector< Node >& assertions, bool doRewrite ){ printSort( "sort-inference", it->second ); Trace("sort-inference") << std::endl; } + for( std::map< Node, std::map< Node, int > >::iterator it = d_var_types.begin(); it != d_var_types.end(); ++it ){ + Trace("sort-inference") << "Quantified formula " << it->first << " : " << std::endl; + for( std::map< Node, int >::iterator it2 = it->second.begin(); it2 != it->second.end(); ++it2 ){ + printSort( "sort-inference", it2->second ); + Trace("sort-inference") << std::endl; + } + Trace("sort-inference") << std::endl; + } } if( doRewrite ){ //simplify all assertions by introducing new symbols wherever necessary (NOTE: this is unsound for quantifiers) @@ -149,11 +157,11 @@ int SortInference::process( Node n, std::map< Node, Node >& var_bound ){ if( n.getKind()==kind::FORALL || n.getKind()==kind::EXISTS ){ for( size_t i=0; i<n[0].getNumChildren(); i++ ){ //TODO: try applying sort inference to quantified variables - //d_var_types[n][ n[0][i] ] = sortCount; - //sortCount++; + d_var_types[n][ n[0][i] ] = sortCount; + sortCount++; //type of the quantified variable must be the same - d_var_types[n][ n[0][i] ] = getIdForType( n[0][i].getType() ); + //d_var_types[n][ n[0][i] ] = getIdForType( n[0][i].getType() ); var_bound[ n[0][i] ] = n; } } @@ -404,5 +412,17 @@ Node SortInference::simplify( Node n, std::map< Node, Node >& var_bound ){ } } +int SortInference::getSortId( Node n ) { + Node op = n.getKind()==kind::APPLY_UF ? n.getOperator() : n; + return getRepresentative( d_op_return_types[op] ); +} + +int SortInference::getSortId( Node f, Node v ) { + return getRepresentative( d_var_types[f][v] ); +} +void SortInference::setSkolemVar( Node f, Node v, Node sk ){ + d_op_return_types[sk] = getSortId( f, v ); } + +}
\ No newline at end of file diff --git a/src/util/sort_inference.h b/src/util/sort_inference.h index 1873688fa..0b1f96f85 100755..100644 --- a/src/util/sort_inference.h +++ b/src/util/sort_inference.h @@ -1,11 +1,11 @@ /********************* */ /*! \file sort_inference.h ** \verbatim - ** Original author: ajreynol - ** Major contributors: none + ** Original author: Andrew Reynolds <andrew.j.reynolds@gmail.com> + ** Major contributors: Morgan Deters <mdeters@cs.nyu.edu> ** Minor contributors (to current version): none - ** This file is part of the CVC4 prototype. - ** Copyright (c) 2009-2012 New York University and The University of Iowa + ** This file is part of the CVC4 project. + ** Copyright (c) 2009-2013 New York University and The University of Iowa ** See the file COPYING in the top-level source directory for licensing ** information.\endverbatim ** @@ -65,6 +65,10 @@ public: ~SortInference(){} void simplify( std::vector< Node >& assertions, bool doRewrite = false ); + int getSortId( Node n ); + int getSortId( Node f, Node v ); + //set that sk is the skolem variable of v for quantifier f + void setSkolemVar( Node f, Node v, Node sk ); }; } diff --git a/src/util/statistics_registry.h b/src/util/statistics_registry.h index 3bf990dbb..af9088663 100644 --- a/src/util/statistics_registry.h +++ b/src/util/statistics_registry.h @@ -23,6 +23,7 @@ #include "util/statistics.h" #include "util/exception.h" +#include "lib/clock_gettime.h" #include <sstream> #include <iomanip> @@ -612,12 +613,17 @@ public: };/* class StatisticsRegistry */ +}/* CVC4 namespace */ + /****************************************************************************/ /* Some utility functions for timespec */ /****************************************************************************/ +inline std::ostream& operator<<(std::ostream& os, const timespec& t); + /** Compute the sum of two timespecs. */ inline timespec& operator+=(timespec& a, const timespec& b) { + using namespace CVC4; // assumes a.tv_nsec and b.tv_nsec are in range const long nsec_per_sec = 1000000000L; // one thousand million CheckArgument(a.tv_nsec >= 0 && a.tv_nsec < nsec_per_sec, a); @@ -640,6 +646,7 @@ inline timespec& operator+=(timespec& a, const timespec& b) { /** Compute the difference of two timespecs. */ inline timespec& operator-=(timespec& a, const timespec& b) { + using namespace CVC4; // assumes a.tv_nsec and b.tv_nsec are in range const long nsec_per_sec = 1000000000L; // one thousand million CheckArgument(a.tv_nsec >= 0 && a.tv_nsec < nsec_per_sec, a); @@ -716,6 +723,8 @@ inline std::ostream& operator<<(std::ostream& os, const timespec& t) { << std::setfill('0') << std::setw(8) << std::right << t.tv_nsec; } +namespace CVC4 { + class CodeTimer; /** @@ -765,7 +774,6 @@ public: };/* class TimerStat */ - /** * Utility class to make it easier to call stop() at the end of a * code block. When constructed, it starts the timer. When @@ -788,7 +796,6 @@ public: } };/* class CodeTimer */ - /** * To use a statistic, you need to declare it, initialize it in your * constructor, register it in your constructor, and deregister it in diff --git a/test/regress/regress0/Makefile.am b/test/regress/regress0/Makefile.am index 99cd6dbe6..b81bcf799 100644 --- a/test/regress/regress0/Makefile.am +++ b/test/regress/regress0/Makefile.am @@ -3,7 +3,7 @@ DIST_SUBDIRS = . arith precedence uf uflra uflia bv arrays aufbv auflia datatype BINARY = cvc4 LOG_COMPILER = @srcdir@/../run_regression -AM_LOG_FLAGS = $(RUN_REGRESSION_ARGS) @top_builddir@/src/main/$(BINARY) +AM_LOG_FLAGS = $(RUN_REGRESSION_ARGS) @top_builddir@/src/main/$(BINARY)$(EXEEXT) if AUTOMAKE_1_11 # old-style (pre-automake 1.12) test harness diff --git a/test/regress/regress0/arith/Makefile.am b/test/regress/regress0/arith/Makefile.am index 38e7e6f4e..40f04b239 100644 --- a/test/regress/regress0/arith/Makefile.am +++ b/test/regress/regress0/arith/Makefile.am @@ -2,7 +2,7 @@ SUBDIRS = . integers BINARY = cvc4 LOG_COMPILER = @srcdir@/../../run_regression -AM_LOG_FLAGS = $(RUN_REGRESSION_ARGS) @top_builddir@/src/main/$(BINARY) +AM_LOG_FLAGS = $(RUN_REGRESSION_ARGS) @top_builddir@/src/main/$(BINARY)$(EXEEXT) if AUTOMAKE_1_11 # old-style (pre-automake 1.12) test harness @@ -23,7 +23,6 @@ TESTS = \ delta-minimized-row-vector-bug.smt \ fuzz_3-eq.smt \ leq.01.smt \ - miplibtrick.smt \ DTP_k2_n35_c175_s15.smt2 \ mod.01.smt2 \ mod.02.smt2 \ @@ -39,10 +38,21 @@ TESTS = \ div.09.smt2 \ mult.01.smt2 \ mult.02.smt2 \ - bug443.delta01.smt + bug443.delta01.smt \ + miplib.cvc \ + miplib2.cvc \ + miplib3.cvc \ + miplib4.cvc \ + miplibtrick.smt # problem__003.smt2 -EXTRA_DIST = $(TESTS) +EXTRA_DIST = $(TESTS) \ + miplib-opt1217--27.smt \ + miplib-opt1217--27.smt2 \ + miplib-pp08a-3000.smt \ + miplib-pp08a-3000.smt2 \ + miplib-opt1217--27.smt.expect \ + miplib-pp08a-3000.smt.expect #if CVC4_BUILD_PROFILE_COMPETITION #else diff --git a/test/regress/regress0/arith/integers/Makefile.am b/test/regress/regress0/arith/integers/Makefile.am index de7ccebce..88e9c5fbd 100644 --- a/test/regress/regress0/arith/integers/Makefile.am +++ b/test/regress/regress0/arith/integers/Makefile.am @@ -2,7 +2,7 @@ SUBDIRS = . BINARY = cvc4 LOG_COMPILER = @srcdir@/../../../run_regression -AM_LOG_FLAGS = $(RUN_REGRESSION_ARGS) @top_builddir@/src/main/$(BINARY) +AM_LOG_FLAGS = $(RUN_REGRESSION_ARGS) @top_builddir@/src/main/$(BINARY)$(EXEEXT) if AUTOMAKE_1_11 # old-style (pre-automake 1.12) test harness diff --git a/test/regress/regress0/arith/miplib-opt1217--27.smt b/test/regress/regress0/arith/miplib-opt1217--27.smt new file mode 100644 index 000000000..f942cbc75 --- /dev/null +++ b/test/regress/regress0/arith/miplib-opt1217--27.smt @@ -0,0 +1,4669 @@ +(benchmark mip_opt1217 +:source { +Relaxation of the Mixed-Integer Programming +optimization problem opt1217 from the MIPLIB (http://miplib.zib.de/) +by Enric Rodriguez-Carbonell (erodri@lsi.upc.edu) +} + :status unsat + :category { industrial } + :difficulty { 5 } + :logic QF_LRA + + :extrafuns ((tmp766 Real)) + :extrafuns ((tmp765 Real)) + :extrafuns ((tmp764 Real)) + :extrafuns ((tmp763 Real)) + :extrafuns ((tmp762 Real)) + :extrafuns ((tmp761 Real)) + :extrafuns ((tmp760 Real)) + :extrafuns ((tmp759 Real)) + :extrafuns ((tmp758 Real)) + :extrafuns ((tmp757 Real)) + :extrafuns ((tmp756 Real)) + :extrafuns ((tmp755 Real)) + :extrafuns ((tmp754 Real)) + :extrafuns ((tmp753 Real)) + :extrafuns ((tmp752 Real)) + :extrafuns ((tmp751 Real)) + :extrafuns ((tmp750 Real)) + :extrafuns ((tmp749 Real)) + :extrafuns ((tmp748 Real)) + :extrafuns ((tmp747 Real)) + :extrafuns ((tmp746 Real)) + :extrafuns ((tmp745 Real)) + :extrafuns ((tmp744 Real)) + :extrafuns ((tmp743 Real)) + :extrafuns ((tmp742 Real)) + :extrafuns ((tmp741 Real)) + :extrafuns ((tmp740 Real)) + :extrafuns ((tmp739 Real)) + :extrafuns ((tmp738 Real)) + :extrafuns ((tmp737 Real)) + :extrafuns ((tmp736 Real)) + :extrafuns ((tmp735 Real)) + :extrafuns ((tmp734 Real)) + :extrafuns ((tmp733 Real)) + :extrafuns ((tmp732 Real)) + :extrafuns ((tmp731 Real)) + :extrafuns ((tmp730 Real)) + :extrafuns ((tmp729 Real)) + :extrafuns ((tmp728 Real)) + :extrafuns ((tmp727 Real)) + :extrafuns ((tmp726 Real)) + :extrafuns ((tmp725 Real)) + :extrafuns ((tmp724 Real)) + :extrafuns ((tmp723 Real)) + :extrafuns ((tmp722 Real)) + :extrafuns ((tmp721 Real)) + :extrafuns ((tmp720 Real)) + :extrafuns ((tmp719 Real)) + :extrafuns ((tmp718 Real)) + :extrafuns ((tmp717 Real)) + :extrafuns ((tmp716 Real)) + :extrafuns ((tmp715 Real)) + :extrafuns ((tmp714 Real)) + :extrafuns ((tmp713 Real)) + :extrafuns ((tmp712 Real)) + :extrafuns ((tmp711 Real)) + :extrafuns ((tmp710 Real)) + :extrafuns ((tmp709 Real)) + :extrafuns ((tmp708 Real)) + :extrafuns ((tmp707 Real)) + :extrafuns ((tmp706 Real)) + :extrafuns ((tmp705 Real)) + :extrafuns ((tmp704 Real)) + :extrafuns ((tmp703 Real)) + :extrafuns ((tmp702 Real)) + :extrafuns ((tmp701 Real)) + :extrafuns ((tmp700 Real)) + :extrafuns ((tmp699 Real)) + :extrafuns ((tmp698 Real)) + :extrafuns ((tmp697 Real)) + :extrafuns ((tmp696 Real)) + :extrafuns ((tmp695 Real)) + :extrafuns ((tmp694 Real)) + :extrafuns ((tmp693 Real)) + :extrafuns ((tmp692 Real)) + :extrafuns ((tmp691 Real)) + :extrafuns ((tmp690 Real)) + :extrafuns ((tmp689 Real)) + :extrafuns ((tmp688 Real)) + :extrafuns ((tmp687 Real)) + :extrafuns ((tmp686 Real)) + :extrafuns ((tmp685 Real)) + :extrafuns ((tmp684 Real)) + :extrafuns ((tmp683 Real)) + :extrafuns ((tmp682 Real)) + :extrafuns ((tmp681 Real)) + :extrafuns ((tmp680 Real)) + :extrafuns ((tmp679 Real)) + :extrafuns ((tmp678 Real)) + :extrafuns ((tmp677 Real)) + :extrafuns ((tmp676 Real)) + :extrafuns ((tmp675 Real)) + :extrafuns ((tmp674 Real)) + :extrafuns ((tmp673 Real)) + :extrafuns ((tmp672 Real)) + :extrafuns ((tmp671 Real)) + :extrafuns ((tmp670 Real)) + :extrafuns ((tmp669 Real)) + :extrafuns ((tmp668 Real)) + :extrafuns ((tmp667 Real)) + :extrafuns ((tmp666 Real)) + :extrafuns ((tmp665 Real)) + :extrafuns ((tmp664 Real)) + :extrafuns ((tmp663 Real)) + :extrafuns ((tmp662 Real)) + :extrafuns ((tmp661 Real)) + :extrafuns ((tmp660 Real)) + :extrafuns ((tmp659 Real)) + :extrafuns ((tmp658 Real)) + :extrafuns ((tmp657 Real)) + :extrafuns ((tmp656 Real)) + :extrafuns ((tmp655 Real)) + :extrafuns ((tmp654 Real)) + :extrafuns ((tmp653 Real)) + :extrafuns ((tmp652 Real)) + :extrafuns ((tmp651 Real)) + :extrafuns ((tmp650 Real)) + :extrafuns ((tmp649 Real)) + :extrafuns ((tmp648 Real)) + :extrafuns ((tmp647 Real)) + :extrafuns ((tmp646 Real)) + :extrafuns ((tmp645 Real)) + :extrafuns ((tmp644 Real)) + :extrafuns ((tmp643 Real)) + :extrafuns ((tmp642 Real)) + :extrafuns ((tmp641 Real)) + :extrafuns ((tmp640 Real)) + :extrafuns ((tmp639 Real)) + :extrafuns ((tmp638 Real)) + :extrafuns ((tmp637 Real)) + :extrafuns ((tmp636 Real)) + :extrafuns ((tmp635 Real)) + :extrafuns ((tmp634 Real)) + :extrafuns ((tmp633 Real)) + :extrafuns ((tmp632 Real)) + :extrafuns ((tmp631 Real)) + :extrafuns ((tmp630 Real)) + :extrafuns ((tmp629 Real)) + :extrafuns ((tmp628 Real)) + :extrafuns ((tmp627 Real)) + :extrafuns ((tmp626 Real)) + :extrafuns ((tmp625 Real)) + :extrafuns ((tmp624 Real)) + :extrafuns ((tmp623 Real)) + :extrafuns ((tmp622 Real)) + :extrafuns ((tmp621 Real)) + :extrafuns ((tmp620 Real)) + :extrafuns ((tmp619 Real)) + :extrafuns ((tmp618 Real)) + :extrafuns ((tmp617 Real)) + :extrafuns ((tmp616 Real)) + :extrafuns ((tmp615 Real)) + :extrafuns ((tmp614 Real)) + :extrafuns ((tmp613 Real)) + :extrafuns ((tmp612 Real)) + :extrafuns ((tmp611 Real)) + :extrafuns ((tmp610 Real)) + :extrafuns ((tmp609 Real)) + :extrafuns ((tmp608 Real)) + :extrafuns ((tmp607 Real)) + :extrafuns ((tmp606 Real)) + :extrafuns ((tmp605 Real)) + :extrafuns ((tmp604 Real)) + :extrafuns ((tmp603 Real)) + :extrafuns ((tmp602 Real)) + :extrafuns ((tmp601 Real)) + :extrafuns ((tmp600 Real)) + :extrafuns ((tmp599 Real)) + :extrafuns ((tmp598 Real)) + :extrafuns ((tmp597 Real)) + :extrafuns ((tmp596 Real)) + :extrafuns ((tmp595 Real)) + :extrafuns ((tmp594 Real)) + :extrafuns ((tmp593 Real)) + :extrafuns ((tmp592 Real)) + :extrafuns ((tmp591 Real)) + :extrafuns ((tmp590 Real)) + :extrafuns ((tmp589 Real)) + :extrafuns ((tmp588 Real)) + :extrafuns ((tmp587 Real)) + :extrafuns ((tmp586 Real)) + :extrafuns ((tmp585 Real)) + :extrafuns ((tmp584 Real)) + :extrafuns ((tmp583 Real)) + :extrafuns ((tmp582 Real)) + :extrafuns ((tmp581 Real)) + :extrafuns ((tmp580 Real)) + :extrafuns ((tmp579 Real)) + :extrafuns ((tmp578 Real)) + :extrafuns ((tmp577 Real)) + :extrafuns ((tmp576 Real)) + :extrafuns ((tmp575 Real)) + :extrafuns ((tmp574 Real)) + :extrafuns ((tmp573 Real)) + :extrafuns ((tmp572 Real)) + :extrafuns ((tmp571 Real)) + :extrafuns ((tmp570 Real)) + :extrafuns ((tmp569 Real)) + :extrafuns ((tmp568 Real)) + :extrafuns ((tmp567 Real)) + :extrafuns ((tmp566 Real)) + :extrafuns ((tmp565 Real)) + :extrafuns ((tmp564 Real)) + :extrafuns ((tmp563 Real)) + :extrafuns ((tmp562 Real)) + :extrafuns ((tmp561 Real)) + :extrafuns ((tmp560 Real)) + :extrafuns ((tmp559 Real)) + :extrafuns ((tmp558 Real)) + :extrafuns ((tmp557 Real)) + :extrafuns ((tmp556 Real)) + :extrafuns ((tmp555 Real)) + :extrafuns ((tmp554 Real)) + :extrafuns ((tmp553 Real)) + :extrafuns ((tmp552 Real)) + :extrafuns ((tmp551 Real)) + :extrafuns ((tmp550 Real)) + :extrafuns ((tmp549 Real)) + :extrafuns ((tmp548 Real)) + :extrafuns ((tmp547 Real)) + :extrafuns ((tmp546 Real)) + :extrafuns ((tmp545 Real)) + :extrafuns ((tmp544 Real)) + :extrafuns ((tmp543 Real)) + :extrafuns ((tmp542 Real)) + :extrafuns ((tmp541 Real)) + :extrafuns ((tmp540 Real)) + :extrafuns ((tmp539 Real)) + :extrafuns ((tmp538 Real)) + :extrafuns ((tmp537 Real)) + :extrafuns ((tmp536 Real)) + :extrafuns ((tmp535 Real)) + :extrafuns ((tmp534 Real)) + :extrafuns ((tmp533 Real)) + :extrafuns ((tmp532 Real)) + :extrafuns ((tmp531 Real)) + :extrafuns ((tmp530 Real)) + :extrafuns ((tmp529 Real)) + :extrafuns ((tmp528 Real)) + :extrafuns ((tmp527 Real)) + :extrafuns ((tmp526 Real)) + :extrafuns ((tmp525 Real)) + :extrafuns ((tmp524 Real)) + :extrafuns ((tmp523 Real)) + :extrafuns ((tmp522 Real)) + :extrafuns ((tmp521 Real)) + :extrafuns ((tmp520 Real)) + :extrafuns ((tmp519 Real)) + :extrafuns ((tmp518 Real)) + :extrafuns ((tmp517 Real)) + :extrafuns ((tmp516 Real)) + :extrafuns ((tmp515 Real)) + :extrafuns ((tmp514 Real)) + :extrafuns ((tmp513 Real)) + :extrafuns ((tmp512 Real)) + :extrafuns ((tmp511 Real)) + :extrafuns ((tmp510 Real)) + :extrafuns ((tmp509 Real)) + :extrafuns ((tmp508 Real)) + :extrafuns ((tmp507 Real)) + :extrafuns ((tmp506 Real)) + :extrafuns ((tmp505 Real)) + :extrafuns ((tmp504 Real)) + :extrafuns ((tmp503 Real)) + :extrafuns ((tmp502 Real)) + :extrafuns ((tmp501 Real)) + :extrafuns ((tmp500 Real)) + :extrafuns ((tmp499 Real)) + :extrafuns ((tmp498 Real)) + :extrafuns ((tmp497 Real)) + :extrafuns ((tmp496 Real)) + :extrafuns ((tmp495 Real)) + :extrafuns ((tmp494 Real)) + :extrafuns ((tmp493 Real)) + :extrafuns ((tmp492 Real)) + :extrafuns ((tmp491 Real)) + :extrafuns ((tmp490 Real)) + :extrafuns ((tmp489 Real)) + :extrafuns ((tmp488 Real)) + :extrafuns ((tmp487 Real)) + :extrafuns ((tmp486 Real)) + :extrafuns ((tmp485 Real)) + :extrafuns ((tmp484 Real)) + :extrafuns ((tmp483 Real)) + :extrafuns ((tmp482 Real)) + :extrafuns ((tmp481 Real)) + :extrafuns ((tmp480 Real)) + :extrafuns ((tmp479 Real)) + :extrafuns ((tmp478 Real)) + :extrafuns ((tmp477 Real)) + :extrafuns ((tmp476 Real)) + :extrafuns ((tmp475 Real)) + :extrafuns ((tmp474 Real)) + :extrafuns ((tmp473 Real)) + :extrafuns ((tmp472 Real)) + :extrafuns ((tmp471 Real)) + :extrafuns ((tmp470 Real)) + :extrafuns ((tmp469 Real)) + :extrafuns ((tmp468 Real)) + :extrafuns ((tmp467 Real)) + :extrafuns ((tmp466 Real)) + :extrafuns ((tmp465 Real)) + :extrafuns ((tmp464 Real)) + :extrafuns ((tmp463 Real)) + :extrafuns ((tmp462 Real)) + :extrafuns ((tmp461 Real)) + :extrafuns ((tmp460 Real)) + :extrafuns ((tmp459 Real)) + :extrafuns ((tmp458 Real)) + :extrafuns ((tmp457 Real)) + :extrafuns ((tmp456 Real)) + :extrafuns ((tmp455 Real)) + :extrafuns ((tmp454 Real)) + :extrafuns ((tmp453 Real)) + :extrafuns ((tmp452 Real)) + :extrafuns ((tmp451 Real)) + :extrafuns ((tmp450 Real)) + :extrafuns ((tmp449 Real)) + :extrafuns ((tmp448 Real)) + :extrafuns ((tmp447 Real)) + :extrafuns ((tmp446 Real)) + :extrafuns ((tmp445 Real)) + :extrafuns ((tmp444 Real)) + :extrafuns ((tmp443 Real)) + :extrafuns ((tmp442 Real)) + :extrafuns ((tmp441 Real)) + :extrafuns ((tmp440 Real)) + :extrafuns ((tmp439 Real)) + :extrafuns ((tmp438 Real)) + :extrafuns ((tmp437 Real)) + :extrafuns ((tmp436 Real)) + :extrafuns ((tmp435 Real)) + :extrafuns ((tmp434 Real)) + :extrafuns ((tmp433 Real)) + :extrafuns ((tmp432 Real)) + :extrafuns ((tmp431 Real)) + :extrafuns ((tmp430 Real)) + :extrafuns ((tmp429 Real)) + :extrafuns ((tmp428 Real)) + :extrafuns ((tmp427 Real)) + :extrafuns ((tmp426 Real)) + :extrafuns ((tmp425 Real)) + :extrafuns ((tmp424 Real)) + :extrafuns ((tmp423 Real)) + :extrafuns ((tmp422 Real)) + :extrafuns ((tmp421 Real)) + :extrafuns ((tmp420 Real)) + :extrafuns ((tmp419 Real)) + :extrafuns ((tmp418 Real)) + :extrafuns ((tmp417 Real)) + :extrafuns ((tmp416 Real)) + :extrafuns ((tmp415 Real)) + :extrafuns ((tmp414 Real)) + :extrafuns ((tmp413 Real)) + :extrafuns ((tmp412 Real)) + :extrafuns ((tmp411 Real)) + :extrafuns ((tmp410 Real)) + :extrafuns ((tmp409 Real)) + :extrafuns ((tmp408 Real)) + :extrafuns ((tmp407 Real)) + :extrafuns ((tmp406 Real)) + :extrafuns ((tmp405 Real)) + :extrafuns ((tmp404 Real)) + :extrafuns ((tmp403 Real)) + :extrafuns ((tmp402 Real)) + :extrafuns ((tmp401 Real)) + :extrafuns ((tmp400 Real)) + :extrafuns ((tmp399 Real)) + :extrafuns ((tmp398 Real)) + :extrafuns ((tmp397 Real)) + :extrafuns ((tmp396 Real)) + :extrafuns ((tmp395 Real)) + :extrafuns ((tmp394 Real)) + :extrafuns ((tmp393 Real)) + :extrafuns ((tmp392 Real)) + :extrafuns ((tmp391 Real)) + :extrafuns ((tmp390 Real)) + :extrafuns ((tmp389 Real)) + :extrafuns ((tmp388 Real)) + :extrafuns ((tmp387 Real)) + :extrafuns ((tmp386 Real)) + :extrafuns ((tmp385 Real)) + :extrafuns ((tmp384 Real)) + :extrafuns ((tmp383 Real)) + :extrafuns ((tmp382 Real)) + :extrafuns ((tmp381 Real)) + :extrafuns ((tmp380 Real)) + :extrafuns ((tmp379 Real)) + :extrafuns ((tmp378 Real)) + :extrafuns ((tmp377 Real)) + :extrafuns ((tmp376 Real)) + :extrafuns ((tmp375 Real)) + :extrafuns ((tmp374 Real)) + :extrafuns ((tmp373 Real)) + :extrafuns ((tmp372 Real)) + :extrafuns ((tmp371 Real)) + :extrafuns ((tmp370 Real)) + :extrafuns ((tmp369 Real)) + :extrafuns ((tmp368 Real)) + :extrafuns ((tmp367 Real)) + :extrafuns ((tmp366 Real)) + :extrafuns ((tmp365 Real)) + :extrafuns ((tmp364 Real)) + :extrafuns ((tmp363 Real)) + :extrafuns ((tmp362 Real)) + :extrafuns ((tmp361 Real)) + :extrafuns ((tmp360 Real)) + :extrafuns ((tmp359 Real)) + :extrafuns ((tmp358 Real)) + :extrafuns ((tmp357 Real)) + :extrafuns ((tmp356 Real)) + :extrafuns ((tmp355 Real)) + :extrafuns ((tmp354 Real)) + :extrafuns ((tmp353 Real)) + :extrafuns ((tmp352 Real)) + :extrafuns ((tmp351 Real)) + :extrafuns ((tmp350 Real)) + :extrafuns ((tmp349 Real)) + :extrafuns ((tmp348 Real)) + :extrafuns ((tmp347 Real)) + :extrafuns ((tmp346 Real)) + :extrafuns ((tmp345 Real)) + :extrafuns ((tmp344 Real)) + :extrafuns ((tmp343 Real)) + :extrafuns ((tmp342 Real)) + :extrafuns ((tmp341 Real)) + :extrafuns ((tmp340 Real)) + :extrafuns ((tmp339 Real)) + :extrafuns ((tmp338 Real)) + :extrafuns ((tmp337 Real)) + :extrafuns ((tmp336 Real)) + :extrafuns ((tmp335 Real)) + :extrafuns ((tmp334 Real)) + :extrafuns ((tmp333 Real)) + :extrafuns ((tmp332 Real)) + :extrafuns ((tmp331 Real)) + :extrafuns ((tmp330 Real)) + :extrafuns ((tmp329 Real)) + :extrafuns ((tmp328 Real)) + :extrafuns ((tmp327 Real)) + :extrafuns ((tmp326 Real)) + :extrafuns ((tmp325 Real)) + :extrafuns ((tmp324 Real)) + :extrafuns ((tmp323 Real)) + :extrafuns ((tmp322 Real)) + :extrafuns ((tmp321 Real)) + :extrafuns ((tmp320 Real)) + :extrafuns ((tmp319 Real)) + :extrafuns ((tmp318 Real)) + :extrafuns ((tmp317 Real)) + :extrafuns ((tmp316 Real)) + :extrafuns ((tmp315 Real)) + :extrafuns ((tmp314 Real)) + :extrafuns ((tmp313 Real)) + :extrafuns ((tmp312 Real)) + :extrafuns ((tmp311 Real)) + :extrafuns ((tmp310 Real)) + :extrafuns ((tmp309 Real)) + :extrafuns ((tmp308 Real)) + :extrafuns ((tmp307 Real)) + :extrafuns ((tmp306 Real)) + :extrafuns ((tmp305 Real)) + :extrafuns ((tmp304 Real)) + :extrafuns ((tmp303 Real)) + :extrafuns ((tmp302 Real)) + :extrafuns ((tmp301 Real)) + :extrafuns ((tmp300 Real)) + :extrafuns ((tmp299 Real)) + :extrafuns ((tmp298 Real)) + :extrafuns ((tmp297 Real)) + :extrafuns ((tmp296 Real)) + :extrafuns ((tmp295 Real)) + :extrafuns ((tmp294 Real)) + :extrafuns ((tmp293 Real)) + :extrafuns ((tmp292 Real)) + :extrafuns ((tmp291 Real)) + :extrafuns ((tmp290 Real)) + :extrafuns ((tmp289 Real)) + :extrafuns ((tmp288 Real)) + :extrafuns ((tmp287 Real)) + :extrafuns ((tmp286 Real)) + :extrafuns ((tmp285 Real)) + :extrafuns ((tmp284 Real)) + :extrafuns ((tmp283 Real)) + :extrafuns ((tmp282 Real)) + :extrafuns ((tmp281 Real)) + :extrafuns ((tmp280 Real)) + :extrafuns ((tmp279 Real)) + :extrafuns ((tmp278 Real)) + :extrafuns ((tmp277 Real)) + :extrafuns ((tmp276 Real)) + :extrafuns ((tmp275 Real)) + :extrafuns ((tmp274 Real)) + :extrafuns ((tmp273 Real)) + :extrafuns ((tmp272 Real)) + :extrafuns ((tmp271 Real)) + :extrafuns ((tmp270 Real)) + :extrafuns ((tmp269 Real)) + :extrafuns ((tmp268 Real)) + :extrafuns ((tmp267 Real)) + :extrafuns ((tmp266 Real)) + :extrafuns ((tmp265 Real)) + :extrafuns ((tmp264 Real)) + :extrafuns ((tmp263 Real)) + :extrafuns ((tmp262 Real)) + :extrafuns ((tmp261 Real)) + :extrafuns ((tmp260 Real)) + :extrafuns ((tmp259 Real)) + :extrafuns ((tmp258 Real)) + :extrafuns ((tmp257 Real)) + :extrafuns ((tmp256 Real)) + :extrafuns ((tmp255 Real)) + :extrafuns ((tmp254 Real)) + :extrafuns ((tmp253 Real)) + :extrafuns ((tmp252 Real)) + :extrafuns ((tmp251 Real)) + :extrafuns ((tmp250 Real)) + :extrafuns ((tmp249 Real)) + :extrafuns ((tmp248 Real)) + :extrafuns ((tmp247 Real)) + :extrafuns ((tmp246 Real)) + :extrafuns ((tmp245 Real)) + :extrafuns ((tmp244 Real)) + :extrafuns ((tmp243 Real)) + :extrafuns ((tmp242 Real)) + :extrafuns ((tmp241 Real)) + :extrafuns ((tmp240 Real)) + :extrafuns ((tmp239 Real)) + :extrafuns ((tmp238 Real)) + :extrafuns ((tmp237 Real)) + :extrafuns ((tmp236 Real)) + :extrafuns ((tmp235 Real)) + :extrafuns ((tmp234 Real)) + :extrafuns ((tmp233 Real)) + :extrafuns ((tmp232 Real)) + :extrafuns ((tmp231 Real)) + :extrafuns ((tmp230 Real)) + :extrafuns ((tmp229 Real)) + :extrafuns ((tmp228 Real)) + :extrafuns ((tmp227 Real)) + :extrafuns ((tmp226 Real)) + :extrafuns ((tmp225 Real)) + :extrafuns ((tmp224 Real)) + :extrafuns ((tmp223 Real)) + :extrafuns ((tmp222 Real)) + :extrafuns ((tmp221 Real)) + :extrafuns ((tmp220 Real)) + :extrafuns ((tmp219 Real)) + :extrafuns ((tmp218 Real)) + :extrafuns ((tmp217 Real)) + :extrafuns ((tmp216 Real)) + :extrafuns ((tmp215 Real)) + :extrafuns ((tmp214 Real)) + :extrafuns ((tmp213 Real)) + :extrafuns ((tmp212 Real)) + :extrafuns ((tmp211 Real)) + :extrafuns ((tmp210 Real)) + :extrafuns ((tmp209 Real)) + :extrafuns ((tmp208 Real)) + :extrafuns ((tmp207 Real)) + :extrafuns ((tmp206 Real)) + :extrafuns ((tmp205 Real)) + :extrafuns ((tmp204 Real)) + :extrafuns ((tmp203 Real)) + :extrafuns ((tmp202 Real)) + :extrafuns ((tmp201 Real)) + :extrafuns ((tmp200 Real)) + :extrafuns ((tmp199 Real)) + :extrafuns ((tmp198 Real)) + :extrafuns ((tmp197 Real)) + :extrafuns ((tmp196 Real)) + :extrafuns ((tmp195 Real)) + :extrafuns ((tmp194 Real)) + :extrafuns ((tmp193 Real)) + :extrafuns ((tmp192 Real)) + :extrafuns ((tmp191 Real)) + :extrafuns ((tmp190 Real)) + :extrafuns ((tmp189 Real)) + :extrafuns ((tmp188 Real)) + :extrafuns ((tmp187 Real)) + :extrafuns ((tmp186 Real)) + :extrafuns ((tmp185 Real)) + :extrafuns ((tmp184 Real)) + :extrafuns ((tmp183 Real)) + :extrafuns ((tmp182 Real)) + :extrafuns ((tmp181 Real)) + :extrafuns ((tmp180 Real)) + :extrafuns ((tmp179 Real)) + :extrafuns ((tmp178 Real)) + :extrafuns ((tmp177 Real)) + :extrafuns ((tmp176 Real)) + :extrafuns ((tmp175 Real)) + :extrafuns ((tmp174 Real)) + :extrafuns ((tmp173 Real)) + :extrafuns ((tmp172 Real)) + :extrafuns ((tmp171 Real)) + :extrafuns ((tmp170 Real)) + :extrafuns ((tmp169 Real)) + :extrafuns ((tmp168 Real)) + :extrafuns ((tmp167 Real)) + :extrafuns ((tmp166 Real)) + :extrafuns ((tmp165 Real)) + :extrafuns ((tmp164 Real)) + :extrafuns ((tmp163 Real)) + :extrafuns ((tmp162 Real)) + :extrafuns ((tmp161 Real)) + :extrafuns ((tmp160 Real)) + :extrafuns ((tmp159 Real)) + :extrafuns ((tmp158 Real)) + :extrafuns ((tmp157 Real)) + :extrafuns ((tmp156 Real)) + :extrafuns ((tmp155 Real)) + :extrafuns ((tmp154 Real)) + :extrafuns ((tmp153 Real)) + :extrafuns ((tmp152 Real)) + :extrafuns ((tmp151 Real)) + :extrafuns ((tmp150 Real)) + :extrafuns ((tmp149 Real)) + :extrafuns ((tmp148 Real)) + :extrafuns ((tmp147 Real)) + :extrafuns ((tmp146 Real)) + :extrafuns ((tmp145 Real)) + :extrafuns ((tmp144 Real)) + :extrafuns ((tmp143 Real)) + :extrafuns ((tmp142 Real)) + :extrafuns ((tmp141 Real)) + :extrafuns ((tmp140 Real)) + :extrafuns ((tmp139 Real)) + :extrafuns ((tmp138 Real)) + :extrafuns ((tmp137 Real)) + :extrafuns ((tmp136 Real)) + :extrafuns ((tmp135 Real)) + :extrafuns ((tmp134 Real)) + :extrafuns ((tmp133 Real)) + :extrafuns ((tmp132 Real)) + :extrafuns ((tmp131 Real)) + :extrafuns ((tmp130 Real)) + :extrafuns ((tmp129 Real)) + :extrafuns ((tmp128 Real)) + :extrafuns ((tmp127 Real)) + :extrafuns ((tmp126 Real)) + :extrafuns ((tmp125 Real)) + :extrafuns ((tmp124 Real)) + :extrafuns ((tmp123 Real)) + :extrafuns ((tmp122 Real)) + :extrafuns ((tmp121 Real)) + :extrafuns ((tmp120 Real)) + :extrafuns ((tmp119 Real)) + :extrafuns ((tmp118 Real)) + :extrafuns ((tmp117 Real)) + :extrafuns ((tmp116 Real)) + :extrafuns ((tmp115 Real)) + :extrafuns ((tmp114 Real)) + :extrafuns ((tmp113 Real)) + :extrafuns ((tmp112 Real)) + :extrafuns ((tmp111 Real)) + :extrafuns ((tmp110 Real)) + :extrafuns ((tmp109 Real)) + :extrafuns ((tmp108 Real)) + :extrafuns ((tmp107 Real)) + :extrafuns ((tmp106 Real)) + :extrafuns ((tmp105 Real)) + :extrafuns ((tmp104 Real)) + :extrafuns ((tmp103 Real)) + :extrafuns ((tmp102 Real)) + :extrafuns ((tmp101 Real)) + :extrafuns ((tmp100 Real)) + :extrafuns ((tmp99 Real)) + :extrafuns ((tmp98 Real)) + :extrafuns ((tmp97 Real)) + :extrafuns ((tmp96 Real)) + :extrafuns ((tmp95 Real)) + :extrafuns ((tmp94 Real)) + :extrafuns ((tmp93 Real)) + :extrafuns ((tmp92 Real)) + :extrafuns ((tmp91 Real)) + :extrafuns ((tmp90 Real)) + :extrafuns ((tmp89 Real)) + :extrafuns ((tmp88 Real)) + :extrafuns ((tmp87 Real)) + :extrafuns ((tmp86 Real)) + :extrafuns ((tmp85 Real)) + :extrafuns ((tmp84 Real)) + :extrafuns ((tmp83 Real)) + :extrafuns ((tmp82 Real)) + :extrafuns ((tmp81 Real)) + :extrafuns ((tmp80 Real)) + :extrafuns ((tmp79 Real)) + :extrafuns ((tmp78 Real)) + :extrafuns ((tmp77 Real)) + :extrafuns ((tmp76 Real)) + :extrafuns ((tmp75 Real)) + :extrafuns ((tmp74 Real)) + :extrafuns ((tmp73 Real)) + :extrafuns ((tmp72 Real)) + :extrafuns ((tmp71 Real)) + :extrafuns ((tmp70 Real)) + :extrafuns ((tmp69 Real)) + :extrafuns ((tmp68 Real)) + :extrafuns ((tmp67 Real)) + :extrafuns ((tmp66 Real)) + :extrafuns ((tmp65 Real)) + :extrafuns ((tmp64 Real)) + :extrafuns ((tmp63 Real)) + :extrafuns ((tmp62 Real)) + :extrafuns ((tmp61 Real)) + :extrafuns ((tmp60 Real)) + :extrafuns ((tmp59 Real)) + :extrafuns ((tmp58 Real)) + :extrafuns ((tmp57 Real)) + :extrafuns ((tmp56 Real)) + :extrafuns ((tmp55 Real)) + :extrafuns ((tmp54 Real)) + :extrafuns ((tmp53 Real)) + :extrafuns ((tmp52 Real)) + :extrafuns ((tmp51 Real)) + :extrafuns ((tmp50 Real)) + :extrafuns ((tmp49 Real)) + :extrafuns ((tmp48 Real)) + :extrafuns ((tmp47 Real)) + :extrafuns ((tmp46 Real)) + :extrafuns ((tmp45 Real)) + :extrafuns ((tmp44 Real)) + :extrafuns ((tmp43 Real)) + :extrafuns ((tmp42 Real)) + :extrafuns ((tmp41 Real)) + :extrafuns ((tmp40 Real)) + :extrafuns ((tmp39 Real)) + :extrafuns ((tmp38 Real)) + :extrafuns ((tmp37 Real)) + :extrafuns ((tmp36 Real)) + :extrafuns ((tmp35 Real)) + :extrafuns ((tmp34 Real)) + :extrafuns ((tmp33 Real)) + :extrafuns ((tmp32 Real)) + :extrafuns ((tmp31 Real)) + :extrafuns ((tmp30 Real)) + :extrafuns ((tmp29 Real)) + :extrafuns ((tmp28 Real)) + :extrafuns ((tmp27 Real)) + :extrafuns ((tmp26 Real)) + :extrafuns ((tmp25 Real)) + :extrafuns ((tmp24 Real)) + :extrafuns ((tmp23 Real)) + :extrafuns ((tmp22 Real)) + :extrafuns ((tmp21 Real)) + :extrafuns ((tmp20 Real)) + :extrafuns ((tmp19 Real)) + :extrafuns ((tmp18 Real)) + :extrafuns ((tmp17 Real)) + :extrafuns ((tmp16 Real)) + :extrafuns ((tmp15 Real)) + :extrafuns ((tmp14 Real)) + :extrafuns ((tmp13 Real)) + :extrafuns ((tmp12 Real)) + :extrafuns ((tmp11 Real)) + :extrafuns ((tmp10 Real)) + :extrafuns ((tmp9 Real)) + :extrafuns ((tmp8 Real)) + :extrafuns ((tmp7 Real)) + :extrafuns ((tmp6 Real)) + :extrafuns ((tmp5 Real)) + :extrafuns ((tmp4 Real)) + :extrafuns ((tmp3 Real)) + :extrafuns ((tmp2 Real)) + :extrafuns ((tmp1 Real)) + :extrafuns ((x1 Real)) + :extrapreds ((x2)) + :extrapreds ((x3)) + :extrapreds ((x4)) + :extrapreds ((x5)) + :extrapreds ((x6)) + :extrapreds ((x7)) + :extrapreds ((x8)) + :extrapreds ((x9)) + :extrapreds ((x10)) + :extrapreds ((x11)) + :extrapreds ((x12)) + :extrapreds ((x13)) + :extrapreds ((x14)) + :extrapreds ((x15)) + :extrapreds ((x16)) + :extrapreds ((x17)) + :extrapreds ((x18)) + :extrapreds ((x19)) + :extrapreds ((x20)) + :extrapreds ((x21)) + :extrapreds ((x22)) + :extrapreds ((x23)) + :extrapreds ((x24)) + :extrapreds ((x25)) + :extrapreds ((x26)) + :extrapreds ((x27)) + :extrapreds ((x28)) + :extrapreds ((x29)) + :extrapreds ((x30)) + :extrapreds ((x31)) + :extrapreds ((x32)) + :extrapreds ((x33)) + :extrapreds ((x34)) + :extrapreds ((x35)) + :extrapreds ((x36)) + :extrapreds ((x37)) + :extrapreds ((x38)) + :extrapreds ((x39)) + :extrapreds ((x40)) + :extrapreds ((x41)) + :extrapreds ((x42)) + :extrapreds ((x43)) + :extrapreds ((x44)) + :extrapreds ((x45)) + :extrapreds ((x46)) + :extrapreds ((x47)) + :extrapreds ((x48)) + :extrapreds ((x49)) + :extrapreds ((x50)) + :extrapreds ((x51)) + :extrapreds ((x52)) + :extrapreds ((x53)) + :extrapreds ((x54)) + :extrapreds ((x55)) + :extrapreds ((x56)) + :extrapreds ((x57)) + :extrapreds ((x58)) + :extrapreds ((x59)) + :extrapreds ((x60)) + :extrapreds ((x61)) + :extrapreds ((x62)) + :extrapreds ((x63)) + :extrapreds ((x64)) + :extrapreds ((x65)) + :extrapreds ((x66)) + :extrapreds ((x67)) + :extrapreds ((x68)) + :extrapreds ((x69)) + :extrapreds ((x70)) + :extrapreds ((x71)) + :extrapreds ((x72)) + :extrapreds ((x73)) + :extrapreds ((x74)) + :extrapreds ((x75)) + :extrapreds ((x76)) + :extrapreds ((x77)) + :extrapreds ((x78)) + :extrapreds ((x79)) + :extrapreds ((x80)) + :extrapreds ((x81)) + :extrapreds ((x82)) + :extrapreds ((x83)) + :extrapreds ((x84)) + :extrapreds ((x85)) + :extrapreds ((x86)) + :extrapreds ((x87)) + :extrapreds ((x88)) + :extrapreds ((x89)) + :extrapreds ((x90)) + :extrapreds ((x91)) + :extrapreds ((x92)) + :extrapreds ((x93)) + :extrapreds ((x94)) + :extrapreds ((x95)) + :extrapreds ((x96)) + :extrapreds ((x97)) + :extrapreds ((x98)) + :extrapreds ((x99)) + :extrapreds ((x100)) + :extrapreds ((x101)) + :extrapreds ((x102)) + :extrapreds ((x103)) + :extrapreds ((x104)) + :extrapreds ((x105)) + :extrapreds ((x106)) + :extrapreds ((x107)) + :extrapreds ((x108)) + :extrapreds ((x109)) + :extrapreds ((x110)) + :extrapreds ((x111)) + :extrapreds ((x112)) + :extrapreds ((x113)) + :extrapreds ((x114)) + :extrapreds ((x115)) + :extrapreds ((x116)) + :extrapreds ((x117)) + :extrapreds ((x118)) + :extrapreds ((x119)) + :extrapreds ((x120)) + :extrapreds ((x121)) + :extrapreds ((x122)) + :extrapreds ((x123)) + :extrapreds ((x124)) + :extrapreds ((x125)) + :extrapreds ((x126)) + :extrapreds ((x127)) + :extrapreds ((x128)) + :extrapreds ((x129)) + :extrapreds ((x130)) + :extrapreds ((x131)) + :extrapreds ((x132)) + :extrapreds ((x133)) + :extrapreds ((x134)) + :extrapreds ((x135)) + :extrapreds ((x136)) + :extrapreds ((x137)) + :extrapreds ((x138)) + :extrapreds ((x139)) + :extrapreds ((x140)) + :extrapreds ((x141)) + :extrapreds ((x142)) + :extrapreds ((x143)) + :extrapreds ((x144)) + :extrapreds ((x145)) + :extrapreds ((x146)) + :extrapreds ((x147)) + :extrapreds ((x148)) + :extrapreds ((x149)) + :extrapreds ((x150)) + :extrapreds ((x151)) + :extrapreds ((x152)) + :extrapreds ((x153)) + :extrapreds ((x154)) + :extrapreds ((x155)) + :extrapreds ((x156)) + :extrapreds ((x157)) + :extrapreds ((x158)) + :extrapreds ((x159)) + :extrapreds ((x160)) + :extrapreds ((x161)) + :extrapreds ((x162)) + :extrapreds ((x163)) + :extrapreds ((x164)) + :extrapreds ((x165)) + :extrapreds ((x166)) + :extrapreds ((x167)) + :extrapreds ((x168)) + :extrapreds ((x169)) + :extrapreds ((x170)) + :extrapreds ((x171)) + :extrapreds ((x172)) + :extrapreds ((x173)) + :extrapreds ((x174)) + :extrapreds ((x175)) + :extrapreds ((x176)) + :extrapreds ((x177)) + :extrapreds ((x178)) + :extrapreds ((x179)) + :extrapreds ((x180)) + :extrapreds ((x181)) + :extrapreds ((x182)) + :extrapreds ((x183)) + :extrapreds ((x184)) + :extrapreds ((x185)) + :extrapreds ((x186)) + :extrapreds ((x187)) + :extrapreds ((x188)) + :extrapreds ((x189)) + :extrapreds ((x190)) + :extrapreds ((x191)) + :extrapreds ((x192)) + :extrapreds ((x193)) + :extrapreds ((x194)) + :extrapreds ((x195)) + :extrapreds ((x196)) + :extrapreds ((x197)) + :extrapreds ((x198)) + :extrapreds ((x199)) + :extrapreds ((x200)) + :extrapreds ((x201)) + :extrapreds ((x202)) + :extrapreds ((x203)) + :extrapreds ((x204)) + :extrapreds ((x205)) + :extrapreds ((x206)) + :extrapreds ((x207)) + :extrapreds ((x208)) + :extrapreds ((x209)) + :extrapreds ((x210)) + :extrapreds ((x211)) + :extrapreds ((x212)) + :extrapreds ((x213)) + :extrapreds ((x214)) + :extrapreds ((x215)) + :extrapreds ((x216)) + :extrapreds ((x217)) + :extrapreds ((x218)) + :extrapreds ((x219)) + :extrapreds ((x220)) + :extrapreds ((x221)) + :extrapreds ((x222)) + :extrapreds ((x223)) + :extrapreds ((x224)) + :extrapreds ((x225)) + :extrapreds ((x226)) + :extrapreds ((x227)) + :extrapreds ((x228)) + :extrapreds ((x229)) + :extrapreds ((x230)) + :extrapreds ((x231)) + :extrapreds ((x232)) + :extrapreds ((x233)) + :extrapreds ((x234)) + :extrapreds ((x235)) + :extrapreds ((x236)) + :extrapreds ((x237)) + :extrapreds ((x238)) + :extrapreds ((x239)) + :extrapreds ((x240)) + :extrapreds ((x241)) + :extrapreds ((x242)) + :extrapreds ((x243)) + :extrapreds ((x244)) + :extrapreds ((x245)) + :extrapreds ((x246)) + :extrapreds ((x247)) + :extrapreds ((x248)) + :extrapreds ((x249)) + :extrapreds ((x250)) + :extrapreds ((x251)) + :extrapreds ((x252)) + :extrapreds ((x253)) + :extrapreds ((x254)) + :extrapreds ((x255)) + :extrapreds ((x256)) + :extrapreds ((x257)) + :extrapreds ((x258)) + :extrapreds ((x259)) + :extrapreds ((x260)) + :extrapreds ((x261)) + :extrapreds ((x262)) + :extrapreds ((x263)) + :extrapreds ((x264)) + :extrapreds ((x265)) + :extrapreds ((x266)) + :extrapreds ((x267)) + :extrapreds ((x268)) + :extrapreds ((x269)) + :extrapreds ((x270)) + :extrapreds ((x271)) + :extrapreds ((x272)) + :extrapreds ((x273)) + :extrapreds ((x274)) + :extrapreds ((x275)) + :extrapreds ((x276)) + :extrapreds ((x277)) + :extrapreds ((x278)) + :extrapreds ((x279)) + :extrapreds ((x280)) + :extrapreds ((x281)) + :extrapreds ((x282)) + :extrapreds ((x283)) + :extrapreds ((x284)) + :extrapreds ((x285)) + :extrapreds ((x286)) + :extrapreds ((x287)) + :extrapreds ((x288)) + :extrapreds ((x289)) + :extrapreds ((x290)) + :extrapreds ((x291)) + :extrapreds ((x292)) + :extrapreds ((x293)) + :extrapreds ((x294)) + :extrapreds ((x295)) + :extrapreds ((x296)) + :extrapreds ((x297)) + :extrapreds ((x298)) + :extrapreds ((x299)) + :extrapreds ((x300)) + :extrapreds ((x301)) + :extrapreds ((x302)) + :extrapreds ((x303)) + :extrapreds ((x304)) + :extrapreds ((x305)) + :extrapreds ((x306)) + :extrapreds ((x307)) + :extrapreds ((x308)) + :extrapreds ((x309)) + :extrapreds ((x310)) + :extrapreds ((x311)) + :extrapreds ((x312)) + :extrapreds ((x313)) + :extrapreds ((x314)) + :extrapreds ((x315)) + :extrapreds ((x316)) + :extrapreds ((x317)) + :extrapreds ((x318)) + :extrapreds ((x319)) + :extrapreds ((x320)) + :extrapreds ((x321)) + :extrapreds ((x322)) + :extrapreds ((x323)) + :extrapreds ((x324)) + :extrapreds ((x325)) + :extrapreds ((x326)) + :extrapreds ((x327)) + :extrapreds ((x328)) + :extrapreds ((x329)) + :extrapreds ((x330)) + :extrapreds ((x331)) + :extrapreds ((x332)) + :extrapreds ((x333)) + :extrapreds ((x334)) + :extrapreds ((x335)) + :extrapreds ((x336)) + :extrapreds ((x337)) + :extrapreds ((x338)) + :extrapreds ((x339)) + :extrapreds ((x340)) + :extrapreds ((x341)) + :extrapreds ((x342)) + :extrapreds ((x343)) + :extrapreds ((x344)) + :extrapreds ((x345)) + :extrapreds ((x346)) + :extrapreds ((x347)) + :extrapreds ((x348)) + :extrapreds ((x349)) + :extrapreds ((x350)) + :extrapreds ((x351)) + :extrapreds ((x352)) + :extrapreds ((x353)) + :extrapreds ((x354)) + :extrapreds ((x355)) + :extrapreds ((x356)) + :extrapreds ((x357)) + :extrapreds ((x358)) + :extrapreds ((x359)) + :extrapreds ((x360)) + :extrapreds ((x361)) + :extrapreds ((x362)) + :extrapreds ((x363)) + :extrapreds ((x364)) + :extrapreds ((x365)) + :extrapreds ((x366)) + :extrapreds ((x367)) + :extrapreds ((x368)) + :extrapreds ((x369)) + :extrapreds ((x370)) + :extrapreds ((x371)) + :extrapreds ((x372)) + :extrapreds ((x373)) + :extrapreds ((x374)) + :extrapreds ((x375)) + :extrapreds ((x376)) + :extrapreds ((x377)) + :extrapreds ((x378)) + :extrapreds ((x379)) + :extrapreds ((x380)) + :extrapreds ((x381)) + :extrapreds ((x382)) + :extrapreds ((x383)) + :extrapreds ((x384)) + :extrapreds ((x385)) + :extrapreds ((x386)) + :extrapreds ((x387)) + :extrapreds ((x388)) + :extrapreds ((x389)) + :extrapreds ((x390)) + :extrapreds ((x391)) + :extrapreds ((x392)) + :extrapreds ((x393)) + :extrapreds ((x394)) + :extrapreds ((x395)) + :extrapreds ((x396)) + :extrapreds ((x397)) + :extrapreds ((x398)) + :extrapreds ((x399)) + :extrapreds ((x400)) + :extrapreds ((x401)) + :extrapreds ((x402)) + :extrapreds ((x403)) + :extrapreds ((x404)) + :extrapreds ((x405)) + :extrapreds ((x406)) + :extrapreds ((x407)) + :extrapreds ((x408)) + :extrapreds ((x409)) + :extrapreds ((x410)) + :extrapreds ((x411)) + :extrapreds ((x412)) + :extrapreds ((x413)) + :extrapreds ((x414)) + :extrapreds ((x415)) + :extrapreds ((x416)) + :extrapreds ((x417)) + :extrapreds ((x418)) + :extrapreds ((x419)) + :extrapreds ((x420)) + :extrapreds ((x421)) + :extrapreds ((x422)) + :extrapreds ((x423)) + :extrapreds ((x424)) + :extrapreds ((x425)) + :extrapreds ((x426)) + :extrapreds ((x427)) + :extrapreds ((x428)) + :extrapreds ((x429)) + :extrapreds ((x430)) + :extrapreds ((x431)) + :extrapreds ((x432)) + :extrapreds ((x433)) + :extrapreds ((x434)) + :extrapreds ((x435)) + :extrapreds ((x436)) + :extrapreds ((x437)) + :extrapreds ((x438)) + :extrapreds ((x439)) + :extrapreds ((x440)) + :extrapreds ((x441)) + :extrapreds ((x442)) + :extrapreds ((x443)) + :extrapreds ((x444)) + :extrapreds ((x445)) + :extrapreds ((x446)) + :extrapreds ((x447)) + :extrapreds ((x448)) + :extrapreds ((x449)) + :extrapreds ((x450)) + :extrapreds ((x451)) + :extrapreds ((x452)) + :extrapreds ((x453)) + :extrapreds ((x454)) + :extrapreds ((x455)) + :extrapreds ((x456)) + :extrapreds ((x457)) + :extrapreds ((x458)) + :extrapreds ((x459)) + :extrapreds ((x460)) + :extrapreds ((x461)) + :extrapreds ((x462)) + :extrapreds ((x463)) + :extrapreds ((x464)) + :extrapreds ((x465)) + :extrapreds ((x466)) + :extrapreds ((x467)) + :extrapreds ((x468)) + :extrapreds ((x469)) + :extrapreds ((x470)) + :extrapreds ((x471)) + :extrapreds ((x472)) + :extrapreds ((x473)) + :extrapreds ((x474)) + :extrapreds ((x475)) + :extrapreds ((x476)) + :extrapreds ((x477)) + :extrapreds ((x478)) + :extrapreds ((x479)) + :extrapreds ((x480)) + :extrapreds ((x481)) + :extrapreds ((x482)) + :extrapreds ((x483)) + :extrapreds ((x484)) + :extrapreds ((x485)) + :extrapreds ((x486)) + :extrapreds ((x487)) + :extrapreds ((x488)) + :extrapreds ((x489)) + :extrapreds ((x490)) + :extrapreds ((x491)) + :extrapreds ((x492)) + :extrapreds ((x493)) + :extrapreds ((x494)) + :extrapreds ((x495)) + :extrapreds ((x496)) + :extrapreds ((x497)) + :extrapreds ((x498)) + :extrapreds ((x499)) + :extrapreds ((x500)) + :extrapreds ((x501)) + :extrapreds ((x502)) + :extrapreds ((x503)) + :extrapreds ((x504)) + :extrapreds ((x505)) + :extrapreds ((x506)) + :extrapreds ((x507)) + :extrapreds ((x508)) + :extrapreds ((x509)) + :extrapreds ((x510)) + :extrapreds ((x511)) + :extrapreds ((x512)) + :extrapreds ((x513)) + :extrapreds ((x514)) + :extrapreds ((x515)) + :extrapreds ((x516)) + :extrapreds ((x517)) + :extrapreds ((x518)) + :extrapreds ((x519)) + :extrapreds ((x520)) + :extrapreds ((x521)) + :extrapreds ((x522)) + :extrapreds ((x523)) + :extrapreds ((x524)) + :extrapreds ((x525)) + :extrapreds ((x526)) + :extrapreds ((x527)) + :extrapreds ((x528)) + :extrapreds ((x529)) + :extrapreds ((x530)) + :extrapreds ((x531)) + :extrapreds ((x532)) + :extrapreds ((x533)) + :extrapreds ((x534)) + :extrapreds ((x535)) + :extrapreds ((x536)) + :extrapreds ((x537)) + :extrapreds ((x538)) + :extrapreds ((x539)) + :extrapreds ((x540)) + :extrapreds ((x541)) + :extrapreds ((x542)) + :extrapreds ((x543)) + :extrapreds ((x544)) + :extrapreds ((x545)) + :extrapreds ((x546)) + :extrapreds ((x547)) + :extrapreds ((x548)) + :extrapreds ((x549)) + :extrapreds ((x550)) + :extrapreds ((x551)) + :extrapreds ((x552)) + :extrapreds ((x553)) + :extrapreds ((x554)) + :extrapreds ((x555)) + :extrapreds ((x556)) + :extrapreds ((x557)) + :extrapreds ((x558)) + :extrapreds ((x559)) + :extrapreds ((x560)) + :extrapreds ((x561)) + :extrapreds ((x562)) + :extrapreds ((x563)) + :extrapreds ((x564)) + :extrapreds ((x565)) + :extrapreds ((x566)) + :extrapreds ((x567)) + :extrapreds ((x568)) + :extrapreds ((x569)) + :extrapreds ((x570)) + :extrapreds ((x571)) + :extrapreds ((x572)) + :extrapreds ((x573)) + :extrapreds ((x574)) + :extrapreds ((x575)) + :extrapreds ((x576)) + :extrapreds ((x577)) + :extrapreds ((x578)) + :extrapreds ((x579)) + :extrapreds ((x580)) + :extrapreds ((x581)) + :extrapreds ((x582)) + :extrapreds ((x583)) + :extrapreds ((x584)) + :extrapreds ((x585)) + :extrapreds ((x586)) + :extrapreds ((x587)) + :extrapreds ((x588)) + :extrapreds ((x589)) + :extrapreds ((x590)) + :extrapreds ((x591)) + :extrapreds ((x592)) + :extrapreds ((x593)) + :extrapreds ((x594)) + :extrapreds ((x595)) + :extrapreds ((x596)) + :extrapreds ((x597)) + :extrapreds ((x598)) + :extrapreds ((x599)) + :extrapreds ((x600)) + :extrapreds ((x601)) + :extrapreds ((x602)) + :extrapreds ((x603)) + :extrapreds ((x604)) + :extrapreds ((x605)) + :extrapreds ((x606)) + :extrapreds ((x607)) + :extrapreds ((x608)) + :extrapreds ((x609)) + :extrapreds ((x610)) + :extrapreds ((x611)) + :extrapreds ((x612)) + :extrapreds ((x613)) + :extrapreds ((x614)) + :extrapreds ((x615)) + :extrapreds ((x616)) + :extrapreds ((x617)) + :extrapreds ((x618)) + :extrapreds ((x619)) + :extrapreds ((x620)) + :extrapreds ((x621)) + :extrapreds ((x622)) + :extrapreds ((x623)) + :extrapreds ((x624)) + :extrapreds ((x625)) + :extrapreds ((x626)) + :extrapreds ((x627)) + :extrapreds ((x628)) + :extrapreds ((x629)) + :extrapreds ((x630)) + :extrapreds ((x631)) + :extrapreds ((x632)) + :extrapreds ((x633)) + :extrapreds ((x634)) + :extrapreds ((x635)) + :extrapreds ((x636)) + :extrapreds ((x637)) + :extrapreds ((x638)) + :extrapreds ((x639)) + :extrapreds ((x640)) + :extrapreds ((x641)) + :extrapreds ((x642)) + :extrapreds ((x643)) + :extrapreds ((x644)) + :extrapreds ((x645)) + :extrapreds ((x646)) + :extrapreds ((x647)) + :extrapreds ((x648)) + :extrapreds ((x649)) + :extrapreds ((x650)) + :extrapreds ((x651)) + :extrapreds ((x652)) + :extrapreds ((x653)) + :extrapreds ((x654)) + :extrapreds ((x655)) + :extrapreds ((x656)) + :extrapreds ((x657)) + :extrapreds ((x658)) + :extrapreds ((x659)) + :extrapreds ((x660)) + :extrapreds ((x661)) + :extrapreds ((x662)) + :extrapreds ((x663)) + :extrapreds ((x664)) + :extrapreds ((x665)) + :extrapreds ((x666)) + :extrapreds ((x667)) + :extrapreds ((x668)) + :extrapreds ((x669)) + :extrapreds ((x670)) + :extrapreds ((x671)) + :extrapreds ((x672)) + :extrapreds ((x673)) + :extrapreds ((x674)) + :extrapreds ((x675)) + :extrapreds ((x676)) + :extrapreds ((x677)) + :extrapreds ((x678)) + :extrapreds ((x679)) + :extrapreds ((x680)) + :extrapreds ((x681)) + :extrapreds ((x682)) + :extrapreds ((x683)) + :extrapreds ((x684)) + :extrapreds ((x685)) + :extrapreds ((x686)) + :extrapreds ((x687)) + :extrapreds ((x688)) + :extrapreds ((x689)) + :extrapreds ((x690)) + :extrapreds ((x691)) + :extrapreds ((x692)) + :extrapreds ((x693)) + :extrapreds ((x694)) + :extrapreds ((x695)) + :extrapreds ((x696)) + :extrapreds ((x697)) + :extrapreds ((x698)) + :extrapreds ((x699)) + :extrapreds ((x700)) + :extrapreds ((x701)) + :extrapreds ((x702)) + :extrapreds ((x703)) + :extrapreds ((x704)) + :extrapreds ((x705)) + :extrapreds ((x706)) + :extrapreds ((x707)) + :extrapreds ((x708)) + :extrapreds ((x709)) + :extrapreds ((x710)) + :extrapreds ((x711)) + :extrapreds ((x712)) + :extrapreds ((x713)) + :extrapreds ((x714)) + :extrapreds ((x715)) + :extrapreds ((x716)) + :extrapreds ((x717)) + :extrapreds ((x718)) + :extrapreds ((x719)) + :extrapreds ((x720)) + :extrapreds ((x721)) + :extrapreds ((x722)) + :extrapreds ((x723)) + :extrapreds ((x724)) + :extrapreds ((x725)) + :extrapreds ((x726)) + :extrapreds ((x727)) + :extrapreds ((x728)) + :extrapreds ((x729)) + :extrapreds ((x730)) + :extrapreds ((x731)) + :extrapreds ((x732)) + :extrapreds ((x733)) + :extrapreds ((x734)) + :extrapreds ((x735)) + :extrapreds ((x736)) + :extrapreds ((x737)) + :extrapreds ((x738)) + :extrapreds ((x739)) + :extrapreds ((x740)) + :extrapreds ((x741)) + :extrapreds ((x742)) + :extrapreds ((x743)) + :extrapreds ((x744)) + :extrapreds ((x745)) + :extrapreds ((x746)) + :extrapreds ((x747)) + :extrapreds ((x748)) + :extrapreds ((x749)) + :extrapreds ((x750)) + :extrapreds ((x751)) + :extrapreds ((x752)) + :extrapreds ((x753)) + :extrapreds ((x754)) + :extrapreds ((x755)) + :extrapreds ((x756)) + :extrapreds ((x757)) + :extrapreds ((x758)) + :extrapreds ((x759)) + :extrapreds ((x760)) + :extrapreds ((x761)) + :extrapreds ((x762)) + :extrapreds ((x763)) + :extrapreds ((x764)) + :extrapreds ((x765)) + :extrapreds ((x766)) + :extrapreds ((x767)) + :extrapreds ((x768)) + :extrapreds ((x769)) + + :formula( and + ( <= ( + 0 ( * (~ 1) x1 ) ) (~ 27) ) + ( = ( + ( + ( * 1 tmp766 ) 0 ) ( + ( * 1 tmp764 ) ( + ( * 1 tmp762 ) ( + ( * 1 tmp760 ) ( + ( * 1 tmp759 ) ( + ( * 1 tmp761 ) ( + ( * 1 tmp763 ) ( + ( * 1 tmp765 ) 0 ) ) ) ) ) ) ) ) 1 ) + ( = ( + ( + ( * 1 tmp758 ) 0 ) ( + ( * 1 tmp756 ) ( + ( * 1 tmp754 ) ( + ( * 1 tmp752 ) ( + ( * 1 tmp751 ) ( + ( * 1 tmp753 ) ( + ( * 1 tmp755 ) ( + ( * 1 tmp757 ) 0 ) ) ) ) ) ) ) ) 1 ) + ( = ( + ( + ( * 1 tmp750 ) 0 ) ( + ( * 1 tmp748 ) ( + ( * 1 tmp746 ) ( + ( * 1 tmp744 ) ( + ( * 1 tmp743 ) ( + ( * 1 tmp745 ) ( + ( * 1 tmp747 ) ( + ( * 1 tmp749 ) 0 ) ) ) ) ) ) ) ) 1 ) + ( = ( + ( + ( * 1 tmp742 ) 0 ) ( + ( * 1 tmp740 ) ( + ( * 1 tmp738 ) ( + ( * 1 tmp736 ) ( + ( * 1 tmp735 ) ( + ( * 1 tmp737 ) ( + ( * 1 tmp739 ) ( + ( * 1 tmp741 ) 0 ) ) ) ) ) ) ) ) 1 ) + ( = ( + ( + ( * 1 tmp734 ) 0 ) ( + ( * 1 tmp732 ) ( + ( * 1 tmp730 ) ( + ( * 1 tmp728 ) ( + ( * 1 tmp727 ) ( + ( * 1 tmp729 ) ( + ( * 1 tmp731 ) ( + ( * 1 tmp733 ) 0 ) ) ) ) ) ) ) ) 1 ) + ( = ( + ( + ( * 1 tmp726 ) 0 ) ( + ( * 1 tmp724 ) ( + ( * 1 tmp722 ) ( + ( * 1 tmp720 ) ( + ( * 1 tmp719 ) ( + ( * 1 tmp721 ) ( + ( * 1 tmp723 ) ( + ( * 1 tmp725 ) 0 ) ) ) ) ) ) ) ) 1 ) + ( = ( + ( + ( * 1 tmp718 ) 0 ) ( + ( * 1 tmp716 ) ( + ( * 1 tmp714 ) ( + ( * 1 tmp712 ) ( + ( * 1 tmp711 ) ( + ( * 1 tmp713 ) ( + ( * 1 tmp715 ) ( + ( * 1 tmp717 ) 0 ) ) ) ) ) ) ) ) 1 ) + ( = ( + ( + ( * 1 tmp710 ) 0 ) ( + ( * 1 tmp708 ) ( + ( * 1 tmp706 ) ( + ( * 1 tmp704 ) ( + ( * 1 tmp703 ) ( + ( * 1 tmp705 ) ( + ( * 1 tmp707 ) ( + ( * 1 tmp709 ) 0 ) ) ) ) ) ) ) ) 1 ) + ( = ( + ( + ( * 1 tmp702 ) 0 ) ( + ( * 1 tmp700 ) ( + ( * 1 tmp698 ) ( + ( * 1 tmp696 ) ( + ( * 1 tmp695 ) ( + ( * 1 tmp697 ) ( + ( * 1 tmp699 ) ( + ( * 1 tmp701 ) 0 ) ) ) ) ) ) ) ) 1 ) + ( = ( + ( + ( * 1 tmp694 ) 0 ) ( + ( * 1 tmp692 ) ( + ( * 1 tmp690 ) ( + ( * 1 tmp688 ) ( + ( * 1 tmp687 ) ( + ( * 1 tmp689 ) ( + ( * 1 tmp691 ) ( + ( * 1 tmp693 ) 0 ) ) ) ) ) ) ) ) 1 ) + ( = ( + ( + ( * 1 tmp686 ) 0 ) ( + ( * 1 tmp684 ) ( + ( * 1 tmp682 ) ( + ( * 1 tmp680 ) ( + ( * 1 tmp679 ) ( + ( * 1 tmp681 ) ( + ( * 1 tmp683 ) ( + ( * 1 tmp685 ) 0 ) ) ) ) ) ) ) ) 1 ) + ( = ( + ( + ( * 1 tmp678 ) 0 ) ( + ( * 1 tmp676 ) ( + ( * 1 tmp674 ) ( + ( * 1 tmp672 ) ( + ( * 1 tmp671 ) ( + ( * 1 tmp673 ) ( + ( * 1 tmp675 ) ( + ( * 1 tmp677 ) 0 ) ) ) ) ) ) ) ) 1 ) + ( = ( + ( + ( * 1 tmp670 ) 0 ) ( + ( * 1 tmp668 ) ( + ( * 1 tmp666 ) ( + ( * 1 tmp664 ) ( + ( * 1 tmp663 ) ( + ( * 1 tmp665 ) ( + ( * 1 tmp667 ) ( + ( * 1 tmp669 ) 0 ) ) ) ) ) ) ) ) 1 ) + ( = ( + ( + ( * 1 tmp662 ) 0 ) ( + ( * 1 tmp660 ) ( + ( * 1 tmp658 ) ( + ( * 1 tmp656 ) ( + ( * 1 tmp655 ) ( + ( * 1 tmp657 ) ( + ( * 1 tmp659 ) ( + ( * 1 tmp661 ) 0 ) ) ) ) ) ) ) ) 1 ) + ( = ( + ( + ( * 1 tmp654 ) 0 ) ( + ( * 1 tmp652 ) ( + ( * 1 tmp650 ) ( + ( * 1 tmp648 ) ( + ( * 1 tmp647 ) ( + ( * 1 tmp649 ) ( + ( * 1 tmp651 ) ( + ( * 1 tmp653 ) 0 ) ) ) ) ) ) ) ) 1 ) + ( = ( + ( + ( * 1 tmp646 ) 0 ) ( + ( * 1 tmp644 ) ( + ( * 1 tmp642 ) ( + ( * 1 tmp640 ) ( + ( * 1 tmp639 ) ( + ( * 1 tmp641 ) ( + ( * 1 tmp643 ) ( + ( * 1 tmp645 ) 0 ) ) ) ) ) ) ) ) 1 ) + ( = ( + ( + ( * 1 tmp638 ) 0 ) ( + ( * 1 tmp636 ) ( + ( * 1 tmp634 ) ( + ( * 1 tmp632 ) ( + ( * 1 tmp631 ) ( + ( * 1 tmp633 ) ( + ( * 1 tmp635 ) ( + ( * 1 tmp637 ) 0 ) ) ) ) ) ) ) ) 1 ) + ( = ( + ( + ( * 1 tmp630 ) 0 ) ( + ( * 1 tmp628 ) ( + ( * 1 tmp626 ) ( + ( * 1 tmp624 ) ( + ( * 1 tmp623 ) ( + ( * 1 tmp625 ) ( + ( * 1 tmp627 ) ( + ( * 1 tmp629 ) 0 ) ) ) ) ) ) ) ) 1 ) + ( = ( + ( + ( * 1 tmp622 ) 0 ) ( + ( * 1 tmp620 ) ( + ( * 1 tmp618 ) ( + ( * 1 tmp616 ) ( + ( * 1 tmp615 ) ( + ( * 1 tmp617 ) ( + ( * 1 tmp619 ) ( + ( * 1 tmp621 ) 0 ) ) ) ) ) ) ) ) 1 ) + ( = ( + ( + ( * 1 tmp614 ) 0 ) ( + ( * 1 tmp612 ) ( + ( * 1 tmp610 ) ( + ( * 1 tmp608 ) ( + ( * 1 tmp607 ) ( + ( * 1 tmp609 ) ( + ( * 1 tmp611 ) ( + ( * 1 tmp613 ) 0 ) ) ) ) ) ) ) ) 1 ) + ( = ( + ( + ( * 1 tmp606 ) 0 ) ( + ( * 1 tmp604 ) ( + ( * 1 tmp602 ) ( + ( * 1 tmp600 ) ( + ( * 1 tmp599 ) ( + ( * 1 tmp601 ) ( + ( * 1 tmp603 ) ( + ( * 1 tmp605 ) 0 ) ) ) ) ) ) ) ) 1 ) + ( = ( + ( + ( * 1 tmp598 ) 0 ) ( + ( * 1 tmp596 ) ( + ( * 1 tmp594 ) ( + ( * 1 tmp592 ) ( + ( * 1 tmp591 ) ( + ( * 1 tmp593 ) ( + ( * 1 tmp595 ) ( + ( * 1 tmp597 ) 0 ) ) ) ) ) ) ) ) 1 ) + ( = ( + ( + ( * 1 tmp590 ) 0 ) ( + ( * 1 tmp588 ) ( + ( * 1 tmp586 ) ( + ( * 1 tmp584 ) ( + ( * 1 tmp583 ) ( + ( * 1 tmp585 ) ( + ( * 1 tmp587 ) ( + ( * 1 tmp589 ) 0 ) ) ) ) ) ) ) ) 1 ) + ( = ( + ( + ( * 1 tmp582 ) 0 ) ( + ( * 1 tmp580 ) ( + ( * 1 tmp578 ) ( + ( * 1 tmp576 ) ( + ( * 1 tmp575 ) ( + ( * 1 tmp577 ) ( + ( * 1 tmp579 ) ( + ( * 1 tmp581 ) 0 ) ) ) ) ) ) ) ) 1 ) + ( = ( + ( + ( * 1 tmp574 ) 0 ) ( + ( * 1 tmp572 ) ( + ( * 1 tmp570 ) ( + ( * 1 tmp568 ) ( + ( * 1 tmp567 ) ( + ( * 1 tmp569 ) ( + ( * 1 tmp571 ) ( + ( * 1 tmp573 ) 0 ) ) ) ) ) ) ) ) 1 ) + ( = ( + ( + ( * 1 tmp566 ) 0 ) ( + ( * 1 tmp564 ) ( + ( * 1 tmp562 ) ( + ( * 1 tmp560 ) ( + ( * 1 tmp559 ) ( + ( * 1 tmp561 ) ( + ( * 1 tmp563 ) ( + ( * 1 tmp565 ) 0 ) ) ) ) ) ) ) ) 1 ) + ( = ( + ( + ( * 1 tmp558 ) 0 ) ( + ( * 1 tmp556 ) ( + ( * 1 tmp554 ) ( + ( * 1 tmp552 ) ( + ( * 1 tmp551 ) ( + ( * 1 tmp553 ) ( + ( * 1 tmp555 ) ( + ( * 1 tmp557 ) 0 ) ) ) ) ) ) ) ) 1 ) + ( = ( + ( + ( * 1 tmp550 ) 0 ) ( + ( * 1 tmp548 ) ( + ( * 1 tmp546 ) ( + ( * 1 tmp544 ) ( + ( * 1 tmp543 ) ( + ( * 1 tmp545 ) ( + ( * 1 tmp547 ) ( + ( * 1 tmp549 ) 0 ) ) ) ) ) ) ) ) 1 ) + ( = ( + ( + ( * 1 tmp542 ) 0 ) ( + ( * 1 tmp540 ) ( + ( * 1 tmp538 ) ( + ( * 1 tmp536 ) ( + ( * 1 tmp535 ) ( + ( * 1 tmp537 ) ( + ( * 1 tmp539 ) ( + ( * 1 tmp541 ) 0 ) ) ) ) ) ) ) ) 1 ) + ( = ( + ( + ( * 1 tmp534 ) 0 ) ( + ( * 1 tmp532 ) ( + ( * 1 tmp530 ) ( + ( * 1 tmp528 ) ( + ( * 1 tmp527 ) ( + ( * 1 tmp529 ) ( + ( * 1 tmp531 ) ( + ( * 1 tmp533 ) 0 ) ) ) ) ) ) ) ) 1 ) + ( = ( + ( + ( * 1 tmp526 ) 0 ) ( + ( * 1 tmp524 ) ( + ( * 1 tmp522 ) ( + ( * 1 tmp520 ) ( + ( * 1 tmp519 ) ( + ( * 1 tmp521 ) ( + ( * 1 tmp523 ) ( + ( * 1 tmp525 ) 0 ) ) ) ) ) ) ) ) 1 ) + ( = ( + ( + ( * 1 tmp518 ) 0 ) ( + ( * 1 tmp516 ) ( + ( * 1 tmp514 ) ( + ( * 1 tmp512 ) ( + ( * 1 tmp511 ) ( + ( * 1 tmp513 ) ( + ( * 1 tmp515 ) ( + ( * 1 tmp517 ) 0 ) ) ) ) ) ) ) ) 1 ) + ( = ( + ( + ( * 1 tmp510 ) 0 ) ( + ( * 1 tmp508 ) ( + ( * 1 tmp506 ) ( + ( * 1 tmp504 ) ( + ( * 1 tmp503 ) ( + ( * 1 tmp505 ) ( + ( * 1 tmp507 ) ( + ( * 1 tmp509 ) 0 ) ) ) ) ) ) ) ) 1 ) + ( = ( + ( + ( * 1 tmp502 ) 0 ) ( + ( * 1 tmp500 ) ( + ( * 1 tmp498 ) ( + ( * 1 tmp496 ) ( + ( * 1 tmp495 ) ( + ( * 1 tmp497 ) ( + ( * 1 tmp499 ) ( + ( * 1 tmp501 ) 0 ) ) ) ) ) ) ) ) 1 ) + ( = ( + ( + ( * 1 tmp494 ) 0 ) ( + ( * 1 tmp492 ) ( + ( * 1 tmp490 ) ( + ( * 1 tmp488 ) ( + ( * 1 tmp487 ) ( + ( * 1 tmp489 ) ( + ( * 1 tmp491 ) ( + ( * 1 tmp493 ) 0 ) ) ) ) ) ) ) ) 1 ) + ( = ( + ( + ( * 1 tmp486 ) 0 ) ( + ( * 1 tmp484 ) ( + ( * 1 tmp482 ) ( + ( * 1 tmp480 ) ( + ( * 1 tmp479 ) ( + ( * 1 tmp481 ) ( + ( * 1 tmp483 ) ( + ( * 1 tmp485 ) 0 ) ) ) ) ) ) ) ) 1 ) + ( = ( + ( + ( * 1 tmp478 ) 0 ) ( + ( * 1 tmp476 ) ( + ( * 1 tmp474 ) ( + ( * 1 tmp472 ) ( + ( * 1 tmp471 ) ( + ( * 1 tmp473 ) ( + ( * 1 tmp475 ) ( + ( * 1 tmp477 ) 0 ) ) ) ) ) ) ) ) 1 ) + ( = ( + ( + ( * 1 tmp470 ) 0 ) ( + ( * 1 tmp468 ) ( + ( * 1 tmp466 ) ( + ( * 1 tmp464 ) ( + ( * 1 tmp463 ) ( + ( * 1 tmp465 ) ( + ( * 1 tmp467 ) ( + ( * 1 tmp469 ) 0 ) ) ) ) ) ) ) ) 1 ) + ( = ( + ( + ( * 1 tmp462 ) 0 ) ( + ( * 1 tmp460 ) ( + ( * 1 tmp458 ) ( + ( * 1 tmp456 ) ( + ( * 1 tmp455 ) ( + ( * 1 tmp457 ) ( + ( * 1 tmp459 ) ( + ( * 1 tmp461 ) 0 ) ) ) ) ) ) ) ) 1 ) + ( = ( + ( + ( * 1 tmp454 ) 0 ) ( + ( * 1 tmp452 ) ( + ( * 1 tmp450 ) ( + ( * 1 tmp448 ) ( + ( * 1 tmp447 ) ( + ( * 1 tmp449 ) ( + ( * 1 tmp451 ) ( + ( * 1 tmp453 ) 0 ) ) ) ) ) ) ) ) 1 ) + ( = ( + ( + ( * 1 tmp446 ) 0 ) ( + ( * 1 tmp444 ) ( + ( * 1 tmp442 ) ( + ( * 1 tmp440 ) ( + ( * 1 tmp439 ) ( + ( * 1 tmp441 ) ( + ( * 1 tmp443 ) ( + ( * 1 tmp445 ) 0 ) ) ) ) ) ) ) ) 1 ) + ( = ( + ( + ( * 1 tmp438 ) 0 ) ( + ( * 1 tmp436 ) ( + ( * 1 tmp434 ) ( + ( * 1 tmp432 ) ( + ( * 1 tmp431 ) ( + ( * 1 tmp433 ) ( + ( * 1 tmp435 ) ( + ( * 1 tmp437 ) 0 ) ) ) ) ) ) ) ) 1 ) + ( = ( + ( + ( * 1 tmp430 ) 0 ) ( + ( * 1 tmp428 ) ( + ( * 1 tmp426 ) ( + ( * 1 tmp424 ) ( + ( * 1 tmp423 ) ( + ( * 1 tmp425 ) ( + ( * 1 tmp427 ) ( + ( * 1 tmp429 ) 0 ) ) ) ) ) ) ) ) 1 ) + ( = ( + ( + ( * 1 tmp422 ) 0 ) ( + ( * 1 tmp420 ) ( + ( * 1 tmp418 ) ( + ( * 1 tmp416 ) ( + ( * 1 tmp415 ) ( + ( * 1 tmp417 ) ( + ( * 1 tmp419 ) ( + ( * 1 tmp421 ) 0 ) ) ) ) ) ) ) ) 1 ) + ( = ( + ( + ( * 1 tmp414 ) 0 ) ( + ( * 1 tmp412 ) ( + ( * 1 tmp410 ) ( + ( * 1 tmp408 ) ( + ( * 1 tmp407 ) ( + ( * 1 tmp409 ) ( + ( * 1 tmp411 ) ( + ( * 1 tmp413 ) 0 ) ) ) ) ) ) ) ) 1 ) + ( = ( + ( + ( * 1 tmp406 ) 0 ) ( + ( * 1 tmp404 ) ( + ( * 1 tmp402 ) ( + ( * 1 tmp400 ) ( + ( * 1 tmp399 ) ( + ( * 1 tmp401 ) ( + ( * 1 tmp403 ) ( + ( * 1 tmp405 ) 0 ) ) ) ) ) ) ) ) 1 ) + ( = ( + ( + ( * 1 tmp398 ) 0 ) ( + ( * 1 tmp396 ) ( + ( * 1 tmp394 ) ( + ( * 1 tmp392 ) ( + ( * 1 tmp391 ) ( + ( * 1 tmp393 ) ( + ( * 1 tmp395 ) ( + ( * 1 tmp397 ) 0 ) ) ) ) ) ) ) ) 1 ) + ( = ( + ( + ( * 1 tmp390 ) 0 ) ( + ( * 1 tmp388 ) ( + ( * 1 tmp386 ) ( + ( * 1 tmp384 ) ( + ( * 1 tmp383 ) ( + ( * 1 tmp385 ) ( + ( * 1 tmp387 ) ( + ( * 1 tmp389 ) 0 ) ) ) ) ) ) ) ) 1 ) + ( >= ( + ( + ( * 1 tmp382 ) 0 ) ( + ( * 1 tmp380 ) ( + ( * 1 tmp378 ) ( + ( * 1 tmp376 ) ( + ( * 1 tmp374 ) ( + ( * 1 tmp372 ) ( + ( * 1 tmp370 ) ( + ( * 1 tmp368 ) ( + ( * 1 tmp366 ) ( + ( * 1 tmp364 ) ( + ( * 1 tmp362 ) ( + ( * 1 tmp360 ) ( + ( * (~ 1) x1 ) ( + ( * 1 tmp359 ) ( + ( * 1 tmp361 ) ( + ( * 1 tmp363 ) ( + ( * 1 tmp365 ) ( + ( * 1 tmp367 ) ( + ( * 1 tmp369 ) ( + ( * 1 tmp371 ) ( + ( * 1 tmp373 ) ( + ( * 1 tmp375 ) ( + ( * 1 tmp377 ) ( + ( * 1 tmp379 ) ( + ( * 1 tmp381 ) 0 ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) 0 ) + ( >= ( + ( + ( * 1 tmp358 ) 0 ) ( + ( * 1 tmp356 ) ( + ( * 1 tmp354 ) ( + ( * 1 tmp352 ) ( + ( * 1 tmp350 ) ( + ( * 1 tmp348 ) ( + ( * 1 tmp346 ) ( + ( * 1 tmp344 ) ( + ( * 1 tmp342 ) ( + ( * 1 tmp340 ) ( + ( * 1 tmp338 ) ( + ( * 1 tmp336 ) ( + ( * (~ 1) x1 ) ( + ( * 1 tmp335 ) ( + ( * 1 tmp337 ) ( + ( * 1 tmp339 ) ( + ( * 1 tmp341 ) ( + ( * 1 tmp343 ) ( + ( * 1 tmp345 ) ( + ( * 1 tmp347 ) ( + ( * 1 tmp349 ) ( + ( * 1 tmp351 ) ( + ( * 1 tmp353 ) ( + ( * 1 tmp355 ) ( + ( * 1 tmp357 ) 0 ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) 0 ) + ( >= ( + ( + ( * 1 tmp334 ) 0 ) ( + ( * 1 tmp332 ) ( + ( * 1 tmp330 ) ( + ( * 1 tmp328 ) ( + ( * 1 tmp326 ) ( + ( * 1 tmp324 ) ( + ( * 1 tmp322 ) ( + ( * 1 tmp320 ) ( + ( * 1 tmp318 ) ( + ( * 1 tmp316 ) ( + ( * 1 tmp314 ) ( + ( * 1 tmp312 ) ( + ( * (~ 1) x1 ) ( + ( * 1 tmp311 ) ( + ( * 1 tmp313 ) ( + ( * 1 tmp315 ) ( + ( * 1 tmp317 ) ( + ( * 1 tmp319 ) ( + ( * 1 tmp321 ) ( + ( * 1 tmp323 ) ( + ( * 1 tmp325 ) ( + ( * 1 tmp327 ) ( + ( * 1 tmp329 ) ( + ( * 1 tmp331 ) ( + ( * 1 tmp333 ) 0 ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) 0 ) + ( >= ( + ( + ( * 1 tmp310 ) 0 ) ( + ( * 1 tmp308 ) ( + ( * 1 tmp306 ) ( + ( * 1 tmp304 ) ( + ( * 1 tmp302 ) ( + ( * 1 tmp300 ) ( + ( * 1 tmp298 ) ( + ( * 1 tmp296 ) ( + ( * 1 tmp294 ) ( + ( * 1 tmp292 ) ( + ( * 1 tmp290 ) ( + ( * 1 tmp288 ) ( + ( * (~ 1) x1 ) ( + ( * 1 tmp287 ) ( + ( * 1 tmp289 ) ( + ( * 1 tmp291 ) ( + ( * 1 tmp293 ) ( + ( * 1 tmp295 ) ( + ( * 1 tmp297 ) ( + ( * 1 tmp299 ) ( + ( * 1 tmp301 ) ( + ( * 1 tmp303 ) ( + ( * 1 tmp305 ) ( + ( * 1 tmp307 ) ( + ( * 1 tmp309 ) 0 ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) 0 ) + ( >= ( + ( + ( * 1 tmp286 ) 0 ) ( + ( * 1 tmp284 ) ( + ( * 1 tmp282 ) ( + ( * 1 tmp280 ) ( + ( * 1 tmp278 ) ( + ( * 1 tmp276 ) ( + ( * 1 tmp274 ) ( + ( * 1 tmp272 ) ( + ( * 1 tmp270 ) ( + ( * 1 tmp268 ) ( + ( * 1 tmp266 ) ( + ( * 1 tmp264 ) ( + ( * (~ 1) x1 ) ( + ( * 1 tmp263 ) ( + ( * 1 tmp265 ) ( + ( * 1 tmp267 ) ( + ( * 1 tmp269 ) ( + ( * 1 tmp271 ) ( + ( * 1 tmp273 ) ( + ( * 1 tmp275 ) ( + ( * 1 tmp277 ) ( + ( * 1 tmp279 ) ( + ( * 1 tmp281 ) ( + ( * 1 tmp283 ) ( + ( * 1 tmp285 ) 0 ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) 0 ) + ( >= ( + ( + ( * 1 tmp262 ) 0 ) ( + ( * 1 tmp260 ) ( + ( * 1 tmp258 ) ( + ( * 1 tmp256 ) ( + ( * 1 tmp254 ) ( + ( * 1 tmp252 ) ( + ( * 1 tmp250 ) ( + ( * 1 tmp248 ) ( + ( * 1 tmp246 ) ( + ( * 1 tmp244 ) ( + ( * 1 tmp242 ) ( + ( * 1 tmp240 ) ( + ( * (~ 1) x1 ) ( + ( * 1 tmp239 ) ( + ( * 1 tmp241 ) ( + ( * 1 tmp243 ) ( + ( * 1 tmp245 ) ( + ( * 1 tmp247 ) ( + ( * 1 tmp249 ) ( + ( * 1 tmp251 ) ( + ( * 1 tmp253 ) ( + ( * 1 tmp255 ) ( + ( * 1 tmp257 ) ( + ( * 1 tmp259 ) ( + ( * 1 tmp261 ) 0 ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) 0 ) + ( >= ( + ( + ( * 1 tmp238 ) 0 ) ( + ( * 1 tmp236 ) ( + ( * 1 tmp234 ) ( + ( * 1 tmp232 ) ( + ( * 1 tmp230 ) ( + ( * 1 tmp228 ) ( + ( * 1 tmp226 ) ( + ( * 1 tmp224 ) ( + ( * 1 tmp222 ) ( + ( * 1 tmp220 ) ( + ( * 1 tmp218 ) ( + ( * 1 tmp216 ) ( + ( * (~ 1) x1 ) ( + ( * 1 tmp215 ) ( + ( * 1 tmp217 ) ( + ( * 1 tmp219 ) ( + ( * 1 tmp221 ) ( + ( * 1 tmp223 ) ( + ( * 1 tmp225 ) ( + ( * 1 tmp227 ) ( + ( * 1 tmp229 ) ( + ( * 1 tmp231 ) ( + ( * 1 tmp233 ) ( + ( * 1 tmp235 ) ( + ( * 1 tmp237 ) 0 ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) 0 ) + ( >= ( + ( + ( * 1 tmp214 ) 0 ) ( + ( * 1 tmp212 ) ( + ( * 1 tmp210 ) ( + ( * 1 tmp208 ) ( + ( * 1 tmp206 ) ( + ( * 1 tmp204 ) ( + ( * 1 tmp202 ) ( + ( * 1 tmp200 ) ( + ( * 1 tmp198 ) ( + ( * 1 tmp196 ) ( + ( * 1 tmp194 ) ( + ( * 1 tmp192 ) ( + ( * (~ 1) x1 ) ( + ( * 1 tmp191 ) ( + ( * 1 tmp193 ) ( + ( * 1 tmp195 ) ( + ( * 1 tmp197 ) ( + ( * 1 tmp199 ) ( + ( * 1 tmp201 ) ( + ( * 1 tmp203 ) ( + ( * 1 tmp205 ) ( + ( * 1 tmp207 ) ( + ( * 1 tmp209 ) ( + ( * 1 tmp211 ) ( + ( * 1 tmp213 ) 0 ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) 0 ) + ( >= ( + ( + ( * 1 tmp190 ) 0 ) ( + ( * 1 tmp188 ) ( + ( * 1 tmp186 ) ( + ( * 1 tmp184 ) ( + ( * 1 tmp182 ) ( + ( * 1 tmp180 ) ( + ( * 1 tmp178 ) ( + ( * 1 tmp176 ) ( + ( * 1 tmp174 ) ( + ( * 1 tmp172 ) ( + ( * 1 tmp170 ) ( + ( * 1 tmp168 ) ( + ( * (~ 1) x1 ) ( + ( * 1 tmp167 ) ( + ( * 1 tmp169 ) ( + ( * 1 tmp171 ) ( + ( * 1 tmp173 ) ( + ( * 1 tmp175 ) ( + ( * 1 tmp177 ) ( + ( * 1 tmp179 ) ( + ( * 1 tmp181 ) ( + ( * 1 tmp183 ) ( + ( * 1 tmp185 ) ( + ( * 1 tmp187 ) ( + ( * 1 tmp189 ) 0 ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) 0 ) + ( >= ( + ( + ( * 1 tmp166 ) 0 ) ( + ( * 1 tmp164 ) ( + ( * 1 tmp162 ) ( + ( * 1 tmp160 ) ( + ( * 1 tmp158 ) ( + ( * 1 tmp156 ) ( + ( * 1 tmp154 ) ( + ( * 1 tmp152 ) ( + ( * 1 tmp150 ) ( + ( * 1 tmp148 ) ( + ( * 1 tmp146 ) ( + ( * 1 tmp144 ) ( + ( * (~ 1) x1 ) ( + ( * 1 tmp143 ) ( + ( * 1 tmp145 ) ( + ( * 1 tmp147 ) ( + ( * 1 tmp149 ) ( + ( * 1 tmp151 ) ( + ( * 1 tmp153 ) ( + ( * 1 tmp155 ) ( + ( * 1 tmp157 ) ( + ( * 1 tmp159 ) ( + ( * 1 tmp161 ) ( + ( * 1 tmp163 ) ( + ( * 1 tmp165 ) 0 ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) 0 ) + ( >= ( + ( + ( * 1 tmp142 ) 0 ) ( + ( * 1 tmp140 ) ( + ( * 1 tmp138 ) ( + ( * 1 tmp136 ) ( + ( * 1 tmp134 ) ( + ( * 1 tmp132 ) ( + ( * 1 tmp130 ) ( + ( * 1 tmp128 ) ( + ( * 1 tmp126 ) ( + ( * 1 tmp124 ) ( + ( * 1 tmp122 ) ( + ( * (~ 1) x1 ) ( + ( * 1 tmp121 ) ( + ( * 1 tmp123 ) ( + ( * 1 tmp125 ) ( + ( * 1 tmp127 ) ( + ( * 1 tmp129 ) ( + ( * 1 tmp131 ) ( + ( * 1 tmp133 ) ( + ( * 1 tmp135 ) ( + ( * 1 tmp137 ) ( + ( * 1 tmp139 ) ( + ( * 1 tmp141 ) 0 ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) 0 ) + ( >= ( + ( + ( * 1 tmp120 ) 0 ) ( + ( * 1 tmp118 ) ( + ( * 1 tmp116 ) ( + ( * 1 tmp114 ) ( + ( * 1 tmp112 ) ( + ( * 1 tmp110 ) ( + ( * 1 tmp108 ) ( + ( * 1 tmp106 ) ( + ( * 1 tmp104 ) ( + ( * 1 tmp102 ) ( + ( * 1 tmp100 ) ( + ( * 1 tmp98 ) ( + ( * (~ 1) x1 ) ( + ( * 1 tmp97 ) ( + ( * 1 tmp99 ) ( + ( * 1 tmp101 ) ( + ( * 1 tmp103 ) ( + ( * 1 tmp105 ) ( + ( * 1 tmp107 ) ( + ( * 1 tmp109 ) ( + ( * 1 tmp111 ) ( + ( * 1 tmp113 ) ( + ( * 1 tmp115 ) ( + ( * 1 tmp117 ) ( + ( * 1 tmp119 ) 0 ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) 0 ) + ( >= ( + ( + ( * 1 tmp96 ) 0 ) ( + ( * 1 tmp94 ) ( + ( * 1 tmp92 ) ( + ( * 1 tmp90 ) ( + ( * 1 tmp88 ) ( + ( * 1 tmp86 ) ( + ( * 1 tmp84 ) ( + ( * 1 tmp82 ) ( + ( * 1 tmp80 ) ( + ( * 1 tmp78 ) ( + ( * 1 tmp76 ) ( + ( * 1 tmp74 ) ( + ( * (~ 1) x1 ) ( + ( * 1 tmp73 ) ( + ( * 1 tmp75 ) ( + ( * 1 tmp77 ) ( + ( * 1 tmp79 ) ( + ( * 1 tmp81 ) ( + ( * 1 tmp83 ) ( + ( * 1 tmp85 ) ( + ( * 1 tmp87 ) ( + ( * 1 tmp89 ) ( + ( * 1 tmp91 ) ( + ( * 1 tmp93 ) ( + ( * 1 tmp95 ) 0 ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) 0 ) + ( >= ( + ( + ( * 1 tmp72 ) 0 ) ( + ( * 1 tmp70 ) ( + ( * 1 tmp68 ) ( + ( * 1 tmp66 ) ( + ( * 1 tmp64 ) ( + ( * 1 tmp62 ) ( + ( * 1 tmp60 ) ( + ( * 1 tmp58 ) ( + ( * 1 tmp56 ) ( + ( * 1 tmp54 ) ( + ( * 1 tmp52 ) ( + ( * 1 tmp50 ) ( + ( * (~ 1) x1 ) ( + ( * 1 tmp49 ) ( + ( * 1 tmp51 ) ( + ( * 1 tmp53 ) ( + ( * 1 tmp55 ) ( + ( * 1 tmp57 ) ( + ( * 1 tmp59 ) ( + ( * 1 tmp61 ) ( + ( * 1 tmp63 ) ( + ( * 1 tmp65 ) ( + ( * 1 tmp67 ) ( + ( * 1 tmp69 ) ( + ( * 1 tmp71 ) 0 ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) 0 ) + ( >= ( + ( + ( * 1 tmp48 ) 0 ) ( + ( * 1 tmp46 ) ( + ( * 1 tmp44 ) ( + ( * 1 tmp42 ) ( + ( * 1 tmp40 ) ( + ( * 1 tmp38 ) ( + ( * 1 tmp36 ) ( + ( * 1 tmp34 ) ( + ( * 1 tmp32 ) ( + ( * 1 tmp30 ) ( + ( * 1 tmp28 ) ( + ( * 1 tmp26 ) ( + ( * (~ 1) x1 ) ( + ( * 1 tmp25 ) ( + ( * 1 tmp27 ) ( + ( * 1 tmp29 ) ( + ( * 1 tmp31 ) ( + ( * 1 tmp33 ) ( + ( * 1 tmp35 ) ( + ( * 1 tmp37 ) ( + ( * 1 tmp39 ) ( + ( * 1 tmp41 ) ( + ( * 1 tmp43 ) ( + ( * 1 tmp45 ) ( + ( * 1 tmp47 ) 0 ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) 0 ) + ( >= ( + ( + ( * 1 tmp24 ) 0 ) ( + ( * 1 tmp22 ) ( + ( * 1 tmp20 ) ( + ( * 1 tmp18 ) ( + ( * 1 tmp16 ) ( + ( * 1 tmp14 ) ( + ( * 1 tmp12 ) ( + ( * 1 tmp10 ) ( + ( * 1 tmp8 ) ( + ( * 1 tmp6 ) ( + ( * 1 tmp4 ) ( + ( * 1 tmp2 ) ( + ( * (~ 1) x1 ) ( + ( * 1 tmp1 ) ( + ( * 1 tmp3 ) ( + ( * 1 tmp5 ) ( + ( * 1 tmp7 ) ( + ( * 1 tmp9 ) ( + ( * 1 tmp11 ) ( + ( * 1 tmp13 ) ( + ( * 1 tmp15 ) ( + ( * 1 tmp17 ) ( + ( * 1 tmp19 ) ( + ( * 1 tmp21 ) ( + ( * 1 tmp23 ) 0 ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) 0 ) + ( <= x1 384 ) + ( >= x1 0 ) + ( implies ( and ( not x474 ) ( and ( not x427 ) true ) ) ( = tmp766 0 ) ) + ( implies ( and ( not x474 ) ( and x427 true ) ) ( = tmp766 1 ) ) + ( implies ( and x474 ( and ( not x427 ) true ) ) ( = tmp766 1 ) ) + ( implies ( and x474 ( and x427 true ) ) ( = tmp766 2 ) ) + ( implies ( and ( not x331 ) ( and ( not x379 ) true ) ) ( = tmp765 0 ) ) + ( implies ( and ( not x331 ) ( and x379 true ) ) ( = tmp765 1 ) ) + ( implies ( and x331 ( and ( not x379 ) true ) ) ( = tmp765 1 ) ) + ( implies ( and x331 ( and x379 true ) ) ( = tmp765 2 ) ) + ( implies ( and ( not x569 ) ( and ( not x521 ) true ) ) ( = tmp764 0 ) ) + ( implies ( and ( not x569 ) ( and x521 true ) ) ( = tmp764 1 ) ) + ( implies ( and x569 ( and ( not x521 ) true ) ) ( = tmp764 1 ) ) + ( implies ( and x569 ( and x521 true ) ) ( = tmp764 2 ) ) + ( implies ( and ( not x239 ) ( and ( not x283 ) true ) ) ( = tmp763 0 ) ) + ( implies ( and ( not x239 ) ( and x283 true ) ) ( = tmp763 1 ) ) + ( implies ( and x239 ( and ( not x283 ) true ) ) ( = tmp763 1 ) ) + ( implies ( and x239 ( and x283 true ) ) ( = tmp763 2 ) ) + ( implies ( and ( not x664 ) ( and ( not x616 ) true ) ) ( = tmp762 0 ) ) + ( implies ( and ( not x664 ) ( and x616 true ) ) ( = tmp762 1 ) ) + ( implies ( and x664 ( and ( not x616 ) true ) ) ( = tmp762 1 ) ) + ( implies ( and x664 ( and x616 true ) ) ( = tmp762 2 ) ) + ( implies ( and ( not x143 ) ( and ( not x191 ) true ) ) ( = tmp761 0 ) ) + ( implies ( and ( not x143 ) ( and x191 true ) ) ( = tmp761 1 ) ) + ( implies ( and x143 ( and ( not x191 ) true ) ) ( = tmp761 1 ) ) + ( implies ( and x143 ( and x191 true ) ) ( = tmp761 2 ) ) + ( implies ( and ( not x759 ) ( and ( not x711 ) true ) ) ( = tmp760 0 ) ) + ( implies ( and ( not x759 ) ( and x711 true ) ) ( = tmp760 1 ) ) + ( implies ( and x759 ( and ( not x711 ) true ) ) ( = tmp760 1 ) ) + ( implies ( and x759 ( and x711 true ) ) ( = tmp760 2 ) ) + ( implies ( and ( not x48 ) ( and ( not x96 ) true ) ) ( = tmp759 0 ) ) + ( implies ( and ( not x48 ) ( and x96 true ) ) ( = tmp759 1 ) ) + ( implies ( and x48 ( and ( not x96 ) true ) ) ( = tmp759 1 ) ) + ( implies ( and x48 ( and x96 true ) ) ( = tmp759 2 ) ) + ( implies ( and ( not x473 ) ( and ( not x426 ) true ) ) ( = tmp758 0 ) ) + ( implies ( and ( not x473 ) ( and x426 true ) ) ( = tmp758 1 ) ) + ( implies ( and x473 ( and ( not x426 ) true ) ) ( = tmp758 1 ) ) + ( implies ( and x473 ( and x426 true ) ) ( = tmp758 2 ) ) + ( implies ( and ( not x330 ) ( and ( not x378 ) true ) ) ( = tmp757 0 ) ) + ( implies ( and ( not x330 ) ( and x378 true ) ) ( = tmp757 1 ) ) + ( implies ( and x330 ( and ( not x378 ) true ) ) ( = tmp757 1 ) ) + ( implies ( and x330 ( and x378 true ) ) ( = tmp757 2 ) ) + ( implies ( and ( not x568 ) ( and ( not x520 ) true ) ) ( = tmp756 0 ) ) + ( implies ( and ( not x568 ) ( and x520 true ) ) ( = tmp756 1 ) ) + ( implies ( and x568 ( and ( not x520 ) true ) ) ( = tmp756 1 ) ) + ( implies ( and x568 ( and x520 true ) ) ( = tmp756 2 ) ) + ( implies ( and ( not x238 ) ( and ( not x282 ) true ) ) ( = tmp755 0 ) ) + ( implies ( and ( not x238 ) ( and x282 true ) ) ( = tmp755 1 ) ) + ( implies ( and x238 ( and ( not x282 ) true ) ) ( = tmp755 1 ) ) + ( implies ( and x238 ( and x282 true ) ) ( = tmp755 2 ) ) + ( implies ( and ( not x663 ) ( and ( not x615 ) true ) ) ( = tmp754 0 ) ) + ( implies ( and ( not x663 ) ( and x615 true ) ) ( = tmp754 1 ) ) + ( implies ( and x663 ( and ( not x615 ) true ) ) ( = tmp754 1 ) ) + ( implies ( and x663 ( and x615 true ) ) ( = tmp754 2 ) ) + ( implies ( and ( not x142 ) ( and ( not x190 ) true ) ) ( = tmp753 0 ) ) + ( implies ( and ( not x142 ) ( and x190 true ) ) ( = tmp753 1 ) ) + ( implies ( and x142 ( and ( not x190 ) true ) ) ( = tmp753 1 ) ) + ( implies ( and x142 ( and x190 true ) ) ( = tmp753 2 ) ) + ( implies ( and ( not x758 ) ( and ( not x710 ) true ) ) ( = tmp752 0 ) ) + ( implies ( and ( not x758 ) ( and x710 true ) ) ( = tmp752 1 ) ) + ( implies ( and x758 ( and ( not x710 ) true ) ) ( = tmp752 1 ) ) + ( implies ( and x758 ( and x710 true ) ) ( = tmp752 2 ) ) + ( implies ( and ( not x47 ) ( and ( not x95 ) true ) ) ( = tmp751 0 ) ) + ( implies ( and ( not x47 ) ( and x95 true ) ) ( = tmp751 1 ) ) + ( implies ( and x47 ( and ( not x95 ) true ) ) ( = tmp751 1 ) ) + ( implies ( and x47 ( and x95 true ) ) ( = tmp751 2 ) ) + ( implies ( and ( not x472 ) ( and ( not x425 ) true ) ) ( = tmp750 0 ) ) + ( implies ( and ( not x472 ) ( and x425 true ) ) ( = tmp750 1 ) ) + ( implies ( and x472 ( and ( not x425 ) true ) ) ( = tmp750 1 ) ) + ( implies ( and x472 ( and x425 true ) ) ( = tmp750 2 ) ) + ( implies ( and ( not x329 ) ( and ( not x377 ) true ) ) ( = tmp749 0 ) ) + ( implies ( and ( not x329 ) ( and x377 true ) ) ( = tmp749 1 ) ) + ( implies ( and x329 ( and ( not x377 ) true ) ) ( = tmp749 1 ) ) + ( implies ( and x329 ( and x377 true ) ) ( = tmp749 2 ) ) + ( implies ( and ( not x567 ) ( and ( not x519 ) true ) ) ( = tmp748 0 ) ) + ( implies ( and ( not x567 ) ( and x519 true ) ) ( = tmp748 1 ) ) + ( implies ( and x567 ( and ( not x519 ) true ) ) ( = tmp748 1 ) ) + ( implies ( and x567 ( and x519 true ) ) ( = tmp748 2 ) ) + ( implies ( and ( not x237 ) ( and ( not x281 ) true ) ) ( = tmp747 0 ) ) + ( implies ( and ( not x237 ) ( and x281 true ) ) ( = tmp747 1 ) ) + ( implies ( and x237 ( and ( not x281 ) true ) ) ( = tmp747 1 ) ) + ( implies ( and x237 ( and x281 true ) ) ( = tmp747 2 ) ) + ( implies ( and ( not x662 ) ( and ( not x614 ) true ) ) ( = tmp746 0 ) ) + ( implies ( and ( not x662 ) ( and x614 true ) ) ( = tmp746 1 ) ) + ( implies ( and x662 ( and ( not x614 ) true ) ) ( = tmp746 1 ) ) + ( implies ( and x662 ( and x614 true ) ) ( = tmp746 2 ) ) + ( implies ( and ( not x141 ) ( and ( not x189 ) true ) ) ( = tmp745 0 ) ) + ( implies ( and ( not x141 ) ( and x189 true ) ) ( = tmp745 1 ) ) + ( implies ( and x141 ( and ( not x189 ) true ) ) ( = tmp745 1 ) ) + ( implies ( and x141 ( and x189 true ) ) ( = tmp745 2 ) ) + ( implies ( and ( not x757 ) ( and ( not x709 ) true ) ) ( = tmp744 0 ) ) + ( implies ( and ( not x757 ) ( and x709 true ) ) ( = tmp744 1 ) ) + ( implies ( and x757 ( and ( not x709 ) true ) ) ( = tmp744 1 ) ) + ( implies ( and x757 ( and x709 true ) ) ( = tmp744 2 ) ) + ( implies ( and ( not x46 ) ( and ( not x94 ) true ) ) ( = tmp743 0 ) ) + ( implies ( and ( not x46 ) ( and x94 true ) ) ( = tmp743 1 ) ) + ( implies ( and x46 ( and ( not x94 ) true ) ) ( = tmp743 1 ) ) + ( implies ( and x46 ( and x94 true ) ) ( = tmp743 2 ) ) + ( implies ( and ( not x471 ) ( and ( not x424 ) true ) ) ( = tmp742 0 ) ) + ( implies ( and ( not x471 ) ( and x424 true ) ) ( = tmp742 1 ) ) + ( implies ( and x471 ( and ( not x424 ) true ) ) ( = tmp742 1 ) ) + ( implies ( and x471 ( and x424 true ) ) ( = tmp742 2 ) ) + ( implies ( and ( not x328 ) ( and ( not x376 ) true ) ) ( = tmp741 0 ) ) + ( implies ( and ( not x328 ) ( and x376 true ) ) ( = tmp741 1 ) ) + ( implies ( and x328 ( and ( not x376 ) true ) ) ( = tmp741 1 ) ) + ( implies ( and x328 ( and x376 true ) ) ( = tmp741 2 ) ) + ( implies ( and ( not x566 ) ( and ( not x518 ) true ) ) ( = tmp740 0 ) ) + ( implies ( and ( not x566 ) ( and x518 true ) ) ( = tmp740 1 ) ) + ( implies ( and x566 ( and ( not x518 ) true ) ) ( = tmp740 1 ) ) + ( implies ( and x566 ( and x518 true ) ) ( = tmp740 2 ) ) + ( implies ( and ( not x236 ) ( and ( not x280 ) true ) ) ( = tmp739 0 ) ) + ( implies ( and ( not x236 ) ( and x280 true ) ) ( = tmp739 1 ) ) + ( implies ( and x236 ( and ( not x280 ) true ) ) ( = tmp739 1 ) ) + ( implies ( and x236 ( and x280 true ) ) ( = tmp739 2 ) ) + ( implies ( and ( not x661 ) ( and ( not x613 ) true ) ) ( = tmp738 0 ) ) + ( implies ( and ( not x661 ) ( and x613 true ) ) ( = tmp738 1 ) ) + ( implies ( and x661 ( and ( not x613 ) true ) ) ( = tmp738 1 ) ) + ( implies ( and x661 ( and x613 true ) ) ( = tmp738 2 ) ) + ( implies ( and ( not x140 ) ( and ( not x188 ) true ) ) ( = tmp737 0 ) ) + ( implies ( and ( not x140 ) ( and x188 true ) ) ( = tmp737 1 ) ) + ( implies ( and x140 ( and ( not x188 ) true ) ) ( = tmp737 1 ) ) + ( implies ( and x140 ( and x188 true ) ) ( = tmp737 2 ) ) + ( implies ( and ( not x756 ) ( and ( not x708 ) true ) ) ( = tmp736 0 ) ) + ( implies ( and ( not x756 ) ( and x708 true ) ) ( = tmp736 1 ) ) + ( implies ( and x756 ( and ( not x708 ) true ) ) ( = tmp736 1 ) ) + ( implies ( and x756 ( and x708 true ) ) ( = tmp736 2 ) ) + ( implies ( and ( not x45 ) ( and ( not x93 ) true ) ) ( = tmp735 0 ) ) + ( implies ( and ( not x45 ) ( and x93 true ) ) ( = tmp735 1 ) ) + ( implies ( and x45 ( and ( not x93 ) true ) ) ( = tmp735 1 ) ) + ( implies ( and x45 ( and x93 true ) ) ( = tmp735 2 ) ) + ( implies ( and ( not x470 ) ( and ( not x423 ) true ) ) ( = tmp734 0 ) ) + ( implies ( and ( not x470 ) ( and x423 true ) ) ( = tmp734 1 ) ) + ( implies ( and x470 ( and ( not x423 ) true ) ) ( = tmp734 1 ) ) + ( implies ( and x470 ( and x423 true ) ) ( = tmp734 2 ) ) + ( implies ( and ( not x327 ) ( and ( not x375 ) true ) ) ( = tmp733 0 ) ) + ( implies ( and ( not x327 ) ( and x375 true ) ) ( = tmp733 1 ) ) + ( implies ( and x327 ( and ( not x375 ) true ) ) ( = tmp733 1 ) ) + ( implies ( and x327 ( and x375 true ) ) ( = tmp733 2 ) ) + ( implies ( and ( not x565 ) ( and ( not x517 ) true ) ) ( = tmp732 0 ) ) + ( implies ( and ( not x565 ) ( and x517 true ) ) ( = tmp732 1 ) ) + ( implies ( and x565 ( and ( not x517 ) true ) ) ( = tmp732 1 ) ) + ( implies ( and x565 ( and x517 true ) ) ( = tmp732 2 ) ) + ( implies ( and ( not x235 ) ( and ( not x279 ) true ) ) ( = tmp731 0 ) ) + ( implies ( and ( not x235 ) ( and x279 true ) ) ( = tmp731 1 ) ) + ( implies ( and x235 ( and ( not x279 ) true ) ) ( = tmp731 1 ) ) + ( implies ( and x235 ( and x279 true ) ) ( = tmp731 2 ) ) + ( implies ( and ( not x660 ) ( and ( not x612 ) true ) ) ( = tmp730 0 ) ) + ( implies ( and ( not x660 ) ( and x612 true ) ) ( = tmp730 1 ) ) + ( implies ( and x660 ( and ( not x612 ) true ) ) ( = tmp730 1 ) ) + ( implies ( and x660 ( and x612 true ) ) ( = tmp730 2 ) ) + ( implies ( and ( not x139 ) ( and ( not x187 ) true ) ) ( = tmp729 0 ) ) + ( implies ( and ( not x139 ) ( and x187 true ) ) ( = tmp729 1 ) ) + ( implies ( and x139 ( and ( not x187 ) true ) ) ( = tmp729 1 ) ) + ( implies ( and x139 ( and x187 true ) ) ( = tmp729 2 ) ) + ( implies ( and ( not x755 ) ( and ( not x707 ) true ) ) ( = tmp728 0 ) ) + ( implies ( and ( not x755 ) ( and x707 true ) ) ( = tmp728 1 ) ) + ( implies ( and x755 ( and ( not x707 ) true ) ) ( = tmp728 1 ) ) + ( implies ( and x755 ( and x707 true ) ) ( = tmp728 2 ) ) + ( implies ( and ( not x44 ) ( and ( not x92 ) true ) ) ( = tmp727 0 ) ) + ( implies ( and ( not x44 ) ( and x92 true ) ) ( = tmp727 1 ) ) + ( implies ( and x44 ( and ( not x92 ) true ) ) ( = tmp727 1 ) ) + ( implies ( and x44 ( and x92 true ) ) ( = tmp727 2 ) ) + ( implies ( and ( not x469 ) ( and ( not x422 ) true ) ) ( = tmp726 0 ) ) + ( implies ( and ( not x469 ) ( and x422 true ) ) ( = tmp726 1 ) ) + ( implies ( and x469 ( and ( not x422 ) true ) ) ( = tmp726 1 ) ) + ( implies ( and x469 ( and x422 true ) ) ( = tmp726 2 ) ) + ( implies ( and ( not x326 ) ( and ( not x374 ) true ) ) ( = tmp725 0 ) ) + ( implies ( and ( not x326 ) ( and x374 true ) ) ( = tmp725 1 ) ) + ( implies ( and x326 ( and ( not x374 ) true ) ) ( = tmp725 1 ) ) + ( implies ( and x326 ( and x374 true ) ) ( = tmp725 2 ) ) + ( implies ( and ( not x564 ) ( and ( not x516 ) true ) ) ( = tmp724 0 ) ) + ( implies ( and ( not x564 ) ( and x516 true ) ) ( = tmp724 1 ) ) + ( implies ( and x564 ( and ( not x516 ) true ) ) ( = tmp724 1 ) ) + ( implies ( and x564 ( and x516 true ) ) ( = tmp724 2 ) ) + ( implies ( and ( not x234 ) ( and ( not x278 ) true ) ) ( = tmp723 0 ) ) + ( implies ( and ( not x234 ) ( and x278 true ) ) ( = tmp723 1 ) ) + ( implies ( and x234 ( and ( not x278 ) true ) ) ( = tmp723 1 ) ) + ( implies ( and x234 ( and x278 true ) ) ( = tmp723 2 ) ) + ( implies ( and ( not x659 ) ( and ( not x611 ) true ) ) ( = tmp722 0 ) ) + ( implies ( and ( not x659 ) ( and x611 true ) ) ( = tmp722 1 ) ) + ( implies ( and x659 ( and ( not x611 ) true ) ) ( = tmp722 1 ) ) + ( implies ( and x659 ( and x611 true ) ) ( = tmp722 2 ) ) + ( implies ( and ( not x138 ) ( and ( not x186 ) true ) ) ( = tmp721 0 ) ) + ( implies ( and ( not x138 ) ( and x186 true ) ) ( = tmp721 1 ) ) + ( implies ( and x138 ( and ( not x186 ) true ) ) ( = tmp721 1 ) ) + ( implies ( and x138 ( and x186 true ) ) ( = tmp721 2 ) ) + ( implies ( and ( not x754 ) ( and ( not x706 ) true ) ) ( = tmp720 0 ) ) + ( implies ( and ( not x754 ) ( and x706 true ) ) ( = tmp720 1 ) ) + ( implies ( and x754 ( and ( not x706 ) true ) ) ( = tmp720 1 ) ) + ( implies ( and x754 ( and x706 true ) ) ( = tmp720 2 ) ) + ( implies ( and ( not x43 ) ( and ( not x91 ) true ) ) ( = tmp719 0 ) ) + ( implies ( and ( not x43 ) ( and x91 true ) ) ( = tmp719 1 ) ) + ( implies ( and x43 ( and ( not x91 ) true ) ) ( = tmp719 1 ) ) + ( implies ( and x43 ( and x91 true ) ) ( = tmp719 2 ) ) + ( implies ( and ( not x468 ) ( and ( not x421 ) true ) ) ( = tmp718 0 ) ) + ( implies ( and ( not x468 ) ( and x421 true ) ) ( = tmp718 1 ) ) + ( implies ( and x468 ( and ( not x421 ) true ) ) ( = tmp718 1 ) ) + ( implies ( and x468 ( and x421 true ) ) ( = tmp718 2 ) ) + ( implies ( and ( not x325 ) ( and ( not x373 ) true ) ) ( = tmp717 0 ) ) + ( implies ( and ( not x325 ) ( and x373 true ) ) ( = tmp717 1 ) ) + ( implies ( and x325 ( and ( not x373 ) true ) ) ( = tmp717 1 ) ) + ( implies ( and x325 ( and x373 true ) ) ( = tmp717 2 ) ) + ( implies ( and ( not x563 ) ( and ( not x515 ) true ) ) ( = tmp716 0 ) ) + ( implies ( and ( not x563 ) ( and x515 true ) ) ( = tmp716 1 ) ) + ( implies ( and x563 ( and ( not x515 ) true ) ) ( = tmp716 1 ) ) + ( implies ( and x563 ( and x515 true ) ) ( = tmp716 2 ) ) + ( implies ( and ( not x233 ) ( and ( not x277 ) true ) ) ( = tmp715 0 ) ) + ( implies ( and ( not x233 ) ( and x277 true ) ) ( = tmp715 1 ) ) + ( implies ( and x233 ( and ( not x277 ) true ) ) ( = tmp715 1 ) ) + ( implies ( and x233 ( and x277 true ) ) ( = tmp715 2 ) ) + ( implies ( and ( not x658 ) ( and ( not x610 ) true ) ) ( = tmp714 0 ) ) + ( implies ( and ( not x658 ) ( and x610 true ) ) ( = tmp714 1 ) ) + ( implies ( and x658 ( and ( not x610 ) true ) ) ( = tmp714 1 ) ) + ( implies ( and x658 ( and x610 true ) ) ( = tmp714 2 ) ) + ( implies ( and ( not x137 ) ( and ( not x185 ) true ) ) ( = tmp713 0 ) ) + ( implies ( and ( not x137 ) ( and x185 true ) ) ( = tmp713 1 ) ) + ( implies ( and x137 ( and ( not x185 ) true ) ) ( = tmp713 1 ) ) + ( implies ( and x137 ( and x185 true ) ) ( = tmp713 2 ) ) + ( implies ( and ( not x753 ) ( and ( not x705 ) true ) ) ( = tmp712 0 ) ) + ( implies ( and ( not x753 ) ( and x705 true ) ) ( = tmp712 1 ) ) + ( implies ( and x753 ( and ( not x705 ) true ) ) ( = tmp712 1 ) ) + ( implies ( and x753 ( and x705 true ) ) ( = tmp712 2 ) ) + ( implies ( and ( not x42 ) ( and ( not x90 ) true ) ) ( = tmp711 0 ) ) + ( implies ( and ( not x42 ) ( and x90 true ) ) ( = tmp711 1 ) ) + ( implies ( and x42 ( and ( not x90 ) true ) ) ( = tmp711 1 ) ) + ( implies ( and x42 ( and x90 true ) ) ( = tmp711 2 ) ) + ( implies ( and ( not x467 ) ( and ( not x420 ) true ) ) ( = tmp710 0 ) ) + ( implies ( and ( not x467 ) ( and x420 true ) ) ( = tmp710 1 ) ) + ( implies ( and x467 ( and ( not x420 ) true ) ) ( = tmp710 1 ) ) + ( implies ( and x467 ( and x420 true ) ) ( = tmp710 2 ) ) + ( implies ( and ( not x324 ) ( and ( not x372 ) true ) ) ( = tmp709 0 ) ) + ( implies ( and ( not x324 ) ( and x372 true ) ) ( = tmp709 1 ) ) + ( implies ( and x324 ( and ( not x372 ) true ) ) ( = tmp709 1 ) ) + ( implies ( and x324 ( and x372 true ) ) ( = tmp709 2 ) ) + ( implies ( and ( not x562 ) ( and ( not x514 ) true ) ) ( = tmp708 0 ) ) + ( implies ( and ( not x562 ) ( and x514 true ) ) ( = tmp708 1 ) ) + ( implies ( and x562 ( and ( not x514 ) true ) ) ( = tmp708 1 ) ) + ( implies ( and x562 ( and x514 true ) ) ( = tmp708 2 ) ) + ( implies ( and ( not x232 ) ( and ( not x276 ) true ) ) ( = tmp707 0 ) ) + ( implies ( and ( not x232 ) ( and x276 true ) ) ( = tmp707 1 ) ) + ( implies ( and x232 ( and ( not x276 ) true ) ) ( = tmp707 1 ) ) + ( implies ( and x232 ( and x276 true ) ) ( = tmp707 2 ) ) + ( implies ( and ( not x704 ) ( and ( not x657 ) true ) ) ( = tmp706 0 ) ) + ( implies ( and ( not x704 ) ( and x657 true ) ) ( = tmp706 1 ) ) + ( implies ( and x704 ( and ( not x657 ) true ) ) ( = tmp706 1 ) ) + ( implies ( and x704 ( and x657 true ) ) ( = tmp706 2 ) ) + ( implies ( and ( not x136 ) ( and ( not x184 ) true ) ) ( = tmp705 0 ) ) + ( implies ( and ( not x136 ) ( and x184 true ) ) ( = tmp705 1 ) ) + ( implies ( and x136 ( and ( not x184 ) true ) ) ( = tmp705 1 ) ) + ( implies ( and x136 ( and x184 true ) ) ( = tmp705 2 ) ) + ( implies ( and ( not x769 ) ( and ( not x752 ) true ) ) ( = tmp704 0 ) ) + ( implies ( and ( not x769 ) ( and x752 true ) ) ( = tmp704 1 ) ) + ( implies ( and x769 ( and ( not x752 ) true ) ) ( = tmp704 1 ) ) + ( implies ( and x769 ( and x752 true ) ) ( = tmp704 2 ) ) + ( implies ( and ( not x41 ) ( and ( not x89 ) true ) ) ( = tmp703 0 ) ) + ( implies ( and ( not x41 ) ( and x89 true ) ) ( = tmp703 1 ) ) + ( implies ( and x41 ( and ( not x89 ) true ) ) ( = tmp703 1 ) ) + ( implies ( and x41 ( and x89 true ) ) ( = tmp703 2 ) ) + ( implies ( and ( not x466 ) ( and ( not x419 ) true ) ) ( = tmp702 0 ) ) + ( implies ( and ( not x466 ) ( and x419 true ) ) ( = tmp702 1 ) ) + ( implies ( and x466 ( and ( not x419 ) true ) ) ( = tmp702 1 ) ) + ( implies ( and x466 ( and x419 true ) ) ( = tmp702 2 ) ) + ( implies ( and ( not x323 ) ( and ( not x371 ) true ) ) ( = tmp701 0 ) ) + ( implies ( and ( not x323 ) ( and x371 true ) ) ( = tmp701 1 ) ) + ( implies ( and x323 ( and ( not x371 ) true ) ) ( = tmp701 1 ) ) + ( implies ( and x323 ( and x371 true ) ) ( = tmp701 2 ) ) + ( implies ( and ( not x561 ) ( and ( not x513 ) true ) ) ( = tmp700 0 ) ) + ( implies ( and ( not x561 ) ( and x513 true ) ) ( = tmp700 1 ) ) + ( implies ( and x561 ( and ( not x513 ) true ) ) ( = tmp700 1 ) ) + ( implies ( and x561 ( and x513 true ) ) ( = tmp700 2 ) ) + ( implies ( and ( not x231 ) ( and ( not x275 ) true ) ) ( = tmp699 0 ) ) + ( implies ( and ( not x231 ) ( and x275 true ) ) ( = tmp699 1 ) ) + ( implies ( and x231 ( and ( not x275 ) true ) ) ( = tmp699 1 ) ) + ( implies ( and x231 ( and x275 true ) ) ( = tmp699 2 ) ) + ( implies ( and ( not x656 ) ( and ( not x609 ) true ) ) ( = tmp698 0 ) ) + ( implies ( and ( not x656 ) ( and x609 true ) ) ( = tmp698 1 ) ) + ( implies ( and x656 ( and ( not x609 ) true ) ) ( = tmp698 1 ) ) + ( implies ( and x656 ( and x609 true ) ) ( = tmp698 2 ) ) + ( implies ( and ( not x135 ) ( and ( not x183 ) true ) ) ( = tmp697 0 ) ) + ( implies ( and ( not x135 ) ( and x183 true ) ) ( = tmp697 1 ) ) + ( implies ( and x135 ( and ( not x183 ) true ) ) ( = tmp697 1 ) ) + ( implies ( and x135 ( and x183 true ) ) ( = tmp697 2 ) ) + ( implies ( and ( not x751 ) ( and ( not x703 ) true ) ) ( = tmp696 0 ) ) + ( implies ( and ( not x751 ) ( and x703 true ) ) ( = tmp696 1 ) ) + ( implies ( and x751 ( and ( not x703 ) true ) ) ( = tmp696 1 ) ) + ( implies ( and x751 ( and x703 true ) ) ( = tmp696 2 ) ) + ( implies ( and ( not x40 ) ( and ( not x88 ) true ) ) ( = tmp695 0 ) ) + ( implies ( and ( not x40 ) ( and x88 true ) ) ( = tmp695 1 ) ) + ( implies ( and x40 ( and ( not x88 ) true ) ) ( = tmp695 1 ) ) + ( implies ( and x40 ( and x88 true ) ) ( = tmp695 2 ) ) + ( implies ( and ( not x465 ) ( and ( not x418 ) true ) ) ( = tmp694 0 ) ) + ( implies ( and ( not x465 ) ( and x418 true ) ) ( = tmp694 1 ) ) + ( implies ( and x465 ( and ( not x418 ) true ) ) ( = tmp694 1 ) ) + ( implies ( and x465 ( and x418 true ) ) ( = tmp694 2 ) ) + ( implies ( and ( not x322 ) ( and ( not x370 ) true ) ) ( = tmp693 0 ) ) + ( implies ( and ( not x322 ) ( and x370 true ) ) ( = tmp693 1 ) ) + ( implies ( and x322 ( and ( not x370 ) true ) ) ( = tmp693 1 ) ) + ( implies ( and x322 ( and x370 true ) ) ( = tmp693 2 ) ) + ( implies ( and ( not x560 ) ( and ( not x512 ) true ) ) ( = tmp692 0 ) ) + ( implies ( and ( not x560 ) ( and x512 true ) ) ( = tmp692 1 ) ) + ( implies ( and x560 ( and ( not x512 ) true ) ) ( = tmp692 1 ) ) + ( implies ( and x560 ( and x512 true ) ) ( = tmp692 2 ) ) + ( implies ( and ( not x230 ) ( and ( not x274 ) true ) ) ( = tmp691 0 ) ) + ( implies ( and ( not x230 ) ( and x274 true ) ) ( = tmp691 1 ) ) + ( implies ( and x230 ( and ( not x274 ) true ) ) ( = tmp691 1 ) ) + ( implies ( and x230 ( and x274 true ) ) ( = tmp691 2 ) ) + ( implies ( and ( not x655 ) ( and ( not x608 ) true ) ) ( = tmp690 0 ) ) + ( implies ( and ( not x655 ) ( and x608 true ) ) ( = tmp690 1 ) ) + ( implies ( and x655 ( and ( not x608 ) true ) ) ( = tmp690 1 ) ) + ( implies ( and x655 ( and x608 true ) ) ( = tmp690 2 ) ) + ( implies ( and ( not x134 ) ( and ( not x182 ) true ) ) ( = tmp689 0 ) ) + ( implies ( and ( not x134 ) ( and x182 true ) ) ( = tmp689 1 ) ) + ( implies ( and x134 ( and ( not x182 ) true ) ) ( = tmp689 1 ) ) + ( implies ( and x134 ( and x182 true ) ) ( = tmp689 2 ) ) + ( implies ( and ( not x750 ) ( and ( not x702 ) true ) ) ( = tmp688 0 ) ) + ( implies ( and ( not x750 ) ( and x702 true ) ) ( = tmp688 1 ) ) + ( implies ( and x750 ( and ( not x702 ) true ) ) ( = tmp688 1 ) ) + ( implies ( and x750 ( and x702 true ) ) ( = tmp688 2 ) ) + ( implies ( and ( not x39 ) ( and ( not x87 ) true ) ) ( = tmp687 0 ) ) + ( implies ( and ( not x39 ) ( and x87 true ) ) ( = tmp687 1 ) ) + ( implies ( and x39 ( and ( not x87 ) true ) ) ( = tmp687 1 ) ) + ( implies ( and x39 ( and x87 true ) ) ( = tmp687 2 ) ) + ( implies ( and ( not x464 ) ( and ( not x417 ) true ) ) ( = tmp686 0 ) ) + ( implies ( and ( not x464 ) ( and x417 true ) ) ( = tmp686 1 ) ) + ( implies ( and x464 ( and ( not x417 ) true ) ) ( = tmp686 1 ) ) + ( implies ( and x464 ( and x417 true ) ) ( = tmp686 2 ) ) + ( implies ( and ( not x321 ) ( and ( not x369 ) true ) ) ( = tmp685 0 ) ) + ( implies ( and ( not x321 ) ( and x369 true ) ) ( = tmp685 1 ) ) + ( implies ( and x321 ( and ( not x369 ) true ) ) ( = tmp685 1 ) ) + ( implies ( and x321 ( and x369 true ) ) ( = tmp685 2 ) ) + ( implies ( and ( not x559 ) ( and ( not x511 ) true ) ) ( = tmp684 0 ) ) + ( implies ( and ( not x559 ) ( and x511 true ) ) ( = tmp684 1 ) ) + ( implies ( and x559 ( and ( not x511 ) true ) ) ( = tmp684 1 ) ) + ( implies ( and x559 ( and x511 true ) ) ( = tmp684 2 ) ) + ( implies ( and ( not x229 ) ( and ( not x273 ) true ) ) ( = tmp683 0 ) ) + ( implies ( and ( not x229 ) ( and x273 true ) ) ( = tmp683 1 ) ) + ( implies ( and x229 ( and ( not x273 ) true ) ) ( = tmp683 1 ) ) + ( implies ( and x229 ( and x273 true ) ) ( = tmp683 2 ) ) + ( implies ( and ( not x654 ) ( and ( not x607 ) true ) ) ( = tmp682 0 ) ) + ( implies ( and ( not x654 ) ( and x607 true ) ) ( = tmp682 1 ) ) + ( implies ( and x654 ( and ( not x607 ) true ) ) ( = tmp682 1 ) ) + ( implies ( and x654 ( and x607 true ) ) ( = tmp682 2 ) ) + ( implies ( and ( not x133 ) ( and ( not x181 ) true ) ) ( = tmp681 0 ) ) + ( implies ( and ( not x133 ) ( and x181 true ) ) ( = tmp681 1 ) ) + ( implies ( and x133 ( and ( not x181 ) true ) ) ( = tmp681 1 ) ) + ( implies ( and x133 ( and x181 true ) ) ( = tmp681 2 ) ) + ( implies ( and ( not x749 ) ( and ( not x701 ) true ) ) ( = tmp680 0 ) ) + ( implies ( and ( not x749 ) ( and x701 true ) ) ( = tmp680 1 ) ) + ( implies ( and x749 ( and ( not x701 ) true ) ) ( = tmp680 1 ) ) + ( implies ( and x749 ( and x701 true ) ) ( = tmp680 2 ) ) + ( implies ( and ( not x38 ) ( and ( not x86 ) true ) ) ( = tmp679 0 ) ) + ( implies ( and ( not x38 ) ( and x86 true ) ) ( = tmp679 1 ) ) + ( implies ( and x38 ( and ( not x86 ) true ) ) ( = tmp679 1 ) ) + ( implies ( and x38 ( and x86 true ) ) ( = tmp679 2 ) ) + ( implies ( and ( not x463 ) ( and ( not x416 ) true ) ) ( = tmp678 0 ) ) + ( implies ( and ( not x463 ) ( and x416 true ) ) ( = tmp678 1 ) ) + ( implies ( and x463 ( and ( not x416 ) true ) ) ( = tmp678 1 ) ) + ( implies ( and x463 ( and x416 true ) ) ( = tmp678 2 ) ) + ( implies ( and ( not x320 ) ( and ( not x368 ) true ) ) ( = tmp677 0 ) ) + ( implies ( and ( not x320 ) ( and x368 true ) ) ( = tmp677 1 ) ) + ( implies ( and x320 ( and ( not x368 ) true ) ) ( = tmp677 1 ) ) + ( implies ( and x320 ( and x368 true ) ) ( = tmp677 2 ) ) + ( implies ( and ( not x558 ) ( and ( not x510 ) true ) ) ( = tmp676 0 ) ) + ( implies ( and ( not x558 ) ( and x510 true ) ) ( = tmp676 1 ) ) + ( implies ( and x558 ( and ( not x510 ) true ) ) ( = tmp676 1 ) ) + ( implies ( and x558 ( and x510 true ) ) ( = tmp676 2 ) ) + ( implies ( and ( not x228 ) ( and ( not x272 ) true ) ) ( = tmp675 0 ) ) + ( implies ( and ( not x228 ) ( and x272 true ) ) ( = tmp675 1 ) ) + ( implies ( and x228 ( and ( not x272 ) true ) ) ( = tmp675 1 ) ) + ( implies ( and x228 ( and x272 true ) ) ( = tmp675 2 ) ) + ( implies ( and ( not x653 ) ( and ( not x606 ) true ) ) ( = tmp674 0 ) ) + ( implies ( and ( not x653 ) ( and x606 true ) ) ( = tmp674 1 ) ) + ( implies ( and x653 ( and ( not x606 ) true ) ) ( = tmp674 1 ) ) + ( implies ( and x653 ( and x606 true ) ) ( = tmp674 2 ) ) + ( implies ( and ( not x132 ) ( and ( not x180 ) true ) ) ( = tmp673 0 ) ) + ( implies ( and ( not x132 ) ( and x180 true ) ) ( = tmp673 1 ) ) + ( implies ( and x132 ( and ( not x180 ) true ) ) ( = tmp673 1 ) ) + ( implies ( and x132 ( and x180 true ) ) ( = tmp673 2 ) ) + ( implies ( and ( not x748 ) ( and ( not x700 ) true ) ) ( = tmp672 0 ) ) + ( implies ( and ( not x748 ) ( and x700 true ) ) ( = tmp672 1 ) ) + ( implies ( and x748 ( and ( not x700 ) true ) ) ( = tmp672 1 ) ) + ( implies ( and x748 ( and x700 true ) ) ( = tmp672 2 ) ) + ( implies ( and ( not x37 ) ( and ( not x85 ) true ) ) ( = tmp671 0 ) ) + ( implies ( and ( not x37 ) ( and x85 true ) ) ( = tmp671 1 ) ) + ( implies ( and x37 ( and ( not x85 ) true ) ) ( = tmp671 1 ) ) + ( implies ( and x37 ( and x85 true ) ) ( = tmp671 2 ) ) + ( implies ( and ( not x462 ) ( and ( not x415 ) true ) ) ( = tmp670 0 ) ) + ( implies ( and ( not x462 ) ( and x415 true ) ) ( = tmp670 1 ) ) + ( implies ( and x462 ( and ( not x415 ) true ) ) ( = tmp670 1 ) ) + ( implies ( and x462 ( and x415 true ) ) ( = tmp670 2 ) ) + ( implies ( and ( not x319 ) ( and ( not x367 ) true ) ) ( = tmp669 0 ) ) + ( implies ( and ( not x319 ) ( and x367 true ) ) ( = tmp669 1 ) ) + ( implies ( and x319 ( and ( not x367 ) true ) ) ( = tmp669 1 ) ) + ( implies ( and x319 ( and x367 true ) ) ( = tmp669 2 ) ) + ( implies ( and ( not x557 ) ( and ( not x509 ) true ) ) ( = tmp668 0 ) ) + ( implies ( and ( not x557 ) ( and x509 true ) ) ( = tmp668 1 ) ) + ( implies ( and x557 ( and ( not x509 ) true ) ) ( = tmp668 1 ) ) + ( implies ( and x557 ( and x509 true ) ) ( = tmp668 2 ) ) + ( implies ( and ( not x227 ) ( and ( not x271 ) true ) ) ( = tmp667 0 ) ) + ( implies ( and ( not x227 ) ( and x271 true ) ) ( = tmp667 1 ) ) + ( implies ( and x227 ( and ( not x271 ) true ) ) ( = tmp667 1 ) ) + ( implies ( and x227 ( and x271 true ) ) ( = tmp667 2 ) ) + ( implies ( and ( not x652 ) ( and ( not x605 ) true ) ) ( = tmp666 0 ) ) + ( implies ( and ( not x652 ) ( and x605 true ) ) ( = tmp666 1 ) ) + ( implies ( and x652 ( and ( not x605 ) true ) ) ( = tmp666 1 ) ) + ( implies ( and x652 ( and x605 true ) ) ( = tmp666 2 ) ) + ( implies ( and ( not x131 ) ( and ( not x179 ) true ) ) ( = tmp665 0 ) ) + ( implies ( and ( not x131 ) ( and x179 true ) ) ( = tmp665 1 ) ) + ( implies ( and x131 ( and ( not x179 ) true ) ) ( = tmp665 1 ) ) + ( implies ( and x131 ( and x179 true ) ) ( = tmp665 2 ) ) + ( implies ( and ( not x747 ) ( and ( not x699 ) true ) ) ( = tmp664 0 ) ) + ( implies ( and ( not x747 ) ( and x699 true ) ) ( = tmp664 1 ) ) + ( implies ( and x747 ( and ( not x699 ) true ) ) ( = tmp664 1 ) ) + ( implies ( and x747 ( and x699 true ) ) ( = tmp664 2 ) ) + ( implies ( and ( not x36 ) ( and ( not x84 ) true ) ) ( = tmp663 0 ) ) + ( implies ( and ( not x36 ) ( and x84 true ) ) ( = tmp663 1 ) ) + ( implies ( and x36 ( and ( not x84 ) true ) ) ( = tmp663 1 ) ) + ( implies ( and x36 ( and x84 true ) ) ( = tmp663 2 ) ) + ( implies ( and ( not x461 ) ( and ( not x414 ) true ) ) ( = tmp662 0 ) ) + ( implies ( and ( not x461 ) ( and x414 true ) ) ( = tmp662 1 ) ) + ( implies ( and x461 ( and ( not x414 ) true ) ) ( = tmp662 1 ) ) + ( implies ( and x461 ( and x414 true ) ) ( = tmp662 2 ) ) + ( implies ( and ( not x318 ) ( and ( not x366 ) true ) ) ( = tmp661 0 ) ) + ( implies ( and ( not x318 ) ( and x366 true ) ) ( = tmp661 1 ) ) + ( implies ( and x318 ( and ( not x366 ) true ) ) ( = tmp661 1 ) ) + ( implies ( and x318 ( and x366 true ) ) ( = tmp661 2 ) ) + ( implies ( and ( not x556 ) ( and ( not x508 ) true ) ) ( = tmp660 0 ) ) + ( implies ( and ( not x556 ) ( and x508 true ) ) ( = tmp660 1 ) ) + ( implies ( and x556 ( and ( not x508 ) true ) ) ( = tmp660 1 ) ) + ( implies ( and x556 ( and x508 true ) ) ( = tmp660 2 ) ) + ( implies ( and ( not x226 ) ( and ( not x270 ) true ) ) ( = tmp659 0 ) ) + ( implies ( and ( not x226 ) ( and x270 true ) ) ( = tmp659 1 ) ) + ( implies ( and x226 ( and ( not x270 ) true ) ) ( = tmp659 1 ) ) + ( implies ( and x226 ( and x270 true ) ) ( = tmp659 2 ) ) + ( implies ( and ( not x651 ) ( and ( not x604 ) true ) ) ( = tmp658 0 ) ) + ( implies ( and ( not x651 ) ( and x604 true ) ) ( = tmp658 1 ) ) + ( implies ( and x651 ( and ( not x604 ) true ) ) ( = tmp658 1 ) ) + ( implies ( and x651 ( and x604 true ) ) ( = tmp658 2 ) ) + ( implies ( and ( not x130 ) ( and ( not x178 ) true ) ) ( = tmp657 0 ) ) + ( implies ( and ( not x130 ) ( and x178 true ) ) ( = tmp657 1 ) ) + ( implies ( and x130 ( and ( not x178 ) true ) ) ( = tmp657 1 ) ) + ( implies ( and x130 ( and x178 true ) ) ( = tmp657 2 ) ) + ( implies ( and ( not x746 ) ( and ( not x698 ) true ) ) ( = tmp656 0 ) ) + ( implies ( and ( not x746 ) ( and x698 true ) ) ( = tmp656 1 ) ) + ( implies ( and x746 ( and ( not x698 ) true ) ) ( = tmp656 1 ) ) + ( implies ( and x746 ( and x698 true ) ) ( = tmp656 2 ) ) + ( implies ( and ( not x35 ) ( and ( not x83 ) true ) ) ( = tmp655 0 ) ) + ( implies ( and ( not x35 ) ( and x83 true ) ) ( = tmp655 1 ) ) + ( implies ( and x35 ( and ( not x83 ) true ) ) ( = tmp655 1 ) ) + ( implies ( and x35 ( and x83 true ) ) ( = tmp655 2 ) ) + ( implies ( and ( not x460 ) ( and ( not x413 ) true ) ) ( = tmp654 0 ) ) + ( implies ( and ( not x460 ) ( and x413 true ) ) ( = tmp654 1 ) ) + ( implies ( and x460 ( and ( not x413 ) true ) ) ( = tmp654 1 ) ) + ( implies ( and x460 ( and x413 true ) ) ( = tmp654 2 ) ) + ( implies ( and ( not x317 ) ( and ( not x365 ) true ) ) ( = tmp653 0 ) ) + ( implies ( and ( not x317 ) ( and x365 true ) ) ( = tmp653 1 ) ) + ( implies ( and x317 ( and ( not x365 ) true ) ) ( = tmp653 1 ) ) + ( implies ( and x317 ( and x365 true ) ) ( = tmp653 2 ) ) + ( implies ( and ( not x555 ) ( and ( not x507 ) true ) ) ( = tmp652 0 ) ) + ( implies ( and ( not x555 ) ( and x507 true ) ) ( = tmp652 1 ) ) + ( implies ( and x555 ( and ( not x507 ) true ) ) ( = tmp652 1 ) ) + ( implies ( and x555 ( and x507 true ) ) ( = tmp652 2 ) ) + ( implies ( and ( not x225 ) ( and ( not x269 ) true ) ) ( = tmp651 0 ) ) + ( implies ( and ( not x225 ) ( and x269 true ) ) ( = tmp651 1 ) ) + ( implies ( and x225 ( and ( not x269 ) true ) ) ( = tmp651 1 ) ) + ( implies ( and x225 ( and x269 true ) ) ( = tmp651 2 ) ) + ( implies ( and ( not x650 ) ( and ( not x603 ) true ) ) ( = tmp650 0 ) ) + ( implies ( and ( not x650 ) ( and x603 true ) ) ( = tmp650 1 ) ) + ( implies ( and x650 ( and ( not x603 ) true ) ) ( = tmp650 1 ) ) + ( implies ( and x650 ( and x603 true ) ) ( = tmp650 2 ) ) + ( implies ( and ( not x129 ) ( and ( not x177 ) true ) ) ( = tmp649 0 ) ) + ( implies ( and ( not x129 ) ( and x177 true ) ) ( = tmp649 1 ) ) + ( implies ( and x129 ( and ( not x177 ) true ) ) ( = tmp649 1 ) ) + ( implies ( and x129 ( and x177 true ) ) ( = tmp649 2 ) ) + ( implies ( and ( not x745 ) ( and ( not x697 ) true ) ) ( = tmp648 0 ) ) + ( implies ( and ( not x745 ) ( and x697 true ) ) ( = tmp648 1 ) ) + ( implies ( and x745 ( and ( not x697 ) true ) ) ( = tmp648 1 ) ) + ( implies ( and x745 ( and x697 true ) ) ( = tmp648 2 ) ) + ( implies ( and ( not x34 ) ( and ( not x82 ) true ) ) ( = tmp647 0 ) ) + ( implies ( and ( not x34 ) ( and x82 true ) ) ( = tmp647 1 ) ) + ( implies ( and x34 ( and ( not x82 ) true ) ) ( = tmp647 1 ) ) + ( implies ( and x34 ( and x82 true ) ) ( = tmp647 2 ) ) + ( implies ( and ( not x459 ) ( and ( not x412 ) true ) ) ( = tmp646 0 ) ) + ( implies ( and ( not x459 ) ( and x412 true ) ) ( = tmp646 1 ) ) + ( implies ( and x459 ( and ( not x412 ) true ) ) ( = tmp646 1 ) ) + ( implies ( and x459 ( and x412 true ) ) ( = tmp646 2 ) ) + ( implies ( and ( not x316 ) ( and ( not x364 ) true ) ) ( = tmp645 0 ) ) + ( implies ( and ( not x316 ) ( and x364 true ) ) ( = tmp645 1 ) ) + ( implies ( and x316 ( and ( not x364 ) true ) ) ( = tmp645 1 ) ) + ( implies ( and x316 ( and x364 true ) ) ( = tmp645 2 ) ) + ( implies ( and ( not x554 ) ( and ( not x506 ) true ) ) ( = tmp644 0 ) ) + ( implies ( and ( not x554 ) ( and x506 true ) ) ( = tmp644 1 ) ) + ( implies ( and x554 ( and ( not x506 ) true ) ) ( = tmp644 1 ) ) + ( implies ( and x554 ( and x506 true ) ) ( = tmp644 2 ) ) + ( implies ( and ( not x224 ) ( and ( not x268 ) true ) ) ( = tmp643 0 ) ) + ( implies ( and ( not x224 ) ( and x268 true ) ) ( = tmp643 1 ) ) + ( implies ( and x224 ( and ( not x268 ) true ) ) ( = tmp643 1 ) ) + ( implies ( and x224 ( and x268 true ) ) ( = tmp643 2 ) ) + ( implies ( and ( not x649 ) ( and ( not x602 ) true ) ) ( = tmp642 0 ) ) + ( implies ( and ( not x649 ) ( and x602 true ) ) ( = tmp642 1 ) ) + ( implies ( and x649 ( and ( not x602 ) true ) ) ( = tmp642 1 ) ) + ( implies ( and x649 ( and x602 true ) ) ( = tmp642 2 ) ) + ( implies ( and ( not x128 ) ( and ( not x176 ) true ) ) ( = tmp641 0 ) ) + ( implies ( and ( not x128 ) ( and x176 true ) ) ( = tmp641 1 ) ) + ( implies ( and x128 ( and ( not x176 ) true ) ) ( = tmp641 1 ) ) + ( implies ( and x128 ( and x176 true ) ) ( = tmp641 2 ) ) + ( implies ( and ( not x744 ) ( and ( not x696 ) true ) ) ( = tmp640 0 ) ) + ( implies ( and ( not x744 ) ( and x696 true ) ) ( = tmp640 1 ) ) + ( implies ( and x744 ( and ( not x696 ) true ) ) ( = tmp640 1 ) ) + ( implies ( and x744 ( and x696 true ) ) ( = tmp640 2 ) ) + ( implies ( and ( not x33 ) ( and ( not x81 ) true ) ) ( = tmp639 0 ) ) + ( implies ( and ( not x33 ) ( and x81 true ) ) ( = tmp639 1 ) ) + ( implies ( and x33 ( and ( not x81 ) true ) ) ( = tmp639 1 ) ) + ( implies ( and x33 ( and x81 true ) ) ( = tmp639 2 ) ) + ( implies ( and ( not x458 ) ( and ( not x411 ) true ) ) ( = tmp638 0 ) ) + ( implies ( and ( not x458 ) ( and x411 true ) ) ( = tmp638 1 ) ) + ( implies ( and x458 ( and ( not x411 ) true ) ) ( = tmp638 1 ) ) + ( implies ( and x458 ( and x411 true ) ) ( = tmp638 2 ) ) + ( implies ( and ( not x315 ) ( and ( not x363 ) true ) ) ( = tmp637 0 ) ) + ( implies ( and ( not x315 ) ( and x363 true ) ) ( = tmp637 1 ) ) + ( implies ( and x315 ( and ( not x363 ) true ) ) ( = tmp637 1 ) ) + ( implies ( and x315 ( and x363 true ) ) ( = tmp637 2 ) ) + ( implies ( and ( not x553 ) ( and ( not x505 ) true ) ) ( = tmp636 0 ) ) + ( implies ( and ( not x553 ) ( and x505 true ) ) ( = tmp636 1 ) ) + ( implies ( and x553 ( and ( not x505 ) true ) ) ( = tmp636 1 ) ) + ( implies ( and x553 ( and x505 true ) ) ( = tmp636 2 ) ) + ( implies ( and ( not x223 ) ( and ( not x267 ) true ) ) ( = tmp635 0 ) ) + ( implies ( and ( not x223 ) ( and x267 true ) ) ( = tmp635 1 ) ) + ( implies ( and x223 ( and ( not x267 ) true ) ) ( = tmp635 1 ) ) + ( implies ( and x223 ( and x267 true ) ) ( = tmp635 2 ) ) + ( implies ( and ( not x648 ) ( and ( not x601 ) true ) ) ( = tmp634 0 ) ) + ( implies ( and ( not x648 ) ( and x601 true ) ) ( = tmp634 1 ) ) + ( implies ( and x648 ( and ( not x601 ) true ) ) ( = tmp634 1 ) ) + ( implies ( and x648 ( and x601 true ) ) ( = tmp634 2 ) ) + ( implies ( and ( not x127 ) ( and ( not x175 ) true ) ) ( = tmp633 0 ) ) + ( implies ( and ( not x127 ) ( and x175 true ) ) ( = tmp633 1 ) ) + ( implies ( and x127 ( and ( not x175 ) true ) ) ( = tmp633 1 ) ) + ( implies ( and x127 ( and x175 true ) ) ( = tmp633 2 ) ) + ( implies ( and ( not x743 ) ( and ( not x695 ) true ) ) ( = tmp632 0 ) ) + ( implies ( and ( not x743 ) ( and x695 true ) ) ( = tmp632 1 ) ) + ( implies ( and x743 ( and ( not x695 ) true ) ) ( = tmp632 1 ) ) + ( implies ( and x743 ( and x695 true ) ) ( = tmp632 2 ) ) + ( implies ( and ( not x32 ) ( and ( not x80 ) true ) ) ( = tmp631 0 ) ) + ( implies ( and ( not x32 ) ( and x80 true ) ) ( = tmp631 1 ) ) + ( implies ( and x32 ( and ( not x80 ) true ) ) ( = tmp631 1 ) ) + ( implies ( and x32 ( and x80 true ) ) ( = tmp631 2 ) ) + ( implies ( and ( not x457 ) ( and ( not x410 ) true ) ) ( = tmp630 0 ) ) + ( implies ( and ( not x457 ) ( and x410 true ) ) ( = tmp630 1 ) ) + ( implies ( and x457 ( and ( not x410 ) true ) ) ( = tmp630 1 ) ) + ( implies ( and x457 ( and x410 true ) ) ( = tmp630 2 ) ) + ( implies ( and ( not x314 ) ( and ( not x362 ) true ) ) ( = tmp629 0 ) ) + ( implies ( and ( not x314 ) ( and x362 true ) ) ( = tmp629 1 ) ) + ( implies ( and x314 ( and ( not x362 ) true ) ) ( = tmp629 1 ) ) + ( implies ( and x314 ( and x362 true ) ) ( = tmp629 2 ) ) + ( implies ( and ( not x552 ) ( and ( not x504 ) true ) ) ( = tmp628 0 ) ) + ( implies ( and ( not x552 ) ( and x504 true ) ) ( = tmp628 1 ) ) + ( implies ( and x552 ( and ( not x504 ) true ) ) ( = tmp628 1 ) ) + ( implies ( and x552 ( and x504 true ) ) ( = tmp628 2 ) ) + ( implies ( and ( not x222 ) ( and ( not x266 ) true ) ) ( = tmp627 0 ) ) + ( implies ( and ( not x222 ) ( and x266 true ) ) ( = tmp627 1 ) ) + ( implies ( and x222 ( and ( not x266 ) true ) ) ( = tmp627 1 ) ) + ( implies ( and x222 ( and x266 true ) ) ( = tmp627 2 ) ) + ( implies ( and ( not x647 ) ( and ( not x600 ) true ) ) ( = tmp626 0 ) ) + ( implies ( and ( not x647 ) ( and x600 true ) ) ( = tmp626 1 ) ) + ( implies ( and x647 ( and ( not x600 ) true ) ) ( = tmp626 1 ) ) + ( implies ( and x647 ( and x600 true ) ) ( = tmp626 2 ) ) + ( implies ( and ( not x126 ) ( and ( not x174 ) true ) ) ( = tmp625 0 ) ) + ( implies ( and ( not x126 ) ( and x174 true ) ) ( = tmp625 1 ) ) + ( implies ( and x126 ( and ( not x174 ) true ) ) ( = tmp625 1 ) ) + ( implies ( and x126 ( and x174 true ) ) ( = tmp625 2 ) ) + ( implies ( and ( not x742 ) ( and ( not x694 ) true ) ) ( = tmp624 0 ) ) + ( implies ( and ( not x742 ) ( and x694 true ) ) ( = tmp624 1 ) ) + ( implies ( and x742 ( and ( not x694 ) true ) ) ( = tmp624 1 ) ) + ( implies ( and x742 ( and x694 true ) ) ( = tmp624 2 ) ) + ( implies ( and ( not x31 ) ( and ( not x79 ) true ) ) ( = tmp623 0 ) ) + ( implies ( and ( not x31 ) ( and x79 true ) ) ( = tmp623 1 ) ) + ( implies ( and x31 ( and ( not x79 ) true ) ) ( = tmp623 1 ) ) + ( implies ( and x31 ( and x79 true ) ) ( = tmp623 2 ) ) + ( implies ( and ( not x456 ) ( and ( not x409 ) true ) ) ( = tmp622 0 ) ) + ( implies ( and ( not x456 ) ( and x409 true ) ) ( = tmp622 1 ) ) + ( implies ( and x456 ( and ( not x409 ) true ) ) ( = tmp622 1 ) ) + ( implies ( and x456 ( and x409 true ) ) ( = tmp622 2 ) ) + ( implies ( and ( not x313 ) ( and ( not x361 ) true ) ) ( = tmp621 0 ) ) + ( implies ( and ( not x313 ) ( and x361 true ) ) ( = tmp621 1 ) ) + ( implies ( and x313 ( and ( not x361 ) true ) ) ( = tmp621 1 ) ) + ( implies ( and x313 ( and x361 true ) ) ( = tmp621 2 ) ) + ( implies ( and ( not x551 ) ( and ( not x503 ) true ) ) ( = tmp620 0 ) ) + ( implies ( and ( not x551 ) ( and x503 true ) ) ( = tmp620 1 ) ) + ( implies ( and x551 ( and ( not x503 ) true ) ) ( = tmp620 1 ) ) + ( implies ( and x551 ( and x503 true ) ) ( = tmp620 2 ) ) + ( implies ( and ( not x221 ) ( and ( not x265 ) true ) ) ( = tmp619 0 ) ) + ( implies ( and ( not x221 ) ( and x265 true ) ) ( = tmp619 1 ) ) + ( implies ( and x221 ( and ( not x265 ) true ) ) ( = tmp619 1 ) ) + ( implies ( and x221 ( and x265 true ) ) ( = tmp619 2 ) ) + ( implies ( and ( not x646 ) ( and ( not x599 ) true ) ) ( = tmp618 0 ) ) + ( implies ( and ( not x646 ) ( and x599 true ) ) ( = tmp618 1 ) ) + ( implies ( and x646 ( and ( not x599 ) true ) ) ( = tmp618 1 ) ) + ( implies ( and x646 ( and x599 true ) ) ( = tmp618 2 ) ) + ( implies ( and ( not x125 ) ( and ( not x173 ) true ) ) ( = tmp617 0 ) ) + ( implies ( and ( not x125 ) ( and x173 true ) ) ( = tmp617 1 ) ) + ( implies ( and x125 ( and ( not x173 ) true ) ) ( = tmp617 1 ) ) + ( implies ( and x125 ( and x173 true ) ) ( = tmp617 2 ) ) + ( implies ( and ( not x741 ) ( and ( not x693 ) true ) ) ( = tmp616 0 ) ) + ( implies ( and ( not x741 ) ( and x693 true ) ) ( = tmp616 1 ) ) + ( implies ( and x741 ( and ( not x693 ) true ) ) ( = tmp616 1 ) ) + ( implies ( and x741 ( and x693 true ) ) ( = tmp616 2 ) ) + ( implies ( and ( not x30 ) ( and ( not x78 ) true ) ) ( = tmp615 0 ) ) + ( implies ( and ( not x30 ) ( and x78 true ) ) ( = tmp615 1 ) ) + ( implies ( and x30 ( and ( not x78 ) true ) ) ( = tmp615 1 ) ) + ( implies ( and x30 ( and x78 true ) ) ( = tmp615 2 ) ) + ( implies ( and ( not x455 ) ( and ( not x408 ) true ) ) ( = tmp614 0 ) ) + ( implies ( and ( not x455 ) ( and x408 true ) ) ( = tmp614 1 ) ) + ( implies ( and x455 ( and ( not x408 ) true ) ) ( = tmp614 1 ) ) + ( implies ( and x455 ( and x408 true ) ) ( = tmp614 2 ) ) + ( implies ( and ( not x312 ) ( and ( not x360 ) true ) ) ( = tmp613 0 ) ) + ( implies ( and ( not x312 ) ( and x360 true ) ) ( = tmp613 1 ) ) + ( implies ( and x312 ( and ( not x360 ) true ) ) ( = tmp613 1 ) ) + ( implies ( and x312 ( and x360 true ) ) ( = tmp613 2 ) ) + ( implies ( and ( not x550 ) ( and ( not x502 ) true ) ) ( = tmp612 0 ) ) + ( implies ( and ( not x550 ) ( and x502 true ) ) ( = tmp612 1 ) ) + ( implies ( and x550 ( and ( not x502 ) true ) ) ( = tmp612 1 ) ) + ( implies ( and x550 ( and x502 true ) ) ( = tmp612 2 ) ) + ( implies ( and ( not x220 ) ( and ( not x264 ) true ) ) ( = tmp611 0 ) ) + ( implies ( and ( not x220 ) ( and x264 true ) ) ( = tmp611 1 ) ) + ( implies ( and x220 ( and ( not x264 ) true ) ) ( = tmp611 1 ) ) + ( implies ( and x220 ( and x264 true ) ) ( = tmp611 2 ) ) + ( implies ( and ( not x645 ) ( and ( not x598 ) true ) ) ( = tmp610 0 ) ) + ( implies ( and ( not x645 ) ( and x598 true ) ) ( = tmp610 1 ) ) + ( implies ( and x645 ( and ( not x598 ) true ) ) ( = tmp610 1 ) ) + ( implies ( and x645 ( and x598 true ) ) ( = tmp610 2 ) ) + ( implies ( and ( not x124 ) ( and ( not x172 ) true ) ) ( = tmp609 0 ) ) + ( implies ( and ( not x124 ) ( and x172 true ) ) ( = tmp609 1 ) ) + ( implies ( and x124 ( and ( not x172 ) true ) ) ( = tmp609 1 ) ) + ( implies ( and x124 ( and x172 true ) ) ( = tmp609 2 ) ) + ( implies ( and ( not x740 ) ( and ( not x692 ) true ) ) ( = tmp608 0 ) ) + ( implies ( and ( not x740 ) ( and x692 true ) ) ( = tmp608 1 ) ) + ( implies ( and x740 ( and ( not x692 ) true ) ) ( = tmp608 1 ) ) + ( implies ( and x740 ( and x692 true ) ) ( = tmp608 2 ) ) + ( implies ( and ( not x29 ) ( and ( not x77 ) true ) ) ( = tmp607 0 ) ) + ( implies ( and ( not x29 ) ( and x77 true ) ) ( = tmp607 1 ) ) + ( implies ( and x29 ( and ( not x77 ) true ) ) ( = tmp607 1 ) ) + ( implies ( and x29 ( and x77 true ) ) ( = tmp607 2 ) ) + ( implies ( and ( not x501 ) ( and ( not x407 ) true ) ) ( = tmp606 0 ) ) + ( implies ( and ( not x501 ) ( and x407 true ) ) ( = tmp606 1 ) ) + ( implies ( and x501 ( and ( not x407 ) true ) ) ( = tmp606 1 ) ) + ( implies ( and x501 ( and x407 true ) ) ( = tmp606 2 ) ) + ( implies ( and ( not x311 ) ( and ( not x359 ) true ) ) ( = tmp605 0 ) ) + ( implies ( and ( not x311 ) ( and x359 true ) ) ( = tmp605 1 ) ) + ( implies ( and x311 ( and ( not x359 ) true ) ) ( = tmp605 1 ) ) + ( implies ( and x311 ( and x359 true ) ) ( = tmp605 2 ) ) + ( implies ( and ( not x597 ) ( and ( not x549 ) true ) ) ( = tmp604 0 ) ) + ( implies ( and ( not x597 ) ( and x549 true ) ) ( = tmp604 1 ) ) + ( implies ( and x597 ( and ( not x549 ) true ) ) ( = tmp604 1 ) ) + ( implies ( and x597 ( and x549 true ) ) ( = tmp604 2 ) ) + ( implies ( and ( not x219 ) ( and ( not x263 ) true ) ) ( = tmp603 0 ) ) + ( implies ( and ( not x219 ) ( and x263 true ) ) ( = tmp603 1 ) ) + ( implies ( and x219 ( and ( not x263 ) true ) ) ( = tmp603 1 ) ) + ( implies ( and x219 ( and x263 true ) ) ( = tmp603 2 ) ) + ( implies ( and ( not x691 ) ( and ( not x644 ) true ) ) ( = tmp602 0 ) ) + ( implies ( and ( not x691 ) ( and x644 true ) ) ( = tmp602 1 ) ) + ( implies ( and x691 ( and ( not x644 ) true ) ) ( = tmp602 1 ) ) + ( implies ( and x691 ( and x644 true ) ) ( = tmp602 2 ) ) + ( implies ( and ( not x123 ) ( and ( not x171 ) true ) ) ( = tmp601 0 ) ) + ( implies ( and ( not x123 ) ( and x171 true ) ) ( = tmp601 1 ) ) + ( implies ( and x123 ( and ( not x171 ) true ) ) ( = tmp601 1 ) ) + ( implies ( and x123 ( and x171 true ) ) ( = tmp601 2 ) ) + ( implies ( and ( not x768 ) ( and ( not x739 ) true ) ) ( = tmp600 0 ) ) + ( implies ( and ( not x768 ) ( and x739 true ) ) ( = tmp600 1 ) ) + ( implies ( and x768 ( and ( not x739 ) true ) ) ( = tmp600 1 ) ) + ( implies ( and x768 ( and x739 true ) ) ( = tmp600 2 ) ) + ( implies ( and ( not x28 ) ( and ( not x76 ) true ) ) ( = tmp599 0 ) ) + ( implies ( and ( not x28 ) ( and x76 true ) ) ( = tmp599 1 ) ) + ( implies ( and x28 ( and ( not x76 ) true ) ) ( = tmp599 1 ) ) + ( implies ( and x28 ( and x76 true ) ) ( = tmp599 2 ) ) + ( implies ( and ( not x454 ) ( and ( not x406 ) true ) ) ( = tmp598 0 ) ) + ( implies ( and ( not x454 ) ( and x406 true ) ) ( = tmp598 1 ) ) + ( implies ( and x454 ( and ( not x406 ) true ) ) ( = tmp598 1 ) ) + ( implies ( and x454 ( and x406 true ) ) ( = tmp598 2 ) ) + ( implies ( and ( not x310 ) ( and ( not x358 ) true ) ) ( = tmp597 0 ) ) + ( implies ( and ( not x310 ) ( and x358 true ) ) ( = tmp597 1 ) ) + ( implies ( and x310 ( and ( not x358 ) true ) ) ( = tmp597 1 ) ) + ( implies ( and x310 ( and x358 true ) ) ( = tmp597 2 ) ) + ( implies ( and ( not x548 ) ( and ( not x500 ) true ) ) ( = tmp596 0 ) ) + ( implies ( and ( not x548 ) ( and x500 true ) ) ( = tmp596 1 ) ) + ( implies ( and x548 ( and ( not x500 ) true ) ) ( = tmp596 1 ) ) + ( implies ( and x548 ( and x500 true ) ) ( = tmp596 2 ) ) + ( implies ( and ( not x218 ) ( and ( not x262 ) true ) ) ( = tmp595 0 ) ) + ( implies ( and ( not x218 ) ( and x262 true ) ) ( = tmp595 1 ) ) + ( implies ( and x218 ( and ( not x262 ) true ) ) ( = tmp595 1 ) ) + ( implies ( and x218 ( and x262 true ) ) ( = tmp595 2 ) ) + ( implies ( and ( not x643 ) ( and ( not x596 ) true ) ) ( = tmp594 0 ) ) + ( implies ( and ( not x643 ) ( and x596 true ) ) ( = tmp594 1 ) ) + ( implies ( and x643 ( and ( not x596 ) true ) ) ( = tmp594 1 ) ) + ( implies ( and x643 ( and x596 true ) ) ( = tmp594 2 ) ) + ( implies ( and ( not x122 ) ( and ( not x170 ) true ) ) ( = tmp593 0 ) ) + ( implies ( and ( not x122 ) ( and x170 true ) ) ( = tmp593 1 ) ) + ( implies ( and x122 ( and ( not x170 ) true ) ) ( = tmp593 1 ) ) + ( implies ( and x122 ( and x170 true ) ) ( = tmp593 2 ) ) + ( implies ( and ( not x738 ) ( and ( not x690 ) true ) ) ( = tmp592 0 ) ) + ( implies ( and ( not x738 ) ( and x690 true ) ) ( = tmp592 1 ) ) + ( implies ( and x738 ( and ( not x690 ) true ) ) ( = tmp592 1 ) ) + ( implies ( and x738 ( and x690 true ) ) ( = tmp592 2 ) ) + ( implies ( and ( not x27 ) ( and ( not x75 ) true ) ) ( = tmp591 0 ) ) + ( implies ( and ( not x27 ) ( and x75 true ) ) ( = tmp591 1 ) ) + ( implies ( and x27 ( and ( not x75 ) true ) ) ( = tmp591 1 ) ) + ( implies ( and x27 ( and x75 true ) ) ( = tmp591 2 ) ) + ( implies ( and ( not x453 ) ( and ( not x405 ) true ) ) ( = tmp590 0 ) ) + ( implies ( and ( not x453 ) ( and x405 true ) ) ( = tmp590 1 ) ) + ( implies ( and x453 ( and ( not x405 ) true ) ) ( = tmp590 1 ) ) + ( implies ( and x453 ( and x405 true ) ) ( = tmp590 2 ) ) + ( implies ( and ( not x309 ) ( and ( not x357 ) true ) ) ( = tmp589 0 ) ) + ( implies ( and ( not x309 ) ( and x357 true ) ) ( = tmp589 1 ) ) + ( implies ( and x309 ( and ( not x357 ) true ) ) ( = tmp589 1 ) ) + ( implies ( and x309 ( and x357 true ) ) ( = tmp589 2 ) ) + ( implies ( and ( not x547 ) ( and ( not x499 ) true ) ) ( = tmp588 0 ) ) + ( implies ( and ( not x547 ) ( and x499 true ) ) ( = tmp588 1 ) ) + ( implies ( and x547 ( and ( not x499 ) true ) ) ( = tmp588 1 ) ) + ( implies ( and x547 ( and x499 true ) ) ( = tmp588 2 ) ) + ( implies ( and ( not x217 ) ( and ( not x261 ) true ) ) ( = tmp587 0 ) ) + ( implies ( and ( not x217 ) ( and x261 true ) ) ( = tmp587 1 ) ) + ( implies ( and x217 ( and ( not x261 ) true ) ) ( = tmp587 1 ) ) + ( implies ( and x217 ( and x261 true ) ) ( = tmp587 2 ) ) + ( implies ( and ( not x642 ) ( and ( not x595 ) true ) ) ( = tmp586 0 ) ) + ( implies ( and ( not x642 ) ( and x595 true ) ) ( = tmp586 1 ) ) + ( implies ( and x642 ( and ( not x595 ) true ) ) ( = tmp586 1 ) ) + ( implies ( and x642 ( and x595 true ) ) ( = tmp586 2 ) ) + ( implies ( and ( not x121 ) ( and ( not x169 ) true ) ) ( = tmp585 0 ) ) + ( implies ( and ( not x121 ) ( and x169 true ) ) ( = tmp585 1 ) ) + ( implies ( and x121 ( and ( not x169 ) true ) ) ( = tmp585 1 ) ) + ( implies ( and x121 ( and x169 true ) ) ( = tmp585 2 ) ) + ( implies ( and ( not x737 ) ( and ( not x689 ) true ) ) ( = tmp584 0 ) ) + ( implies ( and ( not x737 ) ( and x689 true ) ) ( = tmp584 1 ) ) + ( implies ( and x737 ( and ( not x689 ) true ) ) ( = tmp584 1 ) ) + ( implies ( and x737 ( and x689 true ) ) ( = tmp584 2 ) ) + ( implies ( and ( not x26 ) ( and ( not x74 ) true ) ) ( = tmp583 0 ) ) + ( implies ( and ( not x26 ) ( and x74 true ) ) ( = tmp583 1 ) ) + ( implies ( and x26 ( and ( not x74 ) true ) ) ( = tmp583 1 ) ) + ( implies ( and x26 ( and x74 true ) ) ( = tmp583 2 ) ) + ( implies ( and ( not x452 ) ( and ( not x404 ) true ) ) ( = tmp582 0 ) ) + ( implies ( and ( not x452 ) ( and x404 true ) ) ( = tmp582 1 ) ) + ( implies ( and x452 ( and ( not x404 ) true ) ) ( = tmp582 1 ) ) + ( implies ( and x452 ( and x404 true ) ) ( = tmp582 2 ) ) + ( implies ( and ( not x308 ) ( and ( not x356 ) true ) ) ( = tmp581 0 ) ) + ( implies ( and ( not x308 ) ( and x356 true ) ) ( = tmp581 1 ) ) + ( implies ( and x308 ( and ( not x356 ) true ) ) ( = tmp581 1 ) ) + ( implies ( and x308 ( and x356 true ) ) ( = tmp581 2 ) ) + ( implies ( and ( not x546 ) ( and ( not x498 ) true ) ) ( = tmp580 0 ) ) + ( implies ( and ( not x546 ) ( and x498 true ) ) ( = tmp580 1 ) ) + ( implies ( and x546 ( and ( not x498 ) true ) ) ( = tmp580 1 ) ) + ( implies ( and x546 ( and x498 true ) ) ( = tmp580 2 ) ) + ( implies ( and ( not x216 ) ( and ( not x260 ) true ) ) ( = tmp579 0 ) ) + ( implies ( and ( not x216 ) ( and x260 true ) ) ( = tmp579 1 ) ) + ( implies ( and x216 ( and ( not x260 ) true ) ) ( = tmp579 1 ) ) + ( implies ( and x216 ( and x260 true ) ) ( = tmp579 2 ) ) + ( implies ( and ( not x641 ) ( and ( not x594 ) true ) ) ( = tmp578 0 ) ) + ( implies ( and ( not x641 ) ( and x594 true ) ) ( = tmp578 1 ) ) + ( implies ( and x641 ( and ( not x594 ) true ) ) ( = tmp578 1 ) ) + ( implies ( and x641 ( and x594 true ) ) ( = tmp578 2 ) ) + ( implies ( and ( not x120 ) ( and ( not x168 ) true ) ) ( = tmp577 0 ) ) + ( implies ( and ( not x120 ) ( and x168 true ) ) ( = tmp577 1 ) ) + ( implies ( and x120 ( and ( not x168 ) true ) ) ( = tmp577 1 ) ) + ( implies ( and x120 ( and x168 true ) ) ( = tmp577 2 ) ) + ( implies ( and ( not x736 ) ( and ( not x688 ) true ) ) ( = tmp576 0 ) ) + ( implies ( and ( not x736 ) ( and x688 true ) ) ( = tmp576 1 ) ) + ( implies ( and x736 ( and ( not x688 ) true ) ) ( = tmp576 1 ) ) + ( implies ( and x736 ( and x688 true ) ) ( = tmp576 2 ) ) + ( implies ( and ( not x25 ) ( and ( not x73 ) true ) ) ( = tmp575 0 ) ) + ( implies ( and ( not x25 ) ( and x73 true ) ) ( = tmp575 1 ) ) + ( implies ( and x25 ( and ( not x73 ) true ) ) ( = tmp575 1 ) ) + ( implies ( and x25 ( and x73 true ) ) ( = tmp575 2 ) ) + ( implies ( and ( not x451 ) ( and ( not x403 ) true ) ) ( = tmp574 0 ) ) + ( implies ( and ( not x451 ) ( and x403 true ) ) ( = tmp574 1 ) ) + ( implies ( and x451 ( and ( not x403 ) true ) ) ( = tmp574 1 ) ) + ( implies ( and x451 ( and x403 true ) ) ( = tmp574 2 ) ) + ( implies ( and ( not x307 ) ( and ( not x355 ) true ) ) ( = tmp573 0 ) ) + ( implies ( and ( not x307 ) ( and x355 true ) ) ( = tmp573 1 ) ) + ( implies ( and x307 ( and ( not x355 ) true ) ) ( = tmp573 1 ) ) + ( implies ( and x307 ( and x355 true ) ) ( = tmp573 2 ) ) + ( implies ( and ( not x545 ) ( and ( not x497 ) true ) ) ( = tmp572 0 ) ) + ( implies ( and ( not x545 ) ( and x497 true ) ) ( = tmp572 1 ) ) + ( implies ( and x545 ( and ( not x497 ) true ) ) ( = tmp572 1 ) ) + ( implies ( and x545 ( and x497 true ) ) ( = tmp572 2 ) ) + ( implies ( and ( not x215 ) ( and ( not x259 ) true ) ) ( = tmp571 0 ) ) + ( implies ( and ( not x215 ) ( and x259 true ) ) ( = tmp571 1 ) ) + ( implies ( and x215 ( and ( not x259 ) true ) ) ( = tmp571 1 ) ) + ( implies ( and x215 ( and x259 true ) ) ( = tmp571 2 ) ) + ( implies ( and ( not x640 ) ( and ( not x593 ) true ) ) ( = tmp570 0 ) ) + ( implies ( and ( not x640 ) ( and x593 true ) ) ( = tmp570 1 ) ) + ( implies ( and x640 ( and ( not x593 ) true ) ) ( = tmp570 1 ) ) + ( implies ( and x640 ( and x593 true ) ) ( = tmp570 2 ) ) + ( implies ( and ( not x119 ) ( and ( not x167 ) true ) ) ( = tmp569 0 ) ) + ( implies ( and ( not x119 ) ( and x167 true ) ) ( = tmp569 1 ) ) + ( implies ( and x119 ( and ( not x167 ) true ) ) ( = tmp569 1 ) ) + ( implies ( and x119 ( and x167 true ) ) ( = tmp569 2 ) ) + ( implies ( and ( not x735 ) ( and ( not x687 ) true ) ) ( = tmp568 0 ) ) + ( implies ( and ( not x735 ) ( and x687 true ) ) ( = tmp568 1 ) ) + ( implies ( and x735 ( and ( not x687 ) true ) ) ( = tmp568 1 ) ) + ( implies ( and x735 ( and x687 true ) ) ( = tmp568 2 ) ) + ( implies ( and ( not x24 ) ( and ( not x72 ) true ) ) ( = tmp567 0 ) ) + ( implies ( and ( not x24 ) ( and x72 true ) ) ( = tmp567 1 ) ) + ( implies ( and x24 ( and ( not x72 ) true ) ) ( = tmp567 1 ) ) + ( implies ( and x24 ( and x72 true ) ) ( = tmp567 2 ) ) + ( implies ( and ( not x496 ) ( and ( not x450 ) true ) ) ( = tmp566 0 ) ) + ( implies ( and ( not x496 ) ( and x450 true ) ) ( = tmp566 1 ) ) + ( implies ( and x496 ( and ( not x450 ) true ) ) ( = tmp566 1 ) ) + ( implies ( and x496 ( and x450 true ) ) ( = tmp566 2 ) ) + ( implies ( and ( not x354 ) ( and ( not x402 ) true ) ) ( = tmp565 0 ) ) + ( implies ( and ( not x354 ) ( and x402 true ) ) ( = tmp565 1 ) ) + ( implies ( and x354 ( and ( not x402 ) true ) ) ( = tmp565 1 ) ) + ( implies ( and x354 ( and x402 true ) ) ( = tmp565 2 ) ) + ( implies ( and ( not x592 ) ( and ( not x544 ) true ) ) ( = tmp564 0 ) ) + ( implies ( and ( not x592 ) ( and x544 true ) ) ( = tmp564 1 ) ) + ( implies ( and x592 ( and ( not x544 ) true ) ) ( = tmp564 1 ) ) + ( implies ( and x592 ( and x544 true ) ) ( = tmp564 2 ) ) + ( implies ( and ( not x258 ) ( and ( not x306 ) true ) ) ( = tmp563 0 ) ) + ( implies ( and ( not x258 ) ( and x306 true ) ) ( = tmp563 1 ) ) + ( implies ( and x258 ( and ( not x306 ) true ) ) ( = tmp563 1 ) ) + ( implies ( and x258 ( and x306 true ) ) ( = tmp563 2 ) ) + ( implies ( and ( not x734 ) ( and ( not x639 ) true ) ) ( = tmp562 0 ) ) + ( implies ( and ( not x734 ) ( and x639 true ) ) ( = tmp562 1 ) ) + ( implies ( and x734 ( and ( not x639 ) true ) ) ( = tmp562 1 ) ) + ( implies ( and x734 ( and x639 true ) ) ( = tmp562 2 ) ) + ( implies ( and ( not x166 ) ( and ( not x214 ) true ) ) ( = tmp561 0 ) ) + ( implies ( and ( not x166 ) ( and x214 true ) ) ( = tmp561 1 ) ) + ( implies ( and x166 ( and ( not x214 ) true ) ) ( = tmp561 1 ) ) + ( implies ( and x166 ( and x214 true ) ) ( = tmp561 2 ) ) + ( implies ( and ( not x767 ) ( and ( not x766 ) true ) ) ( = tmp560 0 ) ) + ( implies ( and ( not x767 ) ( and x766 true ) ) ( = tmp560 1 ) ) + ( implies ( and x767 ( and ( not x766 ) true ) ) ( = tmp560 1 ) ) + ( implies ( and x767 ( and x766 true ) ) ( = tmp560 2 ) ) + ( implies ( and ( not x23 ) ( and ( not x71 ) true ) ) ( = tmp559 0 ) ) + ( implies ( and ( not x23 ) ( and x71 true ) ) ( = tmp559 1 ) ) + ( implies ( and x23 ( and ( not x71 ) true ) ) ( = tmp559 1 ) ) + ( implies ( and x23 ( and x71 true ) ) ( = tmp559 2 ) ) + ( implies ( and ( not x449 ) ( and ( not x401 ) true ) ) ( = tmp558 0 ) ) + ( implies ( and ( not x449 ) ( and x401 true ) ) ( = tmp558 1 ) ) + ( implies ( and x449 ( and ( not x401 ) true ) ) ( = tmp558 1 ) ) + ( implies ( and x449 ( and x401 true ) ) ( = tmp558 2 ) ) + ( implies ( and ( not x305 ) ( and ( not x353 ) true ) ) ( = tmp557 0 ) ) + ( implies ( and ( not x305 ) ( and x353 true ) ) ( = tmp557 1 ) ) + ( implies ( and x305 ( and ( not x353 ) true ) ) ( = tmp557 1 ) ) + ( implies ( and x305 ( and x353 true ) ) ( = tmp557 2 ) ) + ( implies ( and ( not x543 ) ( and ( not x495 ) true ) ) ( = tmp556 0 ) ) + ( implies ( and ( not x543 ) ( and x495 true ) ) ( = tmp556 1 ) ) + ( implies ( and x543 ( and ( not x495 ) true ) ) ( = tmp556 1 ) ) + ( implies ( and x543 ( and x495 true ) ) ( = tmp556 2 ) ) + ( implies ( and ( not x213 ) ( and ( not x257 ) true ) ) ( = tmp555 0 ) ) + ( implies ( and ( not x213 ) ( and x257 true ) ) ( = tmp555 1 ) ) + ( implies ( and x213 ( and ( not x257 ) true ) ) ( = tmp555 1 ) ) + ( implies ( and x213 ( and x257 true ) ) ( = tmp555 2 ) ) + ( implies ( and ( not x638 ) ( and ( not x591 ) true ) ) ( = tmp554 0 ) ) + ( implies ( and ( not x638 ) ( and x591 true ) ) ( = tmp554 1 ) ) + ( implies ( and x638 ( and ( not x591 ) true ) ) ( = tmp554 1 ) ) + ( implies ( and x638 ( and x591 true ) ) ( = tmp554 2 ) ) + ( implies ( and ( not x118 ) ( and ( not x165 ) true ) ) ( = tmp553 0 ) ) + ( implies ( and ( not x118 ) ( and x165 true ) ) ( = tmp553 1 ) ) + ( implies ( and x118 ( and ( not x165 ) true ) ) ( = tmp553 1 ) ) + ( implies ( and x118 ( and x165 true ) ) ( = tmp553 2 ) ) + ( implies ( and ( not x733 ) ( and ( not x686 ) true ) ) ( = tmp552 0 ) ) + ( implies ( and ( not x733 ) ( and x686 true ) ) ( = tmp552 1 ) ) + ( implies ( and x733 ( and ( not x686 ) true ) ) ( = tmp552 1 ) ) + ( implies ( and x733 ( and x686 true ) ) ( = tmp552 2 ) ) + ( implies ( and ( not x22 ) ( and ( not x70 ) true ) ) ( = tmp551 0 ) ) + ( implies ( and ( not x22 ) ( and x70 true ) ) ( = tmp551 1 ) ) + ( implies ( and x22 ( and ( not x70 ) true ) ) ( = tmp551 1 ) ) + ( implies ( and x22 ( and x70 true ) ) ( = tmp551 2 ) ) + ( implies ( and ( not x448 ) ( and ( not x400 ) true ) ) ( = tmp550 0 ) ) + ( implies ( and ( not x448 ) ( and x400 true ) ) ( = tmp550 1 ) ) + ( implies ( and x448 ( and ( not x400 ) true ) ) ( = tmp550 1 ) ) + ( implies ( and x448 ( and x400 true ) ) ( = tmp550 2 ) ) + ( implies ( and ( not x304 ) ( and ( not x352 ) true ) ) ( = tmp549 0 ) ) + ( implies ( and ( not x304 ) ( and x352 true ) ) ( = tmp549 1 ) ) + ( implies ( and x304 ( and ( not x352 ) true ) ) ( = tmp549 1 ) ) + ( implies ( and x304 ( and x352 true ) ) ( = tmp549 2 ) ) + ( implies ( and ( not x542 ) ( and ( not x494 ) true ) ) ( = tmp548 0 ) ) + ( implies ( and ( not x542 ) ( and x494 true ) ) ( = tmp548 1 ) ) + ( implies ( and x542 ( and ( not x494 ) true ) ) ( = tmp548 1 ) ) + ( implies ( and x542 ( and x494 true ) ) ( = tmp548 2 ) ) + ( implies ( and ( not x212 ) ( and ( not x256 ) true ) ) ( = tmp547 0 ) ) + ( implies ( and ( not x212 ) ( and x256 true ) ) ( = tmp547 1 ) ) + ( implies ( and x212 ( and ( not x256 ) true ) ) ( = tmp547 1 ) ) + ( implies ( and x212 ( and x256 true ) ) ( = tmp547 2 ) ) + ( implies ( and ( not x637 ) ( and ( not x590 ) true ) ) ( = tmp546 0 ) ) + ( implies ( and ( not x637 ) ( and x590 true ) ) ( = tmp546 1 ) ) + ( implies ( and x637 ( and ( not x590 ) true ) ) ( = tmp546 1 ) ) + ( implies ( and x637 ( and x590 true ) ) ( = tmp546 2 ) ) + ( implies ( and ( not x117 ) ( and ( not x164 ) true ) ) ( = tmp545 0 ) ) + ( implies ( and ( not x117 ) ( and x164 true ) ) ( = tmp545 1 ) ) + ( implies ( and x117 ( and ( not x164 ) true ) ) ( = tmp545 1 ) ) + ( implies ( and x117 ( and x164 true ) ) ( = tmp545 2 ) ) + ( implies ( and ( not x732 ) ( and ( not x685 ) true ) ) ( = tmp544 0 ) ) + ( implies ( and ( not x732 ) ( and x685 true ) ) ( = tmp544 1 ) ) + ( implies ( and x732 ( and ( not x685 ) true ) ) ( = tmp544 1 ) ) + ( implies ( and x732 ( and x685 true ) ) ( = tmp544 2 ) ) + ( implies ( and ( not x21 ) ( and ( not x69 ) true ) ) ( = tmp543 0 ) ) + ( implies ( and ( not x21 ) ( and x69 true ) ) ( = tmp543 1 ) ) + ( implies ( and x21 ( and ( not x69 ) true ) ) ( = tmp543 1 ) ) + ( implies ( and x21 ( and x69 true ) ) ( = tmp543 2 ) ) + ( implies ( and ( not x447 ) ( and ( not x399 ) true ) ) ( = tmp542 0 ) ) + ( implies ( and ( not x447 ) ( and x399 true ) ) ( = tmp542 1 ) ) + ( implies ( and x447 ( and ( not x399 ) true ) ) ( = tmp542 1 ) ) + ( implies ( and x447 ( and x399 true ) ) ( = tmp542 2 ) ) + ( implies ( and ( not x303 ) ( and ( not x351 ) true ) ) ( = tmp541 0 ) ) + ( implies ( and ( not x303 ) ( and x351 true ) ) ( = tmp541 1 ) ) + ( implies ( and x303 ( and ( not x351 ) true ) ) ( = tmp541 1 ) ) + ( implies ( and x303 ( and x351 true ) ) ( = tmp541 2 ) ) + ( implies ( and ( not x541 ) ( and ( not x493 ) true ) ) ( = tmp540 0 ) ) + ( implies ( and ( not x541 ) ( and x493 true ) ) ( = tmp540 1 ) ) + ( implies ( and x541 ( and ( not x493 ) true ) ) ( = tmp540 1 ) ) + ( implies ( and x541 ( and x493 true ) ) ( = tmp540 2 ) ) + ( implies ( and ( not x211 ) ( and ( not x255 ) true ) ) ( = tmp539 0 ) ) + ( implies ( and ( not x211 ) ( and x255 true ) ) ( = tmp539 1 ) ) + ( implies ( and x211 ( and ( not x255 ) true ) ) ( = tmp539 1 ) ) + ( implies ( and x211 ( and x255 true ) ) ( = tmp539 2 ) ) + ( implies ( and ( not x636 ) ( and ( not x589 ) true ) ) ( = tmp538 0 ) ) + ( implies ( and ( not x636 ) ( and x589 true ) ) ( = tmp538 1 ) ) + ( implies ( and x636 ( and ( not x589 ) true ) ) ( = tmp538 1 ) ) + ( implies ( and x636 ( and x589 true ) ) ( = tmp538 2 ) ) + ( implies ( and ( not x116 ) ( and ( not x163 ) true ) ) ( = tmp537 0 ) ) + ( implies ( and ( not x116 ) ( and x163 true ) ) ( = tmp537 1 ) ) + ( implies ( and x116 ( and ( not x163 ) true ) ) ( = tmp537 1 ) ) + ( implies ( and x116 ( and x163 true ) ) ( = tmp537 2 ) ) + ( implies ( and ( not x731 ) ( and ( not x684 ) true ) ) ( = tmp536 0 ) ) + ( implies ( and ( not x731 ) ( and x684 true ) ) ( = tmp536 1 ) ) + ( implies ( and x731 ( and ( not x684 ) true ) ) ( = tmp536 1 ) ) + ( implies ( and x731 ( and x684 true ) ) ( = tmp536 2 ) ) + ( implies ( and ( not x20 ) ( and ( not x68 ) true ) ) ( = tmp535 0 ) ) + ( implies ( and ( not x20 ) ( and x68 true ) ) ( = tmp535 1 ) ) + ( implies ( and x20 ( and ( not x68 ) true ) ) ( = tmp535 1 ) ) + ( implies ( and x20 ( and x68 true ) ) ( = tmp535 2 ) ) + ( implies ( and ( not x446 ) ( and ( not x398 ) true ) ) ( = tmp534 0 ) ) + ( implies ( and ( not x446 ) ( and x398 true ) ) ( = tmp534 1 ) ) + ( implies ( and x446 ( and ( not x398 ) true ) ) ( = tmp534 1 ) ) + ( implies ( and x446 ( and x398 true ) ) ( = tmp534 2 ) ) + ( implies ( and ( not x302 ) ( and ( not x350 ) true ) ) ( = tmp533 0 ) ) + ( implies ( and ( not x302 ) ( and x350 true ) ) ( = tmp533 1 ) ) + ( implies ( and x302 ( and ( not x350 ) true ) ) ( = tmp533 1 ) ) + ( implies ( and x302 ( and x350 true ) ) ( = tmp533 2 ) ) + ( implies ( and ( not x540 ) ( and ( not x492 ) true ) ) ( = tmp532 0 ) ) + ( implies ( and ( not x540 ) ( and x492 true ) ) ( = tmp532 1 ) ) + ( implies ( and x540 ( and ( not x492 ) true ) ) ( = tmp532 1 ) ) + ( implies ( and x540 ( and x492 true ) ) ( = tmp532 2 ) ) + ( implies ( and ( not x210 ) ( and ( not x254 ) true ) ) ( = tmp531 0 ) ) + ( implies ( and ( not x210 ) ( and x254 true ) ) ( = tmp531 1 ) ) + ( implies ( and x210 ( and ( not x254 ) true ) ) ( = tmp531 1 ) ) + ( implies ( and x210 ( and x254 true ) ) ( = tmp531 2 ) ) + ( implies ( and ( not x635 ) ( and ( not x588 ) true ) ) ( = tmp530 0 ) ) + ( implies ( and ( not x635 ) ( and x588 true ) ) ( = tmp530 1 ) ) + ( implies ( and x635 ( and ( not x588 ) true ) ) ( = tmp530 1 ) ) + ( implies ( and x635 ( and x588 true ) ) ( = tmp530 2 ) ) + ( implies ( and ( not x115 ) ( and ( not x162 ) true ) ) ( = tmp529 0 ) ) + ( implies ( and ( not x115 ) ( and x162 true ) ) ( = tmp529 1 ) ) + ( implies ( and x115 ( and ( not x162 ) true ) ) ( = tmp529 1 ) ) + ( implies ( and x115 ( and x162 true ) ) ( = tmp529 2 ) ) + ( implies ( and ( not x730 ) ( and ( not x683 ) true ) ) ( = tmp528 0 ) ) + ( implies ( and ( not x730 ) ( and x683 true ) ) ( = tmp528 1 ) ) + ( implies ( and x730 ( and ( not x683 ) true ) ) ( = tmp528 1 ) ) + ( implies ( and x730 ( and x683 true ) ) ( = tmp528 2 ) ) + ( implies ( and ( not x19 ) ( and ( not x67 ) true ) ) ( = tmp527 0 ) ) + ( implies ( and ( not x19 ) ( and x67 true ) ) ( = tmp527 1 ) ) + ( implies ( and x19 ( and ( not x67 ) true ) ) ( = tmp527 1 ) ) + ( implies ( and x19 ( and x67 true ) ) ( = tmp527 2 ) ) + ( implies ( and ( not x445 ) ( and ( not x397 ) true ) ) ( = tmp526 0 ) ) + ( implies ( and ( not x445 ) ( and x397 true ) ) ( = tmp526 1 ) ) + ( implies ( and x445 ( and ( not x397 ) true ) ) ( = tmp526 1 ) ) + ( implies ( and x445 ( and x397 true ) ) ( = tmp526 2 ) ) + ( implies ( and ( not x301 ) ( and ( not x349 ) true ) ) ( = tmp525 0 ) ) + ( implies ( and ( not x301 ) ( and x349 true ) ) ( = tmp525 1 ) ) + ( implies ( and x301 ( and ( not x349 ) true ) ) ( = tmp525 1 ) ) + ( implies ( and x301 ( and x349 true ) ) ( = tmp525 2 ) ) + ( implies ( and ( not x539 ) ( and ( not x491 ) true ) ) ( = tmp524 0 ) ) + ( implies ( and ( not x539 ) ( and x491 true ) ) ( = tmp524 1 ) ) + ( implies ( and x539 ( and ( not x491 ) true ) ) ( = tmp524 1 ) ) + ( implies ( and x539 ( and x491 true ) ) ( = tmp524 2 ) ) + ( implies ( and ( not x209 ) ( and ( not x253 ) true ) ) ( = tmp523 0 ) ) + ( implies ( and ( not x209 ) ( and x253 true ) ) ( = tmp523 1 ) ) + ( implies ( and x209 ( and ( not x253 ) true ) ) ( = tmp523 1 ) ) + ( implies ( and x209 ( and x253 true ) ) ( = tmp523 2 ) ) + ( implies ( and ( not x634 ) ( and ( not x587 ) true ) ) ( = tmp522 0 ) ) + ( implies ( and ( not x634 ) ( and x587 true ) ) ( = tmp522 1 ) ) + ( implies ( and x634 ( and ( not x587 ) true ) ) ( = tmp522 1 ) ) + ( implies ( and x634 ( and x587 true ) ) ( = tmp522 2 ) ) + ( implies ( and ( not x114 ) ( and ( not x161 ) true ) ) ( = tmp521 0 ) ) + ( implies ( and ( not x114 ) ( and x161 true ) ) ( = tmp521 1 ) ) + ( implies ( and x114 ( and ( not x161 ) true ) ) ( = tmp521 1 ) ) + ( implies ( and x114 ( and x161 true ) ) ( = tmp521 2 ) ) + ( implies ( and ( not x729 ) ( and ( not x682 ) true ) ) ( = tmp520 0 ) ) + ( implies ( and ( not x729 ) ( and x682 true ) ) ( = tmp520 1 ) ) + ( implies ( and x729 ( and ( not x682 ) true ) ) ( = tmp520 1 ) ) + ( implies ( and x729 ( and x682 true ) ) ( = tmp520 2 ) ) + ( implies ( and ( not x18 ) ( and ( not x66 ) true ) ) ( = tmp519 0 ) ) + ( implies ( and ( not x18 ) ( and x66 true ) ) ( = tmp519 1 ) ) + ( implies ( and x18 ( and ( not x66 ) true ) ) ( = tmp519 1 ) ) + ( implies ( and x18 ( and x66 true ) ) ( = tmp519 2 ) ) + ( implies ( and ( not x490 ) ( and ( not x444 ) true ) ) ( = tmp518 0 ) ) + ( implies ( and ( not x490 ) ( and x444 true ) ) ( = tmp518 1 ) ) + ( implies ( and x490 ( and ( not x444 ) true ) ) ( = tmp518 1 ) ) + ( implies ( and x490 ( and x444 true ) ) ( = tmp518 2 ) ) + ( implies ( and ( not x348 ) ( and ( not x396 ) true ) ) ( = tmp517 0 ) ) + ( implies ( and ( not x348 ) ( and x396 true ) ) ( = tmp517 1 ) ) + ( implies ( and x348 ( and ( not x396 ) true ) ) ( = tmp517 1 ) ) + ( implies ( and x348 ( and x396 true ) ) ( = tmp517 2 ) ) + ( implies ( and ( not x586 ) ( and ( not x538 ) true ) ) ( = tmp516 0 ) ) + ( implies ( and ( not x586 ) ( and x538 true ) ) ( = tmp516 1 ) ) + ( implies ( and x586 ( and ( not x538 ) true ) ) ( = tmp516 1 ) ) + ( implies ( and x586 ( and x538 true ) ) ( = tmp516 2 ) ) + ( implies ( and ( not x252 ) ( and ( not x300 ) true ) ) ( = tmp515 0 ) ) + ( implies ( and ( not x252 ) ( and x300 true ) ) ( = tmp515 1 ) ) + ( implies ( and x252 ( and ( not x300 ) true ) ) ( = tmp515 1 ) ) + ( implies ( and x252 ( and x300 true ) ) ( = tmp515 2 ) ) + ( implies ( and ( not x681 ) ( and ( not x633 ) true ) ) ( = tmp514 0 ) ) + ( implies ( and ( not x681 ) ( and x633 true ) ) ( = tmp514 1 ) ) + ( implies ( and x681 ( and ( not x633 ) true ) ) ( = tmp514 1 ) ) + ( implies ( and x681 ( and x633 true ) ) ( = tmp514 2 ) ) + ( implies ( and ( not x160 ) ( and ( not x208 ) true ) ) ( = tmp513 0 ) ) + ( implies ( and ( not x160 ) ( and x208 true ) ) ( = tmp513 1 ) ) + ( implies ( and x160 ( and ( not x208 ) true ) ) ( = tmp513 1 ) ) + ( implies ( and x160 ( and x208 true ) ) ( = tmp513 2 ) ) + ( implies ( and ( not x765 ) ( and ( not x728 ) true ) ) ( = tmp512 0 ) ) + ( implies ( and ( not x765 ) ( and x728 true ) ) ( = tmp512 1 ) ) + ( implies ( and x765 ( and ( not x728 ) true ) ) ( = tmp512 1 ) ) + ( implies ( and x765 ( and x728 true ) ) ( = tmp512 2 ) ) + ( implies ( and ( not x65 ) ( and ( not x113 ) true ) ) ( = tmp511 0 ) ) + ( implies ( and ( not x65 ) ( and x113 true ) ) ( = tmp511 1 ) ) + ( implies ( and x65 ( and ( not x113 ) true ) ) ( = tmp511 1 ) ) + ( implies ( and x65 ( and x113 true ) ) ( = tmp511 2 ) ) + ( implies ( and ( not x443 ) ( and ( not x395 ) true ) ) ( = tmp510 0 ) ) + ( implies ( and ( not x443 ) ( and x395 true ) ) ( = tmp510 1 ) ) + ( implies ( and x443 ( and ( not x395 ) true ) ) ( = tmp510 1 ) ) + ( implies ( and x443 ( and x395 true ) ) ( = tmp510 2 ) ) + ( implies ( and ( not x299 ) ( and ( not x347 ) true ) ) ( = tmp509 0 ) ) + ( implies ( and ( not x299 ) ( and x347 true ) ) ( = tmp509 1 ) ) + ( implies ( and x299 ( and ( not x347 ) true ) ) ( = tmp509 1 ) ) + ( implies ( and x299 ( and x347 true ) ) ( = tmp509 2 ) ) + ( implies ( and ( not x537 ) ( and ( not x489 ) true ) ) ( = tmp508 0 ) ) + ( implies ( and ( not x537 ) ( and x489 true ) ) ( = tmp508 1 ) ) + ( implies ( and x537 ( and ( not x489 ) true ) ) ( = tmp508 1 ) ) + ( implies ( and x537 ( and x489 true ) ) ( = tmp508 2 ) ) + ( implies ( and ( not x207 ) ( and ( not x251 ) true ) ) ( = tmp507 0 ) ) + ( implies ( and ( not x207 ) ( and x251 true ) ) ( = tmp507 1 ) ) + ( implies ( and x207 ( and ( not x251 ) true ) ) ( = tmp507 1 ) ) + ( implies ( and x207 ( and x251 true ) ) ( = tmp507 2 ) ) + ( implies ( and ( not x632 ) ( and ( not x585 ) true ) ) ( = tmp506 0 ) ) + ( implies ( and ( not x632 ) ( and x585 true ) ) ( = tmp506 1 ) ) + ( implies ( and x632 ( and ( not x585 ) true ) ) ( = tmp506 1 ) ) + ( implies ( and x632 ( and x585 true ) ) ( = tmp506 2 ) ) + ( implies ( and ( not x112 ) ( and ( not x159 ) true ) ) ( = tmp505 0 ) ) + ( implies ( and ( not x112 ) ( and x159 true ) ) ( = tmp505 1 ) ) + ( implies ( and x112 ( and ( not x159 ) true ) ) ( = tmp505 1 ) ) + ( implies ( and x112 ( and x159 true ) ) ( = tmp505 2 ) ) + ( implies ( and ( not x727 ) ( and ( not x680 ) true ) ) ( = tmp504 0 ) ) + ( implies ( and ( not x727 ) ( and x680 true ) ) ( = tmp504 1 ) ) + ( implies ( and x727 ( and ( not x680 ) true ) ) ( = tmp504 1 ) ) + ( implies ( and x727 ( and x680 true ) ) ( = tmp504 2 ) ) + ( implies ( and ( not x17 ) ( and ( not x64 ) true ) ) ( = tmp503 0 ) ) + ( implies ( and ( not x17 ) ( and x64 true ) ) ( = tmp503 1 ) ) + ( implies ( and x17 ( and ( not x64 ) true ) ) ( = tmp503 1 ) ) + ( implies ( and x17 ( and x64 true ) ) ( = tmp503 2 ) ) + ( implies ( and ( not x442 ) ( and ( not x394 ) true ) ) ( = tmp502 0 ) ) + ( implies ( and ( not x442 ) ( and x394 true ) ) ( = tmp502 1 ) ) + ( implies ( and x442 ( and ( not x394 ) true ) ) ( = tmp502 1 ) ) + ( implies ( and x442 ( and x394 true ) ) ( = tmp502 2 ) ) + ( implies ( and ( not x298 ) ( and ( not x346 ) true ) ) ( = tmp501 0 ) ) + ( implies ( and ( not x298 ) ( and x346 true ) ) ( = tmp501 1 ) ) + ( implies ( and x298 ( and ( not x346 ) true ) ) ( = tmp501 1 ) ) + ( implies ( and x298 ( and x346 true ) ) ( = tmp501 2 ) ) + ( implies ( and ( not x536 ) ( and ( not x488 ) true ) ) ( = tmp500 0 ) ) + ( implies ( and ( not x536 ) ( and x488 true ) ) ( = tmp500 1 ) ) + ( implies ( and x536 ( and ( not x488 ) true ) ) ( = tmp500 1 ) ) + ( implies ( and x536 ( and x488 true ) ) ( = tmp500 2 ) ) + ( implies ( and ( not x206 ) ( and ( not x250 ) true ) ) ( = tmp499 0 ) ) + ( implies ( and ( not x206 ) ( and x250 true ) ) ( = tmp499 1 ) ) + ( implies ( and x206 ( and ( not x250 ) true ) ) ( = tmp499 1 ) ) + ( implies ( and x206 ( and x250 true ) ) ( = tmp499 2 ) ) + ( implies ( and ( not x631 ) ( and ( not x584 ) true ) ) ( = tmp498 0 ) ) + ( implies ( and ( not x631 ) ( and x584 true ) ) ( = tmp498 1 ) ) + ( implies ( and x631 ( and ( not x584 ) true ) ) ( = tmp498 1 ) ) + ( implies ( and x631 ( and x584 true ) ) ( = tmp498 2 ) ) + ( implies ( and ( not x111 ) ( and ( not x158 ) true ) ) ( = tmp497 0 ) ) + ( implies ( and ( not x111 ) ( and x158 true ) ) ( = tmp497 1 ) ) + ( implies ( and x111 ( and ( not x158 ) true ) ) ( = tmp497 1 ) ) + ( implies ( and x111 ( and x158 true ) ) ( = tmp497 2 ) ) + ( implies ( and ( not x726 ) ( and ( not x679 ) true ) ) ( = tmp496 0 ) ) + ( implies ( and ( not x726 ) ( and x679 true ) ) ( = tmp496 1 ) ) + ( implies ( and x726 ( and ( not x679 ) true ) ) ( = tmp496 1 ) ) + ( implies ( and x726 ( and x679 true ) ) ( = tmp496 2 ) ) + ( implies ( and ( not x16 ) ( and ( not x63 ) true ) ) ( = tmp495 0 ) ) + ( implies ( and ( not x16 ) ( and x63 true ) ) ( = tmp495 1 ) ) + ( implies ( and x16 ( and ( not x63 ) true ) ) ( = tmp495 1 ) ) + ( implies ( and x16 ( and x63 true ) ) ( = tmp495 2 ) ) + ( implies ( and ( not x441 ) ( and ( not x393 ) true ) ) ( = tmp494 0 ) ) + ( implies ( and ( not x441 ) ( and x393 true ) ) ( = tmp494 1 ) ) + ( implies ( and x441 ( and ( not x393 ) true ) ) ( = tmp494 1 ) ) + ( implies ( and x441 ( and x393 true ) ) ( = tmp494 2 ) ) + ( implies ( and ( not x297 ) ( and ( not x345 ) true ) ) ( = tmp493 0 ) ) + ( implies ( and ( not x297 ) ( and x345 true ) ) ( = tmp493 1 ) ) + ( implies ( and x297 ( and ( not x345 ) true ) ) ( = tmp493 1 ) ) + ( implies ( and x297 ( and x345 true ) ) ( = tmp493 2 ) ) + ( implies ( and ( not x535 ) ( and ( not x487 ) true ) ) ( = tmp492 0 ) ) + ( implies ( and ( not x535 ) ( and x487 true ) ) ( = tmp492 1 ) ) + ( implies ( and x535 ( and ( not x487 ) true ) ) ( = tmp492 1 ) ) + ( implies ( and x535 ( and x487 true ) ) ( = tmp492 2 ) ) + ( implies ( and ( not x205 ) ( and ( not x249 ) true ) ) ( = tmp491 0 ) ) + ( implies ( and ( not x205 ) ( and x249 true ) ) ( = tmp491 1 ) ) + ( implies ( and x205 ( and ( not x249 ) true ) ) ( = tmp491 1 ) ) + ( implies ( and x205 ( and x249 true ) ) ( = tmp491 2 ) ) + ( implies ( and ( not x630 ) ( and ( not x583 ) true ) ) ( = tmp490 0 ) ) + ( implies ( and ( not x630 ) ( and x583 true ) ) ( = tmp490 1 ) ) + ( implies ( and x630 ( and ( not x583 ) true ) ) ( = tmp490 1 ) ) + ( implies ( and x630 ( and x583 true ) ) ( = tmp490 2 ) ) + ( implies ( and ( not x110 ) ( and ( not x157 ) true ) ) ( = tmp489 0 ) ) + ( implies ( and ( not x110 ) ( and x157 true ) ) ( = tmp489 1 ) ) + ( implies ( and x110 ( and ( not x157 ) true ) ) ( = tmp489 1 ) ) + ( implies ( and x110 ( and x157 true ) ) ( = tmp489 2 ) ) + ( implies ( and ( not x725 ) ( and ( not x678 ) true ) ) ( = tmp488 0 ) ) + ( implies ( and ( not x725 ) ( and x678 true ) ) ( = tmp488 1 ) ) + ( implies ( and x725 ( and ( not x678 ) true ) ) ( = tmp488 1 ) ) + ( implies ( and x725 ( and x678 true ) ) ( = tmp488 2 ) ) + ( implies ( and ( not x15 ) ( and ( not x62 ) true ) ) ( = tmp487 0 ) ) + ( implies ( and ( not x15 ) ( and x62 true ) ) ( = tmp487 1 ) ) + ( implies ( and x15 ( and ( not x62 ) true ) ) ( = tmp487 1 ) ) + ( implies ( and x15 ( and x62 true ) ) ( = tmp487 2 ) ) + ( implies ( and ( not x486 ) ( and ( not x440 ) true ) ) ( = tmp486 0 ) ) + ( implies ( and ( not x486 ) ( and x440 true ) ) ( = tmp486 1 ) ) + ( implies ( and x486 ( and ( not x440 ) true ) ) ( = tmp486 1 ) ) + ( implies ( and x486 ( and x440 true ) ) ( = tmp486 2 ) ) + ( implies ( and ( not x344 ) ( and ( not x392 ) true ) ) ( = tmp485 0 ) ) + ( implies ( and ( not x344 ) ( and x392 true ) ) ( = tmp485 1 ) ) + ( implies ( and x344 ( and ( not x392 ) true ) ) ( = tmp485 1 ) ) + ( implies ( and x344 ( and x392 true ) ) ( = tmp485 2 ) ) + ( implies ( and ( not x582 ) ( and ( not x534 ) true ) ) ( = tmp484 0 ) ) + ( implies ( and ( not x582 ) ( and x534 true ) ) ( = tmp484 1 ) ) + ( implies ( and x582 ( and ( not x534 ) true ) ) ( = tmp484 1 ) ) + ( implies ( and x582 ( and x534 true ) ) ( = tmp484 2 ) ) + ( implies ( and ( not x204 ) ( and ( not x296 ) true ) ) ( = tmp483 0 ) ) + ( implies ( and ( not x204 ) ( and x296 true ) ) ( = tmp483 1 ) ) + ( implies ( and x204 ( and ( not x296 ) true ) ) ( = tmp483 1 ) ) + ( implies ( and x204 ( and x296 true ) ) ( = tmp483 2 ) ) + ( implies ( and ( not x677 ) ( and ( not x629 ) true ) ) ( = tmp482 0 ) ) + ( implies ( and ( not x677 ) ( and x629 true ) ) ( = tmp482 1 ) ) + ( implies ( and x677 ( and ( not x629 ) true ) ) ( = tmp482 1 ) ) + ( implies ( and x677 ( and x629 true ) ) ( = tmp482 2 ) ) + ( implies ( and ( not x109 ) ( and ( not x156 ) true ) ) ( = tmp481 0 ) ) + ( implies ( and ( not x109 ) ( and x156 true ) ) ( = tmp481 1 ) ) + ( implies ( and x109 ( and ( not x156 ) true ) ) ( = tmp481 1 ) ) + ( implies ( and x109 ( and x156 true ) ) ( = tmp481 2 ) ) + ( implies ( and ( not x764 ) ( and ( not x724 ) true ) ) ( = tmp480 0 ) ) + ( implies ( and ( not x764 ) ( and x724 true ) ) ( = tmp480 1 ) ) + ( implies ( and x764 ( and ( not x724 ) true ) ) ( = tmp480 1 ) ) + ( implies ( and x764 ( and x724 true ) ) ( = tmp480 2 ) ) + ( implies ( and ( not x14 ) ( and ( not x61 ) true ) ) ( = tmp479 0 ) ) + ( implies ( and ( not x14 ) ( and x61 true ) ) ( = tmp479 1 ) ) + ( implies ( and x14 ( and ( not x61 ) true ) ) ( = tmp479 1 ) ) + ( implies ( and x14 ( and x61 true ) ) ( = tmp479 2 ) ) + ( implies ( and ( not x485 ) ( and ( not x439 ) true ) ) ( = tmp478 0 ) ) + ( implies ( and ( not x485 ) ( and x439 true ) ) ( = tmp478 1 ) ) + ( implies ( and x485 ( and ( not x439 ) true ) ) ( = tmp478 1 ) ) + ( implies ( and x485 ( and x439 true ) ) ( = tmp478 2 ) ) + ( implies ( and ( not x343 ) ( and ( not x391 ) true ) ) ( = tmp477 0 ) ) + ( implies ( and ( not x343 ) ( and x391 true ) ) ( = tmp477 1 ) ) + ( implies ( and x343 ( and ( not x391 ) true ) ) ( = tmp477 1 ) ) + ( implies ( and x343 ( and x391 true ) ) ( = tmp477 2 ) ) + ( implies ( and ( not x581 ) ( and ( not x533 ) true ) ) ( = tmp476 0 ) ) + ( implies ( and ( not x581 ) ( and x533 true ) ) ( = tmp476 1 ) ) + ( implies ( and x581 ( and ( not x533 ) true ) ) ( = tmp476 1 ) ) + ( implies ( and x581 ( and x533 true ) ) ( = tmp476 2 ) ) + ( implies ( and ( not x203 ) ( and ( not x295 ) true ) ) ( = tmp475 0 ) ) + ( implies ( and ( not x203 ) ( and x295 true ) ) ( = tmp475 1 ) ) + ( implies ( and x203 ( and ( not x295 ) true ) ) ( = tmp475 1 ) ) + ( implies ( and x203 ( and x295 true ) ) ( = tmp475 2 ) ) + ( implies ( and ( not x676 ) ( and ( not x628 ) true ) ) ( = tmp474 0 ) ) + ( implies ( and ( not x676 ) ( and x628 true ) ) ( = tmp474 1 ) ) + ( implies ( and x676 ( and ( not x628 ) true ) ) ( = tmp474 1 ) ) + ( implies ( and x676 ( and x628 true ) ) ( = tmp474 2 ) ) + ( implies ( and ( not x108 ) ( and ( not x155 ) true ) ) ( = tmp473 0 ) ) + ( implies ( and ( not x108 ) ( and x155 true ) ) ( = tmp473 1 ) ) + ( implies ( and x108 ( and ( not x155 ) true ) ) ( = tmp473 1 ) ) + ( implies ( and x108 ( and x155 true ) ) ( = tmp473 2 ) ) + ( implies ( and ( not x763 ) ( and ( not x723 ) true ) ) ( = tmp472 0 ) ) + ( implies ( and ( not x763 ) ( and x723 true ) ) ( = tmp472 1 ) ) + ( implies ( and x763 ( and ( not x723 ) true ) ) ( = tmp472 1 ) ) + ( implies ( and x763 ( and x723 true ) ) ( = tmp472 2 ) ) + ( implies ( and ( not x13 ) ( and ( not x60 ) true ) ) ( = tmp471 0 ) ) + ( implies ( and ( not x13 ) ( and x60 true ) ) ( = tmp471 1 ) ) + ( implies ( and x13 ( and ( not x60 ) true ) ) ( = tmp471 1 ) ) + ( implies ( and x13 ( and x60 true ) ) ( = tmp471 2 ) ) + ( implies ( and ( not x484 ) ( and ( not x438 ) true ) ) ( = tmp470 0 ) ) + ( implies ( and ( not x484 ) ( and x438 true ) ) ( = tmp470 1 ) ) + ( implies ( and x484 ( and ( not x438 ) true ) ) ( = tmp470 1 ) ) + ( implies ( and x484 ( and x438 true ) ) ( = tmp470 2 ) ) + ( implies ( and ( not x342 ) ( and ( not x390 ) true ) ) ( = tmp469 0 ) ) + ( implies ( and ( not x342 ) ( and x390 true ) ) ( = tmp469 1 ) ) + ( implies ( and x342 ( and ( not x390 ) true ) ) ( = tmp469 1 ) ) + ( implies ( and x342 ( and x390 true ) ) ( = tmp469 2 ) ) + ( implies ( and ( not x580 ) ( and ( not x532 ) true ) ) ( = tmp468 0 ) ) + ( implies ( and ( not x580 ) ( and x532 true ) ) ( = tmp468 1 ) ) + ( implies ( and x580 ( and ( not x532 ) true ) ) ( = tmp468 1 ) ) + ( implies ( and x580 ( and x532 true ) ) ( = tmp468 2 ) ) + ( implies ( and ( not x202 ) ( and ( not x294 ) true ) ) ( = tmp467 0 ) ) + ( implies ( and ( not x202 ) ( and x294 true ) ) ( = tmp467 1 ) ) + ( implies ( and x202 ( and ( not x294 ) true ) ) ( = tmp467 1 ) ) + ( implies ( and x202 ( and x294 true ) ) ( = tmp467 2 ) ) + ( implies ( and ( not x675 ) ( and ( not x627 ) true ) ) ( = tmp466 0 ) ) + ( implies ( and ( not x675 ) ( and x627 true ) ) ( = tmp466 1 ) ) + ( implies ( and x675 ( and ( not x627 ) true ) ) ( = tmp466 1 ) ) + ( implies ( and x675 ( and x627 true ) ) ( = tmp466 2 ) ) + ( implies ( and ( not x107 ) ( and ( not x154 ) true ) ) ( = tmp465 0 ) ) + ( implies ( and ( not x107 ) ( and x154 true ) ) ( = tmp465 1 ) ) + ( implies ( and x107 ( and ( not x154 ) true ) ) ( = tmp465 1 ) ) + ( implies ( and x107 ( and x154 true ) ) ( = tmp465 2 ) ) + ( implies ( and ( not x762 ) ( and ( not x722 ) true ) ) ( = tmp464 0 ) ) + ( implies ( and ( not x762 ) ( and x722 true ) ) ( = tmp464 1 ) ) + ( implies ( and x762 ( and ( not x722 ) true ) ) ( = tmp464 1 ) ) + ( implies ( and x762 ( and x722 true ) ) ( = tmp464 2 ) ) + ( implies ( and ( not x12 ) ( and ( not x59 ) true ) ) ( = tmp463 0 ) ) + ( implies ( and ( not x12 ) ( and x59 true ) ) ( = tmp463 1 ) ) + ( implies ( and x12 ( and ( not x59 ) true ) ) ( = tmp463 1 ) ) + ( implies ( and x12 ( and x59 true ) ) ( = tmp463 2 ) ) + ( implies ( and ( not x483 ) ( and ( not x437 ) true ) ) ( = tmp462 0 ) ) + ( implies ( and ( not x483 ) ( and x437 true ) ) ( = tmp462 1 ) ) + ( implies ( and x483 ( and ( not x437 ) true ) ) ( = tmp462 1 ) ) + ( implies ( and x483 ( and x437 true ) ) ( = tmp462 2 ) ) + ( implies ( and ( not x341 ) ( and ( not x389 ) true ) ) ( = tmp461 0 ) ) + ( implies ( and ( not x341 ) ( and x389 true ) ) ( = tmp461 1 ) ) + ( implies ( and x341 ( and ( not x389 ) true ) ) ( = tmp461 1 ) ) + ( implies ( and x341 ( and x389 true ) ) ( = tmp461 2 ) ) + ( implies ( and ( not x579 ) ( and ( not x531 ) true ) ) ( = tmp460 0 ) ) + ( implies ( and ( not x579 ) ( and x531 true ) ) ( = tmp460 1 ) ) + ( implies ( and x579 ( and ( not x531 ) true ) ) ( = tmp460 1 ) ) + ( implies ( and x579 ( and x531 true ) ) ( = tmp460 2 ) ) + ( implies ( and ( not x201 ) ( and ( not x293 ) true ) ) ( = tmp459 0 ) ) + ( implies ( and ( not x201 ) ( and x293 true ) ) ( = tmp459 1 ) ) + ( implies ( and x201 ( and ( not x293 ) true ) ) ( = tmp459 1 ) ) + ( implies ( and x201 ( and x293 true ) ) ( = tmp459 2 ) ) + ( implies ( and ( not x674 ) ( and ( not x626 ) true ) ) ( = tmp458 0 ) ) + ( implies ( and ( not x674 ) ( and x626 true ) ) ( = tmp458 1 ) ) + ( implies ( and x674 ( and ( not x626 ) true ) ) ( = tmp458 1 ) ) + ( implies ( and x674 ( and x626 true ) ) ( = tmp458 2 ) ) + ( implies ( and ( not x106 ) ( and ( not x153 ) true ) ) ( = tmp457 0 ) ) + ( implies ( and ( not x106 ) ( and x153 true ) ) ( = tmp457 1 ) ) + ( implies ( and x106 ( and ( not x153 ) true ) ) ( = tmp457 1 ) ) + ( implies ( and x106 ( and x153 true ) ) ( = tmp457 2 ) ) + ( implies ( and ( not x761 ) ( and ( not x721 ) true ) ) ( = tmp456 0 ) ) + ( implies ( and ( not x761 ) ( and x721 true ) ) ( = tmp456 1 ) ) + ( implies ( and x761 ( and ( not x721 ) true ) ) ( = tmp456 1 ) ) + ( implies ( and x761 ( and x721 true ) ) ( = tmp456 2 ) ) + ( implies ( and ( not x11 ) ( and ( not x58 ) true ) ) ( = tmp455 0 ) ) + ( implies ( and ( not x11 ) ( and x58 true ) ) ( = tmp455 1 ) ) + ( implies ( and x11 ( and ( not x58 ) true ) ) ( = tmp455 1 ) ) + ( implies ( and x11 ( and x58 true ) ) ( = tmp455 2 ) ) + ( implies ( and ( not x436 ) ( and ( not x388 ) true ) ) ( = tmp454 0 ) ) + ( implies ( and ( not x436 ) ( and x388 true ) ) ( = tmp454 1 ) ) + ( implies ( and x436 ( and ( not x388 ) true ) ) ( = tmp454 1 ) ) + ( implies ( and x436 ( and x388 true ) ) ( = tmp454 2 ) ) + ( implies ( and ( not x292 ) ( and ( not x340 ) true ) ) ( = tmp453 0 ) ) + ( implies ( and ( not x292 ) ( and x340 true ) ) ( = tmp453 1 ) ) + ( implies ( and x292 ( and ( not x340 ) true ) ) ( = tmp453 1 ) ) + ( implies ( and x292 ( and x340 true ) ) ( = tmp453 2 ) ) + ( implies ( and ( not x530 ) ( and ( not x482 ) true ) ) ( = tmp452 0 ) ) + ( implies ( and ( not x530 ) ( and x482 true ) ) ( = tmp452 1 ) ) + ( implies ( and x530 ( and ( not x482 ) true ) ) ( = tmp452 1 ) ) + ( implies ( and x530 ( and x482 true ) ) ( = tmp452 2 ) ) + ( implies ( and ( not x200 ) ( and ( not x248 ) true ) ) ( = tmp451 0 ) ) + ( implies ( and ( not x200 ) ( and x248 true ) ) ( = tmp451 1 ) ) + ( implies ( and x200 ( and ( not x248 ) true ) ) ( = tmp451 1 ) ) + ( implies ( and x200 ( and x248 true ) ) ( = tmp451 2 ) ) + ( implies ( and ( not x625 ) ( and ( not x578 ) true ) ) ( = tmp450 0 ) ) + ( implies ( and ( not x625 ) ( and x578 true ) ) ( = tmp450 1 ) ) + ( implies ( and x625 ( and ( not x578 ) true ) ) ( = tmp450 1 ) ) + ( implies ( and x625 ( and x578 true ) ) ( = tmp450 2 ) ) + ( implies ( and ( not x105 ) ( and ( not x152 ) true ) ) ( = tmp449 0 ) ) + ( implies ( and ( not x105 ) ( and x152 true ) ) ( = tmp449 1 ) ) + ( implies ( and x105 ( and ( not x152 ) true ) ) ( = tmp449 1 ) ) + ( implies ( and x105 ( and x152 true ) ) ( = tmp449 2 ) ) + ( implies ( and ( not x720 ) ( and ( not x673 ) true ) ) ( = tmp448 0 ) ) + ( implies ( and ( not x720 ) ( and x673 true ) ) ( = tmp448 1 ) ) + ( implies ( and x720 ( and ( not x673 ) true ) ) ( = tmp448 1 ) ) + ( implies ( and x720 ( and x673 true ) ) ( = tmp448 2 ) ) + ( implies ( and ( not x10 ) ( and ( not x57 ) true ) ) ( = tmp447 0 ) ) + ( implies ( and ( not x10 ) ( and x57 true ) ) ( = tmp447 1 ) ) + ( implies ( and x10 ( and ( not x57 ) true ) ) ( = tmp447 1 ) ) + ( implies ( and x10 ( and x57 true ) ) ( = tmp447 2 ) ) + ( implies ( and ( not x435 ) ( and ( not x387 ) true ) ) ( = tmp446 0 ) ) + ( implies ( and ( not x435 ) ( and x387 true ) ) ( = tmp446 1 ) ) + ( implies ( and x435 ( and ( not x387 ) true ) ) ( = tmp446 1 ) ) + ( implies ( and x435 ( and x387 true ) ) ( = tmp446 2 ) ) + ( implies ( and ( not x291 ) ( and ( not x339 ) true ) ) ( = tmp445 0 ) ) + ( implies ( and ( not x291 ) ( and x339 true ) ) ( = tmp445 1 ) ) + ( implies ( and x291 ( and ( not x339 ) true ) ) ( = tmp445 1 ) ) + ( implies ( and x291 ( and x339 true ) ) ( = tmp445 2 ) ) + ( implies ( and ( not x529 ) ( and ( not x481 ) true ) ) ( = tmp444 0 ) ) + ( implies ( and ( not x529 ) ( and x481 true ) ) ( = tmp444 1 ) ) + ( implies ( and x529 ( and ( not x481 ) true ) ) ( = tmp444 1 ) ) + ( implies ( and x529 ( and x481 true ) ) ( = tmp444 2 ) ) + ( implies ( and ( not x199 ) ( and ( not x247 ) true ) ) ( = tmp443 0 ) ) + ( implies ( and ( not x199 ) ( and x247 true ) ) ( = tmp443 1 ) ) + ( implies ( and x199 ( and ( not x247 ) true ) ) ( = tmp443 1 ) ) + ( implies ( and x199 ( and x247 true ) ) ( = tmp443 2 ) ) + ( implies ( and ( not x624 ) ( and ( not x577 ) true ) ) ( = tmp442 0 ) ) + ( implies ( and ( not x624 ) ( and x577 true ) ) ( = tmp442 1 ) ) + ( implies ( and x624 ( and ( not x577 ) true ) ) ( = tmp442 1 ) ) + ( implies ( and x624 ( and x577 true ) ) ( = tmp442 2 ) ) + ( implies ( and ( not x104 ) ( and ( not x151 ) true ) ) ( = tmp441 0 ) ) + ( implies ( and ( not x104 ) ( and x151 true ) ) ( = tmp441 1 ) ) + ( implies ( and x104 ( and ( not x151 ) true ) ) ( = tmp441 1 ) ) + ( implies ( and x104 ( and x151 true ) ) ( = tmp441 2 ) ) + ( implies ( and ( not x719 ) ( and ( not x672 ) true ) ) ( = tmp440 0 ) ) + ( implies ( and ( not x719 ) ( and x672 true ) ) ( = tmp440 1 ) ) + ( implies ( and x719 ( and ( not x672 ) true ) ) ( = tmp440 1 ) ) + ( implies ( and x719 ( and x672 true ) ) ( = tmp440 2 ) ) + ( implies ( and ( not x9 ) ( and ( not x56 ) true ) ) ( = tmp439 0 ) ) + ( implies ( and ( not x9 ) ( and x56 true ) ) ( = tmp439 1 ) ) + ( implies ( and x9 ( and ( not x56 ) true ) ) ( = tmp439 1 ) ) + ( implies ( and x9 ( and x56 true ) ) ( = tmp439 2 ) ) + ( implies ( and ( not x434 ) ( and ( not x386 ) true ) ) ( = tmp438 0 ) ) + ( implies ( and ( not x434 ) ( and x386 true ) ) ( = tmp438 1 ) ) + ( implies ( and x434 ( and ( not x386 ) true ) ) ( = tmp438 1 ) ) + ( implies ( and x434 ( and x386 true ) ) ( = tmp438 2 ) ) + ( implies ( and ( not x290 ) ( and ( not x338 ) true ) ) ( = tmp437 0 ) ) + ( implies ( and ( not x290 ) ( and x338 true ) ) ( = tmp437 1 ) ) + ( implies ( and x290 ( and ( not x338 ) true ) ) ( = tmp437 1 ) ) + ( implies ( and x290 ( and x338 true ) ) ( = tmp437 2 ) ) + ( implies ( and ( not x528 ) ( and ( not x480 ) true ) ) ( = tmp436 0 ) ) + ( implies ( and ( not x528 ) ( and x480 true ) ) ( = tmp436 1 ) ) + ( implies ( and x528 ( and ( not x480 ) true ) ) ( = tmp436 1 ) ) + ( implies ( and x528 ( and x480 true ) ) ( = tmp436 2 ) ) + ( implies ( and ( not x198 ) ( and ( not x246 ) true ) ) ( = tmp435 0 ) ) + ( implies ( and ( not x198 ) ( and x246 true ) ) ( = tmp435 1 ) ) + ( implies ( and x198 ( and ( not x246 ) true ) ) ( = tmp435 1 ) ) + ( implies ( and x198 ( and x246 true ) ) ( = tmp435 2 ) ) + ( implies ( and ( not x623 ) ( and ( not x576 ) true ) ) ( = tmp434 0 ) ) + ( implies ( and ( not x623 ) ( and x576 true ) ) ( = tmp434 1 ) ) + ( implies ( and x623 ( and ( not x576 ) true ) ) ( = tmp434 1 ) ) + ( implies ( and x623 ( and x576 true ) ) ( = tmp434 2 ) ) + ( implies ( and ( not x103 ) ( and ( not x150 ) true ) ) ( = tmp433 0 ) ) + ( implies ( and ( not x103 ) ( and x150 true ) ) ( = tmp433 1 ) ) + ( implies ( and x103 ( and ( not x150 ) true ) ) ( = tmp433 1 ) ) + ( implies ( and x103 ( and x150 true ) ) ( = tmp433 2 ) ) + ( implies ( and ( not x718 ) ( and ( not x671 ) true ) ) ( = tmp432 0 ) ) + ( implies ( and ( not x718 ) ( and x671 true ) ) ( = tmp432 1 ) ) + ( implies ( and x718 ( and ( not x671 ) true ) ) ( = tmp432 1 ) ) + ( implies ( and x718 ( and x671 true ) ) ( = tmp432 2 ) ) + ( implies ( and ( not x8 ) ( and ( not x55 ) true ) ) ( = tmp431 0 ) ) + ( implies ( and ( not x8 ) ( and x55 true ) ) ( = tmp431 1 ) ) + ( implies ( and x8 ( and ( not x55 ) true ) ) ( = tmp431 1 ) ) + ( implies ( and x8 ( and x55 true ) ) ( = tmp431 2 ) ) + ( implies ( and ( not x433 ) ( and ( not x385 ) true ) ) ( = tmp430 0 ) ) + ( implies ( and ( not x433 ) ( and x385 true ) ) ( = tmp430 1 ) ) + ( implies ( and x433 ( and ( not x385 ) true ) ) ( = tmp430 1 ) ) + ( implies ( and x433 ( and x385 true ) ) ( = tmp430 2 ) ) + ( implies ( and ( not x289 ) ( and ( not x337 ) true ) ) ( = tmp429 0 ) ) + ( implies ( and ( not x289 ) ( and x337 true ) ) ( = tmp429 1 ) ) + ( implies ( and x289 ( and ( not x337 ) true ) ) ( = tmp429 1 ) ) + ( implies ( and x289 ( and x337 true ) ) ( = tmp429 2 ) ) + ( implies ( and ( not x527 ) ( and ( not x479 ) true ) ) ( = tmp428 0 ) ) + ( implies ( and ( not x527 ) ( and x479 true ) ) ( = tmp428 1 ) ) + ( implies ( and x527 ( and ( not x479 ) true ) ) ( = tmp428 1 ) ) + ( implies ( and x527 ( and x479 true ) ) ( = tmp428 2 ) ) + ( implies ( and ( not x197 ) ( and ( not x245 ) true ) ) ( = tmp427 0 ) ) + ( implies ( and ( not x197 ) ( and x245 true ) ) ( = tmp427 1 ) ) + ( implies ( and x197 ( and ( not x245 ) true ) ) ( = tmp427 1 ) ) + ( implies ( and x197 ( and x245 true ) ) ( = tmp427 2 ) ) + ( implies ( and ( not x622 ) ( and ( not x575 ) true ) ) ( = tmp426 0 ) ) + ( implies ( and ( not x622 ) ( and x575 true ) ) ( = tmp426 1 ) ) + ( implies ( and x622 ( and ( not x575 ) true ) ) ( = tmp426 1 ) ) + ( implies ( and x622 ( and x575 true ) ) ( = tmp426 2 ) ) + ( implies ( and ( not x102 ) ( and ( not x149 ) true ) ) ( = tmp425 0 ) ) + ( implies ( and ( not x102 ) ( and x149 true ) ) ( = tmp425 1 ) ) + ( implies ( and x102 ( and ( not x149 ) true ) ) ( = tmp425 1 ) ) + ( implies ( and x102 ( and x149 true ) ) ( = tmp425 2 ) ) + ( implies ( and ( not x717 ) ( and ( not x670 ) true ) ) ( = tmp424 0 ) ) + ( implies ( and ( not x717 ) ( and x670 true ) ) ( = tmp424 1 ) ) + ( implies ( and x717 ( and ( not x670 ) true ) ) ( = tmp424 1 ) ) + ( implies ( and x717 ( and x670 true ) ) ( = tmp424 2 ) ) + ( implies ( and ( not x7 ) ( and ( not x54 ) true ) ) ( = tmp423 0 ) ) + ( implies ( and ( not x7 ) ( and x54 true ) ) ( = tmp423 1 ) ) + ( implies ( and x7 ( and ( not x54 ) true ) ) ( = tmp423 1 ) ) + ( implies ( and x7 ( and x54 true ) ) ( = tmp423 2 ) ) + ( implies ( and ( not x432 ) ( and ( not x384 ) true ) ) ( = tmp422 0 ) ) + ( implies ( and ( not x432 ) ( and x384 true ) ) ( = tmp422 1 ) ) + ( implies ( and x432 ( and ( not x384 ) true ) ) ( = tmp422 1 ) ) + ( implies ( and x432 ( and x384 true ) ) ( = tmp422 2 ) ) + ( implies ( and ( not x288 ) ( and ( not x336 ) true ) ) ( = tmp421 0 ) ) + ( implies ( and ( not x288 ) ( and x336 true ) ) ( = tmp421 1 ) ) + ( implies ( and x288 ( and ( not x336 ) true ) ) ( = tmp421 1 ) ) + ( implies ( and x288 ( and x336 true ) ) ( = tmp421 2 ) ) + ( implies ( and ( not x526 ) ( and ( not x478 ) true ) ) ( = tmp420 0 ) ) + ( implies ( and ( not x526 ) ( and x478 true ) ) ( = tmp420 1 ) ) + ( implies ( and x526 ( and ( not x478 ) true ) ) ( = tmp420 1 ) ) + ( implies ( and x526 ( and x478 true ) ) ( = tmp420 2 ) ) + ( implies ( and ( not x196 ) ( and ( not x244 ) true ) ) ( = tmp419 0 ) ) + ( implies ( and ( not x196 ) ( and x244 true ) ) ( = tmp419 1 ) ) + ( implies ( and x196 ( and ( not x244 ) true ) ) ( = tmp419 1 ) ) + ( implies ( and x196 ( and x244 true ) ) ( = tmp419 2 ) ) + ( implies ( and ( not x621 ) ( and ( not x574 ) true ) ) ( = tmp418 0 ) ) + ( implies ( and ( not x621 ) ( and x574 true ) ) ( = tmp418 1 ) ) + ( implies ( and x621 ( and ( not x574 ) true ) ) ( = tmp418 1 ) ) + ( implies ( and x621 ( and x574 true ) ) ( = tmp418 2 ) ) + ( implies ( and ( not x101 ) ( and ( not x148 ) true ) ) ( = tmp417 0 ) ) + ( implies ( and ( not x101 ) ( and x148 true ) ) ( = tmp417 1 ) ) + ( implies ( and x101 ( and ( not x148 ) true ) ) ( = tmp417 1 ) ) + ( implies ( and x101 ( and x148 true ) ) ( = tmp417 2 ) ) + ( implies ( and ( not x716 ) ( and ( not x669 ) true ) ) ( = tmp416 0 ) ) + ( implies ( and ( not x716 ) ( and x669 true ) ) ( = tmp416 1 ) ) + ( implies ( and x716 ( and ( not x669 ) true ) ) ( = tmp416 1 ) ) + ( implies ( and x716 ( and x669 true ) ) ( = tmp416 2 ) ) + ( implies ( and ( not x6 ) ( and ( not x53 ) true ) ) ( = tmp415 0 ) ) + ( implies ( and ( not x6 ) ( and x53 true ) ) ( = tmp415 1 ) ) + ( implies ( and x6 ( and ( not x53 ) true ) ) ( = tmp415 1 ) ) + ( implies ( and x6 ( and x53 true ) ) ( = tmp415 2 ) ) + ( implies ( and ( not x431 ) ( and ( not x383 ) true ) ) ( = tmp414 0 ) ) + ( implies ( and ( not x431 ) ( and x383 true ) ) ( = tmp414 1 ) ) + ( implies ( and x431 ( and ( not x383 ) true ) ) ( = tmp414 1 ) ) + ( implies ( and x431 ( and x383 true ) ) ( = tmp414 2 ) ) + ( implies ( and ( not x287 ) ( and ( not x335 ) true ) ) ( = tmp413 0 ) ) + ( implies ( and ( not x287 ) ( and x335 true ) ) ( = tmp413 1 ) ) + ( implies ( and x287 ( and ( not x335 ) true ) ) ( = tmp413 1 ) ) + ( implies ( and x287 ( and x335 true ) ) ( = tmp413 2 ) ) + ( implies ( and ( not x525 ) ( and ( not x477 ) true ) ) ( = tmp412 0 ) ) + ( implies ( and ( not x525 ) ( and x477 true ) ) ( = tmp412 1 ) ) + ( implies ( and x525 ( and ( not x477 ) true ) ) ( = tmp412 1 ) ) + ( implies ( and x525 ( and x477 true ) ) ( = tmp412 2 ) ) + ( implies ( and ( not x195 ) ( and ( not x243 ) true ) ) ( = tmp411 0 ) ) + ( implies ( and ( not x195 ) ( and x243 true ) ) ( = tmp411 1 ) ) + ( implies ( and x195 ( and ( not x243 ) true ) ) ( = tmp411 1 ) ) + ( implies ( and x195 ( and x243 true ) ) ( = tmp411 2 ) ) + ( implies ( and ( not x620 ) ( and ( not x573 ) true ) ) ( = tmp410 0 ) ) + ( implies ( and ( not x620 ) ( and x573 true ) ) ( = tmp410 1 ) ) + ( implies ( and x620 ( and ( not x573 ) true ) ) ( = tmp410 1 ) ) + ( implies ( and x620 ( and x573 true ) ) ( = tmp410 2 ) ) + ( implies ( and ( not x100 ) ( and ( not x147 ) true ) ) ( = tmp409 0 ) ) + ( implies ( and ( not x100 ) ( and x147 true ) ) ( = tmp409 1 ) ) + ( implies ( and x100 ( and ( not x147 ) true ) ) ( = tmp409 1 ) ) + ( implies ( and x100 ( and x147 true ) ) ( = tmp409 2 ) ) + ( implies ( and ( not x715 ) ( and ( not x668 ) true ) ) ( = tmp408 0 ) ) + ( implies ( and ( not x715 ) ( and x668 true ) ) ( = tmp408 1 ) ) + ( implies ( and x715 ( and ( not x668 ) true ) ) ( = tmp408 1 ) ) + ( implies ( and x715 ( and x668 true ) ) ( = tmp408 2 ) ) + ( implies ( and ( not x5 ) ( and ( not x52 ) true ) ) ( = tmp407 0 ) ) + ( implies ( and ( not x5 ) ( and x52 true ) ) ( = tmp407 1 ) ) + ( implies ( and x5 ( and ( not x52 ) true ) ) ( = tmp407 1 ) ) + ( implies ( and x5 ( and x52 true ) ) ( = tmp407 2 ) ) + ( implies ( and ( not x430 ) ( and ( not x382 ) true ) ) ( = tmp406 0 ) ) + ( implies ( and ( not x430 ) ( and x382 true ) ) ( = tmp406 1 ) ) + ( implies ( and x430 ( and ( not x382 ) true ) ) ( = tmp406 1 ) ) + ( implies ( and x430 ( and x382 true ) ) ( = tmp406 2 ) ) + ( implies ( and ( not x286 ) ( and ( not x334 ) true ) ) ( = tmp405 0 ) ) + ( implies ( and ( not x286 ) ( and x334 true ) ) ( = tmp405 1 ) ) + ( implies ( and x286 ( and ( not x334 ) true ) ) ( = tmp405 1 ) ) + ( implies ( and x286 ( and x334 true ) ) ( = tmp405 2 ) ) + ( implies ( and ( not x524 ) ( and ( not x476 ) true ) ) ( = tmp404 0 ) ) + ( implies ( and ( not x524 ) ( and x476 true ) ) ( = tmp404 1 ) ) + ( implies ( and x524 ( and ( not x476 ) true ) ) ( = tmp404 1 ) ) + ( implies ( and x524 ( and x476 true ) ) ( = tmp404 2 ) ) + ( implies ( and ( not x194 ) ( and ( not x242 ) true ) ) ( = tmp403 0 ) ) + ( implies ( and ( not x194 ) ( and x242 true ) ) ( = tmp403 1 ) ) + ( implies ( and x194 ( and ( not x242 ) true ) ) ( = tmp403 1 ) ) + ( implies ( and x194 ( and x242 true ) ) ( = tmp403 2 ) ) + ( implies ( and ( not x619 ) ( and ( not x572 ) true ) ) ( = tmp402 0 ) ) + ( implies ( and ( not x619 ) ( and x572 true ) ) ( = tmp402 1 ) ) + ( implies ( and x619 ( and ( not x572 ) true ) ) ( = tmp402 1 ) ) + ( implies ( and x619 ( and x572 true ) ) ( = tmp402 2 ) ) + ( implies ( and ( not x99 ) ( and ( not x146 ) true ) ) ( = tmp401 0 ) ) + ( implies ( and ( not x99 ) ( and x146 true ) ) ( = tmp401 1 ) ) + ( implies ( and x99 ( and ( not x146 ) true ) ) ( = tmp401 1 ) ) + ( implies ( and x99 ( and x146 true ) ) ( = tmp401 2 ) ) + ( implies ( and ( not x714 ) ( and ( not x667 ) true ) ) ( = tmp400 0 ) ) + ( implies ( and ( not x714 ) ( and x667 true ) ) ( = tmp400 1 ) ) + ( implies ( and x714 ( and ( not x667 ) true ) ) ( = tmp400 1 ) ) + ( implies ( and x714 ( and x667 true ) ) ( = tmp400 2 ) ) + ( implies ( and ( not x4 ) ( and ( not x51 ) true ) ) ( = tmp399 0 ) ) + ( implies ( and ( not x4 ) ( and x51 true ) ) ( = tmp399 1 ) ) + ( implies ( and x4 ( and ( not x51 ) true ) ) ( = tmp399 1 ) ) + ( implies ( and x4 ( and x51 true ) ) ( = tmp399 2 ) ) + ( implies ( and ( not x429 ) ( and ( not x381 ) true ) ) ( = tmp398 0 ) ) + ( implies ( and ( not x429 ) ( and x381 true ) ) ( = tmp398 1 ) ) + ( implies ( and x429 ( and ( not x381 ) true ) ) ( = tmp398 1 ) ) + ( implies ( and x429 ( and x381 true ) ) ( = tmp398 2 ) ) + ( implies ( and ( not x285 ) ( and ( not x333 ) true ) ) ( = tmp397 0 ) ) + ( implies ( and ( not x285 ) ( and x333 true ) ) ( = tmp397 1 ) ) + ( implies ( and x285 ( and ( not x333 ) true ) ) ( = tmp397 1 ) ) + ( implies ( and x285 ( and x333 true ) ) ( = tmp397 2 ) ) + ( implies ( and ( not x523 ) ( and ( not x475 ) true ) ) ( = tmp396 0 ) ) + ( implies ( and ( not x523 ) ( and x475 true ) ) ( = tmp396 1 ) ) + ( implies ( and x523 ( and ( not x475 ) true ) ) ( = tmp396 1 ) ) + ( implies ( and x523 ( and x475 true ) ) ( = tmp396 2 ) ) + ( implies ( and ( not x193 ) ( and ( not x241 ) true ) ) ( = tmp395 0 ) ) + ( implies ( and ( not x193 ) ( and x241 true ) ) ( = tmp395 1 ) ) + ( implies ( and x193 ( and ( not x241 ) true ) ) ( = tmp395 1 ) ) + ( implies ( and x193 ( and x241 true ) ) ( = tmp395 2 ) ) + ( implies ( and ( not x618 ) ( and ( not x571 ) true ) ) ( = tmp394 0 ) ) + ( implies ( and ( not x618 ) ( and x571 true ) ) ( = tmp394 1 ) ) + ( implies ( and x618 ( and ( not x571 ) true ) ) ( = tmp394 1 ) ) + ( implies ( and x618 ( and x571 true ) ) ( = tmp394 2 ) ) + ( implies ( and ( not x98 ) ( and ( not x145 ) true ) ) ( = tmp393 0 ) ) + ( implies ( and ( not x98 ) ( and x145 true ) ) ( = tmp393 1 ) ) + ( implies ( and x98 ( and ( not x145 ) true ) ) ( = tmp393 1 ) ) + ( implies ( and x98 ( and x145 true ) ) ( = tmp393 2 ) ) + ( implies ( and ( not x713 ) ( and ( not x666 ) true ) ) ( = tmp392 0 ) ) + ( implies ( and ( not x713 ) ( and x666 true ) ) ( = tmp392 1 ) ) + ( implies ( and x713 ( and ( not x666 ) true ) ) ( = tmp392 1 ) ) + ( implies ( and x713 ( and x666 true ) ) ( = tmp392 2 ) ) + ( implies ( and ( not x3 ) ( and ( not x50 ) true ) ) ( = tmp391 0 ) ) + ( implies ( and ( not x3 ) ( and x50 true ) ) ( = tmp391 1 ) ) + ( implies ( and x3 ( and ( not x50 ) true ) ) ( = tmp391 1 ) ) + ( implies ( and x3 ( and x50 true ) ) ( = tmp391 2 ) ) + ( implies ( and ( not x428 ) ( and ( not x380 ) true ) ) ( = tmp390 0 ) ) + ( implies ( and ( not x428 ) ( and x380 true ) ) ( = tmp390 1 ) ) + ( implies ( and x428 ( and ( not x380 ) true ) ) ( = tmp390 1 ) ) + ( implies ( and x428 ( and x380 true ) ) ( = tmp390 2 ) ) + ( implies ( and ( not x284 ) ( and ( not x332 ) true ) ) ( = tmp389 0 ) ) + ( implies ( and ( not x284 ) ( and x332 true ) ) ( = tmp389 1 ) ) + ( implies ( and x284 ( and ( not x332 ) true ) ) ( = tmp389 1 ) ) + ( implies ( and x284 ( and x332 true ) ) ( = tmp389 2 ) ) + ( implies ( and ( not x570 ) ( and ( not x522 ) true ) ) ( = tmp388 0 ) ) + ( implies ( and ( not x570 ) ( and x522 true ) ) ( = tmp388 1 ) ) + ( implies ( and x570 ( and ( not x522 ) true ) ) ( = tmp388 1 ) ) + ( implies ( and x570 ( and x522 true ) ) ( = tmp388 2 ) ) + ( implies ( and ( not x192 ) ( and ( not x240 ) true ) ) ( = tmp387 0 ) ) + ( implies ( and ( not x192 ) ( and x240 true ) ) ( = tmp387 1 ) ) + ( implies ( and x192 ( and ( not x240 ) true ) ) ( = tmp387 1 ) ) + ( implies ( and x192 ( and x240 true ) ) ( = tmp387 2 ) ) + ( implies ( and ( not x665 ) ( and ( not x617 ) true ) ) ( = tmp386 0 ) ) + ( implies ( and ( not x665 ) ( and x617 true ) ) ( = tmp386 1 ) ) + ( implies ( and x665 ( and ( not x617 ) true ) ) ( = tmp386 1 ) ) + ( implies ( and x665 ( and x617 true ) ) ( = tmp386 2 ) ) + ( implies ( and ( not x97 ) ( and ( not x144 ) true ) ) ( = tmp385 0 ) ) + ( implies ( and ( not x97 ) ( and x144 true ) ) ( = tmp385 1 ) ) + ( implies ( and x97 ( and ( not x144 ) true ) ) ( = tmp385 1 ) ) + ( implies ( and x97 ( and x144 true ) ) ( = tmp385 2 ) ) + ( implies ( and ( not x760 ) ( and ( not x712 ) true ) ) ( = tmp384 0 ) ) + ( implies ( and ( not x760 ) ( and x712 true ) ) ( = tmp384 1 ) ) + ( implies ( and x760 ( and ( not x712 ) true ) ) ( = tmp384 1 ) ) + ( implies ( and x760 ( and x712 true ) ) ( = tmp384 2 ) ) + ( implies ( and ( not x2 ) ( and ( not x49 ) true ) ) ( = tmp383 0 ) ) + ( implies ( and ( not x2 ) ( and x49 true ) ) ( = tmp383 1 ) ) + ( implies ( and x2 ( and ( not x49 ) true ) ) ( = tmp383 1 ) ) + ( implies ( and x2 ( and x49 true ) ) ( = tmp383 2 ) ) + ( implies ( and ( not x737 ) ( and ( not x736 ) true ) ) ( = tmp382 0 ) ) + ( implies ( and ( not x737 ) ( and x736 true ) ) ( = tmp382 6 ) ) + ( implies ( and x737 ( and ( not x736 ) true ) ) ( = tmp382 6 ) ) + ( implies ( and x737 ( and x736 true ) ) ( = tmp382 12 ) ) + ( implies ( and ( not x734 ) ( and ( not x735 ) true ) ) ( = tmp381 0 ) ) + ( implies ( and ( not x734 ) ( and x735 true ) ) ( = tmp381 4 ) ) + ( implies ( and x734 ( and ( not x735 ) true ) ) ( = tmp381 4 ) ) + ( implies ( and x734 ( and x735 true ) ) ( = tmp381 8 ) ) + ( implies ( and ( not x739 ) ( and ( not x738 ) true ) ) ( = tmp380 0 ) ) + ( implies ( and ( not x739 ) ( and x738 true ) ) ( = tmp380 6 ) ) + ( implies ( and x739 ( and ( not x738 ) true ) ) ( = tmp380 6 ) ) + ( implies ( and x739 ( and x738 true ) ) ( = tmp380 12 ) ) + ( implies ( and ( not x732 ) ( and ( not x733 ) true ) ) ( = tmp379 0 ) ) + ( implies ( and ( not x732 ) ( and x733 true ) ) ( = tmp379 6 ) ) + ( implies ( and x732 ( and ( not x733 ) true ) ) ( = tmp379 6 ) ) + ( implies ( and x732 ( and x733 true ) ) ( = tmp379 12 ) ) + ( implies ( and ( not x741 ) ( and ( not x740 ) true ) ) ( = tmp378 0 ) ) + ( implies ( and ( not x741 ) ( and x740 true ) ) ( = tmp378 6 ) ) + ( implies ( and x741 ( and ( not x740 ) true ) ) ( = tmp378 8 ) ) + ( implies ( and x741 ( and x740 true ) ) ( = tmp378 14 ) ) + ( implies ( and ( not x730 ) ( and ( not x731 ) true ) ) ( = tmp377 0 ) ) + ( implies ( and ( not x730 ) ( and x731 true ) ) ( = tmp377 8 ) ) + ( implies ( and x730 ( and ( not x731 ) true ) ) ( = tmp377 8 ) ) + ( implies ( and x730 ( and x731 true ) ) ( = tmp377 16 ) ) + ( implies ( and ( not x743 ) ( and ( not x742 ) true ) ) ( = tmp376 0 ) ) + ( implies ( and ( not x743 ) ( and x742 true ) ) ( = tmp376 8 ) ) + ( implies ( and x743 ( and ( not x742 ) true ) ) ( = tmp376 8 ) ) + ( implies ( and x743 ( and x742 true ) ) ( = tmp376 16 ) ) + ( implies ( and ( not x728 ) ( and ( not x729 ) true ) ) ( = tmp375 0 ) ) + ( implies ( and ( not x728 ) ( and x729 true ) ) ( = tmp375 8 ) ) + ( implies ( and x728 ( and ( not x729 ) true ) ) ( = tmp375 8 ) ) + ( implies ( and x728 ( and x729 true ) ) ( = tmp375 16 ) ) + ( implies ( and ( not x745 ) ( and ( not x744 ) true ) ) ( = tmp374 0 ) ) + ( implies ( and ( not x745 ) ( and x744 true ) ) ( = tmp374 8 ) ) + ( implies ( and x745 ( and ( not x744 ) true ) ) ( = tmp374 8 ) ) + ( implies ( and x745 ( and x744 true ) ) ( = tmp374 16 ) ) + ( implies ( and ( not x726 ) ( and ( not x727 ) true ) ) ( = tmp373 0 ) ) + ( implies ( and ( not x726 ) ( and x727 true ) ) ( = tmp373 8 ) ) + ( implies ( and x726 ( and ( not x727 ) true ) ) ( = tmp373 8 ) ) + ( implies ( and x726 ( and x727 true ) ) ( = tmp373 16 ) ) + ( implies ( and ( not x747 ) ( and ( not x746 ) true ) ) ( = tmp372 0 ) ) + ( implies ( and ( not x747 ) ( and x746 true ) ) ( = tmp372 8 ) ) + ( implies ( and x747 ( and ( not x746 ) true ) ) ( = tmp372 8 ) ) + ( implies ( and x747 ( and x746 true ) ) ( = tmp372 16 ) ) + ( implies ( and ( not x724 ) ( and ( not x725 ) true ) ) ( = tmp371 0 ) ) + ( implies ( and ( not x724 ) ( and x725 true ) ) ( = tmp371 8 ) ) + ( implies ( and x724 ( and ( not x725 ) true ) ) ( = tmp371 8 ) ) + ( implies ( and x724 ( and x725 true ) ) ( = tmp371 16 ) ) + ( implies ( and ( not x749 ) ( and ( not x748 ) true ) ) ( = tmp370 0 ) ) + ( implies ( and ( not x749 ) ( and x748 true ) ) ( = tmp370 6 ) ) + ( implies ( and x749 ( and ( not x748 ) true ) ) ( = tmp370 6 ) ) + ( implies ( and x749 ( and x748 true ) ) ( = tmp370 12 ) ) + ( implies ( and ( not x722 ) ( and ( not x723 ) true ) ) ( = tmp369 0 ) ) + ( implies ( and ( not x722 ) ( and x723 true ) ) ( = tmp369 8 ) ) + ( implies ( and x722 ( and ( not x723 ) true ) ) ( = tmp369 8 ) ) + ( implies ( and x722 ( and x723 true ) ) ( = tmp369 16 ) ) + ( implies ( and ( not x751 ) ( and ( not x750 ) true ) ) ( = tmp368 0 ) ) + ( implies ( and ( not x751 ) ( and x750 true ) ) ( = tmp368 2 ) ) + ( implies ( and x751 ( and ( not x750 ) true ) ) ( = tmp368 6 ) ) + ( implies ( and x751 ( and x750 true ) ) ( = tmp368 8 ) ) + ( implies ( and ( not x720 ) ( and ( not x721 ) true ) ) ( = tmp367 0 ) ) + ( implies ( and ( not x720 ) ( and x721 true ) ) ( = tmp367 8 ) ) + ( implies ( and x720 ( and ( not x721 ) true ) ) ( = tmp367 8 ) ) + ( implies ( and x720 ( and x721 true ) ) ( = tmp367 16 ) ) + ( implies ( and ( not x753 ) ( and ( not x752 ) true ) ) ( = tmp366 0 ) ) + ( implies ( and ( not x753 ) ( and x752 true ) ) ( = tmp366 8 ) ) + ( implies ( and x753 ( and ( not x752 ) true ) ) ( = tmp366 8 ) ) + ( implies ( and x753 ( and x752 true ) ) ( = tmp366 16 ) ) + ( implies ( and ( not x718 ) ( and ( not x719 ) true ) ) ( = tmp365 0 ) ) + ( implies ( and ( not x718 ) ( and x719 true ) ) ( = tmp365 8 ) ) + ( implies ( and x718 ( and ( not x719 ) true ) ) ( = tmp365 6 ) ) + ( implies ( and x718 ( and x719 true ) ) ( = tmp365 14 ) ) + ( implies ( and ( not x755 ) ( and ( not x754 ) true ) ) ( = tmp364 0 ) ) + ( implies ( and ( not x755 ) ( and x754 true ) ) ( = tmp364 8 ) ) + ( implies ( and x755 ( and ( not x754 ) true ) ) ( = tmp364 8 ) ) + ( implies ( and x755 ( and x754 true ) ) ( = tmp364 16 ) ) + ( implies ( and ( not x716 ) ( and ( not x717 ) true ) ) ( = tmp363 0 ) ) + ( implies ( and ( not x716 ) ( and x717 true ) ) ( = tmp363 4 ) ) + ( implies ( and x716 ( and ( not x717 ) true ) ) ( = tmp363 6 ) ) + ( implies ( and x716 ( and x717 true ) ) ( = tmp363 10 ) ) + ( implies ( and ( not x757 ) ( and ( not x756 ) true ) ) ( = tmp362 0 ) ) + ( implies ( and ( not x757 ) ( and x756 true ) ) ( = tmp362 8 ) ) + ( implies ( and x757 ( and ( not x756 ) true ) ) ( = tmp362 8 ) ) + ( implies ( and x757 ( and x756 true ) ) ( = tmp362 16 ) ) + ( implies ( and ( not x714 ) ( and ( not x715 ) true ) ) ( = tmp361 0 ) ) + ( implies ( and ( not x714 ) ( and x715 true ) ) ( = tmp361 8 ) ) + ( implies ( and x714 ( and ( not x715 ) true ) ) ( = tmp361 8 ) ) + ( implies ( and x714 ( and x715 true ) ) ( = tmp361 16 ) ) + ( implies ( and ( not x759 ) ( and ( not x758 ) true ) ) ( = tmp360 0 ) ) + ( implies ( and ( not x759 ) ( and x758 true ) ) ( = tmp360 6 ) ) + ( implies ( and x759 ( and ( not x758 ) true ) ) ( = tmp360 8 ) ) + ( implies ( and x759 ( and x758 true ) ) ( = tmp360 14 ) ) + ( implies ( and ( not x712 ) ( and ( not x713 ) true ) ) ( = tmp359 0 ) ) + ( implies ( and ( not x712 ) ( and x713 true ) ) ( = tmp359 8 ) ) + ( implies ( and x712 ( and ( not x713 ) true ) ) ( = tmp359 8 ) ) + ( implies ( and x712 ( and x713 true ) ) ( = tmp359 16 ) ) + ( implies ( and ( not x689 ) true ) ( = tmp358 0 ) ) + ( implies ( and x689 true ) ( = tmp358 4 ) ) + ( implies ( and ( not x687 ) ( and ( not x688 ) true ) ) ( = tmp357 0 ) ) + ( implies ( and ( not x687 ) ( and x688 true ) ) ( = tmp357 4 ) ) + ( implies ( and x687 ( and ( not x688 ) true ) ) ( = tmp357 2 ) ) + ( implies ( and x687 ( and x688 true ) ) ( = tmp357 6 ) ) + ( implies ( and ( not x691 ) ( and ( not x690 ) true ) ) ( = tmp356 0 ) ) + ( implies ( and ( not x691 ) ( and x690 true ) ) ( = tmp356 2 ) ) + ( implies ( and x691 ( and ( not x690 ) true ) ) ( = tmp356 2 ) ) + ( implies ( and x691 ( and x690 true ) ) ( = tmp356 4 ) ) + ( implies ( and ( not x685 ) ( and ( not x686 ) true ) ) ( = tmp355 0 ) ) + ( implies ( and ( not x685 ) ( and x686 true ) ) ( = tmp355 4 ) ) + ( implies ( and x685 ( and ( not x686 ) true ) ) ( = tmp355 6 ) ) + ( implies ( and x685 ( and x686 true ) ) ( = tmp355 10 ) ) + ( implies ( and ( not x693 ) ( and ( not x692 ) true ) ) ( = tmp354 0 ) ) + ( implies ( and ( not x693 ) ( and x692 true ) ) ( = tmp354 4 ) ) + ( implies ( and x693 ( and ( not x692 ) true ) ) ( = tmp354 4 ) ) + ( implies ( and x693 ( and x692 true ) ) ( = tmp354 8 ) ) + ( implies ( and ( not x683 ) ( and ( not x684 ) true ) ) ( = tmp353 0 ) ) + ( implies ( and ( not x683 ) ( and x684 true ) ) ( = tmp353 6 ) ) + ( implies ( and x683 ( and ( not x684 ) true ) ) ( = tmp353 8 ) ) + ( implies ( and x683 ( and x684 true ) ) ( = tmp353 14 ) ) + ( implies ( and ( not x695 ) ( and ( not x694 ) true ) ) ( = tmp352 0 ) ) + ( implies ( and ( not x695 ) ( and x694 true ) ) ( = tmp352 4 ) ) + ( implies ( and x695 ( and ( not x694 ) true ) ) ( = tmp352 4 ) ) + ( implies ( and x695 ( and x694 true ) ) ( = tmp352 8 ) ) + ( implies ( and ( not x681 ) ( and ( not x682 ) true ) ) ( = tmp351 0 ) ) + ( implies ( and ( not x681 ) ( and x682 true ) ) ( = tmp351 8 ) ) + ( implies ( and x681 ( and ( not x682 ) true ) ) ( = tmp351 6 ) ) + ( implies ( and x681 ( and x682 true ) ) ( = tmp351 14 ) ) + ( implies ( and ( not x697 ) ( and ( not x696 ) true ) ) ( = tmp350 0 ) ) + ( implies ( and ( not x697 ) ( and x696 true ) ) ( = tmp350 2 ) ) + ( implies ( and x697 ( and ( not x696 ) true ) ) ( = tmp350 2 ) ) + ( implies ( and x697 ( and x696 true ) ) ( = tmp350 4 ) ) + ( implies ( and ( not x679 ) ( and ( not x680 ) true ) ) ( = tmp349 0 ) ) + ( implies ( and ( not x679 ) ( and x680 true ) ) ( = tmp349 6 ) ) + ( implies ( and x679 ( and ( not x680 ) true ) ) ( = tmp349 6 ) ) + ( implies ( and x679 ( and x680 true ) ) ( = tmp349 12 ) ) + ( implies ( and ( not x699 ) ( and ( not x698 ) true ) ) ( = tmp348 0 ) ) + ( implies ( and ( not x699 ) ( and x698 true ) ) ( = tmp348 4 ) ) + ( implies ( and x699 ( and ( not x698 ) true ) ) ( = tmp348 6 ) ) + ( implies ( and x699 ( and x698 true ) ) ( = tmp348 10 ) ) + ( implies ( and ( not x677 ) ( and ( not x678 ) true ) ) ( = tmp347 0 ) ) + ( implies ( and ( not x677 ) ( and x678 true ) ) ( = tmp347 6 ) ) + ( implies ( and x677 ( and ( not x678 ) true ) ) ( = tmp347 8 ) ) + ( implies ( and x677 ( and x678 true ) ) ( = tmp347 14 ) ) + ( implies ( and ( not x701 ) ( and ( not x700 ) true ) ) ( = tmp346 0 ) ) + ( implies ( and ( not x701 ) ( and x700 true ) ) ( = tmp346 6 ) ) + ( implies ( and x701 ( and ( not x700 ) true ) ) ( = tmp346 8 ) ) + ( implies ( and x701 ( and x700 true ) ) ( = tmp346 14 ) ) + ( implies ( and ( not x675 ) ( and ( not x676 ) true ) ) ( = tmp345 0 ) ) + ( implies ( and ( not x675 ) ( and x676 true ) ) ( = tmp345 8 ) ) + ( implies ( and x675 ( and ( not x676 ) true ) ) ( = tmp345 8 ) ) + ( implies ( and x675 ( and x676 true ) ) ( = tmp345 16 ) ) + ( implies ( and ( not x703 ) ( and ( not x702 ) true ) ) ( = tmp344 0 ) ) + ( implies ( and ( not x703 ) ( and x702 true ) ) ( = tmp344 6 ) ) + ( implies ( and x703 ( and ( not x702 ) true ) ) ( = tmp344 6 ) ) + ( implies ( and x703 ( and x702 true ) ) ( = tmp344 12 ) ) + ( implies ( and ( not x673 ) ( and ( not x674 ) true ) ) ( = tmp343 0 ) ) + ( implies ( and ( not x673 ) ( and x674 true ) ) ( = tmp343 8 ) ) + ( implies ( and x673 ( and ( not x674 ) true ) ) ( = tmp343 8 ) ) + ( implies ( and x673 ( and x674 true ) ) ( = tmp343 16 ) ) + ( implies ( and ( not x705 ) ( and ( not x704 ) true ) ) ( = tmp342 0 ) ) + ( implies ( and ( not x705 ) ( and x704 true ) ) ( = tmp342 4 ) ) + ( implies ( and x705 ( and ( not x704 ) true ) ) ( = tmp342 2 ) ) + ( implies ( and x705 ( and x704 true ) ) ( = tmp342 6 ) ) + ( implies ( and ( not x671 ) ( and ( not x672 ) true ) ) ( = tmp341 0 ) ) + ( implies ( and ( not x671 ) ( and x672 true ) ) ( = tmp341 8 ) ) + ( implies ( and x671 ( and ( not x672 ) true ) ) ( = tmp341 8 ) ) + ( implies ( and x671 ( and x672 true ) ) ( = tmp341 16 ) ) + ( implies ( and ( not x707 ) ( and ( not x706 ) true ) ) ( = tmp340 0 ) ) + ( implies ( and ( not x707 ) ( and x706 true ) ) ( = tmp340 2 ) ) + ( implies ( and x707 ( and ( not x706 ) true ) ) ( = tmp340 4 ) ) + ( implies ( and x707 ( and x706 true ) ) ( = tmp340 6 ) ) + ( implies ( and ( not x669 ) ( and ( not x670 ) true ) ) ( = tmp339 0 ) ) + ( implies ( and ( not x669 ) ( and x670 true ) ) ( = tmp339 8 ) ) + ( implies ( and x669 ( and ( not x670 ) true ) ) ( = tmp339 8 ) ) + ( implies ( and x669 ( and x670 true ) ) ( = tmp339 16 ) ) + ( implies ( and ( not x709 ) ( and ( not x708 ) true ) ) ( = tmp338 0 ) ) + ( implies ( and ( not x709 ) ( and x708 true ) ) ( = tmp338 6 ) ) + ( implies ( and x709 ( and ( not x708 ) true ) ) ( = tmp338 6 ) ) + ( implies ( and x709 ( and x708 true ) ) ( = tmp338 12 ) ) + ( implies ( and ( not x667 ) ( and ( not x668 ) true ) ) ( = tmp337 0 ) ) + ( implies ( and ( not x667 ) ( and x668 true ) ) ( = tmp337 8 ) ) + ( implies ( and x667 ( and ( not x668 ) true ) ) ( = tmp337 8 ) ) + ( implies ( and x667 ( and x668 true ) ) ( = tmp337 16 ) ) + ( implies ( and ( not x711 ) ( and ( not x710 ) true ) ) ( = tmp336 0 ) ) + ( implies ( and ( not x711 ) ( and x710 true ) ) ( = tmp336 6 ) ) + ( implies ( and x711 ( and ( not x710 ) true ) ) ( = tmp336 6 ) ) + ( implies ( and x711 ( and x710 true ) ) ( = tmp336 12 ) ) + ( implies ( and ( not x665 ) ( and ( not x666 ) true ) ) ( = tmp335 0 ) ) + ( implies ( and ( not x665 ) ( and x666 true ) ) ( = tmp335 8 ) ) + ( implies ( and x665 ( and ( not x666 ) true ) ) ( = tmp335 8 ) ) + ( implies ( and x665 ( and x666 true ) ) ( = tmp335 16 ) ) + ( implies ( and ( not x642 ) ( and ( not x641 ) true ) ) ( = tmp334 0 ) ) + ( implies ( and ( not x642 ) ( and x641 true ) ) ( = tmp334 6 ) ) + ( implies ( and x642 ( and ( not x641 ) true ) ) ( = tmp334 8 ) ) + ( implies ( and x642 ( and x641 true ) ) ( = tmp334 14 ) ) + ( implies ( and ( not x639 ) ( and ( not x640 ) true ) ) ( = tmp333 0 ) ) + ( implies ( and ( not x639 ) ( and x640 true ) ) ( = tmp333 6 ) ) + ( implies ( and x639 ( and ( not x640 ) true ) ) ( = tmp333 6 ) ) + ( implies ( and x639 ( and x640 true ) ) ( = tmp333 12 ) ) + ( implies ( and ( not x644 ) ( and ( not x643 ) true ) ) ( = tmp332 0 ) ) + ( implies ( and ( not x644 ) ( and x643 true ) ) ( = tmp332 8 ) ) + ( implies ( and x644 ( and ( not x643 ) true ) ) ( = tmp332 8 ) ) + ( implies ( and x644 ( and x643 true ) ) ( = tmp332 16 ) ) + ( implies ( and ( not x637 ) ( and ( not x638 ) true ) ) ( = tmp331 0 ) ) + ( implies ( and ( not x637 ) ( and x638 true ) ) ( = tmp331 6 ) ) + ( implies ( and x637 ( and ( not x638 ) true ) ) ( = tmp331 6 ) ) + ( implies ( and x637 ( and x638 true ) ) ( = tmp331 12 ) ) + ( implies ( and ( not x646 ) ( and ( not x645 ) true ) ) ( = tmp330 0 ) ) + ( implies ( and ( not x646 ) ( and x645 true ) ) ( = tmp330 8 ) ) + ( implies ( and x646 ( and ( not x645 ) true ) ) ( = tmp330 8 ) ) + ( implies ( and x646 ( and x645 true ) ) ( = tmp330 16 ) ) + ( implies ( and ( not x635 ) ( and ( not x636 ) true ) ) ( = tmp329 0 ) ) + ( implies ( and ( not x635 ) ( and x636 true ) ) ( = tmp329 6 ) ) + ( implies ( and x635 ( and ( not x636 ) true ) ) ( = tmp329 8 ) ) + ( implies ( and x635 ( and x636 true ) ) ( = tmp329 14 ) ) + ( implies ( and ( not x648 ) ( and ( not x647 ) true ) ) ( = tmp328 0 ) ) + ( implies ( and ( not x648 ) ( and x647 true ) ) ( = tmp328 8 ) ) + ( implies ( and x648 ( and ( not x647 ) true ) ) ( = tmp328 6 ) ) + ( implies ( and x648 ( and x647 true ) ) ( = tmp328 14 ) ) + ( implies ( and ( not x633 ) ( and ( not x634 ) true ) ) ( = tmp327 0 ) ) + ( implies ( and ( not x633 ) ( and x634 true ) ) ( = tmp327 8 ) ) + ( implies ( and x633 ( and ( not x634 ) true ) ) ( = tmp327 8 ) ) + ( implies ( and x633 ( and x634 true ) ) ( = tmp327 16 ) ) + ( implies ( and ( not x650 ) ( and ( not x649 ) true ) ) ( = tmp326 0 ) ) + ( implies ( and ( not x650 ) ( and x649 true ) ) ( = tmp326 6 ) ) + ( implies ( and x650 ( and ( not x649 ) true ) ) ( = tmp326 6 ) ) + ( implies ( and x650 ( and x649 true ) ) ( = tmp326 12 ) ) + ( implies ( and ( not x631 ) ( and ( not x632 ) true ) ) ( = tmp325 0 ) ) + ( implies ( and ( not x631 ) ( and x632 true ) ) ( = tmp325 6 ) ) + ( implies ( and x631 ( and ( not x632 ) true ) ) ( = tmp325 6 ) ) + ( implies ( and x631 ( and x632 true ) ) ( = tmp325 12 ) ) + ( implies ( and ( not x652 ) ( and ( not x651 ) true ) ) ( = tmp324 0 ) ) + ( implies ( and ( not x652 ) ( and x651 true ) ) ( = tmp324 6 ) ) + ( implies ( and x652 ( and ( not x651 ) true ) ) ( = tmp324 2 ) ) + ( implies ( and x652 ( and x651 true ) ) ( = tmp324 8 ) ) + ( implies ( and ( not x629 ) ( and ( not x630 ) true ) ) ( = tmp323 0 ) ) + ( implies ( and ( not x629 ) ( and x630 true ) ) ( = tmp323 2 ) ) + ( implies ( and x629 ( and ( not x630 ) true ) ) ( = tmp323 4 ) ) + ( implies ( and x629 ( and x630 true ) ) ( = tmp323 6 ) ) + ( implies ( and ( not x654 ) ( and ( not x653 ) true ) ) ( = tmp322 0 ) ) + ( implies ( and ( not x654 ) ( and x653 true ) ) ( = tmp322 4 ) ) + ( implies ( and x654 ( and ( not x653 ) true ) ) ( = tmp322 4 ) ) + ( implies ( and x654 ( and x653 true ) ) ( = tmp322 8 ) ) + ( implies ( and ( not x627 ) ( and ( not x628 ) true ) ) ( = tmp321 0 ) ) + ( implies ( and ( not x627 ) ( and x628 true ) ) ( = tmp321 4 ) ) + ( implies ( and x627 ( and ( not x628 ) true ) ) ( = tmp321 4 ) ) + ( implies ( and x627 ( and x628 true ) ) ( = tmp321 8 ) ) + ( implies ( and ( not x656 ) ( and ( not x655 ) true ) ) ( = tmp320 0 ) ) + ( implies ( and ( not x656 ) ( and x655 true ) ) ( = tmp320 4 ) ) + ( implies ( and x656 ( and ( not x655 ) true ) ) ( = tmp320 2 ) ) + ( implies ( and x656 ( and x655 true ) ) ( = tmp320 6 ) ) + ( implies ( and ( not x625 ) ( and ( not x626 ) true ) ) ( = tmp319 0 ) ) + ( implies ( and ( not x625 ) ( and x626 true ) ) ( = tmp319 4 ) ) + ( implies ( and x625 ( and ( not x626 ) true ) ) ( = tmp319 6 ) ) + ( implies ( and x625 ( and x626 true ) ) ( = tmp319 10 ) ) + ( implies ( and ( not x658 ) ( and ( not x657 ) true ) ) ( = tmp318 0 ) ) + ( implies ( and ( not x658 ) ( and x657 true ) ) ( = tmp318 4 ) ) + ( implies ( and x658 ( and ( not x657 ) true ) ) ( = tmp318 6 ) ) + ( implies ( and x658 ( and x657 true ) ) ( = tmp318 10 ) ) + ( implies ( and ( not x623 ) ( and ( not x624 ) true ) ) ( = tmp317 0 ) ) + ( implies ( and ( not x623 ) ( and x624 true ) ) ( = tmp317 6 ) ) + ( implies ( and x623 ( and ( not x624 ) true ) ) ( = tmp317 8 ) ) + ( implies ( and x623 ( and x624 true ) ) ( = tmp317 14 ) ) + ( implies ( and ( not x660 ) ( and ( not x659 ) true ) ) ( = tmp316 0 ) ) + ( implies ( and ( not x660 ) ( and x659 true ) ) ( = tmp316 8 ) ) + ( implies ( and x660 ( and ( not x659 ) true ) ) ( = tmp316 6 ) ) + ( implies ( and x660 ( and x659 true ) ) ( = tmp316 14 ) ) + ( implies ( and ( not x621 ) ( and ( not x622 ) true ) ) ( = tmp315 0 ) ) + ( implies ( and ( not x621 ) ( and x622 true ) ) ( = tmp315 6 ) ) + ( implies ( and x621 ( and ( not x622 ) true ) ) ( = tmp315 6 ) ) + ( implies ( and x621 ( and x622 true ) ) ( = tmp315 12 ) ) + ( implies ( and ( not x662 ) ( and ( not x661 ) true ) ) ( = tmp314 0 ) ) + ( implies ( and ( not x662 ) ( and x661 true ) ) ( = tmp314 6 ) ) + ( implies ( and x662 ( and ( not x661 ) true ) ) ( = tmp314 6 ) ) + ( implies ( and x662 ( and x661 true ) ) ( = tmp314 12 ) ) + ( implies ( and ( not x619 ) ( and ( not x620 ) true ) ) ( = tmp313 0 ) ) + ( implies ( and ( not x619 ) ( and x620 true ) ) ( = tmp313 6 ) ) + ( implies ( and x619 ( and ( not x620 ) true ) ) ( = tmp313 8 ) ) + ( implies ( and x619 ( and x620 true ) ) ( = tmp313 14 ) ) + ( implies ( and ( not x664 ) ( and ( not x663 ) true ) ) ( = tmp312 0 ) ) + ( implies ( and ( not x664 ) ( and x663 true ) ) ( = tmp312 6 ) ) + ( implies ( and x664 ( and ( not x663 ) true ) ) ( = tmp312 6 ) ) + ( implies ( and x664 ( and x663 true ) ) ( = tmp312 12 ) ) + ( implies ( and ( not x617 ) ( and ( not x618 ) true ) ) ( = tmp311 0 ) ) + ( implies ( and ( not x617 ) ( and x618 true ) ) ( = tmp311 8 ) ) + ( implies ( and x617 ( and ( not x618 ) true ) ) ( = tmp311 8 ) ) + ( implies ( and x617 ( and x618 true ) ) ( = tmp311 16 ) ) + ( implies ( and ( not x594 ) true ) ( = tmp310 0 ) ) + ( implies ( and x594 true ) ( = tmp310 1 ) ) + ( implies ( and ( not x592 ) ( and ( not x593 ) true ) ) ( = tmp309 0 ) ) + ( implies ( and ( not x592 ) ( and x593 true ) ) ( = tmp309 2 ) ) + ( implies ( and x592 ( and ( not x593 ) true ) ) ( = tmp309 4 ) ) + ( implies ( and x592 ( and x593 true ) ) ( = tmp309 6 ) ) + ( implies ( and ( not x596 ) ( and ( not x595 ) true ) ) ( = tmp308 0 ) ) + ( implies ( and ( not x596 ) ( and x595 true ) ) ( = tmp308 1 ) ) + ( implies ( and x596 ( and ( not x595 ) true ) ) ( = tmp308 4 ) ) + ( implies ( and x596 ( and x595 true ) ) ( = tmp308 5 ) ) + ( implies ( and ( not x590 ) ( and ( not x591 ) true ) ) ( = tmp307 0 ) ) + ( implies ( and ( not x590 ) ( and x591 true ) ) ( = tmp307 4 ) ) + ( implies ( and x590 ( and ( not x591 ) true ) ) ( = tmp307 4 ) ) + ( implies ( and x590 ( and x591 true ) ) ( = tmp307 8 ) ) + ( implies ( and ( not x598 ) ( and ( not x597 ) true ) ) ( = tmp306 0 ) ) + ( implies ( and ( not x598 ) ( and x597 true ) ) ( = tmp306 4 ) ) + ( implies ( and x598 ( and ( not x597 ) true ) ) ( = tmp306 4 ) ) + ( implies ( and x598 ( and x597 true ) ) ( = tmp306 8 ) ) + ( implies ( and ( not x588 ) ( and ( not x589 ) true ) ) ( = tmp305 0 ) ) + ( implies ( and ( not x588 ) ( and x589 true ) ) ( = tmp305 2 ) ) + ( implies ( and x588 ( and ( not x589 ) true ) ) ( = tmp305 4 ) ) + ( implies ( and x588 ( and x589 true ) ) ( = tmp305 6 ) ) + ( implies ( and ( not x600 ) ( and ( not x599 ) true ) ) ( = tmp304 0 ) ) + ( implies ( and ( not x600 ) ( and x599 true ) ) ( = tmp304 4 ) ) + ( implies ( and x600 ( and ( not x599 ) true ) ) ( = tmp304 4 ) ) + ( implies ( and x600 ( and x599 true ) ) ( = tmp304 8 ) ) + ( implies ( and ( not x586 ) ( and ( not x587 ) true ) ) ( = tmp303 0 ) ) + ( implies ( and ( not x586 ) ( and x587 true ) ) ( = tmp303 6 ) ) + ( implies ( and x586 ( and ( not x587 ) true ) ) ( = tmp303 6 ) ) + ( implies ( and x586 ( and x587 true ) ) ( = tmp303 12 ) ) + ( implies ( and ( not x602 ) ( and ( not x601 ) true ) ) ( = tmp302 0 ) ) + ( implies ( and ( not x602 ) ( and x601 true ) ) ( = tmp302 6 ) ) + ( implies ( and x602 ( and ( not x601 ) true ) ) ( = tmp302 6 ) ) + ( implies ( and x602 ( and x601 true ) ) ( = tmp302 12 ) ) + ( implies ( and ( not x584 ) ( and ( not x585 ) true ) ) ( = tmp301 0 ) ) + ( implies ( and ( not x584 ) ( and x585 true ) ) ( = tmp301 6 ) ) + ( implies ( and x584 ( and ( not x585 ) true ) ) ( = tmp301 8 ) ) + ( implies ( and x584 ( and x585 true ) ) ( = tmp301 14 ) ) + ( implies ( and ( not x604 ) ( and ( not x603 ) true ) ) ( = tmp300 0 ) ) + ( implies ( and ( not x604 ) ( and x603 true ) ) ( = tmp300 6 ) ) + ( implies ( and x604 ( and ( not x603 ) true ) ) ( = tmp300 6 ) ) + ( implies ( and x604 ( and x603 true ) ) ( = tmp300 12 ) ) + ( implies ( and ( not x582 ) ( and ( not x583 ) true ) ) ( = tmp299 0 ) ) + ( implies ( and ( not x582 ) ( and x583 true ) ) ( = tmp299 8 ) ) + ( implies ( and x582 ( and ( not x583 ) true ) ) ( = tmp299 8 ) ) + ( implies ( and x582 ( and x583 true ) ) ( = tmp299 16 ) ) + ( implies ( and ( not x606 ) ( and ( not x605 ) true ) ) ( = tmp298 0 ) ) + ( implies ( and ( not x606 ) ( and x605 true ) ) ( = tmp298 6 ) ) + ( implies ( and x606 ( and ( not x605 ) true ) ) ( = tmp298 6 ) ) + ( implies ( and x606 ( and x605 true ) ) ( = tmp298 12 ) ) + ( implies ( and ( not x580 ) ( and ( not x581 ) true ) ) ( = tmp297 0 ) ) + ( implies ( and ( not x580 ) ( and x581 true ) ) ( = tmp297 6 ) ) + ( implies ( and x580 ( and ( not x581 ) true ) ) ( = tmp297 6 ) ) + ( implies ( and x580 ( and x581 true ) ) ( = tmp297 12 ) ) + ( implies ( and ( not x608 ) ( and ( not x607 ) true ) ) ( = tmp296 0 ) ) + ( implies ( and ( not x608 ) ( and x607 true ) ) ( = tmp296 6 ) ) + ( implies ( and x608 ( and ( not x607 ) true ) ) ( = tmp296 4 ) ) + ( implies ( and x608 ( and x607 true ) ) ( = tmp296 10 ) ) + ( implies ( and ( not x578 ) ( and ( not x579 ) true ) ) ( = tmp295 0 ) ) + ( implies ( and ( not x578 ) ( and x579 true ) ) ( = tmp295 6 ) ) + ( implies ( and x578 ( and ( not x579 ) true ) ) ( = tmp295 6 ) ) + ( implies ( and x578 ( and x579 true ) ) ( = tmp295 12 ) ) + ( implies ( and ( not x610 ) ( and ( not x609 ) true ) ) ( = tmp294 0 ) ) + ( implies ( and ( not x610 ) ( and x609 true ) ) ( = tmp294 2 ) ) + ( implies ( and x610 ( and ( not x609 ) true ) ) ( = tmp294 2 ) ) + ( implies ( and x610 ( and x609 true ) ) ( = tmp294 4 ) ) + ( implies ( and ( not x576 ) ( and ( not x577 ) true ) ) ( = tmp293 0 ) ) + ( implies ( and ( not x576 ) ( and x577 true ) ) ( = tmp293 6 ) ) + ( implies ( and x576 ( and ( not x577 ) true ) ) ( = tmp293 6 ) ) + ( implies ( and x576 ( and x577 true ) ) ( = tmp293 12 ) ) + ( implies ( and ( not x612 ) ( and ( not x611 ) true ) ) ( = tmp292 0 ) ) + ( implies ( and ( not x612 ) ( and x611 true ) ) ( = tmp292 4 ) ) + ( implies ( and x612 ( and ( not x611 ) true ) ) ( = tmp292 4 ) ) + ( implies ( and x612 ( and x611 true ) ) ( = tmp292 8 ) ) + ( implies ( and ( not x574 ) ( and ( not x575 ) true ) ) ( = tmp291 0 ) ) + ( implies ( and ( not x574 ) ( and x575 true ) ) ( = tmp291 6 ) ) + ( implies ( and x574 ( and ( not x575 ) true ) ) ( = tmp291 6 ) ) + ( implies ( and x574 ( and x575 true ) ) ( = tmp291 12 ) ) + ( implies ( and ( not x614 ) ( and ( not x613 ) true ) ) ( = tmp290 0 ) ) + ( implies ( and ( not x614 ) ( and x613 true ) ) ( = tmp290 4 ) ) + ( implies ( and x614 ( and ( not x613 ) true ) ) ( = tmp290 4 ) ) + ( implies ( and x614 ( and x613 true ) ) ( = tmp290 8 ) ) + ( implies ( and ( not x572 ) ( and ( not x573 ) true ) ) ( = tmp289 0 ) ) + ( implies ( and ( not x572 ) ( and x573 true ) ) ( = tmp289 4 ) ) + ( implies ( and x572 ( and ( not x573 ) true ) ) ( = tmp289 4 ) ) + ( implies ( and x572 ( and x573 true ) ) ( = tmp289 8 ) ) + ( implies ( and ( not x616 ) ( and ( not x615 ) true ) ) ( = tmp288 0 ) ) + ( implies ( and ( not x616 ) ( and x615 true ) ) ( = tmp288 4 ) ) + ( implies ( and x616 ( and ( not x615 ) true ) ) ( = tmp288 4 ) ) + ( implies ( and x616 ( and x615 true ) ) ( = tmp288 8 ) ) + ( implies ( and ( not x570 ) ( and ( not x571 ) true ) ) ( = tmp287 0 ) ) + ( implies ( and ( not x570 ) ( and x571 true ) ) ( = tmp287 6 ) ) + ( implies ( and x570 ( and ( not x571 ) true ) ) ( = tmp287 6 ) ) + ( implies ( and x570 ( and x571 true ) ) ( = tmp287 12 ) ) + ( implies ( and ( not x547 ) ( and ( not x546 ) true ) ) ( = tmp286 0 ) ) + ( implies ( and ( not x547 ) ( and x546 true ) ) ( = tmp286 6 ) ) + ( implies ( and x547 ( and ( not x546 ) true ) ) ( = tmp286 6 ) ) + ( implies ( and x547 ( and x546 true ) ) ( = tmp286 12 ) ) + ( implies ( and ( not x544 ) ( and ( not x545 ) true ) ) ( = tmp285 0 ) ) + ( implies ( and ( not x544 ) ( and x545 true ) ) ( = tmp285 6 ) ) + ( implies ( and x544 ( and ( not x545 ) true ) ) ( = tmp285 4 ) ) + ( implies ( and x544 ( and x545 true ) ) ( = tmp285 10 ) ) + ( implies ( and ( not x549 ) ( and ( not x548 ) true ) ) ( = tmp284 0 ) ) + ( implies ( and ( not x549 ) ( and x548 true ) ) ( = tmp284 6 ) ) + ( implies ( and x549 ( and ( not x548 ) true ) ) ( = tmp284 6 ) ) + ( implies ( and x549 ( and x548 true ) ) ( = tmp284 12 ) ) + ( implies ( and ( not x542 ) ( and ( not x543 ) true ) ) ( = tmp283 0 ) ) + ( implies ( and ( not x542 ) ( and x543 true ) ) ( = tmp283 4 ) ) + ( implies ( and x542 ( and ( not x543 ) true ) ) ( = tmp283 4 ) ) + ( implies ( and x542 ( and x543 true ) ) ( = tmp283 8 ) ) + ( implies ( and ( not x551 ) ( and ( not x550 ) true ) ) ( = tmp282 0 ) ) + ( implies ( and ( not x551 ) ( and x550 true ) ) ( = tmp282 6 ) ) + ( implies ( and x551 ( and ( not x550 ) true ) ) ( = tmp282 6 ) ) + ( implies ( and x551 ( and x550 true ) ) ( = tmp282 12 ) ) + ( implies ( and ( not x540 ) ( and ( not x541 ) true ) ) ( = tmp281 0 ) ) + ( implies ( and ( not x540 ) ( and x541 true ) ) ( = tmp281 2 ) ) + ( implies ( and x540 ( and ( not x541 ) true ) ) ( = tmp281 2 ) ) + ( implies ( and x540 ( and x541 true ) ) ( = tmp281 4 ) ) + ( implies ( and ( not x553 ) ( and ( not x552 ) true ) ) ( = tmp280 0 ) ) + ( implies ( and ( not x553 ) ( and x552 true ) ) ( = tmp280 8 ) ) + ( implies ( and x553 ( and ( not x552 ) true ) ) ( = tmp280 8 ) ) + ( implies ( and x553 ( and x552 true ) ) ( = tmp280 16 ) ) + ( implies ( and ( not x538 ) ( and ( not x539 ) true ) ) ( = tmp279 0 ) ) + ( implies ( and ( not x538 ) ( and x539 true ) ) ( = tmp279 2 ) ) + ( implies ( and x538 ( and ( not x539 ) true ) ) ( = tmp279 2 ) ) + ( implies ( and x538 ( and x539 true ) ) ( = tmp279 4 ) ) + ( implies ( and ( not x555 ) ( and ( not x554 ) true ) ) ( = tmp278 0 ) ) + ( implies ( and ( not x555 ) ( and x554 true ) ) ( = tmp278 8 ) ) + ( implies ( and x555 ( and ( not x554 ) true ) ) ( = tmp278 6 ) ) + ( implies ( and x555 ( and x554 true ) ) ( = tmp278 14 ) ) + ( implies ( and ( not x536 ) ( and ( not x537 ) true ) ) ( = tmp277 0 ) ) + ( implies ( and ( not x536 ) ( and x537 true ) ) ( = tmp277 2 ) ) + ( implies ( and x536 ( and ( not x537 ) true ) ) ( = tmp277 2 ) ) + ( implies ( and x536 ( and x537 true ) ) ( = tmp277 4 ) ) + ( implies ( and ( not x557 ) ( and ( not x556 ) true ) ) ( = tmp276 0 ) ) + ( implies ( and ( not x557 ) ( and x556 true ) ) ( = tmp276 6 ) ) + ( implies ( and x557 ( and ( not x556 ) true ) ) ( = tmp276 6 ) ) + ( implies ( and x557 ( and x556 true ) ) ( = tmp276 12 ) ) + ( implies ( and ( not x534 ) ( and ( not x535 ) true ) ) ( = tmp275 0 ) ) + ( implies ( and ( not x534 ) ( and x535 true ) ) ( = tmp275 2 ) ) + ( implies ( and x534 ( and ( not x535 ) true ) ) ( = tmp275 2 ) ) + ( implies ( and x534 ( and x535 true ) ) ( = tmp275 4 ) ) + ( implies ( and ( not x559 ) ( and ( not x558 ) true ) ) ( = tmp274 0 ) ) + ( implies ( and ( not x559 ) ( and x558 true ) ) ( = tmp274 6 ) ) + ( implies ( and x559 ( and ( not x558 ) true ) ) ( = tmp274 6 ) ) + ( implies ( and x559 ( and x558 true ) ) ( = tmp274 12 ) ) + ( implies ( and ( not x532 ) ( and ( not x533 ) true ) ) ( = tmp273 0 ) ) + ( implies ( and ( not x532 ) ( and x533 true ) ) ( = tmp273 4 ) ) + ( implies ( and x532 ( and ( not x533 ) true ) ) ( = tmp273 4 ) ) + ( implies ( and x532 ( and x533 true ) ) ( = tmp273 8 ) ) + ( implies ( and ( not x561 ) ( and ( not x560 ) true ) ) ( = tmp272 0 ) ) + ( implies ( and ( not x561 ) ( and x560 true ) ) ( = tmp272 6 ) ) + ( implies ( and x561 ( and ( not x560 ) true ) ) ( = tmp272 6 ) ) + ( implies ( and x561 ( and x560 true ) ) ( = tmp272 12 ) ) + ( implies ( and ( not x530 ) ( and ( not x531 ) true ) ) ( = tmp271 0 ) ) + ( implies ( and ( not x530 ) ( and x531 true ) ) ( = tmp271 6 ) ) + ( implies ( and x530 ( and ( not x531 ) true ) ) ( = tmp271 6 ) ) + ( implies ( and x530 ( and x531 true ) ) ( = tmp271 12 ) ) + ( implies ( and ( not x563 ) ( and ( not x562 ) true ) ) ( = tmp270 0 ) ) + ( implies ( and ( not x563 ) ( and x562 true ) ) ( = tmp270 8 ) ) + ( implies ( and x563 ( and ( not x562 ) true ) ) ( = tmp270 8 ) ) + ( implies ( and x563 ( and x562 true ) ) ( = tmp270 16 ) ) + ( implies ( and ( not x528 ) ( and ( not x529 ) true ) ) ( = tmp269 0 ) ) + ( implies ( and ( not x528 ) ( and x529 true ) ) ( = tmp269 6 ) ) + ( implies ( and x528 ( and ( not x529 ) true ) ) ( = tmp269 8 ) ) + ( implies ( and x528 ( and x529 true ) ) ( = tmp269 14 ) ) + ( implies ( and ( not x565 ) ( and ( not x564 ) true ) ) ( = tmp268 0 ) ) + ( implies ( and ( not x565 ) ( and x564 true ) ) ( = tmp268 6 ) ) + ( implies ( and x565 ( and ( not x564 ) true ) ) ( = tmp268 6 ) ) + ( implies ( and x565 ( and x564 true ) ) ( = tmp268 12 ) ) + ( implies ( and ( not x526 ) ( and ( not x527 ) true ) ) ( = tmp267 0 ) ) + ( implies ( and ( not x526 ) ( and x527 true ) ) ( = tmp267 8 ) ) + ( implies ( and x526 ( and ( not x527 ) true ) ) ( = tmp267 8 ) ) + ( implies ( and x526 ( and x527 true ) ) ( = tmp267 16 ) ) + ( implies ( and ( not x567 ) ( and ( not x566 ) true ) ) ( = tmp266 0 ) ) + ( implies ( and ( not x567 ) ( and x566 true ) ) ( = tmp266 6 ) ) + ( implies ( and x567 ( and ( not x566 ) true ) ) ( = tmp266 6 ) ) + ( implies ( and x567 ( and x566 true ) ) ( = tmp266 12 ) ) + ( implies ( and ( not x524 ) ( and ( not x525 ) true ) ) ( = tmp265 0 ) ) + ( implies ( and ( not x524 ) ( and x525 true ) ) ( = tmp265 8 ) ) + ( implies ( and x524 ( and ( not x525 ) true ) ) ( = tmp265 8 ) ) + ( implies ( and x524 ( and x525 true ) ) ( = tmp265 16 ) ) + ( implies ( and ( not x569 ) ( and ( not x568 ) true ) ) ( = tmp264 0 ) ) + ( implies ( and ( not x569 ) ( and x568 true ) ) ( = tmp264 4 ) ) + ( implies ( and x569 ( and ( not x568 ) true ) ) ( = tmp264 6 ) ) + ( implies ( and x569 ( and x568 true ) ) ( = tmp264 10 ) ) + ( implies ( and ( not x522 ) ( and ( not x523 ) true ) ) ( = tmp263 0 ) ) + ( implies ( and ( not x522 ) ( and x523 true ) ) ( = tmp263 6 ) ) + ( implies ( and x522 ( and ( not x523 ) true ) ) ( = tmp263 6 ) ) + ( implies ( and x522 ( and x523 true ) ) ( = tmp263 12 ) ) + ( implies ( and ( not x499 ) true ) ( = tmp262 0 ) ) + ( implies ( and x499 true ) ( = tmp262 2 ) ) + ( implies ( and ( not x497 ) ( and ( not x498 ) true ) ) ( = tmp261 0 ) ) + ( implies ( and ( not x497 ) ( and x498 true ) ) ( = tmp261 2 ) ) + ( implies ( and x497 ( and ( not x498 ) true ) ) ( = tmp261 4 ) ) + ( implies ( and x497 ( and x498 true ) ) ( = tmp261 6 ) ) + ( implies ( and ( not x501 ) ( and ( not x500 ) true ) ) ( = tmp260 0 ) ) + ( implies ( and ( not x501 ) ( and x500 true ) ) ( = tmp260 4 ) ) + ( implies ( and x501 ( and ( not x500 ) true ) ) ( = tmp260 4 ) ) + ( implies ( and x501 ( and x500 true ) ) ( = tmp260 8 ) ) + ( implies ( and ( not x495 ) ( and ( not x496 ) true ) ) ( = tmp259 0 ) ) + ( implies ( and ( not x495 ) ( and x496 true ) ) ( = tmp259 4 ) ) + ( implies ( and x495 ( and ( not x496 ) true ) ) ( = tmp259 2 ) ) + ( implies ( and x495 ( and x496 true ) ) ( = tmp259 6 ) ) + ( implies ( and ( not x503 ) ( and ( not x502 ) true ) ) ( = tmp258 0 ) ) + ( implies ( and ( not x503 ) ( and x502 true ) ) ( = tmp258 4 ) ) + ( implies ( and x503 ( and ( not x502 ) true ) ) ( = tmp258 4 ) ) + ( implies ( and x503 ( and x502 true ) ) ( = tmp258 8 ) ) + ( implies ( and ( not x493 ) ( and ( not x494 ) true ) ) ( = tmp257 0 ) ) + ( implies ( and ( not x493 ) ( and x494 true ) ) ( = tmp257 2 ) ) + ( implies ( and x493 ( and ( not x494 ) true ) ) ( = tmp257 4 ) ) + ( implies ( and x493 ( and x494 true ) ) ( = tmp257 6 ) ) + ( implies ( and ( not x505 ) ( and ( not x504 ) true ) ) ( = tmp256 0 ) ) + ( implies ( and ( not x505 ) ( and x504 true ) ) ( = tmp256 2 ) ) + ( implies ( and x505 ( and ( not x504 ) true ) ) ( = tmp256 2 ) ) + ( implies ( and x505 ( and x504 true ) ) ( = tmp256 4 ) ) + ( implies ( and ( not x491 ) ( and ( not x492 ) true ) ) ( = tmp255 0 ) ) + ( implies ( and ( not x491 ) ( and x492 true ) ) ( = tmp255 6 ) ) + ( implies ( and x491 ( and ( not x492 ) true ) ) ( = tmp255 6 ) ) + ( implies ( and x491 ( and x492 true ) ) ( = tmp255 12 ) ) + ( implies ( and ( not x507 ) ( and ( not x506 ) true ) ) ( = tmp254 0 ) ) + ( implies ( and ( not x507 ) ( and x506 true ) ) ( = tmp254 4 ) ) + ( implies ( and x507 ( and ( not x506 ) true ) ) ( = tmp254 6 ) ) + ( implies ( and x507 ( and x506 true ) ) ( = tmp254 10 ) ) + ( implies ( and ( not x489 ) ( and ( not x490 ) true ) ) ( = tmp253 0 ) ) + ( implies ( and ( not x489 ) ( and x490 true ) ) ( = tmp253 6 ) ) + ( implies ( and x489 ( and ( not x490 ) true ) ) ( = tmp253 6 ) ) + ( implies ( and x489 ( and x490 true ) ) ( = tmp253 12 ) ) + ( implies ( and ( not x509 ) ( and ( not x508 ) true ) ) ( = tmp252 0 ) ) + ( implies ( and ( not x509 ) ( and x508 true ) ) ( = tmp252 4 ) ) + ( implies ( and x509 ( and ( not x508 ) true ) ) ( = tmp252 4 ) ) + ( implies ( and x509 ( and x508 true ) ) ( = tmp252 8 ) ) + ( implies ( and ( not x487 ) ( and ( not x488 ) true ) ) ( = tmp251 0 ) ) + ( implies ( and ( not x487 ) ( and x488 true ) ) ( = tmp251 6 ) ) + ( implies ( and x487 ( and ( not x488 ) true ) ) ( = tmp251 6 ) ) + ( implies ( and x487 ( and x488 true ) ) ( = tmp251 12 ) ) + ( implies ( and ( not x511 ) ( and ( not x510 ) true ) ) ( = tmp250 0 ) ) + ( implies ( and ( not x511 ) ( and x510 true ) ) ( = tmp250 6 ) ) + ( implies ( and x511 ( and ( not x510 ) true ) ) ( = tmp250 6 ) ) + ( implies ( and x511 ( and x510 true ) ) ( = tmp250 12 ) ) + ( implies ( and ( not x485 ) ( and ( not x486 ) true ) ) ( = tmp249 0 ) ) + ( implies ( and ( not x485 ) ( and x486 true ) ) ( = tmp249 6 ) ) + ( implies ( and x485 ( and ( not x486 ) true ) ) ( = tmp249 4 ) ) + ( implies ( and x485 ( and x486 true ) ) ( = tmp249 10 ) ) + ( implies ( and ( not x513 ) ( and ( not x512 ) true ) ) ( = tmp248 0 ) ) + ( implies ( and ( not x513 ) ( and x512 true ) ) ( = tmp248 6 ) ) + ( implies ( and x513 ( and ( not x512 ) true ) ) ( = tmp248 6 ) ) + ( implies ( and x513 ( and x512 true ) ) ( = tmp248 12 ) ) + ( implies ( and ( not x483 ) ( and ( not x484 ) true ) ) ( = tmp247 0 ) ) + ( implies ( and ( not x483 ) ( and x484 true ) ) ( = tmp247 4 ) ) + ( implies ( and x483 ( and ( not x484 ) true ) ) ( = tmp247 2 ) ) + ( implies ( and x483 ( and x484 true ) ) ( = tmp247 6 ) ) + ( implies ( and ( not x515 ) ( and ( not x514 ) true ) ) ( = tmp246 0 ) ) + ( implies ( and ( not x515 ) ( and x514 true ) ) ( = tmp246 4 ) ) + ( implies ( and x515 ( and ( not x514 ) true ) ) ( = tmp246 6 ) ) + ( implies ( and x515 ( and x514 true ) ) ( = tmp246 10 ) ) + ( implies ( and ( not x481 ) ( and ( not x482 ) true ) ) ( = tmp245 0 ) ) + ( implies ( and ( not x481 ) ( and x482 true ) ) ( = tmp245 2 ) ) + ( implies ( and x481 ( and ( not x482 ) true ) ) ( = tmp245 4 ) ) + ( implies ( and x481 ( and x482 true ) ) ( = tmp245 6 ) ) + ( implies ( and ( not x517 ) ( and ( not x516 ) true ) ) ( = tmp244 0 ) ) + ( implies ( and ( not x517 ) ( and x516 true ) ) ( = tmp244 6 ) ) + ( implies ( and x517 ( and ( not x516 ) true ) ) ( = tmp244 6 ) ) + ( implies ( and x517 ( and x516 true ) ) ( = tmp244 12 ) ) + ( implies ( and ( not x479 ) ( and ( not x480 ) true ) ) ( = tmp243 0 ) ) + ( implies ( and ( not x479 ) ( and x480 true ) ) ( = tmp243 4 ) ) + ( implies ( and x479 ( and ( not x480 ) true ) ) ( = tmp243 2 ) ) + ( implies ( and x479 ( and x480 true ) ) ( = tmp243 6 ) ) + ( implies ( and ( not x519 ) ( and ( not x518 ) true ) ) ( = tmp242 0 ) ) + ( implies ( and ( not x519 ) ( and x518 true ) ) ( = tmp242 6 ) ) + ( implies ( and x519 ( and ( not x518 ) true ) ) ( = tmp242 8 ) ) + ( implies ( and x519 ( and x518 true ) ) ( = tmp242 14 ) ) + ( implies ( and ( not x477 ) ( and ( not x478 ) true ) ) ( = tmp241 0 ) ) + ( implies ( and ( not x477 ) ( and x478 true ) ) ( = tmp241 4 ) ) + ( implies ( and x477 ( and ( not x478 ) true ) ) ( = tmp241 6 ) ) + ( implies ( and x477 ( and x478 true ) ) ( = tmp241 10 ) ) + ( implies ( and ( not x521 ) ( and ( not x520 ) true ) ) ( = tmp240 0 ) ) + ( implies ( and ( not x521 ) ( and x520 true ) ) ( = tmp240 8 ) ) + ( implies ( and x521 ( and ( not x520 ) true ) ) ( = tmp240 8 ) ) + ( implies ( and x521 ( and x520 true ) ) ( = tmp240 16 ) ) + ( implies ( and ( not x475 ) ( and ( not x476 ) true ) ) ( = tmp239 0 ) ) + ( implies ( and ( not x475 ) ( and x476 true ) ) ( = tmp239 6 ) ) + ( implies ( and x475 ( and ( not x476 ) true ) ) ( = tmp239 4 ) ) + ( implies ( and x475 ( and x476 true ) ) ( = tmp239 10 ) ) + ( implies ( and ( not x452 ) true ) ( = tmp238 0 ) ) + ( implies ( and x452 true ) ( = tmp238 4 ) ) + ( implies ( and ( not x450 ) ( and ( not x451 ) true ) ) ( = tmp237 0 ) ) + ( implies ( and ( not x450 ) ( and x451 true ) ) ( = tmp237 4 ) ) + ( implies ( and x450 ( and ( not x451 ) true ) ) ( = tmp237 4 ) ) + ( implies ( and x450 ( and x451 true ) ) ( = tmp237 8 ) ) + ( implies ( and ( not x454 ) ( and ( not x453 ) true ) ) ( = tmp236 0 ) ) + ( implies ( and ( not x454 ) ( and x453 true ) ) ( = tmp236 2 ) ) + ( implies ( and x454 ( and ( not x453 ) true ) ) ( = tmp236 1 ) ) + ( implies ( and x454 ( and x453 true ) ) ( = tmp236 3 ) ) + ( implies ( and ( not x448 ) ( and ( not x449 ) true ) ) ( = tmp235 0 ) ) + ( implies ( and ( not x448 ) ( and x449 true ) ) ( = tmp235 4 ) ) + ( implies ( and x448 ( and ( not x449 ) true ) ) ( = tmp235 4 ) ) + ( implies ( and x448 ( and x449 true ) ) ( = tmp235 8 ) ) + ( implies ( and ( not x456 ) ( and ( not x455 ) true ) ) ( = tmp234 0 ) ) + ( implies ( and ( not x456 ) ( and x455 true ) ) ( = tmp234 2 ) ) + ( implies ( and x456 ( and ( not x455 ) true ) ) ( = tmp234 4 ) ) + ( implies ( and x456 ( and x455 true ) ) ( = tmp234 6 ) ) + ( implies ( and ( not x446 ) ( and ( not x447 ) true ) ) ( = tmp233 0 ) ) + ( implies ( and ( not x446 ) ( and x447 true ) ) ( = tmp233 4 ) ) + ( implies ( and x446 ( and ( not x447 ) true ) ) ( = tmp233 4 ) ) + ( implies ( and x446 ( and x447 true ) ) ( = tmp233 8 ) ) + ( implies ( and ( not x458 ) ( and ( not x457 ) true ) ) ( = tmp232 0 ) ) + ( implies ( and ( not x458 ) ( and x457 true ) ) ( = tmp232 4 ) ) + ( implies ( and x458 ( and ( not x457 ) true ) ) ( = tmp232 6 ) ) + ( implies ( and x458 ( and x457 true ) ) ( = tmp232 10 ) ) + ( implies ( and ( not x444 ) ( and ( not x445 ) true ) ) ( = tmp231 0 ) ) + ( implies ( and ( not x444 ) ( and x445 true ) ) ( = tmp231 4 ) ) + ( implies ( and x444 ( and ( not x445 ) true ) ) ( = tmp231 4 ) ) + ( implies ( and x444 ( and x445 true ) ) ( = tmp231 8 ) ) + ( implies ( and ( not x460 ) ( and ( not x459 ) true ) ) ( = tmp230 0 ) ) + ( implies ( and ( not x460 ) ( and x459 true ) ) ( = tmp230 6 ) ) + ( implies ( and x460 ( and ( not x459 ) true ) ) ( = tmp230 6 ) ) + ( implies ( and x460 ( and x459 true ) ) ( = tmp230 12 ) ) + ( implies ( and ( not x442 ) ( and ( not x443 ) true ) ) ( = tmp229 0 ) ) + ( implies ( and ( not x442 ) ( and x443 true ) ) ( = tmp229 2 ) ) + ( implies ( and x442 ( and ( not x443 ) true ) ) ( = tmp229 2 ) ) + ( implies ( and x442 ( and x443 true ) ) ( = tmp229 4 ) ) + ( implies ( and ( not x462 ) ( and ( not x461 ) true ) ) ( = tmp228 0 ) ) + ( implies ( and ( not x462 ) ( and x461 true ) ) ( = tmp228 6 ) ) + ( implies ( and x462 ( and ( not x461 ) true ) ) ( = tmp228 8 ) ) + ( implies ( and x462 ( and x461 true ) ) ( = tmp228 14 ) ) + ( implies ( and ( not x440 ) ( and ( not x441 ) true ) ) ( = tmp227 0 ) ) + ( implies ( and ( not x440 ) ( and x441 true ) ) ( = tmp227 2 ) ) + ( implies ( and x440 ( and ( not x441 ) true ) ) ( = tmp227 2 ) ) + ( implies ( and x440 ( and x441 true ) ) ( = tmp227 4 ) ) + ( implies ( and ( not x464 ) ( and ( not x463 ) true ) ) ( = tmp226 0 ) ) + ( implies ( and ( not x464 ) ( and x463 true ) ) ( = tmp226 8 ) ) + ( implies ( and x464 ( and ( not x463 ) true ) ) ( = tmp226 8 ) ) + ( implies ( and x464 ( and x463 true ) ) ( = tmp226 16 ) ) + ( implies ( and ( not x438 ) ( and ( not x439 ) true ) ) ( = tmp225 0 ) ) + ( implies ( and ( not x438 ) ( and x439 true ) ) ( = tmp225 4 ) ) + ( implies ( and x438 ( and ( not x439 ) true ) ) ( = tmp225 4 ) ) + ( implies ( and x438 ( and x439 true ) ) ( = tmp225 8 ) ) + ( implies ( and ( not x466 ) ( and ( not x465 ) true ) ) ( = tmp224 0 ) ) + ( implies ( and ( not x466 ) ( and x465 true ) ) ( = tmp224 8 ) ) + ( implies ( and x466 ( and ( not x465 ) true ) ) ( = tmp224 8 ) ) + ( implies ( and x466 ( and x465 true ) ) ( = tmp224 16 ) ) + ( implies ( and ( not x436 ) ( and ( not x437 ) true ) ) ( = tmp223 0 ) ) + ( implies ( and ( not x436 ) ( and x437 true ) ) ( = tmp223 4 ) ) + ( implies ( and x436 ( and ( not x437 ) true ) ) ( = tmp223 4 ) ) + ( implies ( and x436 ( and x437 true ) ) ( = tmp223 8 ) ) + ( implies ( and ( not x468 ) ( and ( not x467 ) true ) ) ( = tmp222 0 ) ) + ( implies ( and ( not x468 ) ( and x467 true ) ) ( = tmp222 8 ) ) + ( implies ( and x468 ( and ( not x467 ) true ) ) ( = tmp222 8 ) ) + ( implies ( and x468 ( and x467 true ) ) ( = tmp222 16 ) ) + ( implies ( and ( not x434 ) ( and ( not x435 ) true ) ) ( = tmp221 0 ) ) + ( implies ( and ( not x434 ) ( and x435 true ) ) ( = tmp221 4 ) ) + ( implies ( and x434 ( and ( not x435 ) true ) ) ( = tmp221 4 ) ) + ( implies ( and x434 ( and x435 true ) ) ( = tmp221 8 ) ) + ( implies ( and ( not x470 ) ( and ( not x469 ) true ) ) ( = tmp220 0 ) ) + ( implies ( and ( not x470 ) ( and x469 true ) ) ( = tmp220 6 ) ) + ( implies ( and x470 ( and ( not x469 ) true ) ) ( = tmp220 6 ) ) + ( implies ( and x470 ( and x469 true ) ) ( = tmp220 12 ) ) + ( implies ( and ( not x432 ) ( and ( not x433 ) true ) ) ( = tmp219 0 ) ) + ( implies ( and ( not x432 ) ( and x433 true ) ) ( = tmp219 4 ) ) + ( implies ( and x432 ( and ( not x433 ) true ) ) ( = tmp219 4 ) ) + ( implies ( and x432 ( and x433 true ) ) ( = tmp219 8 ) ) + ( implies ( and ( not x472 ) ( and ( not x471 ) true ) ) ( = tmp218 0 ) ) + ( implies ( and ( not x472 ) ( and x471 true ) ) ( = tmp218 6 ) ) + ( implies ( and x472 ( and ( not x471 ) true ) ) ( = tmp218 6 ) ) + ( implies ( and x472 ( and x471 true ) ) ( = tmp218 12 ) ) + ( implies ( and ( not x430 ) ( and ( not x431 ) true ) ) ( = tmp217 0 ) ) + ( implies ( and ( not x430 ) ( and x431 true ) ) ( = tmp217 4 ) ) + ( implies ( and x430 ( and ( not x431 ) true ) ) ( = tmp217 2 ) ) + ( implies ( and x430 ( and x431 true ) ) ( = tmp217 6 ) ) + ( implies ( and ( not x474 ) ( and ( not x473 ) true ) ) ( = tmp216 0 ) ) + ( implies ( and ( not x474 ) ( and x473 true ) ) ( = tmp216 6 ) ) + ( implies ( and x474 ( and ( not x473 ) true ) ) ( = tmp216 4 ) ) + ( implies ( and x474 ( and x473 true ) ) ( = tmp216 10 ) ) + ( implies ( and ( not x428 ) ( and ( not x429 ) true ) ) ( = tmp215 0 ) ) + ( implies ( and ( not x428 ) ( and x429 true ) ) ( = tmp215 2 ) ) + ( implies ( and x428 ( and ( not x429 ) true ) ) ( = tmp215 1 ) ) + ( implies ( and x428 ( and x429 true ) ) ( = tmp215 3 ) ) + ( implies ( and ( not x405 ) ( and ( not x404 ) true ) ) ( = tmp214 0 ) ) + ( implies ( and ( not x405 ) ( and x404 true ) ) ( = tmp214 6 ) ) + ( implies ( and x405 ( and ( not x404 ) true ) ) ( = tmp214 4 ) ) + ( implies ( and x405 ( and x404 true ) ) ( = tmp214 10 ) ) + ( implies ( and ( not x402 ) ( and ( not x403 ) true ) ) ( = tmp213 0 ) ) + ( implies ( and ( not x402 ) ( and x403 true ) ) ( = tmp213 6 ) ) + ( implies ( and x402 ( and ( not x403 ) true ) ) ( = tmp213 6 ) ) + ( implies ( and x402 ( and x403 true ) ) ( = tmp213 12 ) ) + ( implies ( and ( not x407 ) ( and ( not x406 ) true ) ) ( = tmp212 0 ) ) + ( implies ( and ( not x407 ) ( and x406 true ) ) ( = tmp212 4 ) ) + ( implies ( and x407 ( and ( not x406 ) true ) ) ( = tmp212 2 ) ) + ( implies ( and x407 ( and x406 true ) ) ( = tmp212 6 ) ) + ( implies ( and ( not x400 ) ( and ( not x401 ) true ) ) ( = tmp211 0 ) ) + ( implies ( and ( not x400 ) ( and x401 true ) ) ( = tmp211 6 ) ) + ( implies ( and x400 ( and ( not x401 ) true ) ) ( = tmp211 4 ) ) + ( implies ( and x400 ( and x401 true ) ) ( = tmp211 10 ) ) + ( implies ( and ( not x409 ) ( and ( not x408 ) true ) ) ( = tmp210 0 ) ) + ( implies ( and ( not x409 ) ( and x408 true ) ) ( = tmp210 2 ) ) + ( implies ( and x409 ( and ( not x408 ) true ) ) ( = tmp210 4 ) ) + ( implies ( and x409 ( and x408 true ) ) ( = tmp210 6 ) ) + ( implies ( and ( not x398 ) ( and ( not x399 ) true ) ) ( = tmp209 0 ) ) + ( implies ( and ( not x398 ) ( and x399 true ) ) ( = tmp209 4 ) ) + ( implies ( and x398 ( and ( not x399 ) true ) ) ( = tmp209 4 ) ) + ( implies ( and x398 ( and x399 true ) ) ( = tmp209 8 ) ) + ( implies ( and ( not x411 ) ( and ( not x410 ) true ) ) ( = tmp208 0 ) ) + ( implies ( and ( not x411 ) ( and x410 true ) ) ( = tmp208 4 ) ) + ( implies ( and x411 ( and ( not x410 ) true ) ) ( = tmp208 4 ) ) + ( implies ( and x411 ( and x410 true ) ) ( = tmp208 8 ) ) + ( implies ( and ( not x396 ) ( and ( not x397 ) true ) ) ( = tmp207 0 ) ) + ( implies ( and ( not x396 ) ( and x397 true ) ) ( = tmp207 4 ) ) + ( implies ( and x396 ( and ( not x397 ) true ) ) ( = tmp207 4 ) ) + ( implies ( and x396 ( and x397 true ) ) ( = tmp207 8 ) ) + ( implies ( and ( not x413 ) ( and ( not x412 ) true ) ) ( = tmp206 0 ) ) + ( implies ( and ( not x413 ) ( and x412 true ) ) ( = tmp206 4 ) ) + ( implies ( and x413 ( and ( not x412 ) true ) ) ( = tmp206 4 ) ) + ( implies ( and x413 ( and x412 true ) ) ( = tmp206 8 ) ) + ( implies ( and ( not x394 ) ( and ( not x395 ) true ) ) ( = tmp205 0 ) ) + ( implies ( and ( not x394 ) ( and x395 true ) ) ( = tmp205 4 ) ) + ( implies ( and x394 ( and ( not x395 ) true ) ) ( = tmp205 4 ) ) + ( implies ( and x394 ( and x395 true ) ) ( = tmp205 8 ) ) + ( implies ( and ( not x415 ) ( and ( not x414 ) true ) ) ( = tmp204 0 ) ) + ( implies ( and ( not x415 ) ( and x414 true ) ) ( = tmp204 4 ) ) + ( implies ( and x415 ( and ( not x414 ) true ) ) ( = tmp204 4 ) ) + ( implies ( and x415 ( and x414 true ) ) ( = tmp204 8 ) ) + ( implies ( and ( not x392 ) ( and ( not x393 ) true ) ) ( = tmp203 0 ) ) + ( implies ( and ( not x392 ) ( and x393 true ) ) ( = tmp203 2 ) ) + ( implies ( and x392 ( and ( not x393 ) true ) ) ( = tmp203 2 ) ) + ( implies ( and x392 ( and x393 true ) ) ( = tmp203 4 ) ) + ( implies ( and ( not x417 ) ( and ( not x416 ) true ) ) ( = tmp202 0 ) ) + ( implies ( and ( not x417 ) ( and x416 true ) ) ( = tmp202 4 ) ) + ( implies ( and x417 ( and ( not x416 ) true ) ) ( = tmp202 6 ) ) + ( implies ( and x417 ( and x416 true ) ) ( = tmp202 10 ) ) + ( implies ( and ( not x390 ) ( and ( not x391 ) true ) ) ( = tmp201 0 ) ) + ( implies ( and ( not x390 ) ( and x391 true ) ) ( = tmp201 2 ) ) + ( implies ( and x390 ( and ( not x391 ) true ) ) ( = tmp201 2 ) ) + ( implies ( and x390 ( and x391 true ) ) ( = tmp201 4 ) ) + ( implies ( and ( not x419 ) ( and ( not x418 ) true ) ) ( = tmp200 0 ) ) + ( implies ( and ( not x419 ) ( and x418 true ) ) ( = tmp200 6 ) ) + ( implies ( and x419 ( and ( not x418 ) true ) ) ( = tmp200 6 ) ) + ( implies ( and x419 ( and x418 true ) ) ( = tmp200 12 ) ) + ( implies ( and ( not x388 ) ( and ( not x389 ) true ) ) ( = tmp199 0 ) ) + ( implies ( and ( not x388 ) ( and x389 true ) ) ( = tmp199 2 ) ) + ( implies ( and x388 ( and ( not x389 ) true ) ) ( = tmp199 2 ) ) + ( implies ( and x388 ( and x389 true ) ) ( = tmp199 4 ) ) + ( implies ( and ( not x421 ) ( and ( not x420 ) true ) ) ( = tmp198 0 ) ) + ( implies ( and ( not x421 ) ( and x420 true ) ) ( = tmp198 6 ) ) + ( implies ( and x421 ( and ( not x420 ) true ) ) ( = tmp198 6 ) ) + ( implies ( and x421 ( and x420 true ) ) ( = tmp198 12 ) ) + ( implies ( and ( not x386 ) ( and ( not x387 ) true ) ) ( = tmp197 0 ) ) + ( implies ( and ( not x386 ) ( and x387 true ) ) ( = tmp197 4 ) ) + ( implies ( and x386 ( and ( not x387 ) true ) ) ( = tmp197 4 ) ) + ( implies ( and x386 ( and x387 true ) ) ( = tmp197 8 ) ) + ( implies ( and ( not x423 ) ( and ( not x422 ) true ) ) ( = tmp196 0 ) ) + ( implies ( and ( not x423 ) ( and x422 true ) ) ( = tmp196 6 ) ) + ( implies ( and x423 ( and ( not x422 ) true ) ) ( = tmp196 4 ) ) + ( implies ( and x423 ( and x422 true ) ) ( = tmp196 10 ) ) + ( implies ( and ( not x384 ) ( and ( not x385 ) true ) ) ( = tmp195 0 ) ) + ( implies ( and ( not x384 ) ( and x385 true ) ) ( = tmp195 6 ) ) + ( implies ( and x384 ( and ( not x385 ) true ) ) ( = tmp195 6 ) ) + ( implies ( and x384 ( and x385 true ) ) ( = tmp195 12 ) ) + ( implies ( and ( not x425 ) ( and ( not x424 ) true ) ) ( = tmp194 0 ) ) + ( implies ( and ( not x425 ) ( and x424 true ) ) ( = tmp194 4 ) ) + ( implies ( and x425 ( and ( not x424 ) true ) ) ( = tmp194 4 ) ) + ( implies ( and x425 ( and x424 true ) ) ( = tmp194 8 ) ) + ( implies ( and ( not x382 ) ( and ( not x383 ) true ) ) ( = tmp193 0 ) ) + ( implies ( and ( not x382 ) ( and x383 true ) ) ( = tmp193 6 ) ) + ( implies ( and x382 ( and ( not x383 ) true ) ) ( = tmp193 6 ) ) + ( implies ( and x382 ( and x383 true ) ) ( = tmp193 12 ) ) + ( implies ( and ( not x427 ) ( and ( not x426 ) true ) ) ( = tmp192 0 ) ) + ( implies ( and ( not x427 ) ( and x426 true ) ) ( = tmp192 4 ) ) + ( implies ( and x427 ( and ( not x426 ) true ) ) ( = tmp192 4 ) ) + ( implies ( and x427 ( and x426 true ) ) ( = tmp192 8 ) ) + ( implies ( and ( not x380 ) ( and ( not x381 ) true ) ) ( = tmp191 0 ) ) + ( implies ( and ( not x380 ) ( and x381 true ) ) ( = tmp191 4 ) ) + ( implies ( and x380 ( and ( not x381 ) true ) ) ( = tmp191 4 ) ) + ( implies ( and x380 ( and x381 true ) ) ( = tmp191 8 ) ) + ( implies ( and ( not x357 ) ( and ( not x356 ) true ) ) ( = tmp190 0 ) ) + ( implies ( and ( not x357 ) ( and x356 true ) ) ( = tmp190 2 ) ) + ( implies ( and x357 ( and ( not x356 ) true ) ) ( = tmp190 2 ) ) + ( implies ( and x357 ( and x356 true ) ) ( = tmp190 4 ) ) + ( implies ( and ( not x354 ) ( and ( not x355 ) true ) ) ( = tmp189 0 ) ) + ( implies ( and ( not x354 ) ( and x355 true ) ) ( = tmp189 2 ) ) + ( implies ( and x354 ( and ( not x355 ) true ) ) ( = tmp189 2 ) ) + ( implies ( and x354 ( and x355 true ) ) ( = tmp189 4 ) ) + ( implies ( and ( not x359 ) ( and ( not x358 ) true ) ) ( = tmp188 0 ) ) + ( implies ( and ( not x359 ) ( and x358 true ) ) ( = tmp188 4 ) ) + ( implies ( and x359 ( and ( not x358 ) true ) ) ( = tmp188 4 ) ) + ( implies ( and x359 ( and x358 true ) ) ( = tmp188 8 ) ) + ( implies ( and ( not x352 ) ( and ( not x353 ) true ) ) ( = tmp187 0 ) ) + ( implies ( and ( not x352 ) ( and x353 true ) ) ( = tmp187 4 ) ) + ( implies ( and x352 ( and ( not x353 ) true ) ) ( = tmp187 4 ) ) + ( implies ( and x352 ( and x353 true ) ) ( = tmp187 8 ) ) + ( implies ( and ( not x361 ) ( and ( not x360 ) true ) ) ( = tmp186 0 ) ) + ( implies ( and ( not x361 ) ( and x360 true ) ) ( = tmp186 4 ) ) + ( implies ( and x361 ( and ( not x360 ) true ) ) ( = tmp186 4 ) ) + ( implies ( and x361 ( and x360 true ) ) ( = tmp186 8 ) ) + ( implies ( and ( not x350 ) ( and ( not x351 ) true ) ) ( = tmp185 0 ) ) + ( implies ( and ( not x350 ) ( and x351 true ) ) ( = tmp185 6 ) ) + ( implies ( and x350 ( and ( not x351 ) true ) ) ( = tmp185 6 ) ) + ( implies ( and x350 ( and x351 true ) ) ( = tmp185 12 ) ) + ( implies ( and ( not x363 ) ( and ( not x362 ) true ) ) ( = tmp184 0 ) ) + ( implies ( and ( not x363 ) ( and x362 true ) ) ( = tmp184 4 ) ) + ( implies ( and x363 ( and ( not x362 ) true ) ) ( = tmp184 4 ) ) + ( implies ( and x363 ( and x362 true ) ) ( = tmp184 8 ) ) + ( implies ( and ( not x348 ) ( and ( not x349 ) true ) ) ( = tmp183 0 ) ) + ( implies ( and ( not x348 ) ( and x349 true ) ) ( = tmp183 6 ) ) + ( implies ( and x348 ( and ( not x349 ) true ) ) ( = tmp183 6 ) ) + ( implies ( and x348 ( and x349 true ) ) ( = tmp183 12 ) ) + ( implies ( and ( not x365 ) ( and ( not x364 ) true ) ) ( = tmp182 0 ) ) + ( implies ( and ( not x365 ) ( and x364 true ) ) ( = tmp182 4 ) ) + ( implies ( and x365 ( and ( not x364 ) true ) ) ( = tmp182 6 ) ) + ( implies ( and x365 ( and x364 true ) ) ( = tmp182 10 ) ) + ( implies ( and ( not x346 ) ( and ( not x347 ) true ) ) ( = tmp181 0 ) ) + ( implies ( and ( not x346 ) ( and x347 true ) ) ( = tmp181 8 ) ) + ( implies ( and x346 ( and ( not x347 ) true ) ) ( = tmp181 8 ) ) + ( implies ( and x346 ( and x347 true ) ) ( = tmp181 16 ) ) + ( implies ( and ( not x367 ) ( and ( not x366 ) true ) ) ( = tmp180 0 ) ) + ( implies ( and ( not x367 ) ( and x366 true ) ) ( = tmp180 6 ) ) + ( implies ( and x367 ( and ( not x366 ) true ) ) ( = tmp180 6 ) ) + ( implies ( and x367 ( and x366 true ) ) ( = tmp180 12 ) ) + ( implies ( and ( not x344 ) ( and ( not x345 ) true ) ) ( = tmp179 0 ) ) + ( implies ( and ( not x344 ) ( and x345 true ) ) ( = tmp179 8 ) ) + ( implies ( and x344 ( and ( not x345 ) true ) ) ( = tmp179 8 ) ) + ( implies ( and x344 ( and x345 true ) ) ( = tmp179 16 ) ) + ( implies ( and ( not x369 ) ( and ( not x368 ) true ) ) ( = tmp178 0 ) ) + ( implies ( and ( not x369 ) ( and x368 true ) ) ( = tmp178 6 ) ) + ( implies ( and x369 ( and ( not x368 ) true ) ) ( = tmp178 6 ) ) + ( implies ( and x369 ( and x368 true ) ) ( = tmp178 12 ) ) + ( implies ( and ( not x342 ) ( and ( not x343 ) true ) ) ( = tmp177 0 ) ) + ( implies ( and ( not x342 ) ( and x343 true ) ) ( = tmp177 8 ) ) + ( implies ( and x342 ( and ( not x343 ) true ) ) ( = tmp177 6 ) ) + ( implies ( and x342 ( and x343 true ) ) ( = tmp177 14 ) ) + ( implies ( and ( not x371 ) ( and ( not x370 ) true ) ) ( = tmp176 0 ) ) + ( implies ( and ( not x371 ) ( and x370 true ) ) ( = tmp176 6 ) ) + ( implies ( and x371 ( and ( not x370 ) true ) ) ( = tmp176 6 ) ) + ( implies ( and x371 ( and x370 true ) ) ( = tmp176 12 ) ) + ( implies ( and ( not x340 ) ( and ( not x341 ) true ) ) ( = tmp175 0 ) ) + ( implies ( and ( not x340 ) ( and x341 true ) ) ( = tmp175 6 ) ) + ( implies ( and x340 ( and ( not x341 ) true ) ) ( = tmp175 6 ) ) + ( implies ( and x340 ( and x341 true ) ) ( = tmp175 12 ) ) + ( implies ( and ( not x373 ) ( and ( not x372 ) true ) ) ( = tmp174 0 ) ) + ( implies ( and ( not x373 ) ( and x372 true ) ) ( = tmp174 6 ) ) + ( implies ( and x373 ( and ( not x372 ) true ) ) ( = tmp174 6 ) ) + ( implies ( and x373 ( and x372 true ) ) ( = tmp174 12 ) ) + ( implies ( and ( not x338 ) ( and ( not x339 ) true ) ) ( = tmp173 0 ) ) + ( implies ( and ( not x338 ) ( and x339 true ) ) ( = tmp173 6 ) ) + ( implies ( and x338 ( and ( not x339 ) true ) ) ( = tmp173 4 ) ) + ( implies ( and x338 ( and x339 true ) ) ( = tmp173 10 ) ) + ( implies ( and ( not x375 ) ( and ( not x374 ) true ) ) ( = tmp172 0 ) ) + ( implies ( and ( not x375 ) ( and x374 true ) ) ( = tmp172 6 ) ) + ( implies ( and x375 ( and ( not x374 ) true ) ) ( = tmp172 4 ) ) + ( implies ( and x375 ( and x374 true ) ) ( = tmp172 10 ) ) + ( implies ( and ( not x336 ) ( and ( not x337 ) true ) ) ( = tmp171 0 ) ) + ( implies ( and ( not x336 ) ( and x337 true ) ) ( = tmp171 4 ) ) + ( implies ( and x336 ( and ( not x337 ) true ) ) ( = tmp171 2 ) ) + ( implies ( and x336 ( and x337 true ) ) ( = tmp171 6 ) ) + ( implies ( and ( not x377 ) ( and ( not x376 ) true ) ) ( = tmp170 0 ) ) + ( implies ( and ( not x377 ) ( and x376 true ) ) ( = tmp170 4 ) ) + ( implies ( and x377 ( and ( not x376 ) true ) ) ( = tmp170 2 ) ) + ( implies ( and x377 ( and x376 true ) ) ( = tmp170 6 ) ) + ( implies ( and ( not x334 ) ( and ( not x335 ) true ) ) ( = tmp169 0 ) ) + ( implies ( and ( not x334 ) ( and x335 true ) ) ( = tmp169 4 ) ) + ( implies ( and x334 ( and ( not x335 ) true ) ) ( = tmp169 4 ) ) + ( implies ( and x334 ( and x335 true ) ) ( = tmp169 8 ) ) + ( implies ( and ( not x379 ) ( and ( not x378 ) true ) ) ( = tmp168 0 ) ) + ( implies ( and ( not x379 ) ( and x378 true ) ) ( = tmp168 1 ) ) + ( implies ( and x379 ( and ( not x378 ) true ) ) ( = tmp168 1 ) ) + ( implies ( and x379 ( and x378 true ) ) ( = tmp168 2 ) ) + ( implies ( and ( not x332 ) ( and ( not x333 ) true ) ) ( = tmp167 0 ) ) + ( implies ( and ( not x332 ) ( and x333 true ) ) ( = tmp167 4 ) ) + ( implies ( and x332 ( and ( not x333 ) true ) ) ( = tmp167 4 ) ) + ( implies ( and x332 ( and x333 true ) ) ( = tmp167 8 ) ) + ( implies ( and ( not x309 ) ( and ( not x308 ) true ) ) ( = tmp166 0 ) ) + ( implies ( and ( not x309 ) ( and x308 true ) ) ( = tmp166 4 ) ) + ( implies ( and x309 ( and ( not x308 ) true ) ) ( = tmp166 4 ) ) + ( implies ( and x309 ( and x308 true ) ) ( = tmp166 8 ) ) + ( implies ( and ( not x306 ) ( and ( not x307 ) true ) ) ( = tmp165 0 ) ) + ( implies ( and ( not x306 ) ( and x307 true ) ) ( = tmp165 4 ) ) + ( implies ( and x306 ( and ( not x307 ) true ) ) ( = tmp165 4 ) ) + ( implies ( and x306 ( and x307 true ) ) ( = tmp165 8 ) ) + ( implies ( and ( not x311 ) ( and ( not x310 ) true ) ) ( = tmp164 0 ) ) + ( implies ( and ( not x311 ) ( and x310 true ) ) ( = tmp164 4 ) ) + ( implies ( and x311 ( and ( not x310 ) true ) ) ( = tmp164 4 ) ) + ( implies ( and x311 ( and x310 true ) ) ( = tmp164 8 ) ) + ( implies ( and ( not x304 ) ( and ( not x305 ) true ) ) ( = tmp163 0 ) ) + ( implies ( and ( not x304 ) ( and x305 true ) ) ( = tmp163 4 ) ) + ( implies ( and x304 ( and ( not x305 ) true ) ) ( = tmp163 6 ) ) + ( implies ( and x304 ( and x305 true ) ) ( = tmp163 10 ) ) + ( implies ( and ( not x313 ) ( and ( not x312 ) true ) ) ( = tmp162 0 ) ) + ( implies ( and ( not x313 ) ( and x312 true ) ) ( = tmp162 4 ) ) + ( implies ( and x313 ( and ( not x312 ) true ) ) ( = tmp162 4 ) ) + ( implies ( and x313 ( and x312 true ) ) ( = tmp162 8 ) ) + ( implies ( and ( not x302 ) ( and ( not x303 ) true ) ) ( = tmp161 0 ) ) + ( implies ( and ( not x302 ) ( and x303 true ) ) ( = tmp161 6 ) ) + ( implies ( and x302 ( and ( not x303 ) true ) ) ( = tmp161 6 ) ) + ( implies ( and x302 ( and x303 true ) ) ( = tmp161 12 ) ) + ( implies ( and ( not x315 ) ( and ( not x314 ) true ) ) ( = tmp160 0 ) ) + ( implies ( and ( not x315 ) ( and x314 true ) ) ( = tmp160 6 ) ) + ( implies ( and x315 ( and ( not x314 ) true ) ) ( = tmp160 6 ) ) + ( implies ( and x315 ( and x314 true ) ) ( = tmp160 12 ) ) + ( implies ( and ( not x300 ) ( and ( not x301 ) true ) ) ( = tmp159 0 ) ) + ( implies ( and ( not x300 ) ( and x301 true ) ) ( = tmp159 6 ) ) + ( implies ( and x300 ( and ( not x301 ) true ) ) ( = tmp159 6 ) ) + ( implies ( and x300 ( and x301 true ) ) ( = tmp159 12 ) ) + ( implies ( and ( not x317 ) ( and ( not x316 ) true ) ) ( = tmp158 0 ) ) + ( implies ( and ( not x317 ) ( and x316 true ) ) ( = tmp158 6 ) ) + ( implies ( and x317 ( and ( not x316 ) true ) ) ( = tmp158 6 ) ) + ( implies ( and x317 ( and x316 true ) ) ( = tmp158 12 ) ) + ( implies ( and ( not x298 ) ( and ( not x299 ) true ) ) ( = tmp157 0 ) ) + ( implies ( and ( not x298 ) ( and x299 true ) ) ( = tmp157 6 ) ) + ( implies ( and x298 ( and ( not x299 ) true ) ) ( = tmp157 4 ) ) + ( implies ( and x298 ( and x299 true ) ) ( = tmp157 10 ) ) + ( implies ( and ( not x319 ) ( and ( not x318 ) true ) ) ( = tmp156 0 ) ) + ( implies ( and ( not x319 ) ( and x318 true ) ) ( = tmp156 6 ) ) + ( implies ( and x319 ( and ( not x318 ) true ) ) ( = tmp156 6 ) ) + ( implies ( and x319 ( and x318 true ) ) ( = tmp156 12 ) ) + ( implies ( and ( not x296 ) ( and ( not x297 ) true ) ) ( = tmp155 0 ) ) + ( implies ( and ( not x296 ) ( and x297 true ) ) ( = tmp155 4 ) ) + ( implies ( and x296 ( and ( not x297 ) true ) ) ( = tmp155 4 ) ) + ( implies ( and x296 ( and x297 true ) ) ( = tmp155 8 ) ) + ( implies ( and ( not x321 ) ( and ( not x320 ) true ) ) ( = tmp154 0 ) ) + ( implies ( and ( not x321 ) ( and x320 true ) ) ( = tmp154 6 ) ) + ( implies ( and x321 ( and ( not x320 ) true ) ) ( = tmp154 6 ) ) + ( implies ( and x321 ( and x320 true ) ) ( = tmp154 12 ) ) + ( implies ( and ( not x294 ) ( and ( not x295 ) true ) ) ( = tmp153 0 ) ) + ( implies ( and ( not x294 ) ( and x295 true ) ) ( = tmp153 4 ) ) + ( implies ( and x294 ( and ( not x295 ) true ) ) ( = tmp153 4 ) ) + ( implies ( and x294 ( and x295 true ) ) ( = tmp153 8 ) ) + ( implies ( and ( not x323 ) ( and ( not x322 ) true ) ) ( = tmp152 0 ) ) + ( implies ( and ( not x323 ) ( and x322 true ) ) ( = tmp152 4 ) ) + ( implies ( and x323 ( and ( not x322 ) true ) ) ( = tmp152 4 ) ) + ( implies ( and x323 ( and x322 true ) ) ( = tmp152 8 ) ) + ( implies ( and ( not x292 ) ( and ( not x293 ) true ) ) ( = tmp151 0 ) ) + ( implies ( and ( not x292 ) ( and x293 true ) ) ( = tmp151 6 ) ) + ( implies ( and x292 ( and ( not x293 ) true ) ) ( = tmp151 4 ) ) + ( implies ( and x292 ( and x293 true ) ) ( = tmp151 10 ) ) + ( implies ( and ( not x325 ) ( and ( not x324 ) true ) ) ( = tmp150 0 ) ) + ( implies ( and ( not x325 ) ( and x324 true ) ) ( = tmp150 4 ) ) + ( implies ( and x325 ( and ( not x324 ) true ) ) ( = tmp150 4 ) ) + ( implies ( and x325 ( and x324 true ) ) ( = tmp150 8 ) ) + ( implies ( and ( not x290 ) ( and ( not x291 ) true ) ) ( = tmp149 0 ) ) + ( implies ( and ( not x290 ) ( and x291 true ) ) ( = tmp149 4 ) ) + ( implies ( and x290 ( and ( not x291 ) true ) ) ( = tmp149 2 ) ) + ( implies ( and x290 ( and x291 true ) ) ( = tmp149 6 ) ) + ( implies ( and ( not x327 ) ( and ( not x326 ) true ) ) ( = tmp148 0 ) ) + ( implies ( and ( not x327 ) ( and x326 true ) ) ( = tmp148 4 ) ) + ( implies ( and x327 ( and ( not x326 ) true ) ) ( = tmp148 4 ) ) + ( implies ( and x327 ( and x326 true ) ) ( = tmp148 8 ) ) + ( implies ( and ( not x288 ) ( and ( not x289 ) true ) ) ( = tmp147 0 ) ) + ( implies ( and ( not x288 ) ( and x289 true ) ) ( = tmp147 1 ) ) + ( implies ( and x288 ( and ( not x289 ) true ) ) ( = tmp147 2 ) ) + ( implies ( and x288 ( and x289 true ) ) ( = tmp147 3 ) ) + ( implies ( and ( not x329 ) ( and ( not x328 ) true ) ) ( = tmp146 0 ) ) + ( implies ( and ( not x329 ) ( and x328 true ) ) ( = tmp146 4 ) ) + ( implies ( and x329 ( and ( not x328 ) true ) ) ( = tmp146 4 ) ) + ( implies ( and x329 ( and x328 true ) ) ( = tmp146 8 ) ) + ( implies ( and ( not x286 ) ( and ( not x287 ) true ) ) ( = tmp145 0 ) ) + ( implies ( and ( not x286 ) ( and x287 true ) ) ( = tmp145 4 ) ) + ( implies ( and x286 ( and ( not x287 ) true ) ) ( = tmp145 4 ) ) + ( implies ( and x286 ( and x287 true ) ) ( = tmp145 8 ) ) + ( implies ( and ( not x331 ) ( and ( not x330 ) true ) ) ( = tmp144 0 ) ) + ( implies ( and ( not x331 ) ( and x330 true ) ) ( = tmp144 4 ) ) + ( implies ( and x331 ( and ( not x330 ) true ) ) ( = tmp144 4 ) ) + ( implies ( and x331 ( and x330 true ) ) ( = tmp144 8 ) ) + ( implies ( and ( not x284 ) ( and ( not x285 ) true ) ) ( = tmp143 0 ) ) + ( implies ( and ( not x284 ) ( and x285 true ) ) ( = tmp143 4 ) ) + ( implies ( and x284 ( and ( not x285 ) true ) ) ( = tmp143 4 ) ) + ( implies ( and x284 ( and x285 true ) ) ( = tmp143 8 ) ) + ( implies ( and ( not x263 ) ( and ( not x262 ) true ) ) ( = tmp142 0 ) ) + ( implies ( and ( not x263 ) ( and x262 true ) ) ( = tmp142 2 ) ) + ( implies ( and x263 ( and ( not x262 ) true ) ) ( = tmp142 2 ) ) + ( implies ( and x263 ( and x262 true ) ) ( = tmp142 4 ) ) + ( implies ( and ( not x260 ) ( and ( not x261 ) true ) ) ( = tmp141 0 ) ) + ( implies ( and ( not x260 ) ( and x261 true ) ) ( = tmp141 1 ) ) + ( implies ( and x260 ( and ( not x261 ) true ) ) ( = tmp141 1 ) ) + ( implies ( and x260 ( and x261 true ) ) ( = tmp141 2 ) ) + ( implies ( and ( not x265 ) ( and ( not x264 ) true ) ) ( = tmp140 0 ) ) + ( implies ( and ( not x265 ) ( and x264 true ) ) ( = tmp140 4 ) ) + ( implies ( and x265 ( and ( not x264 ) true ) ) ( = tmp140 4 ) ) + ( implies ( and x265 ( and x264 true ) ) ( = tmp140 8 ) ) + ( implies ( and ( not x258 ) ( and ( not x259 ) true ) ) ( = tmp139 0 ) ) + ( implies ( and ( not x258 ) ( and x259 true ) ) ( = tmp139 2 ) ) + ( implies ( and x258 ( and ( not x259 ) true ) ) ( = tmp139 2 ) ) + ( implies ( and x258 ( and x259 true ) ) ( = tmp139 4 ) ) + ( implies ( and ( not x267 ) ( and ( not x266 ) true ) ) ( = tmp138 0 ) ) + ( implies ( and ( not x267 ) ( and x266 true ) ) ( = tmp138 4 ) ) + ( implies ( and x267 ( and ( not x266 ) true ) ) ( = tmp138 4 ) ) + ( implies ( and x267 ( and x266 true ) ) ( = tmp138 8 ) ) + ( implies ( and ( not x256 ) ( and ( not x257 ) true ) ) ( = tmp137 0 ) ) + ( implies ( and ( not x256 ) ( and x257 true ) ) ( = tmp137 2 ) ) + ( implies ( and x256 ( and ( not x257 ) true ) ) ( = tmp137 2 ) ) + ( implies ( and x256 ( and x257 true ) ) ( = tmp137 4 ) ) + ( implies ( and ( not x269 ) ( and ( not x268 ) true ) ) ( = tmp136 0 ) ) + ( implies ( and ( not x269 ) ( and x268 true ) ) ( = tmp136 4 ) ) + ( implies ( and x269 ( and ( not x268 ) true ) ) ( = tmp136 4 ) ) + ( implies ( and x269 ( and x268 true ) ) ( = tmp136 8 ) ) + ( implies ( and ( not x254 ) ( and ( not x255 ) true ) ) ( = tmp135 0 ) ) + ( implies ( and ( not x254 ) ( and x255 true ) ) ( = tmp135 2 ) ) + ( implies ( and x254 ( and ( not x255 ) true ) ) ( = tmp135 2 ) ) + ( implies ( and x254 ( and x255 true ) ) ( = tmp135 4 ) ) + ( implies ( and ( not x271 ) ( and ( not x270 ) true ) ) ( = tmp134 0 ) ) + ( implies ( and ( not x271 ) ( and x270 true ) ) ( = tmp134 4 ) ) + ( implies ( and x271 ( and ( not x270 ) true ) ) ( = tmp134 4 ) ) + ( implies ( and x271 ( and x270 true ) ) ( = tmp134 8 ) ) + ( implies ( and ( not x252 ) ( and ( not x253 ) true ) ) ( = tmp133 0 ) ) + ( implies ( and ( not x252 ) ( and x253 true ) ) ( = tmp133 2 ) ) + ( implies ( and x252 ( and ( not x253 ) true ) ) ( = tmp133 2 ) ) + ( implies ( and x252 ( and x253 true ) ) ( = tmp133 4 ) ) + ( implies ( and ( not x273 ) ( and ( not x272 ) true ) ) ( = tmp132 0 ) ) + ( implies ( and ( not x273 ) ( and x272 true ) ) ( = tmp132 4 ) ) + ( implies ( and x273 ( and ( not x272 ) true ) ) ( = tmp132 4 ) ) + ( implies ( and x273 ( and x272 true ) ) ( = tmp132 8 ) ) + ( implies ( and ( not x250 ) ( and ( not x251 ) true ) ) ( = tmp131 0 ) ) + ( implies ( and ( not x250 ) ( and x251 true ) ) ( = tmp131 1 ) ) + ( implies ( and x250 ( and ( not x251 ) true ) ) ( = tmp131 1 ) ) + ( implies ( and x250 ( and x251 true ) ) ( = tmp131 2 ) ) + ( implies ( and ( not x275 ) ( and ( not x274 ) true ) ) ( = tmp130 0 ) ) + ( implies ( and ( not x275 ) ( and x274 true ) ) ( = tmp130 2 ) ) + ( implies ( and x275 ( and ( not x274 ) true ) ) ( = tmp130 2 ) ) + ( implies ( and x275 ( and x274 true ) ) ( = tmp130 4 ) ) + ( implies ( and ( not x248 ) ( and ( not x249 ) true ) ) ( = tmp129 0 ) ) + ( implies ( and ( not x248 ) ( and x249 true ) ) ( = tmp129 1 ) ) + ( implies ( and x248 ( and ( not x249 ) true ) ) ( = tmp129 1 ) ) + ( implies ( and x248 ( and x249 true ) ) ( = tmp129 2 ) ) + ( implies ( and ( not x277 ) ( and ( not x276 ) true ) ) ( = tmp128 0 ) ) + ( implies ( and ( not x277 ) ( and x276 true ) ) ( = tmp128 2 ) ) + ( implies ( and x277 ( and ( not x276 ) true ) ) ( = tmp128 4 ) ) + ( implies ( and x277 ( and x276 true ) ) ( = tmp128 6 ) ) + ( implies ( and ( not x246 ) ( and ( not x247 ) true ) ) ( = tmp127 0 ) ) + ( implies ( and ( not x246 ) ( and x247 true ) ) ( = tmp127 1 ) ) + ( implies ( and x246 ( and ( not x247 ) true ) ) ( = tmp127 1 ) ) + ( implies ( and x246 ( and x247 true ) ) ( = tmp127 2 ) ) + ( implies ( and ( not x279 ) ( and ( not x278 ) true ) ) ( = tmp126 0 ) ) + ( implies ( and ( not x279 ) ( and x278 true ) ) ( = tmp126 4 ) ) + ( implies ( and x279 ( and ( not x278 ) true ) ) ( = tmp126 4 ) ) + ( implies ( and x279 ( and x278 true ) ) ( = tmp126 8 ) ) + ( implies ( and ( not x244 ) ( and ( not x245 ) true ) ) ( = tmp125 0 ) ) + ( implies ( and ( not x244 ) ( and x245 true ) ) ( = tmp125 1 ) ) + ( implies ( and x244 ( and ( not x245 ) true ) ) ( = tmp125 2 ) ) + ( implies ( and x244 ( and x245 true ) ) ( = tmp125 3 ) ) + ( implies ( and ( not x281 ) ( and ( not x280 ) true ) ) ( = tmp124 0 ) ) + ( implies ( and ( not x281 ) ( and x280 true ) ) ( = tmp124 6 ) ) + ( implies ( and x281 ( and ( not x280 ) true ) ) ( = tmp124 6 ) ) + ( implies ( and x281 ( and x280 true ) ) ( = tmp124 12 ) ) + ( implies ( and ( not x242 ) ( and ( not x243 ) true ) ) ( = tmp123 0 ) ) + ( implies ( and ( not x242 ) ( and x243 true ) ) ( = tmp123 2 ) ) + ( implies ( and x242 ( and ( not x243 ) true ) ) ( = tmp123 2 ) ) + ( implies ( and x242 ( and x243 true ) ) ( = tmp123 4 ) ) + ( implies ( and ( not x283 ) ( and ( not x282 ) true ) ) ( = tmp122 0 ) ) + ( implies ( and ( not x283 ) ( and x282 true ) ) ( = tmp122 6 ) ) + ( implies ( and x283 ( and ( not x282 ) true ) ) ( = tmp122 6 ) ) + ( implies ( and x283 ( and x282 true ) ) ( = tmp122 12 ) ) + ( implies ( and ( not x240 ) ( and ( not x241 ) true ) ) ( = tmp121 0 ) ) + ( implies ( and ( not x240 ) ( and x241 true ) ) ( = tmp121 2 ) ) + ( implies ( and x240 ( and ( not x241 ) true ) ) ( = tmp121 2 ) ) + ( implies ( and x240 ( and x241 true ) ) ( = tmp121 4 ) ) + ( implies ( and ( not x217 ) ( and ( not x216 ) true ) ) ( = tmp120 0 ) ) + ( implies ( and ( not x217 ) ( and x216 true ) ) ( = tmp120 2 ) ) + ( implies ( and x217 ( and ( not x216 ) true ) ) ( = tmp120 1 ) ) + ( implies ( and x217 ( and x216 true ) ) ( = tmp120 3 ) ) + ( implies ( and ( not x214 ) ( and ( not x215 ) true ) ) ( = tmp119 0 ) ) + ( implies ( and ( not x214 ) ( and x215 true ) ) ( = tmp119 2 ) ) + ( implies ( and x214 ( and ( not x215 ) true ) ) ( = tmp119 2 ) ) + ( implies ( and x214 ( and x215 true ) ) ( = tmp119 4 ) ) + ( implies ( and ( not x219 ) ( and ( not x218 ) true ) ) ( = tmp118 0 ) ) + ( implies ( and ( not x219 ) ( and x218 true ) ) ( = tmp118 1 ) ) + ( implies ( and x219 ( and ( not x218 ) true ) ) ( = tmp118 2 ) ) + ( implies ( and x219 ( and x218 true ) ) ( = tmp118 3 ) ) + ( implies ( and ( not x212 ) ( and ( not x213 ) true ) ) ( = tmp117 0 ) ) + ( implies ( and ( not x212 ) ( and x213 true ) ) ( = tmp117 4 ) ) + ( implies ( and x212 ( and ( not x213 ) true ) ) ( = tmp117 4 ) ) + ( implies ( and x212 ( and x213 true ) ) ( = tmp117 8 ) ) + ( implies ( and ( not x221 ) ( and ( not x220 ) true ) ) ( = tmp116 0 ) ) + ( implies ( and ( not x221 ) ( and x220 true ) ) ( = tmp116 2 ) ) + ( implies ( and x221 ( and ( not x220 ) true ) ) ( = tmp116 2 ) ) + ( implies ( and x221 ( and x220 true ) ) ( = tmp116 4 ) ) + ( implies ( and ( not x210 ) ( and ( not x211 ) true ) ) ( = tmp115 0 ) ) + ( implies ( and ( not x210 ) ( and x211 true ) ) ( = tmp115 4 ) ) + ( implies ( and x210 ( and ( not x211 ) true ) ) ( = tmp115 6 ) ) + ( implies ( and x210 ( and x211 true ) ) ( = tmp115 10 ) ) + ( implies ( and ( not x223 ) ( and ( not x222 ) true ) ) ( = tmp114 0 ) ) + ( implies ( and ( not x223 ) ( and x222 true ) ) ( = tmp114 2 ) ) + ( implies ( and x223 ( and ( not x222 ) true ) ) ( = tmp114 2 ) ) + ( implies ( and x223 ( and x222 true ) ) ( = tmp114 4 ) ) + ( implies ( and ( not x208 ) ( and ( not x209 ) true ) ) ( = tmp113 0 ) ) + ( implies ( and ( not x208 ) ( and x209 true ) ) ( = tmp113 6 ) ) + ( implies ( and x208 ( and ( not x209 ) true ) ) ( = tmp113 6 ) ) + ( implies ( and x208 ( and x209 true ) ) ( = tmp113 12 ) ) + ( implies ( and ( not x225 ) ( and ( not x224 ) true ) ) ( = tmp112 0 ) ) + ( implies ( and ( not x225 ) ( and x224 true ) ) ( = tmp112 2 ) ) + ( implies ( and x225 ( and ( not x224 ) true ) ) ( = tmp112 2 ) ) + ( implies ( and x225 ( and x224 true ) ) ( = tmp112 4 ) ) + ( implies ( and ( not x206 ) ( and ( not x207 ) true ) ) ( = tmp111 0 ) ) + ( implies ( and ( not x206 ) ( and x207 true ) ) ( = tmp111 6 ) ) + ( implies ( and x206 ( and ( not x207 ) true ) ) ( = tmp111 6 ) ) + ( implies ( and x206 ( and x207 true ) ) ( = tmp111 12 ) ) + ( implies ( and ( not x227 ) ( and ( not x226 ) true ) ) ( = tmp110 0 ) ) + ( implies ( and ( not x227 ) ( and x226 true ) ) ( = tmp110 2 ) ) + ( implies ( and x227 ( and ( not x226 ) true ) ) ( = tmp110 2 ) ) + ( implies ( and x227 ( and x226 true ) ) ( = tmp110 4 ) ) + ( implies ( and ( not x204 ) ( and ( not x205 ) true ) ) ( = tmp109 0 ) ) + ( implies ( and ( not x204 ) ( and x205 true ) ) ( = tmp109 6 ) ) + ( implies ( and x204 ( and ( not x205 ) true ) ) ( = tmp109 6 ) ) + ( implies ( and x204 ( and x205 true ) ) ( = tmp109 12 ) ) + ( implies ( and ( not x229 ) ( and ( not x228 ) true ) ) ( = tmp108 0 ) ) + ( implies ( and ( not x229 ) ( and x228 true ) ) ( = tmp108 2 ) ) + ( implies ( and x229 ( and ( not x228 ) true ) ) ( = tmp108 2 ) ) + ( implies ( and x229 ( and x228 true ) ) ( = tmp108 4 ) ) + ( implies ( and ( not x202 ) ( and ( not x203 ) true ) ) ( = tmp107 0 ) ) + ( implies ( and ( not x202 ) ( and x203 true ) ) ( = tmp107 6 ) ) + ( implies ( and x202 ( and ( not x203 ) true ) ) ( = tmp107 6 ) ) + ( implies ( and x202 ( and x203 true ) ) ( = tmp107 12 ) ) + ( implies ( and ( not x231 ) ( and ( not x230 ) true ) ) ( = tmp106 0 ) ) + ( implies ( and ( not x231 ) ( and x230 true ) ) ( = tmp106 2 ) ) + ( implies ( and x231 ( and ( not x230 ) true ) ) ( = tmp106 2 ) ) + ( implies ( and x231 ( and x230 true ) ) ( = tmp106 4 ) ) + ( implies ( and ( not x200 ) ( and ( not x201 ) true ) ) ( = tmp105 0 ) ) + ( implies ( and ( not x200 ) ( and x201 true ) ) ( = tmp105 4 ) ) + ( implies ( and x200 ( and ( not x201 ) true ) ) ( = tmp105 4 ) ) + ( implies ( and x200 ( and x201 true ) ) ( = tmp105 8 ) ) + ( implies ( and ( not x233 ) ( and ( not x232 ) true ) ) ( = tmp104 0 ) ) + ( implies ( and ( not x233 ) ( and x232 true ) ) ( = tmp104 2 ) ) + ( implies ( and x233 ( and ( not x232 ) true ) ) ( = tmp104 2 ) ) + ( implies ( and x233 ( and x232 true ) ) ( = tmp104 4 ) ) + ( implies ( and ( not x198 ) ( and ( not x199 ) true ) ) ( = tmp103 0 ) ) + ( implies ( and ( not x198 ) ( and x199 true ) ) ( = tmp103 4 ) ) + ( implies ( and x198 ( and ( not x199 ) true ) ) ( = tmp103 4 ) ) + ( implies ( and x198 ( and x199 true ) ) ( = tmp103 8 ) ) + ( implies ( and ( not x235 ) ( and ( not x234 ) true ) ) ( = tmp102 0 ) ) + ( implies ( and ( not x235 ) ( and x234 true ) ) ( = tmp102 2 ) ) + ( implies ( and x235 ( and ( not x234 ) true ) ) ( = tmp102 2 ) ) + ( implies ( and x235 ( and x234 true ) ) ( = tmp102 4 ) ) + ( implies ( and ( not x196 ) ( and ( not x197 ) true ) ) ( = tmp101 0 ) ) + ( implies ( and ( not x196 ) ( and x197 true ) ) ( = tmp101 4 ) ) + ( implies ( and x196 ( and ( not x197 ) true ) ) ( = tmp101 4 ) ) + ( implies ( and x196 ( and x197 true ) ) ( = tmp101 8 ) ) + ( implies ( and ( not x237 ) ( and ( not x236 ) true ) ) ( = tmp100 0 ) ) + ( implies ( and ( not x237 ) ( and x236 true ) ) ( = tmp100 2 ) ) + ( implies ( and x237 ( and ( not x236 ) true ) ) ( = tmp100 2 ) ) + ( implies ( and x237 ( and x236 true ) ) ( = tmp100 4 ) ) + ( implies ( and ( not x194 ) ( and ( not x195 ) true ) ) ( = tmp99 0 ) ) + ( implies ( and ( not x194 ) ( and x195 true ) ) ( = tmp99 6 ) ) + ( implies ( and x194 ( and ( not x195 ) true ) ) ( = tmp99 6 ) ) + ( implies ( and x194 ( and x195 true ) ) ( = tmp99 12 ) ) + ( implies ( and ( not x239 ) ( and ( not x238 ) true ) ) ( = tmp98 0 ) ) + ( implies ( and ( not x239 ) ( and x238 true ) ) ( = tmp98 2 ) ) + ( implies ( and x239 ( and ( not x238 ) true ) ) ( = tmp98 2 ) ) + ( implies ( and x239 ( and x238 true ) ) ( = tmp98 4 ) ) + ( implies ( and ( not x192 ) ( and ( not x193 ) true ) ) ( = tmp97 0 ) ) + ( implies ( and ( not x192 ) ( and x193 true ) ) ( = tmp97 6 ) ) + ( implies ( and x192 ( and ( not x193 ) true ) ) ( = tmp97 6 ) ) + ( implies ( and x192 ( and x193 true ) ) ( = tmp97 12 ) ) + ( implies ( and ( not x169 ) ( and ( not x168 ) true ) ) ( = tmp96 0 ) ) + ( implies ( and ( not x169 ) ( and x168 true ) ) ( = tmp96 4 ) ) + ( implies ( and x169 ( and ( not x168 ) true ) ) ( = tmp96 4 ) ) + ( implies ( and x169 ( and x168 true ) ) ( = tmp96 8 ) ) + ( implies ( and ( not x166 ) ( and ( not x167 ) true ) ) ( = tmp95 0 ) ) + ( implies ( and ( not x166 ) ( and x167 true ) ) ( = tmp95 4 ) ) + ( implies ( and x166 ( and ( not x167 ) true ) ) ( = tmp95 4 ) ) + ( implies ( and x166 ( and x167 true ) ) ( = tmp95 8 ) ) + ( implies ( and ( not x171 ) ( and ( not x170 ) true ) ) ( = tmp94 0 ) ) + ( implies ( and ( not x171 ) ( and x170 true ) ) ( = tmp94 6 ) ) + ( implies ( and x171 ( and ( not x170 ) true ) ) ( = tmp94 4 ) ) + ( implies ( and x171 ( and x170 true ) ) ( = tmp94 10 ) ) + ( implies ( and ( not x164 ) ( and ( not x165 ) true ) ) ( = tmp93 0 ) ) + ( implies ( and ( not x164 ) ( and x165 true ) ) ( = tmp93 6 ) ) + ( implies ( and x164 ( and ( not x165 ) true ) ) ( = tmp93 6 ) ) + ( implies ( and x164 ( and x165 true ) ) ( = tmp93 12 ) ) + ( implies ( and ( not x173 ) ( and ( not x172 ) true ) ) ( = tmp92 0 ) ) + ( implies ( and ( not x173 ) ( and x172 true ) ) ( = tmp92 4 ) ) + ( implies ( and x173 ( and ( not x172 ) true ) ) ( = tmp92 4 ) ) + ( implies ( and x173 ( and x172 true ) ) ( = tmp92 8 ) ) + ( implies ( and ( not x162 ) ( and ( not x163 ) true ) ) ( = tmp91 0 ) ) + ( implies ( and ( not x162 ) ( and x163 true ) ) ( = tmp91 6 ) ) + ( implies ( and x162 ( and ( not x163 ) true ) ) ( = tmp91 6 ) ) + ( implies ( and x162 ( and x163 true ) ) ( = tmp91 12 ) ) + ( implies ( and ( not x175 ) ( and ( not x174 ) true ) ) ( = tmp90 0 ) ) + ( implies ( and ( not x175 ) ( and x174 true ) ) ( = tmp90 2 ) ) + ( implies ( and x175 ( and ( not x174 ) true ) ) ( = tmp90 2 ) ) + ( implies ( and x175 ( and x174 true ) ) ( = tmp90 4 ) ) + ( implies ( and ( not x160 ) ( and ( not x161 ) true ) ) ( = tmp89 0 ) ) + ( implies ( and ( not x160 ) ( and x161 true ) ) ( = tmp89 6 ) ) + ( implies ( and x160 ( and ( not x161 ) true ) ) ( = tmp89 6 ) ) + ( implies ( and x160 ( and x161 true ) ) ( = tmp89 12 ) ) + ( implies ( and ( not x177 ) ( and ( not x176 ) true ) ) ( = tmp88 0 ) ) + ( implies ( and ( not x177 ) ( and x176 true ) ) ( = tmp88 4 ) ) + ( implies ( and x177 ( and ( not x176 ) true ) ) ( = tmp88 6 ) ) + ( implies ( and x177 ( and x176 true ) ) ( = tmp88 10 ) ) + ( implies ( and ( not x158 ) ( and ( not x159 ) true ) ) ( = tmp87 0 ) ) + ( implies ( and ( not x158 ) ( and x159 true ) ) ( = tmp87 6 ) ) + ( implies ( and x158 ( and ( not x159 ) true ) ) ( = tmp87 6 ) ) + ( implies ( and x158 ( and x159 true ) ) ( = tmp87 12 ) ) + ( implies ( and ( not x179 ) ( and ( not x178 ) true ) ) ( = tmp86 0 ) ) + ( implies ( and ( not x179 ) ( and x178 true ) ) ( = tmp86 6 ) ) + ( implies ( and x179 ( and ( not x178 ) true ) ) ( = tmp86 6 ) ) + ( implies ( and x179 ( and x178 true ) ) ( = tmp86 12 ) ) + ( implies ( and ( not x156 ) ( and ( not x157 ) true ) ) ( = tmp85 0 ) ) + ( implies ( and ( not x156 ) ( and x157 true ) ) ( = tmp85 6 ) ) + ( implies ( and x156 ( and ( not x157 ) true ) ) ( = tmp85 4 ) ) + ( implies ( and x156 ( and x157 true ) ) ( = tmp85 10 ) ) + ( implies ( and ( not x181 ) ( and ( not x180 ) true ) ) ( = tmp84 0 ) ) + ( implies ( and ( not x181 ) ( and x180 true ) ) ( = tmp84 6 ) ) + ( implies ( and x181 ( and ( not x180 ) true ) ) ( = tmp84 6 ) ) + ( implies ( and x181 ( and x180 true ) ) ( = tmp84 12 ) ) + ( implies ( and ( not x154 ) ( and ( not x155 ) true ) ) ( = tmp83 0 ) ) + ( implies ( and ( not x154 ) ( and x155 true ) ) ( = tmp83 4 ) ) + ( implies ( and x154 ( and ( not x155 ) true ) ) ( = tmp83 4 ) ) + ( implies ( and x154 ( and x155 true ) ) ( = tmp83 8 ) ) + ( implies ( and ( not x183 ) ( and ( not x182 ) true ) ) ( = tmp82 0 ) ) + ( implies ( and ( not x183 ) ( and x182 true ) ) ( = tmp82 4 ) ) + ( implies ( and x183 ( and ( not x182 ) true ) ) ( = tmp82 4 ) ) + ( implies ( and x183 ( and x182 true ) ) ( = tmp82 8 ) ) + ( implies ( and ( not x152 ) ( and ( not x153 ) true ) ) ( = tmp81 0 ) ) + ( implies ( and ( not x152 ) ( and x153 true ) ) ( = tmp81 4 ) ) + ( implies ( and x152 ( and ( not x153 ) true ) ) ( = tmp81 4 ) ) + ( implies ( and x152 ( and x153 true ) ) ( = tmp81 8 ) ) + ( implies ( and ( not x185 ) ( and ( not x184 ) true ) ) ( = tmp80 0 ) ) + ( implies ( and ( not x185 ) ( and x184 true ) ) ( = tmp80 6 ) ) + ( implies ( and x185 ( and ( not x184 ) true ) ) ( = tmp80 6 ) ) + ( implies ( and x185 ( and x184 true ) ) ( = tmp80 12 ) ) + ( implies ( and ( not x150 ) ( and ( not x151 ) true ) ) ( = tmp79 0 ) ) + ( implies ( and ( not x150 ) ( and x151 true ) ) ( = tmp79 2 ) ) + ( implies ( and x150 ( and ( not x151 ) true ) ) ( = tmp79 1 ) ) + ( implies ( and x150 ( and x151 true ) ) ( = tmp79 3 ) ) + ( implies ( and ( not x187 ) ( and ( not x186 ) true ) ) ( = tmp78 0 ) ) + ( implies ( and ( not x187 ) ( and x186 true ) ) ( = tmp78 6 ) ) + ( implies ( and x187 ( and ( not x186 ) true ) ) ( = tmp78 6 ) ) + ( implies ( and x187 ( and x186 true ) ) ( = tmp78 12 ) ) + ( implies ( and ( not x148 ) ( and ( not x149 ) true ) ) ( = tmp77 0 ) ) + ( implies ( and ( not x148 ) ( and x149 true ) ) ( = tmp77 2 ) ) + ( implies ( and x148 ( and ( not x149 ) true ) ) ( = tmp77 4 ) ) + ( implies ( and x148 ( and x149 true ) ) ( = tmp77 6 ) ) + ( implies ( and ( not x189 ) ( and ( not x188 ) true ) ) ( = tmp76 0 ) ) + ( implies ( and ( not x189 ) ( and x188 true ) ) ( = tmp76 4 ) ) + ( implies ( and x189 ( and ( not x188 ) true ) ) ( = tmp76 2 ) ) + ( implies ( and x189 ( and x188 true ) ) ( = tmp76 6 ) ) + ( implies ( and ( not x146 ) ( and ( not x147 ) true ) ) ( = tmp75 0 ) ) + ( implies ( and ( not x146 ) ( and x147 true ) ) ( = tmp75 4 ) ) + ( implies ( and x146 ( and ( not x147 ) true ) ) ( = tmp75 4 ) ) + ( implies ( and x146 ( and x147 true ) ) ( = tmp75 8 ) ) + ( implies ( and ( not x191 ) ( and ( not x190 ) true ) ) ( = tmp74 0 ) ) + ( implies ( and ( not x191 ) ( and x190 true ) ) ( = tmp74 2 ) ) + ( implies ( and x191 ( and ( not x190 ) true ) ) ( = tmp74 2 ) ) + ( implies ( and x191 ( and x190 true ) ) ( = tmp74 4 ) ) + ( implies ( and ( not x144 ) ( and ( not x145 ) true ) ) ( = tmp73 0 ) ) + ( implies ( and ( not x144 ) ( and x145 true ) ) ( = tmp73 4 ) ) + ( implies ( and x144 ( and ( not x145 ) true ) ) ( = tmp73 4 ) ) + ( implies ( and x144 ( and x145 true ) ) ( = tmp73 8 ) ) + ( implies ( and ( not x121 ) true ) ( = tmp72 0 ) ) + ( implies ( and x121 true ) ( = tmp72 4 ) ) + ( implies ( and ( not x119 ) ( and ( not x120 ) true ) ) ( = tmp71 0 ) ) + ( implies ( and ( not x119 ) ( and x120 true ) ) ( = tmp71 2 ) ) + ( implies ( and x119 ( and ( not x120 ) true ) ) ( = tmp71 1 ) ) + ( implies ( and x119 ( and x120 true ) ) ( = tmp71 3 ) ) + ( implies ( and ( not x123 ) ( and ( not x122 ) true ) ) ( = tmp70 0 ) ) + ( implies ( and ( not x123 ) ( and x122 true ) ) ( = tmp70 4 ) ) + ( implies ( and x123 ( and ( not x122 ) true ) ) ( = tmp70 6 ) ) + ( implies ( and x123 ( and x122 true ) ) ( = tmp70 10 ) ) + ( implies ( and ( not x117 ) ( and ( not x118 ) true ) ) ( = tmp69 0 ) ) + ( implies ( and ( not x117 ) ( and x118 true ) ) ( = tmp69 1 ) ) + ( implies ( and x117 ( and ( not x118 ) true ) ) ( = tmp69 2 ) ) + ( implies ( and x117 ( and x118 true ) ) ( = tmp69 3 ) ) + ( implies ( and ( not x125 ) ( and ( not x124 ) true ) ) ( = tmp68 0 ) ) + ( implies ( and ( not x125 ) ( and x124 true ) ) ( = tmp68 6 ) ) + ( implies ( and x125 ( and ( not x124 ) true ) ) ( = tmp68 6 ) ) + ( implies ( and x125 ( and x124 true ) ) ( = tmp68 12 ) ) + ( implies ( and ( not x115 ) ( and ( not x116 ) true ) ) ( = tmp67 0 ) ) + ( implies ( and ( not x115 ) ( and x116 true ) ) ( = tmp67 2 ) ) + ( implies ( and x115 ( and ( not x116 ) true ) ) ( = tmp67 4 ) ) + ( implies ( and x115 ( and x116 true ) ) ( = tmp67 6 ) ) + ( implies ( and ( not x127 ) ( and ( not x126 ) true ) ) ( = tmp66 0 ) ) + ( implies ( and ( not x127 ) ( and x126 true ) ) ( = tmp66 4 ) ) + ( implies ( and x127 ( and ( not x126 ) true ) ) ( = tmp66 4 ) ) + ( implies ( and x127 ( and x126 true ) ) ( = tmp66 8 ) ) + ( implies ( and ( not x113 ) ( and ( not x114 ) true ) ) ( = tmp65 0 ) ) + ( implies ( and ( not x113 ) ( and x114 true ) ) ( = tmp65 4 ) ) + ( implies ( and x113 ( and ( not x114 ) true ) ) ( = tmp65 4 ) ) + ( implies ( and x113 ( and x114 true ) ) ( = tmp65 8 ) ) + ( implies ( and ( not x129 ) ( and ( not x128 ) true ) ) ( = tmp64 0 ) ) + ( implies ( and ( not x129 ) ( and x128 true ) ) ( = tmp64 2 ) ) + ( implies ( and x129 ( and ( not x128 ) true ) ) ( = tmp64 2 ) ) + ( implies ( and x129 ( and x128 true ) ) ( = tmp64 4 ) ) + ( implies ( and ( not x111 ) ( and ( not x112 ) true ) ) ( = tmp63 0 ) ) + ( implies ( and ( not x111 ) ( and x112 true ) ) ( = tmp63 4 ) ) + ( implies ( and x111 ( and ( not x112 ) true ) ) ( = tmp63 4 ) ) + ( implies ( and x111 ( and x112 true ) ) ( = tmp63 8 ) ) + ( implies ( and ( not x131 ) ( and ( not x130 ) true ) ) ( = tmp62 0 ) ) + ( implies ( and ( not x131 ) ( and x130 true ) ) ( = tmp62 2 ) ) + ( implies ( and x131 ( and ( not x130 ) true ) ) ( = tmp62 4 ) ) + ( implies ( and x131 ( and x130 true ) ) ( = tmp62 6 ) ) + ( implies ( and ( not x109 ) ( and ( not x110 ) true ) ) ( = tmp61 0 ) ) + ( implies ( and ( not x109 ) ( and x110 true ) ) ( = tmp61 4 ) ) + ( implies ( and x109 ( and ( not x110 ) true ) ) ( = tmp61 4 ) ) + ( implies ( and x109 ( and x110 true ) ) ( = tmp61 8 ) ) + ( implies ( and ( not x133 ) ( and ( not x132 ) true ) ) ( = tmp60 0 ) ) + ( implies ( and ( not x133 ) ( and x132 true ) ) ( = tmp60 4 ) ) + ( implies ( and x133 ( and ( not x132 ) true ) ) ( = tmp60 2 ) ) + ( implies ( and x133 ( and x132 true ) ) ( = tmp60 6 ) ) + ( implies ( and ( not x107 ) ( and ( not x108 ) true ) ) ( = tmp59 0 ) ) + ( implies ( and ( not x107 ) ( and x108 true ) ) ( = tmp59 4 ) ) + ( implies ( and x107 ( and ( not x108 ) true ) ) ( = tmp59 6 ) ) + ( implies ( and x107 ( and x108 true ) ) ( = tmp59 10 ) ) + ( implies ( and ( not x135 ) ( and ( not x134 ) true ) ) ( = tmp58 0 ) ) + ( implies ( and ( not x135 ) ( and x134 true ) ) ( = tmp58 2 ) ) + ( implies ( and x135 ( and ( not x134 ) true ) ) ( = tmp58 4 ) ) + ( implies ( and x135 ( and x134 true ) ) ( = tmp58 6 ) ) + ( implies ( and ( not x105 ) ( and ( not x106 ) true ) ) ( = tmp57 0 ) ) + ( implies ( and ( not x105 ) ( and x106 true ) ) ( = tmp57 6 ) ) + ( implies ( and x105 ( and ( not x106 ) true ) ) ( = tmp57 6 ) ) + ( implies ( and x105 ( and x106 true ) ) ( = tmp57 12 ) ) + ( implies ( and ( not x137 ) ( and ( not x136 ) true ) ) ( = tmp56 0 ) ) + ( implies ( and ( not x137 ) ( and x136 true ) ) ( = tmp56 4 ) ) + ( implies ( and x137 ( and ( not x136 ) true ) ) ( = tmp56 4 ) ) + ( implies ( and x137 ( and x136 true ) ) ( = tmp56 8 ) ) + ( implies ( and ( not x103 ) ( and ( not x104 ) true ) ) ( = tmp55 0 ) ) + ( implies ( and ( not x103 ) ( and x104 true ) ) ( = tmp55 6 ) ) + ( implies ( and x103 ( and ( not x104 ) true ) ) ( = tmp55 6 ) ) + ( implies ( and x103 ( and x104 true ) ) ( = tmp55 12 ) ) + ( implies ( and ( not x139 ) ( and ( not x138 ) true ) ) ( = tmp54 0 ) ) + ( implies ( and ( not x139 ) ( and x138 true ) ) ( = tmp54 4 ) ) + ( implies ( and x139 ( and ( not x138 ) true ) ) ( = tmp54 1 ) ) + ( implies ( and x139 ( and x138 true ) ) ( = tmp54 5 ) ) + ( implies ( and ( not x101 ) ( and ( not x102 ) true ) ) ( = tmp53 0 ) ) + ( implies ( and ( not x101 ) ( and x102 true ) ) ( = tmp53 6 ) ) + ( implies ( and x101 ( and ( not x102 ) true ) ) ( = tmp53 6 ) ) + ( implies ( and x101 ( and x102 true ) ) ( = tmp53 12 ) ) + ( implies ( and ( not x141 ) ( and ( not x140 ) true ) ) ( = tmp52 0 ) ) + ( implies ( and ( not x141 ) ( and x140 true ) ) ( = tmp52 2 ) ) + ( implies ( and x141 ( and ( not x140 ) true ) ) ( = tmp52 4 ) ) + ( implies ( and x141 ( and x140 true ) ) ( = tmp52 6 ) ) + ( implies ( and ( not x99 ) ( and ( not x100 ) true ) ) ( = tmp51 0 ) ) + ( implies ( and ( not x99 ) ( and x100 true ) ) ( = tmp51 4 ) ) + ( implies ( and x99 ( and ( not x100 ) true ) ) ( = tmp51 4 ) ) + ( implies ( and x99 ( and x100 true ) ) ( = tmp51 8 ) ) + ( implies ( and ( not x143 ) ( and ( not x142 ) true ) ) ( = tmp50 0 ) ) + ( implies ( and ( not x143 ) ( and x142 true ) ) ( = tmp50 6 ) ) + ( implies ( and x143 ( and ( not x142 ) true ) ) ( = tmp50 6 ) ) + ( implies ( and x143 ( and x142 true ) ) ( = tmp50 12 ) ) + ( implies ( and ( not x97 ) ( and ( not x98 ) true ) ) ( = tmp49 0 ) ) + ( implies ( and ( not x97 ) ( and x98 true ) ) ( = tmp49 4 ) ) + ( implies ( and x97 ( and ( not x98 ) true ) ) ( = tmp49 2 ) ) + ( implies ( and x97 ( and x98 true ) ) ( = tmp49 6 ) ) + ( implies ( and ( not x74 ) ( and ( not x73 ) true ) ) ( = tmp48 0 ) ) + ( implies ( and ( not x74 ) ( and x73 true ) ) ( = tmp48 2 ) ) + ( implies ( and x74 ( and ( not x73 ) true ) ) ( = tmp48 4 ) ) + ( implies ( and x74 ( and x73 true ) ) ( = tmp48 6 ) ) + ( implies ( and ( not x71 ) ( and ( not x72 ) true ) ) ( = tmp47 0 ) ) + ( implies ( and ( not x71 ) ( and x72 true ) ) ( = tmp47 1 ) ) + ( implies ( and x71 ( and ( not x72 ) true ) ) ( = tmp47 2 ) ) + ( implies ( and x71 ( and x72 true ) ) ( = tmp47 3 ) ) + ( implies ( and ( not x76 ) ( and ( not x75 ) true ) ) ( = tmp46 0 ) ) + ( implies ( and ( not x76 ) ( and x75 true ) ) ( = tmp46 2 ) ) + ( implies ( and x76 ( and ( not x75 ) true ) ) ( = tmp46 2 ) ) + ( implies ( and x76 ( and x75 true ) ) ( = tmp46 4 ) ) + ( implies ( and ( not x69 ) ( and ( not x70 ) true ) ) ( = tmp45 0 ) ) + ( implies ( and ( not x69 ) ( and x70 true ) ) ( = tmp45 4 ) ) + ( implies ( and x69 ( and ( not x70 ) true ) ) ( = tmp45 4 ) ) + ( implies ( and x69 ( and x70 true ) ) ( = tmp45 8 ) ) + ( implies ( and ( not x78 ) ( and ( not x77 ) true ) ) ( = tmp44 0 ) ) + ( implies ( and ( not x78 ) ( and x77 true ) ) ( = tmp44 4 ) ) + ( implies ( and x78 ( and ( not x77 ) true ) ) ( = tmp44 4 ) ) + ( implies ( and x78 ( and x77 true ) ) ( = tmp44 8 ) ) + ( implies ( and ( not x67 ) ( and ( not x68 ) true ) ) ( = tmp43 0 ) ) + ( implies ( and ( not x67 ) ( and x68 true ) ) ( = tmp43 4 ) ) + ( implies ( and x67 ( and ( not x68 ) true ) ) ( = tmp43 4 ) ) + ( implies ( and x67 ( and x68 true ) ) ( = tmp43 8 ) ) + ( implies ( and ( not x80 ) ( and ( not x79 ) true ) ) ( = tmp42 0 ) ) + ( implies ( and ( not x80 ) ( and x79 true ) ) ( = tmp42 4 ) ) + ( implies ( and x80 ( and ( not x79 ) true ) ) ( = tmp42 2 ) ) + ( implies ( and x80 ( and x79 true ) ) ( = tmp42 6 ) ) + ( implies ( and ( not x65 ) ( and ( not x66 ) true ) ) ( = tmp41 0 ) ) + ( implies ( and ( not x65 ) ( and x66 true ) ) ( = tmp41 4 ) ) + ( implies ( and x65 ( and ( not x66 ) true ) ) ( = tmp41 6 ) ) + ( implies ( and x65 ( and x66 true ) ) ( = tmp41 10 ) ) + ( implies ( and ( not x82 ) ( and ( not x81 ) true ) ) ( = tmp40 0 ) ) + ( implies ( and ( not x82 ) ( and x81 true ) ) ( = tmp40 2 ) ) + ( implies ( and x82 ( and ( not x81 ) true ) ) ( = tmp40 4 ) ) + ( implies ( and x82 ( and x81 true ) ) ( = tmp40 6 ) ) + ( implies ( and ( not x63 ) ( and ( not x64 ) true ) ) ( = tmp39 0 ) ) + ( implies ( and ( not x63 ) ( and x64 true ) ) ( = tmp39 6 ) ) + ( implies ( and x63 ( and ( not x64 ) true ) ) ( = tmp39 4 ) ) + ( implies ( and x63 ( and x64 true ) ) ( = tmp39 10 ) ) + ( implies ( and ( not x84 ) ( and ( not x83 ) true ) ) ( = tmp38 0 ) ) + ( implies ( and ( not x84 ) ( and x83 true ) ) ( = tmp38 4 ) ) + ( implies ( and x84 ( and ( not x83 ) true ) ) ( = tmp38 4 ) ) + ( implies ( and x84 ( and x83 true ) ) ( = tmp38 8 ) ) + ( implies ( and ( not x61 ) ( and ( not x62 ) true ) ) ( = tmp37 0 ) ) + ( implies ( and ( not x61 ) ( and x62 true ) ) ( = tmp37 2 ) ) + ( implies ( and x61 ( and ( not x62 ) true ) ) ( = tmp37 2 ) ) + ( implies ( and x61 ( and x62 true ) ) ( = tmp37 4 ) ) + ( implies ( and ( not x86 ) ( and ( not x85 ) true ) ) ( = tmp36 0 ) ) + ( implies ( and ( not x86 ) ( and x85 true ) ) ( = tmp36 4 ) ) + ( implies ( and x86 ( and ( not x85 ) true ) ) ( = tmp36 4 ) ) + ( implies ( and x86 ( and x85 true ) ) ( = tmp36 8 ) ) + ( implies ( and ( not x59 ) ( and ( not x60 ) true ) ) ( = tmp35 0 ) ) + ( implies ( and ( not x59 ) ( and x60 true ) ) ( = tmp35 4 ) ) + ( implies ( and x59 ( and ( not x60 ) true ) ) ( = tmp35 4 ) ) + ( implies ( and x59 ( and x60 true ) ) ( = tmp35 8 ) ) + ( implies ( and ( not x88 ) ( and ( not x87 ) true ) ) ( = tmp34 0 ) ) + ( implies ( and ( not x88 ) ( and x87 true ) ) ( = tmp34 4 ) ) + ( implies ( and x88 ( and ( not x87 ) true ) ) ( = tmp34 4 ) ) + ( implies ( and x88 ( and x87 true ) ) ( = tmp34 8 ) ) + ( implies ( and ( not x57 ) ( and ( not x58 ) true ) ) ( = tmp33 0 ) ) + ( implies ( and ( not x57 ) ( and x58 true ) ) ( = tmp33 4 ) ) + ( implies ( and x57 ( and ( not x58 ) true ) ) ( = tmp33 2 ) ) + ( implies ( and x57 ( and x58 true ) ) ( = tmp33 6 ) ) + ( implies ( and ( not x90 ) ( and ( not x89 ) true ) ) ( = tmp32 0 ) ) + ( implies ( and ( not x90 ) ( and x89 true ) ) ( = tmp32 4 ) ) + ( implies ( and x90 ( and ( not x89 ) true ) ) ( = tmp32 4 ) ) + ( implies ( and x90 ( and x89 true ) ) ( = tmp32 8 ) ) + ( implies ( and ( not x55 ) ( and ( not x56 ) true ) ) ( = tmp31 0 ) ) + ( implies ( and ( not x55 ) ( and x56 true ) ) ( = tmp31 4 ) ) + ( implies ( and x55 ( and ( not x56 ) true ) ) ( = tmp31 4 ) ) + ( implies ( and x55 ( and x56 true ) ) ( = tmp31 8 ) ) + ( implies ( and ( not x92 ) ( and ( not x91 ) true ) ) ( = tmp30 0 ) ) + ( implies ( and ( not x92 ) ( and x91 true ) ) ( = tmp30 4 ) ) + ( implies ( and x92 ( and ( not x91 ) true ) ) ( = tmp30 2 ) ) + ( implies ( and x92 ( and x91 true ) ) ( = tmp30 6 ) ) + ( implies ( and ( not x53 ) ( and ( not x54 ) true ) ) ( = tmp29 0 ) ) + ( implies ( and ( not x53 ) ( and x54 true ) ) ( = tmp29 4 ) ) + ( implies ( and x53 ( and ( not x54 ) true ) ) ( = tmp29 4 ) ) + ( implies ( and x53 ( and x54 true ) ) ( = tmp29 8 ) ) + ( implies ( and ( not x94 ) ( and ( not x93 ) true ) ) ( = tmp28 0 ) ) + ( implies ( and ( not x94 ) ( and x93 true ) ) ( = tmp28 2 ) ) + ( implies ( and x94 ( and ( not x93 ) true ) ) ( = tmp28 4 ) ) + ( implies ( and x94 ( and x93 true ) ) ( = tmp28 6 ) ) + ( implies ( and ( not x51 ) ( and ( not x52 ) true ) ) ( = tmp27 0 ) ) + ( implies ( and ( not x51 ) ( and x52 true ) ) ( = tmp27 4 ) ) + ( implies ( and x51 ( and ( not x52 ) true ) ) ( = tmp27 2 ) ) + ( implies ( and x51 ( and x52 true ) ) ( = tmp27 6 ) ) + ( implies ( and ( not x96 ) ( and ( not x95 ) true ) ) ( = tmp26 0 ) ) + ( implies ( and ( not x96 ) ( and x95 true ) ) ( = tmp26 4 ) ) + ( implies ( and x96 ( and ( not x95 ) true ) ) ( = tmp26 4 ) ) + ( implies ( and x96 ( and x95 true ) ) ( = tmp26 8 ) ) + ( implies ( and ( not x49 ) ( and ( not x50 ) true ) ) ( = tmp25 0 ) ) + ( implies ( and ( not x49 ) ( and x50 true ) ) ( = tmp25 2 ) ) + ( implies ( and x49 ( and ( not x50 ) true ) ) ( = tmp25 2 ) ) + ( implies ( and x49 ( and x50 true ) ) ( = tmp25 4 ) ) + ( implies ( and ( not x26 ) true ) ( = tmp24 0 ) ) + ( implies ( and x26 true ) ( = tmp24 4 ) ) + ( implies ( and ( not x24 ) ( and ( not x25 ) true ) ) ( = tmp23 0 ) ) + ( implies ( and ( not x24 ) ( and x25 true ) ) ( = tmp23 4 ) ) + ( implies ( and x24 ( and ( not x25 ) true ) ) ( = tmp23 2 ) ) + ( implies ( and x24 ( and x25 true ) ) ( = tmp23 6 ) ) + ( implies ( and ( not x28 ) ( and ( not x27 ) true ) ) ( = tmp22 0 ) ) + ( implies ( and ( not x28 ) ( and x27 true ) ) ( = tmp22 4 ) ) + ( implies ( and x28 ( and ( not x27 ) true ) ) ( = tmp22 4 ) ) + ( implies ( and x28 ( and x27 true ) ) ( = tmp22 8 ) ) + ( implies ( and ( not x22 ) ( and ( not x23 ) true ) ) ( = tmp21 0 ) ) + ( implies ( and ( not x22 ) ( and x23 true ) ) ( = tmp21 2 ) ) + ( implies ( and x22 ( and ( not x23 ) true ) ) ( = tmp21 2 ) ) + ( implies ( and x22 ( and x23 true ) ) ( = tmp21 4 ) ) + ( implies ( and ( not x30 ) ( and ( not x29 ) true ) ) ( = tmp20 0 ) ) + ( implies ( and ( not x30 ) ( and x29 true ) ) ( = tmp20 4 ) ) + ( implies ( and x30 ( and ( not x29 ) true ) ) ( = tmp20 2 ) ) + ( implies ( and x30 ( and x29 true ) ) ( = tmp20 6 ) ) + ( implies ( and ( not x20 ) ( and ( not x21 ) true ) ) ( = tmp19 0 ) ) + ( implies ( and ( not x20 ) ( and x21 true ) ) ( = tmp19 2 ) ) + ( implies ( and x20 ( and ( not x21 ) true ) ) ( = tmp19 2 ) ) + ( implies ( and x20 ( and x21 true ) ) ( = tmp19 4 ) ) + ( implies ( and ( not x32 ) ( and ( not x31 ) true ) ) ( = tmp18 0 ) ) + ( implies ( and ( not x32 ) ( and x31 true ) ) ( = tmp18 2 ) ) + ( implies ( and x32 ( and ( not x31 ) true ) ) ( = tmp18 2 ) ) + ( implies ( and x32 ( and x31 true ) ) ( = tmp18 4 ) ) + ( implies ( and ( not x18 ) ( and ( not x19 ) true ) ) ( = tmp17 0 ) ) + ( implies ( and ( not x18 ) ( and x19 true ) ) ( = tmp17 2 ) ) + ( implies ( and x18 ( and ( not x19 ) true ) ) ( = tmp17 1 ) ) + ( implies ( and x18 ( and x19 true ) ) ( = tmp17 3 ) ) + ( implies ( and ( not x34 ) ( and ( not x33 ) true ) ) ( = tmp16 0 ) ) + ( implies ( and ( not x34 ) ( and x33 true ) ) ( = tmp16 4 ) ) + ( implies ( and x34 ( and ( not x33 ) true ) ) ( = tmp16 4 ) ) + ( implies ( and x34 ( and x33 true ) ) ( = tmp16 8 ) ) + ( implies ( and ( not x16 ) ( and ( not x17 ) true ) ) ( = tmp15 0 ) ) + ( implies ( and ( not x16 ) ( and x17 true ) ) ( = tmp15 1 ) ) + ( implies ( and x16 ( and ( not x17 ) true ) ) ( = tmp15 2 ) ) + ( implies ( and x16 ( and x17 true ) ) ( = tmp15 3 ) ) + ( implies ( and ( not x36 ) ( and ( not x35 ) true ) ) ( = tmp14 0 ) ) + ( implies ( and ( not x36 ) ( and x35 true ) ) ( = tmp14 6 ) ) + ( implies ( and x36 ( and ( not x35 ) true ) ) ( = tmp14 6 ) ) + ( implies ( and x36 ( and x35 true ) ) ( = tmp14 12 ) ) + ( implies ( and ( not x14 ) ( and ( not x15 ) true ) ) ( = tmp13 0 ) ) + ( implies ( and ( not x14 ) ( and x15 true ) ) ( = tmp13 2 ) ) + ( implies ( and x14 ( and ( not x15 ) true ) ) ( = tmp13 2 ) ) + ( implies ( and x14 ( and x15 true ) ) ( = tmp13 4 ) ) + ( implies ( and ( not x38 ) ( and ( not x37 ) true ) ) ( = tmp12 0 ) ) + ( implies ( and ( not x38 ) ( and x37 true ) ) ( = tmp12 6 ) ) + ( implies ( and x38 ( and ( not x37 ) true ) ) ( = tmp12 6 ) ) + ( implies ( and x38 ( and x37 true ) ) ( = tmp12 12 ) ) + ( implies ( and ( not x12 ) ( and ( not x13 ) true ) ) ( = tmp11 0 ) ) + ( implies ( and ( not x12 ) ( and x13 true ) ) ( = tmp11 2 ) ) + ( implies ( and x12 ( and ( not x13 ) true ) ) ( = tmp11 2 ) ) + ( implies ( and x12 ( and x13 true ) ) ( = tmp11 4 ) ) + ( implies ( and ( not x40 ) ( and ( not x39 ) true ) ) ( = tmp10 0 ) ) + ( implies ( and ( not x40 ) ( and x39 true ) ) ( = tmp10 8 ) ) + ( implies ( and x40 ( and ( not x39 ) true ) ) ( = tmp10 6 ) ) + ( implies ( and x40 ( and x39 true ) ) ( = tmp10 14 ) ) + ( implies ( and ( not x10 ) ( and ( not x11 ) true ) ) ( = tmp9 0 ) ) + ( implies ( and ( not x10 ) ( and x11 true ) ) ( = tmp9 2 ) ) + ( implies ( and x10 ( and ( not x11 ) true ) ) ( = tmp9 2 ) ) + ( implies ( and x10 ( and x11 true ) ) ( = tmp9 4 ) ) + ( implies ( and ( not x42 ) ( and ( not x41 ) true ) ) ( = tmp8 0 ) ) + ( implies ( and ( not x42 ) ( and x41 true ) ) ( = tmp8 6 ) ) + ( implies ( and x42 ( and ( not x41 ) true ) ) ( = tmp8 6 ) ) + ( implies ( and x42 ( and x41 true ) ) ( = tmp8 12 ) ) + ( implies ( and ( not x8 ) ( and ( not x9 ) true ) ) ( = tmp7 0 ) ) + ( implies ( and ( not x8 ) ( and x9 true ) ) ( = tmp7 2 ) ) + ( implies ( and x8 ( and ( not x9 ) true ) ) ( = tmp7 4 ) ) + ( implies ( and x8 ( and x9 true ) ) ( = tmp7 6 ) ) + ( implies ( and ( not x44 ) ( and ( not x43 ) true ) ) ( = tmp6 0 ) ) + ( implies ( and ( not x44 ) ( and x43 true ) ) ( = tmp6 6 ) ) + ( implies ( and x44 ( and ( not x43 ) true ) ) ( = tmp6 4 ) ) + ( implies ( and x44 ( and x43 true ) ) ( = tmp6 10 ) ) + ( implies ( and ( not x6 ) ( and ( not x7 ) true ) ) ( = tmp5 0 ) ) + ( implies ( and ( not x6 ) ( and x7 true ) ) ( = tmp5 4 ) ) + ( implies ( and x6 ( and ( not x7 ) true ) ) ( = tmp5 4 ) ) + ( implies ( and x6 ( and x7 true ) ) ( = tmp5 8 ) ) + ( implies ( and ( not x46 ) ( and ( not x45 ) true ) ) ( = tmp4 0 ) ) + ( implies ( and ( not x46 ) ( and x45 true ) ) ( = tmp4 4 ) ) + ( implies ( and x46 ( and ( not x45 ) true ) ) ( = tmp4 4 ) ) + ( implies ( and x46 ( and x45 true ) ) ( = tmp4 8 ) ) + ( implies ( and ( not x4 ) ( and ( not x5 ) true ) ) ( = tmp3 0 ) ) + ( implies ( and ( not x4 ) ( and x5 true ) ) ( = tmp3 4 ) ) + ( implies ( and x4 ( and ( not x5 ) true ) ) ( = tmp3 4 ) ) + ( implies ( and x4 ( and x5 true ) ) ( = tmp3 8 ) ) + ( implies ( and ( not x48 ) ( and ( not x47 ) true ) ) ( = tmp2 0 ) ) + ( implies ( and ( not x48 ) ( and x47 true ) ) ( = tmp2 4 ) ) + ( implies ( and x48 ( and ( not x47 ) true ) ) ( = tmp2 4 ) ) + ( implies ( and x48 ( and x47 true ) ) ( = tmp2 8 ) ) + ( implies ( and ( not x2 ) ( and ( not x3 ) true ) ) ( = tmp1 0 ) ) + ( implies ( and ( not x2 ) ( and x3 true ) ) ( = tmp1 4 ) ) + ( implies ( and x2 ( and ( not x3 ) true ) ) ( = tmp1 4 ) ) + ( implies ( and x2 ( and x3 true ) ) ( = tmp1 8 ) ) + ) +) diff --git a/test/regress/regress0/arith/miplib-opt1217--27.smt.expect b/test/regress/regress0/arith/miplib-opt1217--27.smt.expect new file mode 100644 index 000000000..f6ae1d85b --- /dev/null +++ b/test/regress/regress0/arith/miplib-opt1217--27.smt.expect @@ -0,0 +1,3 @@ +% COMMAND-LINE: --enable-miplib-trick +% EXPECT: unsat +% EXIT: 20 diff --git a/test/regress/regress0/arith/miplib-opt1217--27.smt2 b/test/regress/regress0/arith/miplib-opt1217--27.smt2 new file mode 100644 index 000000000..e6ac8e69e --- /dev/null +++ b/test/regress/regress0/arith/miplib-opt1217--27.smt2 @@ -0,0 +1,1550 @@ +; COMMAND-LINE: --enable-miplib-trick +; EXPECT: unsat +; EXIT: 20 +(set-logic QF_LRA) +(set-info :source | +Relaxation of the Mixed-Integer Programming +optimization problem opt1217 from the MIPLIB (http://miplib.zib.de/) +by Enric Rodriguez-Carbonell (erodri@lsi.upc.edu) +|) +(set-info :smt-lib-version 2.0) +(set-info :category "industrial") +(set-info :status unsat) +(declare-fun tmp766 () Real) +(declare-fun tmp765 () Real) +(declare-fun tmp764 () Real) +(declare-fun tmp763 () Real) +(declare-fun tmp762 () Real) +(declare-fun tmp761 () Real) +(declare-fun tmp760 () Real) +(declare-fun tmp759 () Real) +(declare-fun tmp758 () Real) +(declare-fun tmp757 () Real) +(declare-fun tmp756 () Real) +(declare-fun tmp755 () Real) +(declare-fun tmp754 () Real) +(declare-fun tmp753 () Real) +(declare-fun tmp752 () Real) +(declare-fun tmp751 () Real) +(declare-fun tmp750 () Real) +(declare-fun tmp749 () Real) +(declare-fun tmp748 () Real) +(declare-fun tmp747 () Real) +(declare-fun tmp746 () Real) +(declare-fun tmp745 () Real) +(declare-fun tmp744 () Real) +(declare-fun tmp743 () Real) +(declare-fun tmp742 () Real) +(declare-fun tmp741 () Real) +(declare-fun tmp740 () Real) +(declare-fun tmp739 () Real) +(declare-fun tmp738 () Real) +(declare-fun tmp737 () Real) +(declare-fun tmp736 () Real) +(declare-fun tmp735 () Real) +(declare-fun tmp734 () Real) +(declare-fun tmp733 () Real) +(declare-fun tmp732 () Real) +(declare-fun tmp731 () Real) +(declare-fun tmp730 () Real) +(declare-fun tmp729 () Real) +(declare-fun tmp728 () Real) +(declare-fun tmp727 () Real) +(declare-fun tmp726 () Real) +(declare-fun tmp725 () Real) +(declare-fun tmp724 () Real) +(declare-fun tmp723 () Real) +(declare-fun tmp722 () Real) +(declare-fun tmp721 () Real) +(declare-fun tmp720 () Real) +(declare-fun tmp719 () Real) +(declare-fun tmp718 () Real) +(declare-fun tmp717 () Real) +(declare-fun tmp716 () Real) +(declare-fun tmp715 () Real) +(declare-fun tmp714 () Real) +(declare-fun tmp713 () Real) +(declare-fun tmp712 () Real) +(declare-fun tmp711 () Real) +(declare-fun tmp710 () Real) +(declare-fun tmp709 () Real) +(declare-fun tmp708 () Real) +(declare-fun tmp707 () Real) +(declare-fun tmp706 () Real) +(declare-fun tmp705 () Real) +(declare-fun tmp704 () Real) +(declare-fun tmp703 () Real) +(declare-fun tmp702 () Real) +(declare-fun tmp701 () Real) +(declare-fun tmp700 () Real) +(declare-fun tmp699 () Real) +(declare-fun tmp698 () Real) +(declare-fun tmp697 () Real) +(declare-fun tmp696 () Real) +(declare-fun tmp695 () Real) +(declare-fun tmp694 () Real) +(declare-fun tmp693 () Real) +(declare-fun tmp692 () Real) +(declare-fun tmp691 () Real) +(declare-fun tmp690 () Real) +(declare-fun tmp689 () Real) +(declare-fun tmp688 () Real) +(declare-fun tmp687 () Real) +(declare-fun tmp686 () Real) +(declare-fun tmp685 () Real) +(declare-fun tmp684 () Real) +(declare-fun tmp683 () Real) +(declare-fun tmp682 () Real) +(declare-fun tmp681 () Real) +(declare-fun tmp680 () Real) +(declare-fun tmp679 () Real) +(declare-fun tmp678 () Real) +(declare-fun tmp677 () Real) +(declare-fun tmp676 () Real) +(declare-fun tmp675 () Real) +(declare-fun tmp674 () Real) +(declare-fun tmp673 () Real) +(declare-fun tmp672 () Real) +(declare-fun tmp671 () Real) +(declare-fun tmp670 () Real) +(declare-fun tmp669 () Real) +(declare-fun tmp668 () Real) +(declare-fun tmp667 () Real) +(declare-fun tmp666 () Real) +(declare-fun tmp665 () Real) +(declare-fun tmp664 () Real) +(declare-fun tmp663 () Real) +(declare-fun tmp662 () Real) +(declare-fun tmp661 () Real) +(declare-fun tmp660 () Real) +(declare-fun tmp659 () Real) +(declare-fun tmp658 () Real) +(declare-fun tmp657 () Real) +(declare-fun tmp656 () Real) +(declare-fun tmp655 () Real) +(declare-fun tmp654 () Real) +(declare-fun tmp653 () Real) +(declare-fun tmp652 () Real) +(declare-fun tmp651 () Real) +(declare-fun tmp650 () Real) +(declare-fun tmp649 () Real) +(declare-fun tmp648 () Real) +(declare-fun tmp647 () Real) +(declare-fun tmp646 () Real) +(declare-fun tmp645 () Real) +(declare-fun tmp644 () Real) +(declare-fun tmp643 () Real) +(declare-fun tmp642 () Real) +(declare-fun tmp641 () Real) +(declare-fun tmp640 () Real) +(declare-fun tmp639 () Real) +(declare-fun tmp638 () Real) +(declare-fun tmp637 () Real) +(declare-fun tmp636 () Real) +(declare-fun tmp635 () Real) +(declare-fun tmp634 () Real) +(declare-fun tmp633 () Real) +(declare-fun tmp632 () Real) +(declare-fun tmp631 () Real) +(declare-fun tmp630 () Real) +(declare-fun tmp629 () Real) +(declare-fun tmp628 () Real) +(declare-fun tmp627 () Real) +(declare-fun tmp626 () Real) +(declare-fun tmp625 () Real) +(declare-fun tmp624 () Real) +(declare-fun tmp623 () Real) +(declare-fun tmp622 () Real) +(declare-fun tmp621 () Real) +(declare-fun tmp620 () Real) +(declare-fun tmp619 () Real) +(declare-fun tmp618 () Real) +(declare-fun tmp617 () Real) +(declare-fun tmp616 () Real) +(declare-fun tmp615 () Real) +(declare-fun tmp614 () Real) +(declare-fun tmp613 () Real) +(declare-fun tmp612 () Real) +(declare-fun tmp611 () Real) +(declare-fun tmp610 () Real) +(declare-fun tmp609 () Real) +(declare-fun tmp608 () Real) +(declare-fun tmp607 () Real) +(declare-fun tmp606 () Real) +(declare-fun tmp605 () Real) +(declare-fun tmp604 () Real) +(declare-fun tmp603 () Real) +(declare-fun tmp602 () Real) +(declare-fun tmp601 () Real) +(declare-fun tmp600 () Real) +(declare-fun tmp599 () Real) +(declare-fun tmp598 () Real) +(declare-fun tmp597 () Real) +(declare-fun tmp596 () Real) +(declare-fun tmp595 () Real) +(declare-fun tmp594 () Real) +(declare-fun tmp593 () Real) +(declare-fun tmp592 () Real) +(declare-fun tmp591 () Real) +(declare-fun tmp590 () Real) +(declare-fun tmp589 () Real) +(declare-fun tmp588 () Real) +(declare-fun tmp587 () Real) +(declare-fun tmp586 () Real) +(declare-fun tmp585 () Real) +(declare-fun tmp584 () Real) +(declare-fun tmp583 () Real) +(declare-fun tmp582 () Real) +(declare-fun tmp581 () Real) +(declare-fun tmp580 () Real) +(declare-fun tmp579 () Real) +(declare-fun tmp578 () Real) +(declare-fun tmp577 () Real) +(declare-fun tmp576 () Real) +(declare-fun tmp575 () Real) +(declare-fun tmp574 () Real) +(declare-fun tmp573 () Real) +(declare-fun tmp572 () Real) +(declare-fun tmp571 () Real) +(declare-fun tmp570 () Real) +(declare-fun tmp569 () Real) +(declare-fun tmp568 () Real) +(declare-fun tmp567 () Real) +(declare-fun tmp566 () Real) +(declare-fun tmp565 () Real) +(declare-fun tmp564 () Real) +(declare-fun tmp563 () Real) +(declare-fun tmp562 () Real) +(declare-fun tmp561 () Real) +(declare-fun tmp560 () Real) +(declare-fun tmp559 () Real) +(declare-fun tmp558 () Real) +(declare-fun tmp557 () Real) +(declare-fun tmp556 () Real) +(declare-fun tmp555 () Real) +(declare-fun tmp554 () Real) +(declare-fun tmp553 () Real) +(declare-fun tmp552 () Real) +(declare-fun tmp551 () Real) +(declare-fun tmp550 () Real) +(declare-fun tmp549 () Real) +(declare-fun tmp548 () Real) +(declare-fun tmp547 () Real) +(declare-fun tmp546 () Real) +(declare-fun tmp545 () Real) +(declare-fun tmp544 () Real) +(declare-fun tmp543 () Real) +(declare-fun tmp542 () Real) +(declare-fun tmp541 () Real) +(declare-fun tmp540 () Real) +(declare-fun tmp539 () Real) +(declare-fun tmp538 () Real) +(declare-fun tmp537 () Real) +(declare-fun tmp536 () Real) +(declare-fun tmp535 () Real) +(declare-fun tmp534 () Real) +(declare-fun tmp533 () Real) +(declare-fun tmp532 () Real) +(declare-fun tmp531 () Real) +(declare-fun tmp530 () Real) +(declare-fun tmp529 () Real) +(declare-fun tmp528 () Real) +(declare-fun tmp527 () Real) +(declare-fun tmp526 () Real) +(declare-fun tmp525 () Real) +(declare-fun tmp524 () Real) +(declare-fun tmp523 () Real) +(declare-fun tmp522 () Real) +(declare-fun tmp521 () Real) +(declare-fun tmp520 () Real) +(declare-fun tmp519 () Real) +(declare-fun tmp518 () Real) +(declare-fun tmp517 () Real) +(declare-fun tmp516 () Real) +(declare-fun tmp515 () Real) +(declare-fun tmp514 () Real) +(declare-fun tmp513 () Real) +(declare-fun tmp512 () Real) +(declare-fun tmp511 () Real) +(declare-fun tmp510 () Real) +(declare-fun tmp509 () Real) +(declare-fun tmp508 () Real) +(declare-fun tmp507 () Real) +(declare-fun tmp506 () Real) +(declare-fun tmp505 () Real) +(declare-fun tmp504 () Real) +(declare-fun tmp503 () Real) +(declare-fun tmp502 () Real) +(declare-fun tmp501 () Real) +(declare-fun tmp500 () Real) +(declare-fun tmp499 () Real) +(declare-fun tmp498 () Real) +(declare-fun tmp497 () Real) +(declare-fun tmp496 () Real) +(declare-fun tmp495 () Real) +(declare-fun tmp494 () Real) +(declare-fun tmp493 () Real) +(declare-fun tmp492 () Real) +(declare-fun tmp491 () Real) +(declare-fun tmp490 () Real) +(declare-fun tmp489 () Real) +(declare-fun tmp488 () Real) +(declare-fun tmp487 () Real) +(declare-fun tmp486 () Real) +(declare-fun tmp485 () Real) +(declare-fun tmp484 () Real) +(declare-fun tmp483 () Real) +(declare-fun tmp482 () Real) +(declare-fun tmp481 () Real) +(declare-fun tmp480 () Real) +(declare-fun tmp479 () Real) +(declare-fun tmp478 () Real) +(declare-fun tmp477 () Real) +(declare-fun tmp476 () Real) +(declare-fun tmp475 () Real) +(declare-fun tmp474 () Real) +(declare-fun tmp473 () Real) +(declare-fun tmp472 () Real) +(declare-fun tmp471 () Real) +(declare-fun tmp470 () Real) +(declare-fun tmp469 () Real) +(declare-fun tmp468 () Real) +(declare-fun tmp467 () Real) +(declare-fun tmp466 () Real) +(declare-fun tmp465 () Real) +(declare-fun tmp464 () Real) +(declare-fun tmp463 () Real) +(declare-fun tmp462 () Real) +(declare-fun tmp461 () Real) +(declare-fun tmp460 () Real) +(declare-fun tmp459 () Real) +(declare-fun tmp458 () Real) +(declare-fun tmp457 () Real) +(declare-fun tmp456 () Real) +(declare-fun tmp455 () Real) +(declare-fun tmp454 () Real) +(declare-fun tmp453 () Real) +(declare-fun tmp452 () Real) +(declare-fun tmp451 () Real) +(declare-fun tmp450 () Real) +(declare-fun tmp449 () Real) +(declare-fun tmp448 () Real) +(declare-fun tmp447 () Real) +(declare-fun tmp446 () Real) +(declare-fun tmp445 () Real) +(declare-fun tmp444 () Real) +(declare-fun tmp443 () Real) +(declare-fun tmp442 () Real) +(declare-fun tmp441 () Real) +(declare-fun tmp440 () Real) +(declare-fun tmp439 () Real) +(declare-fun tmp438 () Real) +(declare-fun tmp437 () Real) +(declare-fun tmp436 () Real) +(declare-fun tmp435 () Real) +(declare-fun tmp434 () Real) +(declare-fun tmp433 () Real) +(declare-fun tmp432 () Real) +(declare-fun tmp431 () Real) +(declare-fun tmp430 () Real) +(declare-fun tmp429 () Real) +(declare-fun tmp428 () Real) +(declare-fun tmp427 () Real) +(declare-fun tmp426 () Real) +(declare-fun tmp425 () Real) +(declare-fun tmp424 () Real) +(declare-fun tmp423 () Real) +(declare-fun tmp422 () Real) +(declare-fun tmp421 () Real) +(declare-fun tmp420 () Real) +(declare-fun tmp419 () Real) +(declare-fun tmp418 () Real) +(declare-fun tmp417 () Real) +(declare-fun tmp416 () Real) +(declare-fun tmp415 () Real) +(declare-fun tmp414 () Real) +(declare-fun tmp413 () Real) +(declare-fun tmp412 () Real) +(declare-fun tmp411 () Real) +(declare-fun tmp410 () Real) +(declare-fun tmp409 () Real) +(declare-fun tmp408 () Real) +(declare-fun tmp407 () Real) +(declare-fun tmp406 () Real) +(declare-fun tmp405 () Real) +(declare-fun tmp404 () Real) +(declare-fun tmp403 () Real) +(declare-fun tmp402 () Real) +(declare-fun tmp401 () Real) +(declare-fun tmp400 () Real) +(declare-fun tmp399 () Real) +(declare-fun tmp398 () Real) +(declare-fun tmp397 () Real) +(declare-fun tmp396 () Real) +(declare-fun tmp395 () Real) +(declare-fun tmp394 () Real) +(declare-fun tmp393 () Real) +(declare-fun tmp392 () Real) +(declare-fun tmp391 () Real) +(declare-fun tmp390 () Real) +(declare-fun tmp389 () Real) +(declare-fun tmp388 () Real) +(declare-fun tmp387 () Real) +(declare-fun tmp386 () Real) +(declare-fun tmp385 () Real) +(declare-fun tmp384 () Real) +(declare-fun tmp383 () Real) +(declare-fun tmp382 () Real) +(declare-fun tmp381 () Real) +(declare-fun tmp380 () Real) +(declare-fun tmp379 () Real) +(declare-fun tmp378 () Real) +(declare-fun tmp377 () Real) +(declare-fun tmp376 () Real) +(declare-fun tmp375 () Real) +(declare-fun tmp374 () Real) +(declare-fun tmp373 () Real) +(declare-fun tmp372 () Real) +(declare-fun tmp371 () Real) +(declare-fun tmp370 () Real) +(declare-fun tmp369 () Real) +(declare-fun tmp368 () Real) +(declare-fun tmp367 () Real) +(declare-fun tmp366 () Real) +(declare-fun tmp365 () Real) +(declare-fun tmp364 () Real) +(declare-fun tmp363 () Real) +(declare-fun tmp362 () Real) +(declare-fun tmp361 () Real) +(declare-fun tmp360 () Real) +(declare-fun tmp359 () Real) +(declare-fun tmp358 () Real) +(declare-fun tmp357 () Real) +(declare-fun tmp356 () Real) +(declare-fun tmp355 () Real) +(declare-fun tmp354 () Real) +(declare-fun tmp353 () Real) +(declare-fun tmp352 () Real) +(declare-fun tmp351 () Real) +(declare-fun tmp350 () Real) +(declare-fun tmp349 () Real) +(declare-fun tmp348 () Real) +(declare-fun tmp347 () Real) +(declare-fun tmp346 () Real) +(declare-fun tmp345 () Real) +(declare-fun tmp344 () Real) +(declare-fun tmp343 () Real) +(declare-fun tmp342 () Real) +(declare-fun tmp341 () Real) +(declare-fun tmp340 () Real) +(declare-fun tmp339 () Real) +(declare-fun tmp338 () Real) +(declare-fun tmp337 () Real) +(declare-fun tmp336 () Real) +(declare-fun tmp335 () Real) +(declare-fun tmp334 () Real) +(declare-fun tmp333 () Real) +(declare-fun tmp332 () Real) +(declare-fun tmp331 () Real) +(declare-fun tmp330 () Real) +(declare-fun tmp329 () Real) +(declare-fun tmp328 () Real) +(declare-fun tmp327 () Real) +(declare-fun tmp326 () Real) +(declare-fun tmp325 () Real) +(declare-fun tmp324 () Real) +(declare-fun tmp323 () Real) +(declare-fun tmp322 () Real) +(declare-fun tmp321 () Real) +(declare-fun tmp320 () Real) +(declare-fun tmp319 () Real) +(declare-fun tmp318 () Real) +(declare-fun tmp317 () Real) +(declare-fun tmp316 () Real) +(declare-fun tmp315 () Real) +(declare-fun tmp314 () Real) +(declare-fun tmp313 () Real) +(declare-fun tmp312 () Real) +(declare-fun tmp311 () Real) +(declare-fun tmp310 () Real) +(declare-fun tmp309 () Real) +(declare-fun tmp308 () Real) +(declare-fun tmp307 () Real) +(declare-fun tmp306 () Real) +(declare-fun tmp305 () Real) +(declare-fun tmp304 () Real) +(declare-fun tmp303 () Real) +(declare-fun tmp302 () Real) +(declare-fun tmp301 () Real) +(declare-fun tmp300 () Real) +(declare-fun tmp299 () Real) +(declare-fun tmp298 () Real) +(declare-fun tmp297 () Real) +(declare-fun tmp296 () Real) +(declare-fun tmp295 () Real) +(declare-fun tmp294 () Real) +(declare-fun tmp293 () Real) +(declare-fun tmp292 () Real) +(declare-fun tmp291 () Real) +(declare-fun tmp290 () Real) +(declare-fun tmp289 () Real) +(declare-fun tmp288 () Real) +(declare-fun tmp287 () Real) +(declare-fun tmp286 () Real) +(declare-fun tmp285 () Real) +(declare-fun tmp284 () Real) +(declare-fun tmp283 () Real) +(declare-fun tmp282 () Real) +(declare-fun tmp281 () Real) +(declare-fun tmp280 () Real) +(declare-fun tmp279 () Real) +(declare-fun tmp278 () Real) +(declare-fun tmp277 () Real) +(declare-fun tmp276 () Real) +(declare-fun tmp275 () Real) +(declare-fun tmp274 () Real) +(declare-fun tmp273 () Real) +(declare-fun tmp272 () Real) +(declare-fun tmp271 () Real) +(declare-fun tmp270 () Real) +(declare-fun tmp269 () Real) +(declare-fun tmp268 () Real) +(declare-fun tmp267 () Real) +(declare-fun tmp266 () Real) +(declare-fun tmp265 () Real) +(declare-fun tmp264 () Real) +(declare-fun tmp263 () Real) +(declare-fun tmp262 () Real) +(declare-fun tmp261 () Real) +(declare-fun tmp260 () Real) +(declare-fun tmp259 () Real) +(declare-fun tmp258 () Real) +(declare-fun tmp257 () Real) +(declare-fun tmp256 () Real) +(declare-fun tmp255 () Real) +(declare-fun tmp254 () Real) +(declare-fun tmp253 () Real) +(declare-fun tmp252 () Real) +(declare-fun tmp251 () Real) +(declare-fun tmp250 () Real) +(declare-fun tmp249 () Real) +(declare-fun tmp248 () Real) +(declare-fun tmp247 () Real) +(declare-fun tmp246 () Real) +(declare-fun tmp245 () Real) +(declare-fun tmp244 () Real) +(declare-fun tmp243 () Real) +(declare-fun tmp242 () Real) +(declare-fun tmp241 () Real) +(declare-fun tmp240 () Real) +(declare-fun tmp239 () Real) +(declare-fun tmp238 () Real) +(declare-fun tmp237 () Real) +(declare-fun tmp236 () Real) +(declare-fun tmp235 () Real) +(declare-fun tmp234 () Real) +(declare-fun tmp233 () Real) +(declare-fun tmp232 () Real) +(declare-fun tmp231 () Real) +(declare-fun tmp230 () Real) +(declare-fun tmp229 () Real) +(declare-fun tmp228 () Real) +(declare-fun tmp227 () Real) +(declare-fun tmp226 () Real) +(declare-fun tmp225 () Real) +(declare-fun tmp224 () Real) +(declare-fun tmp223 () Real) +(declare-fun tmp222 () Real) +(declare-fun tmp221 () Real) +(declare-fun tmp220 () Real) +(declare-fun tmp219 () Real) +(declare-fun tmp218 () Real) +(declare-fun tmp217 () Real) +(declare-fun tmp216 () Real) +(declare-fun tmp215 () Real) +(declare-fun tmp214 () Real) +(declare-fun tmp213 () Real) +(declare-fun tmp212 () Real) +(declare-fun tmp211 () Real) +(declare-fun tmp210 () Real) +(declare-fun tmp209 () Real) +(declare-fun tmp208 () Real) +(declare-fun tmp207 () Real) +(declare-fun tmp206 () Real) +(declare-fun tmp205 () Real) +(declare-fun tmp204 () Real) +(declare-fun tmp203 () Real) +(declare-fun tmp202 () Real) +(declare-fun tmp201 () Real) +(declare-fun tmp200 () Real) +(declare-fun tmp199 () Real) +(declare-fun tmp198 () Real) +(declare-fun tmp197 () Real) +(declare-fun tmp196 () Real) +(declare-fun tmp195 () Real) +(declare-fun tmp194 () Real) +(declare-fun tmp193 () Real) +(declare-fun tmp192 () Real) +(declare-fun tmp191 () Real) +(declare-fun tmp190 () Real) +(declare-fun tmp189 () Real) +(declare-fun tmp188 () Real) +(declare-fun tmp187 () Real) +(declare-fun tmp186 () Real) +(declare-fun tmp185 () Real) +(declare-fun tmp184 () Real) +(declare-fun tmp183 () Real) +(declare-fun tmp182 () Real) +(declare-fun tmp181 () Real) +(declare-fun tmp180 () Real) +(declare-fun tmp179 () Real) +(declare-fun tmp178 () Real) +(declare-fun tmp177 () Real) +(declare-fun tmp176 () Real) +(declare-fun tmp175 () Real) +(declare-fun tmp174 () Real) +(declare-fun tmp173 () Real) +(declare-fun tmp172 () Real) +(declare-fun tmp171 () Real) +(declare-fun tmp170 () Real) +(declare-fun tmp169 () Real) +(declare-fun tmp168 () Real) +(declare-fun tmp167 () Real) +(declare-fun tmp166 () Real) +(declare-fun tmp165 () Real) +(declare-fun tmp164 () Real) +(declare-fun tmp163 () Real) +(declare-fun tmp162 () Real) +(declare-fun tmp161 () Real) +(declare-fun tmp160 () Real) +(declare-fun tmp159 () Real) +(declare-fun tmp158 () Real) +(declare-fun tmp157 () Real) +(declare-fun tmp156 () Real) +(declare-fun tmp155 () Real) +(declare-fun tmp154 () Real) +(declare-fun tmp153 () Real) +(declare-fun tmp152 () Real) +(declare-fun tmp151 () Real) +(declare-fun tmp150 () Real) +(declare-fun tmp149 () Real) +(declare-fun tmp148 () Real) +(declare-fun tmp147 () Real) +(declare-fun tmp146 () Real) +(declare-fun tmp145 () Real) +(declare-fun tmp144 () Real) +(declare-fun tmp143 () Real) +(declare-fun tmp142 () Real) +(declare-fun tmp141 () Real) +(declare-fun tmp140 () Real) +(declare-fun tmp139 () Real) +(declare-fun tmp138 () Real) +(declare-fun tmp137 () Real) +(declare-fun tmp136 () Real) +(declare-fun tmp135 () Real) +(declare-fun tmp134 () Real) +(declare-fun tmp133 () Real) +(declare-fun tmp132 () Real) +(declare-fun tmp131 () Real) +(declare-fun tmp130 () Real) +(declare-fun tmp129 () Real) +(declare-fun tmp128 () Real) +(declare-fun tmp127 () Real) +(declare-fun tmp126 () Real) +(declare-fun tmp125 () Real) +(declare-fun tmp124 () Real) +(declare-fun tmp123 () Real) +(declare-fun tmp122 () Real) +(declare-fun tmp121 () Real) +(declare-fun tmp120 () Real) +(declare-fun tmp119 () Real) +(declare-fun tmp118 () Real) +(declare-fun tmp117 () Real) +(declare-fun tmp116 () Real) +(declare-fun tmp115 () Real) +(declare-fun tmp114 () Real) +(declare-fun tmp113 () Real) +(declare-fun tmp112 () Real) +(declare-fun tmp111 () Real) +(declare-fun tmp110 () Real) +(declare-fun tmp109 () Real) +(declare-fun tmp108 () Real) +(declare-fun tmp107 () Real) +(declare-fun tmp106 () Real) +(declare-fun tmp105 () Real) +(declare-fun tmp104 () Real) +(declare-fun tmp103 () Real) +(declare-fun tmp102 () Real) +(declare-fun tmp101 () Real) +(declare-fun tmp100 () Real) +(declare-fun tmp99 () Real) +(declare-fun tmp98 () Real) +(declare-fun tmp97 () Real) +(declare-fun tmp96 () Real) +(declare-fun tmp95 () Real) +(declare-fun tmp94 () Real) +(declare-fun tmp93 () Real) +(declare-fun tmp92 () Real) +(declare-fun tmp91 () Real) +(declare-fun tmp90 () Real) +(declare-fun tmp89 () Real) +(declare-fun tmp88 () Real) +(declare-fun tmp87 () Real) +(declare-fun tmp86 () Real) +(declare-fun tmp85 () Real) +(declare-fun tmp84 () Real) +(declare-fun tmp83 () Real) +(declare-fun tmp82 () Real) +(declare-fun tmp81 () Real) +(declare-fun tmp80 () Real) +(declare-fun tmp79 () Real) +(declare-fun tmp78 () Real) +(declare-fun tmp77 () Real) +(declare-fun tmp76 () Real) +(declare-fun tmp75 () Real) +(declare-fun tmp74 () Real) +(declare-fun tmp73 () Real) +(declare-fun tmp72 () Real) +(declare-fun tmp71 () Real) +(declare-fun tmp70 () Real) +(declare-fun tmp69 () Real) +(declare-fun tmp68 () Real) +(declare-fun tmp67 () Real) +(declare-fun tmp66 () Real) +(declare-fun tmp65 () Real) +(declare-fun tmp64 () Real) +(declare-fun tmp63 () Real) +(declare-fun tmp62 () Real) +(declare-fun tmp61 () Real) +(declare-fun tmp60 () Real) +(declare-fun tmp59 () Real) +(declare-fun tmp58 () Real) +(declare-fun tmp57 () Real) +(declare-fun tmp56 () Real) +(declare-fun tmp55 () Real) +(declare-fun tmp54 () Real) +(declare-fun tmp53 () Real) +(declare-fun tmp52 () Real) +(declare-fun tmp51 () Real) +(declare-fun tmp50 () Real) +(declare-fun tmp49 () Real) +(declare-fun tmp48 () Real) +(declare-fun tmp47 () Real) +(declare-fun tmp46 () Real) +(declare-fun tmp45 () Real) +(declare-fun tmp44 () Real) +(declare-fun tmp43 () Real) +(declare-fun tmp42 () Real) +(declare-fun tmp41 () Real) +(declare-fun tmp40 () Real) +(declare-fun tmp39 () Real) +(declare-fun tmp38 () Real) +(declare-fun tmp37 () Real) +(declare-fun tmp36 () Real) +(declare-fun tmp35 () Real) +(declare-fun tmp34 () Real) +(declare-fun tmp33 () Real) +(declare-fun tmp32 () Real) +(declare-fun tmp31 () Real) +(declare-fun tmp30 () Real) +(declare-fun tmp29 () Real) +(declare-fun tmp28 () Real) +(declare-fun tmp27 () Real) +(declare-fun tmp26 () Real) +(declare-fun tmp25 () Real) +(declare-fun tmp24 () Real) +(declare-fun tmp23 () Real) +(declare-fun tmp22 () Real) +(declare-fun tmp21 () Real) +(declare-fun tmp20 () Real) +(declare-fun tmp19 () Real) +(declare-fun tmp18 () Real) +(declare-fun tmp17 () Real) +(declare-fun tmp16 () Real) +(declare-fun tmp15 () Real) +(declare-fun tmp14 () Real) +(declare-fun tmp13 () Real) +(declare-fun tmp12 () Real) +(declare-fun tmp11 () Real) +(declare-fun tmp10 () Real) +(declare-fun tmp9 () Real) +(declare-fun tmp8 () Real) +(declare-fun tmp7 () Real) +(declare-fun tmp6 () Real) +(declare-fun tmp5 () Real) +(declare-fun tmp4 () Real) +(declare-fun tmp3 () Real) +(declare-fun tmp2 () Real) +(declare-fun tmp1 () Real) +(declare-fun x1 () Real) +(declare-fun x2 () Bool) +(declare-fun x3 () Bool) +(declare-fun x4 () Bool) +(declare-fun x5 () Bool) +(declare-fun x6 () Bool) +(declare-fun x7 () Bool) +(declare-fun x8 () Bool) +(declare-fun x9 () Bool) +(declare-fun x10 () Bool) +(declare-fun x11 () Bool) +(declare-fun x12 () Bool) +(declare-fun x13 () Bool) +(declare-fun x14 () Bool) +(declare-fun x15 () Bool) +(declare-fun x16 () Bool) +(declare-fun x17 () Bool) +(declare-fun x18 () Bool) +(declare-fun x19 () Bool) +(declare-fun x20 () Bool) +(declare-fun x21 () Bool) +(declare-fun x22 () Bool) +(declare-fun x23 () Bool) +(declare-fun x24 () Bool) +(declare-fun x25 () Bool) +(declare-fun x26 () Bool) +(declare-fun x27 () Bool) +(declare-fun x28 () Bool) +(declare-fun x29 () Bool) +(declare-fun x30 () Bool) +(declare-fun x31 () Bool) +(declare-fun x32 () Bool) +(declare-fun x33 () Bool) +(declare-fun x34 () Bool) +(declare-fun x35 () Bool) +(declare-fun x36 () Bool) +(declare-fun x37 () Bool) +(declare-fun x38 () Bool) +(declare-fun x39 () Bool) +(declare-fun x40 () Bool) +(declare-fun x41 () Bool) +(declare-fun x42 () Bool) +(declare-fun x43 () Bool) +(declare-fun x44 () Bool) +(declare-fun x45 () Bool) +(declare-fun x46 () Bool) +(declare-fun x47 () Bool) +(declare-fun x48 () Bool) +(declare-fun x49 () Bool) +(declare-fun x50 () Bool) +(declare-fun x51 () Bool) +(declare-fun x52 () Bool) +(declare-fun x53 () Bool) +(declare-fun x54 () Bool) +(declare-fun x55 () Bool) +(declare-fun x56 () Bool) +(declare-fun x57 () Bool) +(declare-fun x58 () Bool) +(declare-fun x59 () Bool) +(declare-fun x60 () Bool) +(declare-fun x61 () Bool) +(declare-fun x62 () Bool) +(declare-fun x63 () Bool) +(declare-fun x64 () Bool) +(declare-fun x65 () Bool) +(declare-fun x66 () Bool) +(declare-fun x67 () Bool) +(declare-fun x68 () Bool) +(declare-fun x69 () Bool) +(declare-fun x70 () Bool) +(declare-fun x71 () Bool) +(declare-fun x72 () Bool) +(declare-fun x73 () Bool) +(declare-fun x74 () Bool) +(declare-fun x75 () Bool) +(declare-fun x76 () Bool) +(declare-fun x77 () Bool) +(declare-fun x78 () Bool) +(declare-fun x79 () Bool) +(declare-fun x80 () Bool) +(declare-fun x81 () Bool) +(declare-fun x82 () Bool) +(declare-fun x83 () Bool) +(declare-fun x84 () Bool) +(declare-fun x85 () Bool) +(declare-fun x86 () Bool) +(declare-fun x87 () Bool) +(declare-fun x88 () Bool) +(declare-fun x89 () Bool) +(declare-fun x90 () Bool) +(declare-fun x91 () Bool) +(declare-fun x92 () Bool) +(declare-fun x93 () Bool) +(declare-fun x94 () Bool) +(declare-fun x95 () Bool) +(declare-fun x96 () Bool) +(declare-fun x97 () Bool) +(declare-fun x98 () Bool) +(declare-fun x99 () Bool) +(declare-fun x100 () Bool) +(declare-fun x101 () Bool) +(declare-fun x102 () Bool) +(declare-fun x103 () Bool) +(declare-fun x104 () Bool) +(declare-fun x105 () Bool) +(declare-fun x106 () Bool) +(declare-fun x107 () Bool) +(declare-fun x108 () Bool) +(declare-fun x109 () Bool) +(declare-fun x110 () Bool) +(declare-fun x111 () Bool) +(declare-fun x112 () Bool) +(declare-fun x113 () Bool) +(declare-fun x114 () Bool) +(declare-fun x115 () Bool) +(declare-fun x116 () Bool) +(declare-fun x117 () Bool) +(declare-fun x118 () Bool) +(declare-fun x119 () Bool) +(declare-fun x120 () Bool) +(declare-fun x121 () Bool) +(declare-fun x122 () Bool) +(declare-fun x123 () Bool) +(declare-fun x124 () Bool) +(declare-fun x125 () Bool) +(declare-fun x126 () Bool) +(declare-fun x127 () Bool) +(declare-fun x128 () Bool) +(declare-fun x129 () Bool) +(declare-fun x130 () Bool) +(declare-fun x131 () Bool) +(declare-fun x132 () Bool) +(declare-fun x133 () Bool) +(declare-fun x134 () Bool) +(declare-fun x135 () Bool) +(declare-fun x136 () Bool) +(declare-fun x137 () Bool) +(declare-fun x138 () Bool) +(declare-fun x139 () Bool) +(declare-fun x140 () Bool) +(declare-fun x141 () Bool) +(declare-fun x142 () Bool) +(declare-fun x143 () Bool) +(declare-fun x144 () Bool) +(declare-fun x145 () Bool) +(declare-fun x146 () Bool) +(declare-fun x147 () Bool) +(declare-fun x148 () Bool) +(declare-fun x149 () Bool) +(declare-fun x150 () Bool) +(declare-fun x151 () Bool) +(declare-fun x152 () Bool) +(declare-fun x153 () Bool) +(declare-fun x154 () Bool) +(declare-fun x155 () Bool) +(declare-fun x156 () Bool) +(declare-fun x157 () Bool) +(declare-fun x158 () Bool) +(declare-fun x159 () Bool) +(declare-fun x160 () Bool) +(declare-fun x161 () Bool) +(declare-fun x162 () Bool) +(declare-fun x163 () Bool) +(declare-fun x164 () Bool) +(declare-fun x165 () Bool) +(declare-fun x166 () Bool) +(declare-fun x167 () Bool) +(declare-fun x168 () Bool) +(declare-fun x169 () Bool) +(declare-fun x170 () Bool) +(declare-fun x171 () Bool) +(declare-fun x172 () Bool) +(declare-fun x173 () Bool) +(declare-fun x174 () Bool) +(declare-fun x175 () Bool) +(declare-fun x176 () Bool) +(declare-fun x177 () Bool) +(declare-fun x178 () Bool) +(declare-fun x179 () Bool) +(declare-fun x180 () Bool) +(declare-fun x181 () Bool) +(declare-fun x182 () Bool) +(declare-fun x183 () Bool) +(declare-fun x184 () Bool) +(declare-fun x185 () Bool) +(declare-fun x186 () Bool) +(declare-fun x187 () Bool) +(declare-fun x188 () Bool) +(declare-fun x189 () Bool) +(declare-fun x190 () Bool) +(declare-fun x191 () Bool) +(declare-fun x192 () Bool) +(declare-fun x193 () Bool) +(declare-fun x194 () Bool) +(declare-fun x195 () Bool) +(declare-fun x196 () Bool) +(declare-fun x197 () Bool) +(declare-fun x198 () Bool) +(declare-fun x199 () Bool) +(declare-fun x200 () Bool) +(declare-fun x201 () Bool) +(declare-fun x202 () Bool) +(declare-fun x203 () Bool) +(declare-fun x204 () Bool) +(declare-fun x205 () Bool) +(declare-fun x206 () Bool) +(declare-fun x207 () Bool) +(declare-fun x208 () Bool) +(declare-fun x209 () Bool) +(declare-fun x210 () Bool) +(declare-fun x211 () Bool) +(declare-fun x212 () Bool) +(declare-fun x213 () Bool) +(declare-fun x214 () Bool) +(declare-fun x215 () Bool) +(declare-fun x216 () Bool) +(declare-fun x217 () Bool) +(declare-fun x218 () Bool) +(declare-fun x219 () Bool) +(declare-fun x220 () Bool) +(declare-fun x221 () Bool) +(declare-fun x222 () Bool) +(declare-fun x223 () Bool) +(declare-fun x224 () Bool) +(declare-fun x225 () Bool) +(declare-fun x226 () Bool) +(declare-fun x227 () Bool) +(declare-fun x228 () Bool) +(declare-fun x229 () Bool) +(declare-fun x230 () Bool) +(declare-fun x231 () Bool) +(declare-fun x232 () Bool) +(declare-fun x233 () Bool) +(declare-fun x234 () Bool) +(declare-fun x235 () Bool) +(declare-fun x236 () Bool) +(declare-fun x237 () Bool) +(declare-fun x238 () Bool) +(declare-fun x239 () Bool) +(declare-fun x240 () Bool) +(declare-fun x241 () Bool) +(declare-fun x242 () Bool) +(declare-fun x243 () Bool) +(declare-fun x244 () Bool) +(declare-fun x245 () Bool) +(declare-fun x246 () Bool) +(declare-fun x247 () Bool) +(declare-fun x248 () Bool) +(declare-fun x249 () Bool) +(declare-fun x250 () Bool) +(declare-fun x251 () Bool) +(declare-fun x252 () Bool) +(declare-fun x253 () Bool) +(declare-fun x254 () Bool) +(declare-fun x255 () Bool) +(declare-fun x256 () Bool) +(declare-fun x257 () Bool) +(declare-fun x258 () Bool) +(declare-fun x259 () Bool) +(declare-fun x260 () Bool) +(declare-fun x261 () Bool) +(declare-fun x262 () Bool) +(declare-fun x263 () Bool) +(declare-fun x264 () Bool) +(declare-fun x265 () Bool) +(declare-fun x266 () Bool) +(declare-fun x267 () Bool) +(declare-fun x268 () Bool) +(declare-fun x269 () Bool) +(declare-fun x270 () Bool) +(declare-fun x271 () Bool) +(declare-fun x272 () Bool) +(declare-fun x273 () Bool) +(declare-fun x274 () Bool) +(declare-fun x275 () Bool) +(declare-fun x276 () Bool) +(declare-fun x277 () Bool) +(declare-fun x278 () Bool) +(declare-fun x279 () Bool) +(declare-fun x280 () Bool) +(declare-fun x281 () Bool) +(declare-fun x282 () Bool) +(declare-fun x283 () Bool) +(declare-fun x284 () Bool) +(declare-fun x285 () Bool) +(declare-fun x286 () Bool) +(declare-fun x287 () Bool) +(declare-fun x288 () Bool) +(declare-fun x289 () Bool) +(declare-fun x290 () Bool) +(declare-fun x291 () Bool) +(declare-fun x292 () Bool) +(declare-fun x293 () Bool) +(declare-fun x294 () Bool) +(declare-fun x295 () Bool) +(declare-fun x296 () Bool) +(declare-fun x297 () Bool) +(declare-fun x298 () Bool) +(declare-fun x299 () Bool) +(declare-fun x300 () Bool) +(declare-fun x301 () Bool) +(declare-fun x302 () Bool) +(declare-fun x303 () Bool) +(declare-fun x304 () Bool) +(declare-fun x305 () Bool) +(declare-fun x306 () Bool) +(declare-fun x307 () Bool) +(declare-fun x308 () Bool) +(declare-fun x309 () Bool) +(declare-fun x310 () Bool) +(declare-fun x311 () Bool) +(declare-fun x312 () Bool) +(declare-fun x313 () Bool) +(declare-fun x314 () Bool) +(declare-fun x315 () Bool) +(declare-fun x316 () Bool) +(declare-fun x317 () Bool) +(declare-fun x318 () Bool) +(declare-fun x319 () Bool) +(declare-fun x320 () Bool) +(declare-fun x321 () Bool) +(declare-fun x322 () Bool) +(declare-fun x323 () Bool) +(declare-fun x324 () Bool) +(declare-fun x325 () Bool) +(declare-fun x326 () Bool) +(declare-fun x327 () Bool) +(declare-fun x328 () Bool) +(declare-fun x329 () Bool) +(declare-fun x330 () Bool) +(declare-fun x331 () Bool) +(declare-fun x332 () Bool) +(declare-fun x333 () Bool) +(declare-fun x334 () Bool) +(declare-fun x335 () Bool) +(declare-fun x336 () Bool) +(declare-fun x337 () Bool) +(declare-fun x338 () Bool) +(declare-fun x339 () Bool) +(declare-fun x340 () Bool) +(declare-fun x341 () Bool) +(declare-fun x342 () Bool) +(declare-fun x343 () Bool) +(declare-fun x344 () Bool) +(declare-fun x345 () Bool) +(declare-fun x346 () Bool) +(declare-fun x347 () Bool) +(declare-fun x348 () Bool) +(declare-fun x349 () Bool) +(declare-fun x350 () Bool) +(declare-fun x351 () Bool) +(declare-fun x352 () Bool) +(declare-fun x353 () Bool) +(declare-fun x354 () Bool) +(declare-fun x355 () Bool) +(declare-fun x356 () Bool) +(declare-fun x357 () Bool) +(declare-fun x358 () Bool) +(declare-fun x359 () Bool) +(declare-fun x360 () Bool) +(declare-fun x361 () Bool) +(declare-fun x362 () Bool) +(declare-fun x363 () Bool) +(declare-fun x364 () Bool) +(declare-fun x365 () Bool) +(declare-fun x366 () Bool) +(declare-fun x367 () Bool) +(declare-fun x368 () Bool) +(declare-fun x369 () Bool) +(declare-fun x370 () Bool) +(declare-fun x371 () Bool) +(declare-fun x372 () Bool) +(declare-fun x373 () Bool) +(declare-fun x374 () Bool) +(declare-fun x375 () Bool) +(declare-fun x376 () Bool) +(declare-fun x377 () Bool) +(declare-fun x378 () Bool) +(declare-fun x379 () Bool) +(declare-fun x380 () Bool) +(declare-fun x381 () Bool) +(declare-fun x382 () Bool) +(declare-fun x383 () Bool) +(declare-fun x384 () Bool) +(declare-fun x385 () Bool) +(declare-fun x386 () Bool) +(declare-fun x387 () Bool) +(declare-fun x388 () Bool) +(declare-fun x389 () Bool) +(declare-fun x390 () Bool) +(declare-fun x391 () Bool) +(declare-fun x392 () Bool) +(declare-fun x393 () Bool) +(declare-fun x394 () Bool) +(declare-fun x395 () Bool) +(declare-fun x396 () Bool) +(declare-fun x397 () Bool) +(declare-fun x398 () Bool) +(declare-fun x399 () Bool) +(declare-fun x400 () Bool) +(declare-fun x401 () Bool) +(declare-fun x402 () Bool) +(declare-fun x403 () Bool) +(declare-fun x404 () Bool) +(declare-fun x405 () Bool) +(declare-fun x406 () Bool) +(declare-fun x407 () Bool) +(declare-fun x408 () Bool) +(declare-fun x409 () Bool) +(declare-fun x410 () Bool) +(declare-fun x411 () Bool) +(declare-fun x412 () Bool) +(declare-fun x413 () Bool) +(declare-fun x414 () Bool) +(declare-fun x415 () Bool) +(declare-fun x416 () Bool) +(declare-fun x417 () Bool) +(declare-fun x418 () Bool) +(declare-fun x419 () Bool) +(declare-fun x420 () Bool) +(declare-fun x421 () Bool) +(declare-fun x422 () Bool) +(declare-fun x423 () Bool) +(declare-fun x424 () Bool) +(declare-fun x425 () Bool) +(declare-fun x426 () Bool) +(declare-fun x427 () Bool) +(declare-fun x428 () Bool) +(declare-fun x429 () Bool) +(declare-fun x430 () Bool) +(declare-fun x431 () Bool) +(declare-fun x432 () Bool) +(declare-fun x433 () Bool) +(declare-fun x434 () Bool) +(declare-fun x435 () Bool) +(declare-fun x436 () Bool) +(declare-fun x437 () Bool) +(declare-fun x438 () Bool) +(declare-fun x439 () Bool) +(declare-fun x440 () Bool) +(declare-fun x441 () Bool) +(declare-fun x442 () Bool) +(declare-fun x443 () Bool) +(declare-fun x444 () Bool) +(declare-fun x445 () Bool) +(declare-fun x446 () Bool) +(declare-fun x447 () Bool) +(declare-fun x448 () Bool) +(declare-fun x449 () Bool) +(declare-fun x450 () Bool) +(declare-fun x451 () Bool) +(declare-fun x452 () Bool) +(declare-fun x453 () Bool) +(declare-fun x454 () Bool) +(declare-fun x455 () Bool) +(declare-fun x456 () Bool) +(declare-fun x457 () Bool) +(declare-fun x458 () Bool) +(declare-fun x459 () Bool) +(declare-fun x460 () Bool) +(declare-fun x461 () Bool) +(declare-fun x462 () Bool) +(declare-fun x463 () Bool) +(declare-fun x464 () Bool) +(declare-fun x465 () Bool) +(declare-fun x466 () Bool) +(declare-fun x467 () Bool) +(declare-fun x468 () Bool) +(declare-fun x469 () Bool) +(declare-fun x470 () Bool) +(declare-fun x471 () Bool) +(declare-fun x472 () Bool) +(declare-fun x473 () Bool) +(declare-fun x474 () Bool) +(declare-fun x475 () Bool) +(declare-fun x476 () Bool) +(declare-fun x477 () Bool) +(declare-fun x478 () Bool) +(declare-fun x479 () Bool) +(declare-fun x480 () Bool) +(declare-fun x481 () Bool) +(declare-fun x482 () Bool) +(declare-fun x483 () Bool) +(declare-fun x484 () Bool) +(declare-fun x485 () Bool) +(declare-fun x486 () Bool) +(declare-fun x487 () Bool) +(declare-fun x488 () Bool) +(declare-fun x489 () Bool) +(declare-fun x490 () Bool) +(declare-fun x491 () Bool) +(declare-fun x492 () Bool) +(declare-fun x493 () Bool) +(declare-fun x494 () Bool) +(declare-fun x495 () Bool) +(declare-fun x496 () Bool) +(declare-fun x497 () Bool) +(declare-fun x498 () Bool) +(declare-fun x499 () Bool) +(declare-fun x500 () Bool) +(declare-fun x501 () Bool) +(declare-fun x502 () Bool) +(declare-fun x503 () Bool) +(declare-fun x504 () Bool) +(declare-fun x505 () Bool) +(declare-fun x506 () Bool) +(declare-fun x507 () Bool) +(declare-fun x508 () Bool) +(declare-fun x509 () Bool) +(declare-fun x510 () Bool) +(declare-fun x511 () Bool) +(declare-fun x512 () Bool) +(declare-fun x513 () Bool) +(declare-fun x514 () Bool) +(declare-fun x515 () Bool) +(declare-fun x516 () Bool) +(declare-fun x517 () Bool) +(declare-fun x518 () Bool) +(declare-fun x519 () Bool) +(declare-fun x520 () Bool) +(declare-fun x521 () Bool) +(declare-fun x522 () Bool) +(declare-fun x523 () Bool) +(declare-fun x524 () Bool) +(declare-fun x525 () Bool) +(declare-fun x526 () Bool) +(declare-fun x527 () Bool) +(declare-fun x528 () Bool) +(declare-fun x529 () Bool) +(declare-fun x530 () Bool) +(declare-fun x531 () Bool) +(declare-fun x532 () Bool) +(declare-fun x533 () Bool) +(declare-fun x534 () Bool) +(declare-fun x535 () Bool) +(declare-fun x536 () Bool) +(declare-fun x537 () Bool) +(declare-fun x538 () Bool) +(declare-fun x539 () Bool) +(declare-fun x540 () Bool) +(declare-fun x541 () Bool) +(declare-fun x542 () Bool) +(declare-fun x543 () Bool) +(declare-fun x544 () Bool) +(declare-fun x545 () Bool) +(declare-fun x546 () Bool) +(declare-fun x547 () Bool) +(declare-fun x548 () Bool) +(declare-fun x549 () Bool) +(declare-fun x550 () Bool) +(declare-fun x551 () Bool) +(declare-fun x552 () Bool) +(declare-fun x553 () Bool) +(declare-fun x554 () Bool) +(declare-fun x555 () Bool) +(declare-fun x556 () Bool) +(declare-fun x557 () Bool) +(declare-fun x558 () Bool) +(declare-fun x559 () Bool) +(declare-fun x560 () Bool) +(declare-fun x561 () Bool) +(declare-fun x562 () Bool) +(declare-fun x563 () Bool) +(declare-fun x564 () Bool) +(declare-fun x565 () Bool) +(declare-fun x566 () Bool) +(declare-fun x567 () Bool) +(declare-fun x568 () Bool) +(declare-fun x569 () Bool) +(declare-fun x570 () Bool) +(declare-fun x571 () Bool) +(declare-fun x572 () Bool) +(declare-fun x573 () Bool) +(declare-fun x574 () Bool) +(declare-fun x575 () Bool) +(declare-fun x576 () Bool) +(declare-fun x577 () Bool) +(declare-fun x578 () Bool) +(declare-fun x579 () Bool) +(declare-fun x580 () Bool) +(declare-fun x581 () Bool) +(declare-fun x582 () Bool) +(declare-fun x583 () Bool) +(declare-fun x584 () Bool) +(declare-fun x585 () Bool) +(declare-fun x586 () Bool) +(declare-fun x587 () Bool) +(declare-fun x588 () Bool) +(declare-fun x589 () Bool) +(declare-fun x590 () Bool) +(declare-fun x591 () Bool) +(declare-fun x592 () Bool) +(declare-fun x593 () Bool) +(declare-fun x594 () Bool) +(declare-fun x595 () Bool) +(declare-fun x596 () Bool) +(declare-fun x597 () Bool) +(declare-fun x598 () Bool) +(declare-fun x599 () Bool) +(declare-fun x600 () Bool) +(declare-fun x601 () Bool) +(declare-fun x602 () Bool) +(declare-fun x603 () Bool) +(declare-fun x604 () Bool) +(declare-fun x605 () Bool) +(declare-fun x606 () Bool) +(declare-fun x607 () Bool) +(declare-fun x608 () Bool) +(declare-fun x609 () Bool) +(declare-fun x610 () Bool) +(declare-fun x611 () Bool) +(declare-fun x612 () Bool) +(declare-fun x613 () Bool) +(declare-fun x614 () Bool) +(declare-fun x615 () Bool) +(declare-fun x616 () Bool) +(declare-fun x617 () Bool) +(declare-fun x618 () Bool) +(declare-fun x619 () Bool) +(declare-fun x620 () Bool) +(declare-fun x621 () Bool) +(declare-fun x622 () Bool) +(declare-fun x623 () Bool) +(declare-fun x624 () Bool) +(declare-fun x625 () Bool) +(declare-fun x626 () Bool) +(declare-fun x627 () Bool) +(declare-fun x628 () Bool) +(declare-fun x629 () Bool) +(declare-fun x630 () Bool) +(declare-fun x631 () Bool) +(declare-fun x632 () Bool) +(declare-fun x633 () Bool) +(declare-fun x634 () Bool) +(declare-fun x635 () Bool) +(declare-fun x636 () Bool) +(declare-fun x637 () Bool) +(declare-fun x638 () Bool) +(declare-fun x639 () Bool) +(declare-fun x640 () Bool) +(declare-fun x641 () Bool) +(declare-fun x642 () Bool) +(declare-fun x643 () Bool) +(declare-fun x644 () Bool) +(declare-fun x645 () Bool) +(declare-fun x646 () Bool) +(declare-fun x647 () Bool) +(declare-fun x648 () Bool) +(declare-fun x649 () Bool) +(declare-fun x650 () Bool) +(declare-fun x651 () Bool) +(declare-fun x652 () Bool) +(declare-fun x653 () Bool) +(declare-fun x654 () Bool) +(declare-fun x655 () Bool) +(declare-fun x656 () Bool) +(declare-fun x657 () Bool) +(declare-fun x658 () Bool) +(declare-fun x659 () Bool) +(declare-fun x660 () Bool) +(declare-fun x661 () Bool) +(declare-fun x662 () Bool) +(declare-fun x663 () Bool) +(declare-fun x664 () Bool) +(declare-fun x665 () Bool) +(declare-fun x666 () Bool) +(declare-fun x667 () Bool) +(declare-fun x668 () Bool) +(declare-fun x669 () Bool) +(declare-fun x670 () Bool) +(declare-fun x671 () Bool) +(declare-fun x672 () Bool) +(declare-fun x673 () Bool) +(declare-fun x674 () Bool) +(declare-fun x675 () Bool) +(declare-fun x676 () Bool) +(declare-fun x677 () Bool) +(declare-fun x678 () Bool) +(declare-fun x679 () Bool) +(declare-fun x680 () Bool) +(declare-fun x681 () Bool) +(declare-fun x682 () Bool) +(declare-fun x683 () Bool) +(declare-fun x684 () Bool) +(declare-fun x685 () Bool) +(declare-fun x686 () Bool) +(declare-fun x687 () Bool) +(declare-fun x688 () Bool) +(declare-fun x689 () Bool) +(declare-fun x690 () Bool) +(declare-fun x691 () Bool) +(declare-fun x692 () Bool) +(declare-fun x693 () Bool) +(declare-fun x694 () Bool) +(declare-fun x695 () Bool) +(declare-fun x696 () Bool) +(declare-fun x697 () Bool) +(declare-fun x698 () Bool) +(declare-fun x699 () Bool) +(declare-fun x700 () Bool) +(declare-fun x701 () Bool) +(declare-fun x702 () Bool) +(declare-fun x703 () Bool) +(declare-fun x704 () Bool) +(declare-fun x705 () Bool) +(declare-fun x706 () Bool) +(declare-fun x707 () Bool) +(declare-fun x708 () Bool) +(declare-fun x709 () Bool) +(declare-fun x710 () Bool) +(declare-fun x711 () Bool) +(declare-fun x712 () Bool) +(declare-fun x713 () Bool) +(declare-fun x714 () Bool) +(declare-fun x715 () Bool) +(declare-fun x716 () Bool) +(declare-fun x717 () Bool) +(declare-fun x718 () Bool) +(declare-fun x719 () Bool) +(declare-fun x720 () Bool) +(declare-fun x721 () Bool) +(declare-fun x722 () Bool) +(declare-fun x723 () Bool) +(declare-fun x724 () Bool) +(declare-fun x725 () Bool) +(declare-fun x726 () Bool) +(declare-fun x727 () Bool) +(declare-fun x728 () Bool) +(declare-fun x729 () Bool) +(declare-fun x730 () Bool) +(declare-fun x731 () Bool) +(declare-fun x732 () Bool) +(declare-fun x733 () Bool) +(declare-fun x734 () Bool) +(declare-fun x735 () Bool) +(declare-fun x736 () Bool) +(declare-fun x737 () Bool) +(declare-fun x738 () Bool) +(declare-fun x739 () Bool) +(declare-fun x740 () Bool) +(declare-fun x741 () Bool) +(declare-fun x742 () Bool) +(declare-fun x743 () Bool) +(declare-fun x744 () Bool) +(declare-fun x745 () Bool) +(declare-fun x746 () Bool) +(declare-fun x747 () Bool) +(declare-fun x748 () Bool) +(declare-fun x749 () Bool) +(declare-fun x750 () Bool) +(declare-fun x751 () Bool) +(declare-fun x752 () Bool) +(declare-fun x753 () Bool) +(declare-fun x754 () Bool) +(declare-fun x755 () Bool) +(declare-fun x756 () Bool) +(declare-fun x757 () Bool) +(declare-fun x758 () Bool) +(declare-fun x759 () Bool) +(declare-fun x760 () Bool) +(declare-fun x761 () Bool) +(declare-fun x762 () Bool) +(declare-fun x763 () Bool) +(declare-fun x764 () Bool) +(declare-fun x765 () Bool) +(declare-fun x766 () Bool) +(declare-fun x767 () Bool) +(declare-fun x768 () Bool) +(declare-fun x769 () Bool) +(assert (let ((?v_1 (not x474)) (?v_1953 (not x427))) (let ((?v_2 (and ?v_1953 true)) (?v_4 (and x427 true)) (?v_3 (= tmp766 1)) (?v_5 (not x331)) (?v_1995 (not x379))) (let ((?v_6 (and ?v_1995 true)) (?v_8 (and x379 true)) (?v_7 (= tmp765 1)) (?v_9 (not x569)) (?v_1850 (not x521))) (let ((?v_10 (and ?v_1850 true)) (?v_12 (and x521 true)) (?v_11 (= tmp764 1)) (?v_13 (not x239)) (?v_2102 (not x283))) (let ((?v_14 (and ?v_2102 true)) (?v_16 (and x283 true)) (?v_15 (= tmp763 1)) (?v_17 (not x664)) (?v_1741 (not x616))) (let ((?v_18 (and ?v_1741 true)) (?v_20 (and x616 true)) (?v_19 (= tmp762 1)) (?v_21 (not x143)) (?v_2213 (not x191))) (let ((?v_22 (and ?v_2213 true)) (?v_24 (and x191 true)) (?v_23 (= tmp761 1)) (?v_25 (not x759)) (?v_1638 (not x711))) (let ((?v_26 (and ?v_1638 true)) (?v_28 (and x711 true)) (?v_27 (= tmp760 1)) (?v_29 (not x48)) (?v_2309 (not x96))) (let ((?v_30 (and ?v_2309 true)) (?v_32 (and x96 true)) (?v_31 (= tmp759 1)) (?v_33 (not x473)) (?v_34 (and (not x426) true)) (?v_36 (and x426 true)) (?v_35 (= tmp758 1)) (?v_37 (not x330)) (?v_38 (and (not x378) true)) (?v_40 (and x378 true)) (?v_39 (= tmp757 1)) (?v_41 (not x568)) (?v_42 (and (not x520) true)) (?v_44 (and x520 true)) (?v_43 (= tmp756 1)) (?v_45 (not x238)) (?v_46 (and (not x282) true)) (?v_48 (and x282 true)) (?v_47 (= tmp755 1)) (?v_49 (not x663)) (?v_50 (and (not x615) true)) (?v_52 (and x615 true)) (?v_51 (= tmp754 1)) (?v_53 (not x142)) (?v_54 (and (not x190) true)) (?v_56 (and x190 true)) (?v_55 (= tmp753 1)) (?v_57 (not x758)) (?v_58 (and (not x710) true)) (?v_60 (and x710 true)) (?v_59 (= tmp752 1)) (?v_61 (not x47)) (?v_62 (and (not x95) true)) (?v_64 (and x95 true)) (?v_63 (= tmp751 1)) (?v_65 (not x472)) (?v_1949 (not x425))) (let ((?v_66 (and ?v_1949 true)) (?v_68 (and x425 true)) (?v_67 (= tmp750 1)) (?v_69 (not x329)) (?v_1992 (not x377))) (let ((?v_70 (and ?v_1992 true)) (?v_72 (and x377 true)) (?v_71 (= tmp749 1)) (?v_73 (not x567)) (?v_1848 (not x519))) (let ((?v_74 (and ?v_1848 true)) (?v_76 (and x519 true)) (?v_75 (= tmp748 1)) (?v_77 (not x237)) (?v_2098 (not x281))) (let ((?v_78 (and ?v_2098 true)) (?v_80 (and x281 true)) (?v_79 (= tmp747 1)) (?v_81 (not x662)) (?v_1737 (not x614))) (let ((?v_82 (and ?v_1737 true)) (?v_84 (and x614 true)) (?v_83 (= tmp746 1)) (?v_85 (not x141)) (?v_2210 (not x189))) (let ((?v_86 (and ?v_2210 true)) (?v_88 (and x189 true)) (?v_87 (= tmp745 1)) (?v_89 (not x757)) (?v_1634 (not x709))) (let ((?v_90 (and ?v_1634 true)) (?v_92 (and x709 true)) (?v_91 (= tmp744 1)) (?v_93 (not x46)) (?v_2307 (not x94))) (let ((?v_94 (and ?v_2307 true)) (?v_96 (and x94 true)) (?v_95 (= tmp743 1)) (?v_97 (not x471)) (?v_98 (and (not x424) true)) (?v_100 (and x424 true)) (?v_99 (= tmp742 1)) (?v_101 (not x328)) (?v_102 (and (not x376) true)) (?v_104 (and x376 true)) (?v_103 (= tmp741 1)) (?v_105 (not x566)) (?v_106 (and (not x518) true)) (?v_108 (and x518 true)) (?v_107 (= tmp740 1)) (?v_109 (not x236)) (?v_110 (and (not x280) true)) (?v_112 (and x280 true)) (?v_111 (= tmp739 1)) (?v_113 (not x661)) (?v_114 (and (not x613) true)) (?v_116 (and x613 true)) (?v_115 (= tmp738 1)) (?v_117 (not x140)) (?v_118 (and (not x188) true)) (?v_120 (and x188 true)) (?v_119 (= tmp737 1)) (?v_121 (not x756)) (?v_122 (and (not x708) true)) (?v_124 (and x708 true)) (?v_123 (= tmp736 1)) (?v_125 (not x45)) (?v_126 (and (not x93) true)) (?v_128 (and x93 true)) (?v_127 (= tmp735 1)) (?v_129 (not x470)) (?v_1946 (not x423))) (let ((?v_130 (and ?v_1946 true)) (?v_132 (and x423 true)) (?v_131 (= tmp734 1)) (?v_133 (not x327)) (?v_1990 (not x375))) (let ((?v_134 (and ?v_1990 true)) (?v_136 (and x375 true)) (?v_135 (= tmp733 1)) (?v_137 (not x565)) (?v_1845 (not x517))) (let ((?v_138 (and ?v_1845 true)) (?v_140 (and x517 true)) (?v_139 (= tmp732 1)) (?v_141 (not x235)) (?v_2095 (not x279))) (let ((?v_142 (and ?v_2095 true)) (?v_144 (and x279 true)) (?v_143 (= tmp731 1)) (?v_145 (not x660)) (?v_1733 (not x612))) (let ((?v_146 (and ?v_1733 true)) (?v_148 (and x612 true)) (?v_147 (= tmp730 1)) (?v_149 (not x139)) (?v_2207 (not x187))) (let ((?v_150 (and ?v_2207 true)) (?v_152 (and x187 true)) (?v_151 (= tmp729 1)) (?v_153 (not x755)) (?v_1631 (not x707))) (let ((?v_154 (and ?v_1631 true)) (?v_156 (and x707 true)) (?v_155 (= tmp728 1)) (?v_157 (not x44)) (?v_2304 (not x92))) (let ((?v_158 (and ?v_2304 true)) (?v_160 (and x92 true)) (?v_159 (= tmp727 1)) (?v_161 (not x469)) (?v_162 (and (not x422) true)) (?v_164 (and x422 true)) (?v_163 (= tmp726 1)) (?v_165 (not x326)) (?v_166 (and (not x374) true)) (?v_168 (and x374 true)) (?v_167 (= tmp725 1)) (?v_169 (not x564)) (?v_170 (and (not x516) true)) (?v_172 (and x516 true)) (?v_171 (= tmp724 1)) (?v_173 (not x234)) (?v_174 (and (not x278) true)) (?v_176 (and x278 true)) (?v_175 (= tmp723 1)) (?v_177 (not x659)) (?v_178 (and (not x611) true)) (?v_180 (and x611 true)) (?v_179 (= tmp722 1)) (?v_181 (not x138)) (?v_182 (and (not x186) true)) (?v_184 (and x186 true)) (?v_183 (= tmp721 1)) (?v_185 (not x754)) (?v_186 (and (not x706) true)) (?v_188 (and x706 true)) (?v_187 (= tmp720 1)) (?v_189 (not x43)) (?v_190 (and (not x91) true)) (?v_192 (and x91 true)) (?v_191 (= tmp719 1)) (?v_193 (not x468)) (?v_1942 (not x421))) (let ((?v_194 (and ?v_1942 true)) (?v_196 (and x421 true)) (?v_195 (= tmp718 1)) (?v_197 (not x325)) (?v_1987 (not x373))) (let ((?v_198 (and ?v_1987 true)) (?v_200 (and x373 true)) (?v_199 (= tmp717 1)) (?v_201 (not x563)) (?v_1843 (not x515))) (let ((?v_202 (and ?v_1843 true)) (?v_204 (and x515 true)) (?v_203 (= tmp716 1)) (?v_205 (not x233)) (?v_2092 (not x277))) (let ((?v_206 (and ?v_2092 true)) (?v_208 (and x277 true)) (?v_207 (= tmp715 1)) (?v_209 (not x658)) (?v_1729 (not x610))) (let ((?v_210 (and ?v_1729 true)) (?v_212 (and x610 true)) (?v_211 (= tmp714 1)) (?v_213 (not x137)) (?v_2204 (not x185))) (let ((?v_214 (and ?v_2204 true)) (?v_216 (and x185 true)) (?v_215 (= tmp713 1)) (?v_217 (not x753)) (?v_1626 (not x705))) (let ((?v_218 (and ?v_1626 true)) (?v_220 (and x705 true)) (?v_219 (= tmp712 1)) (?v_221 (not x42)) (?v_2300 (not x90))) (let ((?v_222 (and ?v_2300 true)) (?v_224 (and x90 true)) (?v_223 (= tmp711 1)) (?v_225 (not x467)) (?v_226 (and (not x420) true)) (?v_228 (and x420 true)) (?v_227 (= tmp710 1)) (?v_229 (not x324)) (?v_230 (and (not x372) true)) (?v_232 (and x372 true)) (?v_231 (= tmp709 1)) (?v_233 (not x562)) (?v_234 (and (not x514) true)) (?v_236 (and x514 true)) (?v_235 (= tmp708 1)) (?v_237 (not x232)) (?v_238 (and (not x276) true)) (?v_240 (and x276 true)) (?v_239 (= tmp707 1)) (?v_241 (not x704)) (?v_242 (and (not x657) true)) (?v_244 (and x657 true)) (?v_243 (= tmp706 1)) (?v_245 (not x136)) (?v_246 (and (not x184) true)) (?v_248 (and x184 true)) (?v_247 (= tmp705 1)) (?v_249 (not x769)) (?v_250 (and (not x752) true)) (?v_252 (and x752 true)) (?v_251 (= tmp704 1)) (?v_253 (not x41)) (?v_254 (and (not x89) true)) (?v_256 (and x89 true)) (?v_255 (= tmp703 1)) (?v_257 (not x466)) (?v_1938 (not x419))) (let ((?v_258 (and ?v_1938 true)) (?v_260 (and x419 true)) (?v_259 (= tmp702 1)) (?v_261 (not x323)) (?v_1981 (not x371))) (let ((?v_262 (and ?v_1981 true)) (?v_264 (and x371 true)) (?v_263 (= tmp701 1)) (?v_265 (not x561)) (?v_1839 (not x513))) (let ((?v_266 (and ?v_1839 true)) (?v_268 (and x513 true)) (?v_267 (= tmp700 1)) (?v_269 (not x231)) (?v_2088 (not x275))) (let ((?v_270 (and ?v_2088 true)) (?v_272 (and x275 true)) (?v_271 (= tmp699 1)) (?v_273 (not x656)) (?v_274 (and (not x609) true)) (?v_276 (and x609 true)) (?v_275 (= tmp698 1)) (?v_277 (not x135)) (?v_2200 (not x183))) (let ((?v_278 (and ?v_2200 true)) (?v_280 (and x183 true)) (?v_279 (= tmp697 1)) (?v_281 (not x751)) (?v_1620 (not x703))) (let ((?v_282 (and ?v_1620 true)) (?v_284 (and x703 true)) (?v_283 (= tmp696 1)) (?v_285 (not x40)) (?v_2297 (not x88))) (let ((?v_286 (and ?v_2297 true)) (?v_288 (and x88 true)) (?v_287 (= tmp695 1)) (?v_289 (not x465)) (?v_290 (and (not x418) true)) (?v_292 (and x418 true)) (?v_291 (= tmp694 1)) (?v_293 (not x322)) (?v_294 (and (not x370) true)) (?v_296 (and x370 true)) (?v_295 (= tmp693 1)) (?v_297 (not x560)) (?v_298 (and (not x512) true)) (?v_300 (and x512 true)) (?v_299 (= tmp692 1)) (?v_301 (not x230)) (?v_302 (and (not x274) true)) (?v_304 (and x274 true)) (?v_303 (= tmp691 1)) (?v_305 (not x655)) (?v_1724 (not x608))) (let ((?v_306 (and ?v_1724 true)) (?v_308 (and x608 true)) (?v_307 (= tmp690 1)) (?v_309 (not x134)) (?v_310 (and (not x182) true)) (?v_312 (and x182 true)) (?v_311 (= tmp689 1)) (?v_313 (not x750)) (?v_314 (and (not x702) true)) (?v_316 (and x702 true)) (?v_315 (= tmp688 1)) (?v_317 (not x39)) (?v_318 (and (not x87) true)) (?v_320 (and x87 true)) (?v_319 (= tmp687 1)) (?v_321 (not x464)) (?v_1935 (not x417))) (let ((?v_322 (and ?v_1935 true)) (?v_324 (and x417 true)) (?v_323 (= tmp686 1)) (?v_325 (not x321)) (?v_1977 (not x369))) (let ((?v_326 (and ?v_1977 true)) (?v_328 (and x369 true)) (?v_327 (= tmp685 1)) (?v_329 (not x559)) (?v_1835 (not x511))) (let ((?v_330 (and ?v_1835 true)) (?v_332 (and x511 true)) (?v_331 (= tmp684 1)) (?v_333 (not x229)) (?v_2084 (not x273))) (let ((?v_334 (and ?v_2084 true)) (?v_336 (and x273 true)) (?v_335 (= tmp683 1)) (?v_337 (not x654)) (?v_338 (and (not x607) true)) (?v_340 (and x607 true)) (?v_339 (= tmp682 1)) (?v_341 (not x133)) (?v_2196 (not x181))) (let ((?v_342 (and ?v_2196 true)) (?v_344 (and x181 true)) (?v_343 (= tmp681 1)) (?v_345 (not x749)) (?v_1616 (not x701))) (let ((?v_346 (and ?v_1616 true)) (?v_348 (and x701 true)) (?v_347 (= tmp680 1)) (?v_349 (not x38)) (?v_2293 (not x86))) (let ((?v_350 (and ?v_2293 true)) (?v_352 (and x86 true)) (?v_351 (= tmp679 1)) (?v_353 (not x463)) (?v_354 (and (not x416) true)) (?v_356 (and x416 true)) (?v_355 (= tmp678 1)) (?v_357 (not x320)) (?v_358 (and (not x368) true)) (?v_360 (and x368 true)) (?v_359 (= tmp677 1)) (?v_361 (not x558)) (?v_362 (and (not x510) true)) (?v_364 (and x510 true)) (?v_363 (= tmp676 1)) (?v_365 (not x228)) (?v_366 (and (not x272) true)) (?v_368 (and x272 true)) (?v_367 (= tmp675 1)) (?v_369 (not x653)) (?v_1719 (not x606))) (let ((?v_370 (and ?v_1719 true)) (?v_372 (and x606 true)) (?v_371 (= tmp674 1)) (?v_373 (not x132)) (?v_374 (and (not x180) true)) (?v_376 (and x180 true)) (?v_375 (= tmp673 1)) (?v_377 (not x748)) (?v_378 (and (not x700) true)) (?v_380 (and x700 true)) (?v_379 (= tmp672 1)) (?v_381 (not x37)) (?v_382 (and (not x85) true)) (?v_384 (and x85 true)) (?v_383 (= tmp671 1)) (?v_385 (not x462)) (?v_1931 (not x415))) (let ((?v_386 (and ?v_1931 true)) (?v_388 (and x415 true)) (?v_387 (= tmp670 1)) (?v_389 (not x319)) (?v_1974 (not x367))) (let ((?v_390 (and ?v_1974 true)) (?v_392 (and x367 true)) (?v_391 (= tmp669 1)) (?v_393 (not x557)) (?v_1831 (not x509))) (let ((?v_394 (and ?v_1831 true)) (?v_396 (and x509 true)) (?v_395 (= tmp668 1)) (?v_397 (not x227)) (?v_2081 (not x271))) (let ((?v_398 (and ?v_2081 true)) (?v_400 (and x271 true)) (?v_399 (= tmp667 1)) (?v_401 (not x652)) (?v_402 (and (not x605) true)) (?v_404 (and x605 true)) (?v_403 (= tmp666 1)) (?v_405 (not x131)) (?v_2193 (not x179))) (let ((?v_406 (and ?v_2193 true)) (?v_408 (and x179 true)) (?v_407 (= tmp665 1)) (?v_409 (not x747)) (?v_1615 (not x699))) (let ((?v_410 (and ?v_1615 true)) (?v_412 (and x699 true)) (?v_411 (= tmp664 1)) (?v_413 (not x36)) (?v_2289 (not x84))) (let ((?v_414 (and ?v_2289 true)) (?v_416 (and x84 true)) (?v_415 (= tmp663 1)) (?v_417 (not x461)) (?v_418 (and (not x414) true)) (?v_420 (and x414 true)) (?v_419 (= tmp662 1)) (?v_421 (not x318)) (?v_422 (and (not x366) true)) (?v_424 (and x366 true)) (?v_423 (= tmp661 1)) (?v_425 (not x556)) (?v_426 (and (not x508) true)) (?v_428 (and x508 true)) (?v_427 (= tmp660 1)) (?v_429 (not x226)) (?v_430 (and (not x270) true)) (?v_432 (and x270 true)) (?v_431 (= tmp659 1)) (?v_433 (not x651)) (?v_1716 (not x604))) (let ((?v_434 (and ?v_1716 true)) (?v_436 (and x604 true)) (?v_435 (= tmp658 1)) (?v_437 (not x130)) (?v_438 (and (not x178) true)) (?v_440 (and x178 true)) (?v_439 (= tmp657 1)) (?v_441 (not x746)) (?v_442 (and (not x698) true)) (?v_444 (and x698 true)) (?v_443 (= tmp656 1)) (?v_445 (not x35)) (?v_446 (and (not x83) true)) (?v_448 (and x83 true)) (?v_447 (= tmp655 1)) (?v_449 (not x460)) (?v_1927 (not x413))) (let ((?v_450 (and ?v_1927 true)) (?v_452 (and x413 true)) (?v_451 (= tmp654 1)) (?v_453 (not x317)) (?v_1971 (not x365))) (let ((?v_454 (and ?v_1971 true)) (?v_456 (and x365 true)) (?v_455 (= tmp653 1)) (?v_457 (not x555)) (?v_1826 (not x507))) (let ((?v_458 (and ?v_1826 true)) (?v_460 (and x507 true)) (?v_459 (= tmp652 1)) (?v_461 (not x225)) (?v_2077 (not x269))) (let ((?v_462 (and ?v_2077 true)) (?v_464 (and x269 true)) (?v_463 (= tmp651 1)) (?v_465 (not x650)) (?v_466 (and (not x603) true)) (?v_468 (and x603 true)) (?v_467 (= tmp650 1)) (?v_469 (not x129)) (?v_2190 (not x177))) (let ((?v_470 (and ?v_2190 true)) (?v_472 (and x177 true)) (?v_471 (= tmp649 1)) (?v_473 (not x745)) (?v_1611 (not x697))) (let ((?v_474 (and ?v_1611 true)) (?v_476 (and x697 true)) (?v_475 (= tmp648 1)) (?v_477 (not x34)) (?v_2287 (not x82))) (let ((?v_478 (and ?v_2287 true)) (?v_480 (and x82 true)) (?v_479 (= tmp647 1)) (?v_481 (not x459)) (?v_482 (and (not x412) true)) (?v_484 (and x412 true)) (?v_483 (= tmp646 1)) (?v_485 (not x316)) (?v_486 (and (not x364) true)) (?v_488 (and x364 true)) (?v_487 (= tmp645 1)) (?v_489 (not x554)) (?v_490 (and (not x506) true)) (?v_492 (and x506 true)) (?v_491 (= tmp644 1)) (?v_493 (not x224)) (?v_494 (and (not x268) true)) (?v_496 (and x268 true)) (?v_495 (= tmp643 1)) (?v_497 (not x649)) (?v_1713 (not x602))) (let ((?v_498 (and ?v_1713 true)) (?v_500 (and x602 true)) (?v_499 (= tmp642 1)) (?v_501 (not x128)) (?v_502 (and (not x176) true)) (?v_504 (and x176 true)) (?v_503 (= tmp641 1)) (?v_505 (not x744)) (?v_506 (and (not x696) true)) (?v_508 (and x696 true)) (?v_507 (= tmp640 1)) (?v_509 (not x33)) (?v_510 (and (not x81) true)) (?v_512 (and x81 true)) (?v_511 (= tmp639 1)) (?v_513 (not x458)) (?v_1923 (not x411))) (let ((?v_514 (and ?v_1923 true)) (?v_516 (and x411 true)) (?v_515 (= tmp638 1)) (?v_517 (not x315)) (?v_1968 (not x363))) (let ((?v_518 (and ?v_1968 true)) (?v_520 (and x363 true)) (?v_519 (= tmp637 1)) (?v_521 (not x553)) (?v_1822 (not x505))) (let ((?v_522 (and ?v_1822 true)) (?v_524 (and x505 true)) (?v_523 (= tmp636 1)) (?v_525 (not x223)) (?v_2073 (not x267))) (let ((?v_526 (and ?v_2073 true)) (?v_528 (and x267 true)) (?v_527 (= tmp635 1)) (?v_529 (not x648)) (?v_530 (and (not x601) true)) (?v_532 (and x601 true)) (?v_531 (= tmp634 1)) (?v_533 (not x127)) (?v_2187 (not x175))) (let ((?v_534 (and ?v_2187 true)) (?v_536 (and x175 true)) (?v_535 (= tmp633 1)) (?v_537 (not x743)) (?v_1609 (not x695))) (let ((?v_538 (and ?v_1609 true)) (?v_540 (and x695 true)) (?v_539 (= tmp632 1)) (?v_541 (not x32)) (?v_2286 (not x80))) (let ((?v_542 (and ?v_2286 true)) (?v_544 (and x80 true)) (?v_543 (= tmp631 1)) (?v_545 (not x457)) (?v_546 (and (not x410) true)) (?v_548 (and x410 true)) (?v_547 (= tmp630 1)) (?v_549 (not x314)) (?v_550 (and (not x362) true)) (?v_552 (and x362 true)) (?v_551 (= tmp629 1)) (?v_553 (not x552)) (?v_554 (and (not x504) true)) (?v_556 (and x504 true)) (?v_555 (= tmp628 1)) (?v_557 (not x222)) (?v_558 (and (not x266) true)) (?v_560 (and x266 true)) (?v_559 (= tmp627 1)) (?v_561 (not x647)) (?v_1710 (not x600))) (let ((?v_562 (and ?v_1710 true)) (?v_564 (and x600 true)) (?v_563 (= tmp626 1)) (?v_565 (not x126)) (?v_566 (and (not x174) true)) (?v_568 (and x174 true)) (?v_567 (= tmp625 1)) (?v_569 (not x742)) (?v_570 (and (not x694) true)) (?v_572 (and x694 true)) (?v_571 (= tmp624 1)) (?v_573 (not x31)) (?v_574 (and (not x79) true)) (?v_576 (and x79 true)) (?v_575 (= tmp623 1)) (?v_577 (not x456)) (?v_1920 (not x409))) (let ((?v_578 (and ?v_1920 true)) (?v_580 (and x409 true)) (?v_579 (= tmp622 1)) (?v_581 (not x313)) (?v_1964 (not x361))) (let ((?v_582 (and ?v_1964 true)) (?v_584 (and x361 true)) (?v_583 (= tmp621 1)) (?v_585 (not x551)) (?v_1819 (not x503))) (let ((?v_586 (and ?v_1819 true)) (?v_588 (and x503 true)) (?v_587 (= tmp620 1)) (?v_589 (not x221)) (?v_2070 (not x265))) (let ((?v_590 (and ?v_2070 true)) (?v_592 (and x265 true)) (?v_591 (= tmp619 1)) (?v_593 (not x646)) (?v_594 (and (not x599) true)) (?v_596 (and x599 true)) (?v_595 (= tmp618 1)) (?v_597 (not x125)) (?v_2183 (not x173))) (let ((?v_598 (and ?v_2183 true)) (?v_600 (and x173 true)) (?v_599 (= tmp617 1)) (?v_601 (not x741)) (?v_1606 (not x693))) (let ((?v_602 (and ?v_1606 true)) (?v_604 (and x693 true)) (?v_603 (= tmp616 1)) (?v_605 (not x30)) (?v_2282 (not x78))) (let ((?v_606 (and ?v_2282 true)) (?v_608 (and x78 true)) (?v_607 (= tmp615 1)) (?v_609 (not x455)) (?v_610 (and (not x408) true)) (?v_612 (and x408 true)) (?v_611 (= tmp614 1)) (?v_613 (not x312)) (?v_614 (and (not x360) true)) (?v_616 (and x360 true)) (?v_615 (= tmp613 1)) (?v_617 (not x550)) (?v_618 (and (not x502) true)) (?v_620 (and x502 true)) (?v_619 (= tmp612 1)) (?v_621 (not x220)) (?v_622 (and (not x264) true)) (?v_624 (and x264 true)) (?v_623 (= tmp611 1)) (?v_625 (not x645)) (?v_1705 (not x598))) (let ((?v_626 (and ?v_1705 true)) (?v_628 (and x598 true)) (?v_627 (= tmp610 1)) (?v_629 (not x124)) (?v_630 (and (not x172) true)) (?v_632 (and x172 true)) (?v_631 (= tmp609 1)) (?v_633 (not x740)) (?v_634 (and (not x692) true)) (?v_636 (and x692 true)) (?v_635 (= tmp608 1)) (?v_637 (not x29)) (?v_638 (and (not x77) true)) (?v_640 (and x77 true)) (?v_639 (= tmp607 1)) (?v_641 (not x501)) (?v_1918 (not x407))) (let ((?v_642 (and ?v_1918 true)) (?v_644 (and x407 true)) (?v_643 (= tmp606 1)) (?v_645 (not x311)) (?v_1960 (not x359))) (let ((?v_646 (and ?v_1960 true)) (?v_648 (and x359 true)) (?v_647 (= tmp605 1)) (?v_649 (not x597)) (?v_1750 (not x549))) (let ((?v_650 (and ?v_1750 true)) (?v_652 (and x549 true)) (?v_651 (= tmp604 1)) (?v_653 (not x219)) (?v_2066 (not x263))) (let ((?v_654 (and ?v_2066 true)) (?v_656 (and x263 true)) (?v_655 (= tmp603 1)) (?v_657 (not x691)) (?v_1647 (not x644))) (let ((?v_658 (and ?v_1647 true)) (?v_660 (and x644 true)) (?v_659 (= tmp602 1)) (?v_661 (not x123)) (?v_2180 (not x171))) (let ((?v_662 (and ?v_2180 true)) (?v_664 (and x171 true)) (?v_663 (= tmp601 1)) (?v_665 (not x768)) (?v_1543 (not x739))) (let ((?v_666 (and ?v_1543 true)) (?v_668 (and x739 true)) (?v_667 (= tmp600 1)) (?v_669 (not x28)) (?v_2278 (not x76))) (let ((?v_670 (and ?v_2278 true)) (?v_672 (and x76 true)) (?v_671 (= tmp599 1)) (?v_673 (not x454)) (?v_674 (and (not x406) true)) (?v_676 (and x406 true)) (?v_675 (= tmp598 1)) (?v_677 (not x310)) (?v_678 (and (not x358) true)) (?v_680 (and x358 true)) (?v_679 (= tmp597 1)) (?v_681 (not x548)) (?v_682 (and (not x500) true)) (?v_684 (and x500 true)) (?v_683 (= tmp596 1)) (?v_685 (not x218)) (?v_686 (and (not x262) true)) (?v_688 (and x262 true)) (?v_687 (= tmp595 1)) (?v_689 (not x643)) (?v_1702 (not x596))) (let ((?v_690 (and ?v_1702 true)) (?v_692 (and x596 true)) (?v_691 (= tmp594 1)) (?v_693 (not x122)) (?v_694 (and (not x170) true)) (?v_696 (and x170 true)) (?v_695 (= tmp593 1)) (?v_697 (not x738)) (?v_698 (and (not x690) true)) (?v_700 (and x690 true)) (?v_699 (= tmp592 1)) (?v_701 (not x27)) (?v_702 (and (not x75) true)) (?v_704 (and x75 true)) (?v_703 (= tmp591 1)) (?v_705 (not x453)) (?v_1915 (not x405))) (let ((?v_706 (and ?v_1915 true)) (?v_708 (and x405 true)) (?v_707 (= tmp590 1)) (?v_709 (not x309)) (?v_1957 (not x357))) (let ((?v_710 (and ?v_1957 true)) (?v_712 (and x357 true)) (?v_711 (= tmp589 1)) (?v_713 (not x547)) (?v_714 (and (not x499) true)) (?v_716 (and x499 true)) (?v_715 (= tmp588 1)) (?v_717 (not x217)) (?v_718 (and (not x261) true)) (?v_720 (and x261 true)) (?v_719 (= tmp587 1)) (?v_721 (not x642)) (?v_722 (and (not x595) true)) (?v_724 (and x595 true)) (?v_723 (= tmp586 1)) (?v_725 (not x121)) (?v_2177 (not x169))) (let ((?v_726 (and ?v_2177 true)) (?v_728 (and x169 true)) (?v_727 (= tmp585 1)) (?v_729 (not x737)) (?v_730 (and (not x689) true)) (?v_732 (and x689 true)) (?v_731 (= tmp584 1)) (?v_733 (not x26)) (?v_2276 (not x74))) (let ((?v_734 (and ?v_2276 true)) (?v_736 (and x74 true)) (?v_735 (= tmp583 1)) (?v_737 (not x452)) (?v_738 (and (not x404) true)) (?v_740 (and x404 true)) (?v_739 (= tmp582 1)) (?v_741 (not x308)) (?v_742 (and (not x356) true)) (?v_744 (and x356 true)) (?v_743 (= tmp581 1)) (?v_745 (not x546)) (?v_746 (and (not x498) true)) (?v_748 (and x498 true)) (?v_747 (= tmp580 1)) (?v_749 (not x216)) (?v_2068 (not x260))) (let ((?v_750 (and ?v_2068 true)) (?v_752 (and x260 true)) (?v_751 (= tmp579 1)) (?v_753 (not x641)) (?v_754 (and (not x594) true)) (?v_756 (and x594 true)) (?v_755 (= tmp578 1)) (?v_757 (not x120)) (?v_758 (and (not x168) true)) (?v_760 (and x168 true)) (?v_759 (= tmp577 1)) (?v_761 (not x736)) (?v_762 (and (not x688) true)) (?v_764 (and x688 true)) (?v_763 (= tmp576 1)) (?v_765 (not x25)) (?v_766 (and (not x73) true)) (?v_768 (and x73 true)) (?v_767 (= tmp575 1)) (?v_769 (not x451)) (?v_770 (and (not x403) true)) (?v_772 (and x403 true)) (?v_771 (= tmp574 1)) (?v_773 (not x307)) (?v_774 (and (not x355) true)) (?v_776 (and x355 true)) (?v_775 (= tmp573 1)) (?v_777 (not x545)) (?v_1814 (not x497))) (let ((?v_778 (and ?v_1814 true)) (?v_780 (and x497 true)) (?v_779 (= tmp572 1)) (?v_781 (not x215)) (?v_782 (and (not x259) true)) (?v_784 (and x259 true)) (?v_783 (= tmp571 1)) (?v_785 (not x640)) (?v_786 (and (not x593) true)) (?v_788 (and x593 true)) (?v_787 (= tmp570 1)) (?v_789 (not x119)) (?v_790 (and (not x167) true)) (?v_792 (and x167 true)) (?v_791 (= tmp569 1)) (?v_793 (not x735)) (?v_1603 (not x687))) (let ((?v_794 (and ?v_1603 true)) (?v_796 (and x687 true)) (?v_795 (= tmp568 1)) (?v_797 (not x24)) (?v_798 (and (not x72) true)) (?v_800 (and x72 true)) (?v_799 (= tmp567 1)) (?v_801 (not x496)) (?v_1853 (not x450))) (let ((?v_802 (and ?v_1853 true)) (?v_804 (and x450 true)) (?v_803 (= tmp566 1)) (?v_805 (not x354)) (?v_1916 (not x402))) (let ((?v_806 (and ?v_1916 true)) (?v_808 (and x402 true)) (?v_807 (= tmp565 1)) (?v_809 (not x592)) (?v_1747 (not x544))) (let ((?v_810 (and ?v_1747 true)) (?v_812 (and x544 true)) (?v_811 (= tmp564 1)) (?v_813 (not x258)) (?v_2002 (not x306))) (let ((?v_814 (and ?v_2002 true)) (?v_816 (and x306 true)) (?v_815 (= tmp563 1)) (?v_817 (not x734)) (?v_1643 (not x639))) (let ((?v_818 (and ?v_1643 true)) (?v_820 (and x639 true)) (?v_819 (= tmp562 1)) (?v_821 (not x166)) (?v_2108 (not x214))) (let ((?v_822 (and ?v_2108 true)) (?v_824 (and x214 true)) (?v_823 (= tmp561 1)) (?v_825 (not x767)) (?v_826 (and (not x766) true)) (?v_828 (and x766 true)) (?v_827 (= tmp560 1)) (?v_829 (not x23)) (?v_2277 (not x71))) (let ((?v_830 (and ?v_2277 true)) (?v_832 (and x71 true)) (?v_831 (= tmp559 1)) (?v_833 (not x449)) (?v_834 (and (not x401) true)) (?v_836 (and x401 true)) (?v_835 (= tmp558 1)) (?v_837 (not x305)) (?v_838 (and (not x353) true)) (?v_840 (and x353 true)) (?v_839 (= tmp557 1)) (?v_841 (not x543)) (?v_1816 (not x495))) (let ((?v_842 (and ?v_1816 true)) (?v_844 (and x495 true)) (?v_843 (= tmp556 1)) (?v_845 (not x213)) (?v_846 (and (not x257) true)) (?v_848 (and x257 true)) (?v_847 (= tmp555 1)) (?v_849 (not x638)) (?v_850 (and (not x591) true)) (?v_852 (and x591 true)) (?v_851 (= tmp554 1)) (?v_853 (not x118)) (?v_854 (and (not x165) true)) (?v_856 (and x165 true)) (?v_855 (= tmp553 1)) (?v_857 (not x733)) (?v_858 (and (not x686) true)) (?v_860 (and x686 true)) (?v_859 (= tmp552 1)) (?v_861 (not x22)) (?v_862 (and (not x70) true)) (?v_864 (and x70 true)) (?v_863 (= tmp551 1)) (?v_865 (not x448)) (?v_1919 (not x400))) (let ((?v_866 (and ?v_1919 true)) (?v_868 (and x400 true)) (?v_867 (= tmp550 1)) (?v_869 (not x304)) (?v_1962 (not x352))) (let ((?v_870 (and ?v_1962 true)) (?v_872 (and x352 true)) (?v_871 (= tmp549 1)) (?v_873 (not x542)) (?v_874 (and (not x494) true)) (?v_876 (and x494 true)) (?v_875 (= tmp548 1)) (?v_877 (not x212)) (?v_2075 (not x256))) (let ((?v_878 (and ?v_2075 true)) (?v_880 (and x256 true)) (?v_879 (= tmp547 1)) (?v_881 (not x637)) (?v_1703 (not x590))) (let ((?v_882 (and ?v_1703 true)) (?v_884 (and x590 true)) (?v_883 (= tmp546 1)) (?v_885 (not x117)) (?v_2181 (not x164))) (let ((?v_886 (and ?v_2181 true)) (?v_888 (and x164 true)) (?v_887 (= tmp545 1)) (?v_889 (not x732)) (?v_1605 (not x685))) (let ((?v_890 (and ?v_1605 true)) (?v_892 (and x685 true)) (?v_891 (= tmp544 1)) (?v_893 (not x21)) (?v_2280 (not x69))) (let ((?v_894 (and ?v_2280 true)) (?v_896 (and x69 true)) (?v_895 (= tmp543 1)) (?v_897 (not x447)) (?v_898 (and (not x399) true)) (?v_900 (and x399 true)) (?v_899 (= tmp542 1)) (?v_901 (not x303)) (?v_902 (and (not x351) true)) (?v_904 (and x351 true)) (?v_903 (= tmp541 1)) (?v_905 (not x541)) (?v_1821 (not x493))) (let ((?v_906 (and ?v_1821 true)) (?v_908 (and x493 true)) (?v_907 (= tmp540 1)) (?v_909 (not x211)) (?v_910 (and (not x255) true)) (?v_912 (and x255 true)) (?v_911 (= tmp539 1)) (?v_913 (not x636)) (?v_914 (and (not x589) true)) (?v_916 (and x589 true)) (?v_915 (= tmp538 1)) (?v_917 (not x116)) (?v_918 (and (not x163) true)) (?v_920 (and x163 true)) (?v_919 (= tmp537 1)) (?v_921 (not x731)) (?v_922 (and (not x684) true)) (?v_924 (and x684 true)) (?v_923 (= tmp536 1)) (?v_925 (not x20)) (?v_926 (and (not x68) true)) (?v_928 (and x68 true)) (?v_927 (= tmp535 1)) (?v_929 (not x446)) (?v_1921 (not x398))) (let ((?v_930 (and ?v_1921 true)) (?v_932 (and x398 true)) (?v_931 (= tmp534 1)) (?v_933 (not x302)) (?v_1966 (not x350))) (let ((?v_934 (and ?v_1966 true)) (?v_936 (and x350 true)) (?v_935 (= tmp533 1)) (?v_937 (not x540)) (?v_938 (and (not x492) true)) (?v_940 (and x492 true)) (?v_939 (= tmp532 1)) (?v_941 (not x210)) (?v_2079 (not x254))) (let ((?v_942 (and ?v_2079 true)) (?v_944 (and x254 true)) (?v_943 (= tmp531 1)) (?v_945 (not x635)) (?v_1709 (not x588))) (let ((?v_946 (and ?v_1709 true)) (?v_948 (and x588 true)) (?v_947 (= tmp530 1)) (?v_949 (not x115)) (?v_2185 (not x162))) (let ((?v_950 (and ?v_2185 true)) (?v_952 (and x162 true)) (?v_951 (= tmp529 1)) (?v_953 (not x730)) (?v_1608 (not x683))) (let ((?v_954 (and ?v_1608 true)) (?v_956 (and x683 true)) (?v_955 (= tmp528 1)) (?v_957 (not x19)) (?v_2284 (not x67))) (let ((?v_958 (and ?v_2284 true)) (?v_960 (and x67 true)) (?v_959 (= tmp527 1)) (?v_961 (not x445)) (?v_962 (and (not x397) true)) (?v_964 (and x397 true)) (?v_963 (= tmp526 1)) (?v_965 (not x301)) (?v_966 (and (not x349) true)) (?v_968 (and x349 true)) (?v_967 (= tmp525 1)) (?v_969 (not x539)) (?v_1824 (not x491))) (let ((?v_970 (and ?v_1824 true)) (?v_972 (and x491 true)) (?v_971 (= tmp524 1)) (?v_973 (not x209)) (?v_974 (and (not x253) true)) (?v_976 (and x253 true)) (?v_975 (= tmp523 1)) (?v_977 (not x634)) (?v_978 (and (not x587) true)) (?v_980 (and x587 true)) (?v_979 (= tmp522 1)) (?v_981 (not x114)) (?v_982 (and (not x161) true)) (?v_984 (and x161 true)) (?v_983 (= tmp521 1)) (?v_985 (not x729)) (?v_986 (and (not x682) true)) (?v_988 (and x682 true)) (?v_987 (= tmp520 1)) (?v_989 (not x18)) (?v_990 (and (not x66) true)) (?v_992 (and x66 true)) (?v_991 (= tmp519 1)) (?v_993 (not x490)) (?v_1869 (not x444))) (let ((?v_994 (and ?v_1869 true)) (?v_996 (and x444 true)) (?v_995 (= tmp518 1)) (?v_997 (not x348)) (?v_1925 (not x396))) (let ((?v_998 (and ?v_1925 true)) (?v_1000 (and x396 true)) (?v_999 (= tmp517 1)) (?v_1001 (not x586)) (?v_1766 (not x538))) (let ((?v_1002 (and ?v_1766 true)) (?v_1004 (and x538 true)) (?v_1003 (= tmp516 1)) (?v_1005 (not x252)) (?v_2020 (not x300))) (let ((?v_1006 (and ?v_2020 true)) (?v_1008 (and x300 true)) (?v_1007 (= tmp515 1)) (?v_1009 (not x681)) (?v_1661 (not x633))) (let ((?v_1010 (and ?v_1661 true)) (?v_1012 (and x633 true)) (?v_1011 (= tmp514 1)) (?v_1013 (not x160)) (?v_2125 (not x208))) (let ((?v_1014 (and ?v_2125 true)) (?v_1016 (and x208 true)) (?v_1015 (= tmp513 1)) (?v_1017 (not x765)) (?v_1558 (not x728))) (let ((?v_1018 (and ?v_1558 true)) (?v_1020 (and x728 true)) (?v_1019 (= tmp512 1)) (?v_1021 (not x65)) (?v_2231 (not x113))) (let ((?v_1022 (and ?v_2231 true)) (?v_1024 (and x113 true)) (?v_1023 (= tmp511 1)) (?v_1025 (not x443)) (?v_1026 (and (not x395) true)) (?v_1028 (and x395 true)) (?v_1027 (= tmp510 1)) (?v_1029 (not x299)) (?v_1030 (and (not x347) true)) (?v_1032 (and x347 true)) (?v_1031 (= tmp509 1)) (?v_1033 (not x537)) (?v_1827 (not x489))) (let ((?v_1034 (and ?v_1827 true)) (?v_1036 (and x489 true)) (?v_1035 (= tmp508 1)) (?v_1037 (not x207)) (?v_1038 (and (not x251) true)) (?v_1040 (and x251 true)) (?v_1039 (= tmp507 1)) (?v_1041 (not x632)) (?v_1042 (and (not x585) true)) (?v_1044 (and x585 true)) (?v_1043 (= tmp506 1)) (?v_1045 (not x112)) (?v_1046 (and (not x159) true)) (?v_1048 (and x159 true)) (?v_1047 (= tmp505 1)) (?v_1049 (not x727)) (?v_1050 (and (not x680) true)) (?v_1052 (and x680 true)) (?v_1051 (= tmp504 1)) (?v_1053 (not x17)) (?v_1054 (and (not x64) true)) (?v_1056 (and x64 true)) (?v_1055 (= tmp503 1)) (?v_1057 (not x442)) (?v_1929 (not x394))) (let ((?v_1058 (and ?v_1929 true)) (?v_1060 (and x394 true)) (?v_1059 (= tmp502 1)) (?v_1061 (not x298)) (?v_1972 (not x346))) (let ((?v_1062 (and ?v_1972 true)) (?v_1064 (and x346 true)) (?v_1063 (= tmp501 1)) (?v_1065 (not x536)) (?v_1066 (and (not x488) true)) (?v_1068 (and x488 true)) (?v_1067 (= tmp500 1)) (?v_1069 (not x206)) (?v_2086 (not x250))) (let ((?v_1070 (and ?v_2086 true)) (?v_1072 (and x250 true)) (?v_1071 (= tmp499 1)) (?v_1073 (not x631)) (?v_1715 (not x584))) (let ((?v_1074 (and ?v_1715 true)) (?v_1076 (and x584 true)) (?v_1075 (= tmp498 1)) (?v_1077 (not x111)) (?v_2191 (not x158))) (let ((?v_1078 (and ?v_2191 true)) (?v_1080 (and x158 true)) (?v_1079 (= tmp497 1)) (?v_1081 (not x726)) (?v_1613 (not x679))) (let ((?v_1082 (and ?v_1613 true)) (?v_1084 (and x679 true)) (?v_1083 (= tmp496 1)) (?v_1085 (not x16)) (?v_2288 (not x63))) (let ((?v_1086 (and ?v_2288 true)) (?v_1088 (and x63 true)) (?v_1087 (= tmp495 1)) (?v_1089 (not x441)) (?v_1090 (and (not x393) true)) (?v_1092 (and x393 true)) (?v_1091 (= tmp494 1)) (?v_1093 (not x297)) (?v_1094 (and (not x345) true)) (?v_1096 (and x345 true)) (?v_1095 (= tmp493 1)) (?v_1097 (not x535)) (?v_1833 (not x487))) (let ((?v_1098 (and ?v_1833 true)) (?v_1100 (and x487 true)) (?v_1099 (= tmp492 1)) (?v_1101 (not x205)) (?v_1102 (and (not x249) true)) (?v_1104 (and x249 true)) (?v_1103 (= tmp491 1)) (?v_1105 (not x630)) (?v_1106 (and (not x583) true)) (?v_1108 (and x583 true)) (?v_1107 (= tmp490 1)) (?v_1109 (not x110)) (?v_1110 (and (not x157) true)) (?v_1112 (and x157 true)) (?v_1111 (= tmp489 1)) (?v_1113 (not x725)) (?v_1114 (and (not x678) true)) (?v_1116 (and x678 true)) (?v_1115 (= tmp488 1)) (?v_1117 (not x15)) (?v_1118 (and (not x62) true)) (?v_1120 (and x62 true)) (?v_1119 (= tmp487 1)) (?v_1121 (not x486)) (?v_1881 (not x440))) (let ((?v_1122 (and ?v_1881 true)) (?v_1124 (and x440 true)) (?v_1123 (= tmp486 1)) (?v_1125 (not x344)) (?v_1933 (not x392))) (let ((?v_1126 (and ?v_1933 true)) (?v_1128 (and x392 true)) (?v_1127 (= tmp485 1)) (?v_1129 (not x582)) (?v_1778 (not x534))) (let ((?v_1130 (and ?v_1778 true)) (?v_1132 (and x534 true)) (?v_1131 (= tmp484 1)) (?v_1133 (not x204)) (?v_2032 (not x296))) (let ((?v_1134 (and ?v_2032 true)) (?v_1136 (and x296 true)) (?v_1135 (= tmp483 1)) (?v_1137 (not x677)) (?v_1673 (not x629))) (let ((?v_1138 (and ?v_1673 true)) (?v_1140 (and x629 true)) (?v_1139 (= tmp482 1)) (?v_1141 (not x109)) (?v_2195 (not x156))) (let ((?v_1142 (and ?v_2195 true)) (?v_1144 (and x156 true)) (?v_1143 (= tmp481 1)) (?v_1145 (not x764)) (?v_1571 (not x724))) (let ((?v_1146 (and ?v_1571 true)) (?v_1148 (and x724 true)) (?v_1147 (= tmp480 1)) (?v_1149 (not x14)) (?v_2291 (not x61))) (let ((?v_1150 (and ?v_2291 true)) (?v_1152 (and x61 true)) (?v_1151 (= tmp479 1)) (?v_1153 (not x485)) (?v_1154 (and (not x439) true)) (?v_1156 (and x439 true)) (?v_1155 (= tmp478 1)) (?v_1157 (not x343)) (?v_1158 (and (not x391) true)) (?v_1160 (and x391 true)) (?v_1159 (= tmp477 1)) (?v_1161 (not x581)) (?v_1162 (and (not x533) true)) (?v_1164 (and x533 true)) (?v_1163 (= tmp476 1)) (?v_1165 (not x203)) (?v_1166 (and (not x295) true)) (?v_1168 (and x295 true)) (?v_1167 (= tmp475 1)) (?v_1169 (not x676)) (?v_1170 (and (not x628) true)) (?v_1172 (and x628 true)) (?v_1171 (= tmp474 1)) (?v_1173 (not x108)) (?v_1174 (and (not x155) true)) (?v_1176 (and x155 true)) (?v_1175 (= tmp473 1)) (?v_1177 (not x763)) (?v_1178 (and (not x723) true)) (?v_1180 (and x723 true)) (?v_1179 (= tmp472 1)) (?v_1181 (not x13)) (?v_1182 (and (not x60) true)) (?v_1184 (and x60 true)) (?v_1183 (= tmp471 1)) (?v_1185 (not x484)) (?v_1888 (not x438))) (let ((?v_1186 (and ?v_1888 true)) (?v_1188 (and x438 true)) (?v_1187 (= tmp470 1)) (?v_1189 (not x342)) (?v_1936 (not x390))) (let ((?v_1190 (and ?v_1936 true)) (?v_1192 (and x390 true)) (?v_1191 (= tmp469 1)) (?v_1193 (not x580)) (?v_1785 (not x532))) (let ((?v_1194 (and ?v_1785 true)) (?v_1196 (and x532 true)) (?v_1195 (= tmp468 1)) (?v_1197 (not x202)) (?v_2039 (not x294))) (let ((?v_1198 (and ?v_2039 true)) (?v_1200 (and x294 true)) (?v_1199 (= tmp467 1)) (?v_1201 (not x675)) (?v_1679 (not x627))) (let ((?v_1202 (and ?v_1679 true)) (?v_1204 (and x627 true)) (?v_1203 (= tmp466 1)) (?v_1205 (not x107)) (?v_2198 (not x154))) (let ((?v_1206 (and ?v_2198 true)) (?v_1208 (and x154 true)) (?v_1207 (= tmp465 1)) (?v_1209 (not x762)) (?v_1578 (not x722))) (let ((?v_1210 (and ?v_1578 true)) (?v_1212 (and x722 true)) (?v_1211 (= tmp464 1)) (?v_1213 (not x12)) (?v_2295 (not x59))) (let ((?v_1214 (and ?v_2295 true)) (?v_1216 (and x59 true)) (?v_1215 (= tmp463 1)) (?v_1217 (not x483)) (?v_1218 (and (not x437) true)) (?v_1220 (and x437 true)) (?v_1219 (= tmp462 1)) (?v_1221 (not x341)) (?v_1222 (and (not x389) true)) (?v_1224 (and x389 true)) (?v_1223 (= tmp461 1)) (?v_1225 (not x579)) (?v_1226 (and (not x531) true)) (?v_1228 (and x531 true)) (?v_1227 (= tmp460 1)) (?v_1229 (not x201)) (?v_1230 (and (not x293) true)) (?v_1232 (and x293 true)) (?v_1231 (= tmp459 1)) (?v_1233 (not x674)) (?v_1234 (and (not x626) true)) (?v_1236 (and x626 true)) (?v_1235 (= tmp458 1)) (?v_1237 (not x106)) (?v_1238 (and (not x153) true)) (?v_1240 (and x153 true)) (?v_1239 (= tmp457 1)) (?v_1241 (not x761)) (?v_1242 (and (not x721) true)) (?v_1244 (and x721 true)) (?v_1243 (= tmp456 1)) (?v_1245 (not x11)) (?v_1246 (and (not x58) true)) (?v_1248 (and x58 true)) (?v_1247 (= tmp455 1)) (?v_1249 (not x436)) (?v_1940 (not x388))) (let ((?v_1250 (and ?v_1940 true)) (?v_1252 (and x388 true)) (?v_1251 (= tmp454 1)) (?v_1253 (not x292)) (?v_1983 (not x340))) (let ((?v_1254 (and ?v_1983 true)) (?v_1256 (and x340 true)) (?v_1255 (= tmp453 1)) (?v_1257 (not x530)) (?v_1258 (and (not x482) true)) (?v_1260 (and x482 true)) (?v_1259 (= tmp452 1)) (?v_1261 (not x200)) (?v_2090 (not x248))) (let ((?v_1262 (and ?v_2090 true)) (?v_1264 (and x248 true)) (?v_1263 (= tmp451 1)) (?v_1265 (not x625)) (?v_1725 (not x578))) (let ((?v_1266 (and ?v_1725 true)) (?v_1268 (and x578 true)) (?v_1267 (= tmp450 1)) (?v_1269 (not x105)) (?v_2202 (not x152))) (let ((?v_1270 (and ?v_2202 true)) (?v_1272 (and x152 true)) (?v_1271 (= tmp449 1)) (?v_1273 (not x720)) (?v_1622 (not x673))) (let ((?v_1274 (and ?v_1622 true)) (?v_1276 (and x673 true)) (?v_1275 (= tmp448 1)) (?v_1277 (not x10)) (?v_2299 (not x57))) (let ((?v_1278 (and ?v_2299 true)) (?v_1280 (and x57 true)) (?v_1279 (= tmp447 1)) (?v_1281 (not x435)) (?v_1282 (and (not x387) true)) (?v_1284 (and x387 true)) (?v_1283 (= tmp446 1)) (?v_1285 (not x291)) (?v_1286 (and (not x339) true)) (?v_1288 (and x339 true)) (?v_1287 (= tmp445 1)) (?v_1289 (not x529)) (?v_1844 (not x481))) (let ((?v_1290 (and ?v_1844 true)) (?v_1292 (and x481 true)) (?v_1291 (= tmp444 1)) (?v_1293 (not x199)) (?v_1294 (and (not x247) true)) (?v_1296 (and x247 true)) (?v_1295 (= tmp443 1)) (?v_1297 (not x624)) (?v_1298 (and (not x577) true)) (?v_1300 (and x577 true)) (?v_1299 (= tmp442 1)) (?v_1301 (not x104)) (?v_1302 (and (not x151) true)) (?v_1304 (and x151 true)) (?v_1303 (= tmp441 1)) (?v_1305 (not x719)) (?v_1306 (and (not x672) true)) (?v_1308 (and x672 true)) (?v_1307 (= tmp440 1)) (?v_1309 (not x9)) (?v_1310 (and (not x56) true)) (?v_1312 (and x56 true)) (?v_1311 (= tmp439 1)) (?v_1313 (not x434)) (?v_1944 (not x386))) (let ((?v_1314 (and ?v_1944 true)) (?v_1316 (and x386 true)) (?v_1315 (= tmp438 1)) (?v_1317 (not x290)) (?v_1989 (not x338))) (let ((?v_1318 (and ?v_1989 true)) (?v_1320 (and x338 true)) (?v_1319 (= tmp437 1)) (?v_1321 (not x528)) (?v_1322 (and (not x480) true)) (?v_1324 (and x480 true)) (?v_1323 (= tmp436 1)) (?v_1325 (not x198)) (?v_2093 (not x246))) (let ((?v_1326 (and ?v_2093 true)) (?v_1328 (and x246 true)) (?v_1327 (= tmp435 1)) (?v_1329 (not x623)) (?v_1731 (not x576))) (let ((?v_1330 (and ?v_1731 true)) (?v_1332 (and x576 true)) (?v_1331 (= tmp434 1)) (?v_1333 (not x103)) (?v_2206 (not x150))) (let ((?v_1334 (and ?v_2206 true)) (?v_1336 (and x150 true)) (?v_1335 (= tmp433 1)) (?v_1337 (not x718)) (?v_1629 (not x671))) (let ((?v_1338 (and ?v_1629 true)) (?v_1340 (and x671 true)) (?v_1339 (= tmp432 1)) (?v_1341 (not x8)) (?v_2302 (not x55))) (let ((?v_1342 (and ?v_2302 true)) (?v_1344 (and x55 true)) (?v_1343 (= tmp431 1)) (?v_1345 (not x433)) (?v_1346 (and (not x385) true)) (?v_1348 (and x385 true)) (?v_1347 (= tmp430 1)) (?v_1349 (not x289)) (?v_1350 (and (not x337) true)) (?v_1352 (and x337 true)) (?v_1351 (= tmp429 1)) (?v_1353 (not x527)) (?v_1847 (not x479))) (let ((?v_1354 (and ?v_1847 true)) (?v_1356 (and x479 true)) (?v_1355 (= tmp428 1)) (?v_1357 (not x197)) (?v_1358 (and (not x245) true)) (?v_1360 (and x245 true)) (?v_1359 (= tmp427 1)) (?v_1361 (not x622)) (?v_1362 (and (not x575) true)) (?v_1364 (and x575 true)) (?v_1363 (= tmp426 1)) (?v_1365 (not x102)) (?v_1366 (and (not x149) true)) (?v_1368 (and x149 true)) (?v_1367 (= tmp425 1)) (?v_1369 (not x717)) (?v_1370 (and (not x670) true)) (?v_1372 (and x670 true)) (?v_1371 (= tmp424 1)) (?v_1373 (not x7)) (?v_1374 (and (not x54) true)) (?v_1376 (and x54 true)) (?v_1375 (= tmp423 1)) (?v_1377 (not x432)) (?v_1947 (not x384))) (let ((?v_1378 (and ?v_1947 true)) (?v_1380 (and x384 true)) (?v_1379 (= tmp422 1)) (?v_1381 (not x288)) (?v_1991 (not x336))) (let ((?v_1382 (and ?v_1991 true)) (?v_1384 (and x336 true)) (?v_1383 (= tmp421 1)) (?v_1385 (not x526)) (?v_1386 (and (not x478) true)) (?v_1388 (and x478 true)) (?v_1387 (= tmp420 1)) (?v_1389 (not x196)) (?v_2097 (not x244))) (let ((?v_1390 (and ?v_2097 true)) (?v_1392 (and x244 true)) (?v_1391 (= tmp419 1)) (?v_1393 (not x621)) (?v_1735 (not x574))) (let ((?v_1394 (and ?v_1735 true)) (?v_1396 (and x574 true)) (?v_1395 (= tmp418 1)) (?v_1397 (not x101)) (?v_2209 (not x148))) (let ((?v_1398 (and ?v_2209 true)) (?v_1400 (and x148 true)) (?v_1399 (= tmp417 1)) (?v_1401 (not x716)) (?v_1632 (not x669))) (let ((?v_1402 (and ?v_1632 true)) (?v_1404 (and x669 true)) (?v_1403 (= tmp416 1)) (?v_1405 (not x6)) (?v_2305 (not x53))) (let ((?v_1406 (and ?v_2305 true)) (?v_1408 (and x53 true)) (?v_1407 (= tmp415 1)) (?v_1409 (not x431)) (?v_1410 (and (not x383) true)) (?v_1412 (and x383 true)) (?v_1411 (= tmp414 1)) (?v_1413 (not x287)) (?v_1414 (and (not x335) true)) (?v_1416 (and x335 true)) (?v_1415 (= tmp413 1)) (?v_1417 (not x525)) (?v_1849 (not x477))) (let ((?v_1418 (and ?v_1849 true)) (?v_1420 (and x477 true)) (?v_1419 (= tmp412 1)) (?v_1421 (not x195)) (?v_1422 (and (not x243) true)) (?v_1424 (and x243 true)) (?v_1423 (= tmp411 1)) (?v_1425 (not x620)) (?v_1426 (and (not x573) true)) (?v_1428 (and x573 true)) (?v_1427 (= tmp410 1)) (?v_1429 (not x100)) (?v_1430 (and (not x147) true)) (?v_1432 (and x147 true)) (?v_1431 (= tmp409 1)) (?v_1433 (not x715)) (?v_1434 (and (not x668) true)) (?v_1436 (and x668 true)) (?v_1435 (= tmp408 1)) (?v_1437 (not x5)) (?v_1438 (and (not x52) true)) (?v_1440 (and x52 true)) (?v_1439 (= tmp407 1)) (?v_1441 (not x430)) (?v_1951 (not x382))) (let ((?v_1442 (and ?v_1951 true)) (?v_1444 (and x382 true)) (?v_1443 (= tmp406 1)) (?v_1445 (not x286)) (?v_1993 (not x334))) (let ((?v_1446 (and ?v_1993 true)) (?v_1448 (and x334 true)) (?v_1447 (= tmp405 1)) (?v_1449 (not x524)) (?v_1450 (and (not x476) true)) (?v_1452 (and x476 true)) (?v_1451 (= tmp404 1)) (?v_1453 (not x194)) (?v_2100 (not x242))) (let ((?v_1454 (and ?v_2100 true)) (?v_1456 (and x242 true)) (?v_1455 (= tmp403 1)) (?v_1457 (not x619)) (?v_1739 (not x572))) (let ((?v_1458 (and ?v_1739 true)) (?v_1460 (and x572 true)) (?v_1459 (= tmp402 1)) (?v_1461 (not x99)) (?v_2211 (not x146))) (let ((?v_1462 (and ?v_2211 true)) (?v_1464 (and x146 true)) (?v_1463 (= tmp401 1)) (?v_1465 (not x714)) (?v_1636 (not x667))) (let ((?v_1466 (and ?v_1636 true)) (?v_1468 (and x667 true)) (?v_1467 (= tmp400 1)) (?v_1469 (not x4)) (?v_2308 (not x51))) (let ((?v_1470 (and ?v_2308 true)) (?v_1472 (and x51 true)) (?v_1471 (= tmp399 1)) (?v_1473 (not x429)) (?v_1474 (and (not x381) true)) (?v_1476 (and x381 true)) (?v_1475 (= tmp398 1)) (?v_1477 (not x285)) (?v_1478 (and (not x333) true)) (?v_1480 (and x333 true)) (?v_1479 (= tmp397 1)) (?v_1481 (not x523)) (?v_1852 (not x475))) (let ((?v_1482 (and ?v_1852 true)) (?v_1484 (and x475 true)) (?v_1483 (= tmp396 1)) (?v_1485 (not x193)) (?v_1486 (and (not x241) true)) (?v_1488 (and x241 true)) (?v_1487 (= tmp395 1)) (?v_1489 (not x618)) (?v_1490 (and (not x571) true)) (?v_1492 (and x571 true)) (?v_1491 (= tmp394 1)) (?v_1493 (not x98)) (?v_1494 (and (not x145) true)) (?v_1496 (and x145 true)) (?v_1495 (= tmp393 1)) (?v_1497 (not x713)) (?v_1498 (and (not x666) true)) (?v_1500 (and x666 true)) (?v_1499 (= tmp392 1)) (?v_1501 (not x3)) (?v_1502 (and (not x50) true)) (?v_1504 (and x50 true)) (?v_1503 (= tmp391 1)) (?v_1505 (not x428)) (?v_1955 (not x380))) (let ((?v_1506 (and ?v_1955 true)) (?v_1508 (and x380 true)) (?v_1507 (= tmp390 1)) (?v_1509 (not x284)) (?v_1997 (not x332))) (let ((?v_1510 (and ?v_1997 true)) (?v_1512 (and x332 true)) (?v_1511 (= tmp389 1)) (?v_1513 (not x570)) (?v_1810 (not x522))) (let ((?v_1514 (and ?v_1810 true)) (?v_1516 (and x522 true)) (?v_1515 (= tmp388 1)) (?v_1517 (not x192)) (?v_2104 (not x240))) (let ((?v_1518 (and ?v_2104 true)) (?v_1520 (and x240 true)) (?v_1519 (= tmp387 1)) (?v_1521 (not x665)) (?v_1698 (not x617))) (let ((?v_1522 (and ?v_1698 true)) (?v_1524 (and x617 true)) (?v_1523 (= tmp386 1)) (?v_1525 (not x97)) (?v_2215 (not x144))) (let ((?v_1526 (and ?v_2215 true)) (?v_1528 (and x144 true)) (?v_1527 (= tmp385 1)) (?v_1529 (not x760)) (?v_1599 (not x712))) (let ((?v_1530 (and ?v_1599 true)) (?v_1532 (and x712 true)) (?v_1531 (= tmp384 1)) (?v_1533 (not x2)) (?v_2311 (not x49))) (let ((?v_1534 (and ?v_2311 true)) (?v_1536 (and x49 true)) (?v_1535 (= tmp383 1)) (?v_1537 (and ?v_761 true)) (?v_1539 (and x736 true)) (?v_1538 (= tmp382 6)) (?v_1540 (and ?v_793 true)) (?v_1542 (and x735 true)) (?v_1541 (= tmp381 4)) (?v_1544 (and ?v_697 true)) (?v_1546 (and x738 true)) (?v_1545 (= tmp380 6)) (?v_1547 (and ?v_857 true)) (?v_1549 (and x733 true)) (?v_1548 (= tmp379 6)) (?v_1550 (and ?v_633 true)) (?v_1551 (and x740 true)) (?v_1552 (and ?v_921 true)) (?v_1554 (and x731 true)) (?v_1553 (= tmp377 8)) (?v_1555 (and ?v_569 true)) (?v_1557 (and x742 true)) (?v_1556 (= tmp376 8)) (?v_1559 (and ?v_985 true)) (?v_1561 (and x729 true)) (?v_1560 (= tmp375 8)) (?v_1562 (and ?v_505 true)) (?v_1564 (and x744 true)) (?v_1563 (= tmp374 8)) (?v_1565 (and ?v_1049 true)) (?v_1567 (and x727 true)) (?v_1566 (= tmp373 8)) (?v_1568 (and ?v_441 true)) (?v_1570 (and x746 true)) (?v_1569 (= tmp372 8)) (?v_1572 (and ?v_1113 true)) (?v_1574 (and x725 true)) (?v_1573 (= tmp371 8)) (?v_1575 (and ?v_377 true)) (?v_1577 (and x748 true)) (?v_1576 (= tmp370 6)) (?v_1579 (= tmp369 8)) (?v_1580 (and ?v_313 true)) (?v_1581 (and x750 true)) (?v_1582 (= tmp367 8)) (?v_1583 (= tmp366 8)) (?v_1584 (and ?v_1305 true)) (?v_1585 (and x719 true)) (?v_1586 (and ?v_185 true)) (?v_1588 (and x754 true)) (?v_1587 (= tmp364 8)) (?v_1589 (and ?v_1369 true)) (?v_1590 (and x717 true)) (?v_1591 (and ?v_121 true)) (?v_1593 (and x756 true)) (?v_1592 (= tmp362 8)) (?v_1594 (and ?v_1433 true)) (?v_1596 (and x715 true)) (?v_1595 (= tmp361 8)) (?v_1597 (and ?v_57 true)) (?v_1598 (and x758 true)) (?v_1600 (and ?v_1497 true)) (?v_1602 (and x713 true)) (?v_1601 (= tmp359 8)) (?v_1604 (= tmp356 2)) (?v_1607 (= tmp354 4)) (?v_1610 (= tmp352 4)) (?v_1612 (= tmp350 2)) (?v_1614 (= tmp349 6)) (?v_1617 (and ?v_1169 true)) (?v_1619 (and x676 true)) (?v_1618 (= tmp345 8)) (?v_1621 (= tmp344 6)) (?v_1623 (and ?v_1233 true)) (?v_1625 (and x674 true)) (?v_1624 (= tmp343 8)) (?v_1627 (and ?v_241 true)) (?v_1628 (and x704 true)) (?v_1630 (= tmp341 8)) (?v_1633 (= tmp339 8)) (?v_1635 (= tmp338 6)) (?v_1637 (= tmp337 8)) (?v_1639 (= tmp336 6)) (?v_1640 (= tmp335 8)) (?v_1641 (and ?v_753 true)) (?v_1642 (and x641 true)) (?v_1644 (and ?v_785 true)) (?v_1646 (and x640 true)) (?v_1645 (= tmp333 6)) (?v_1648 (and ?v_689 true)) (?v_1650 (and x643 true)) (?v_1649 (= tmp332 8)) (?v_1651 (and ?v_849 true)) (?v_1653 (and x638 true)) (?v_1652 (= tmp331 6)) (?v_1654 (and ?v_625 true)) (?v_1656 (and x645 true)) (?v_1655 (= tmp330 8)) (?v_1657 (and ?v_913 true)) (?v_1658 (and x636 true)) (?v_1659 (and ?v_561 true)) (?v_1660 (and x647 true)) (?v_1662 (and ?v_977 true)) (?v_1664 (and x634 true)) (?v_1663 (= tmp327 8)) (?v_1665 (and ?v_497 true)) (?v_1667 (and x649 true)) (?v_1666 (= tmp326 6)) (?v_1668 (and ?v_1041 true)) (?v_1670 (and x632 true)) (?v_1669 (= tmp325 6)) (?v_1671 (and ?v_433 true)) (?v_1672 (and x651 true)) (?v_1674 (and ?v_1105 true)) (?v_1675 (and x630 true)) (?v_1676 (and ?v_369 true)) (?v_1678 (and x653 true)) (?v_1677 (= tmp322 4)) (?v_1680 (= tmp321 4)) (?v_1681 (and ?v_305 true)) (?v_1682 (and x655 true)) (?v_1683 (and ?v_1297 true)) (?v_1684 (and x624 true)) (?v_1685 (and ?v_177 true)) (?v_1686 (and x659 true)) (?v_1687 (and ?v_1361 true)) (?v_1689 (and x622 true)) (?v_1688 (= tmp315 6)) (?v_1690 (and ?v_113 true)) (?v_1692 (and x661 true)) (?v_1691 (= tmp314 6)) (?v_1693 (and ?v_1425 true)) (?v_1694 (and x620 true)) (?v_1695 (and ?v_49 true)) (?v_1697 (and x663 true)) (?v_1696 (= tmp312 6)) (?v_1699 (and ?v_1489 true)) (?v_1701 (and x618 true)) (?v_1700 (= tmp311 8)) (?v_1704 (= tmp307 4)) (?v_1706 (and ?v_649 true)) (?v_1708 (and x597 true)) (?v_1707 (= tmp306 4)) (?v_1711 (= tmp304 4)) (?v_1712 (= tmp303 6)) (?v_1714 (= tmp302 6)) (?v_1717 (= tmp300 6)) (?v_1718 (= tmp299 8)) (?v_1720 (= tmp298 6)) (?v_1721 (and ?v_1161 true)) (?v_1723 (and x581 true)) (?v_1722 (= tmp297 6)) (?v_1726 (and ?v_1225 true)) (?v_1728 (and x579 true)) (?v_1727 (= tmp295 6)) (?v_1730 (= tmp294 2)) (?v_1732 (= tmp293 6)) (?v_1734 (= tmp292 4)) (?v_1736 (= tmp291 6)) (?v_1738 (= tmp290 4)) (?v_1740 (= tmp289 4)) (?v_1742 (= tmp288 4)) (?v_1743 (= tmp287 6)) (?v_1744 (and ?v_745 true)) (?v_1746 (and x546 true)) (?v_1745 (= tmp286 6)) (?v_1748 (and ?v_777 true)) (?v_1749 (and x545 true)) (?v_1751 (and ?v_681 true)) (?v_1753 (and x548 true)) (?v_1752 (= tmp284 6)) (?v_1754 (and ?v_841 true)) (?v_1756 (and x543 true)) (?v_1755 (= tmp283 4)) (?v_1757 (and ?v_617 true)) (?v_1759 (and x550 true)) (?v_1758 (= tmp282 6)) (?v_1760 (and ?v_905 true)) (?v_1762 (and x541 true)) (?v_1761 (= tmp281 2)) (?v_1763 (and ?v_553 true)) (?v_1765 (and x552 true)) (?v_1764 (= tmp280 8)) (?v_1767 (and ?v_969 true)) (?v_1769 (and x539 true)) (?v_1768 (= tmp279 2)) (?v_1770 (and ?v_489 true)) (?v_1771 (and x554 true)) (?v_1772 (and ?v_1033 true)) (?v_1774 (and x537 true)) (?v_1773 (= tmp277 2)) (?v_1775 (and ?v_425 true)) (?v_1777 (and x556 true)) (?v_1776 (= tmp276 6)) (?v_1779 (and ?v_1097 true)) (?v_1781 (and x535 true)) (?v_1780 (= tmp275 2)) (?v_1782 (and ?v_361 true)) (?v_1784 (and x558 true)) (?v_1783 (= tmp274 6)) (?v_1786 (= tmp273 4)) (?v_1787 (and ?v_297 true)) (?v_1789 (and x560 true)) (?v_1788 (= tmp272 6)) (?v_1790 (= tmp271 6)) (?v_1791 (and ?v_233 true)) (?v_1793 (and x562 true)) (?v_1792 (= tmp270 8)) (?v_1794 (and ?v_1289 true)) (?v_1795 (and x529 true)) (?v_1796 (and ?v_169 true)) (?v_1798 (and x564 true)) (?v_1797 (= tmp268 6)) (?v_1799 (and ?v_1353 true)) (?v_1801 (and x527 true)) (?v_1800 (= tmp267 8)) (?v_1802 (and ?v_105 true)) (?v_1804 (and x566 true)) (?v_1803 (= tmp266 6)) (?v_1805 (and ?v_1417 true)) (?v_1807 (and x525 true)) (?v_1806 (= tmp265 8)) (?v_1808 (and ?v_41 true)) (?v_1809 (and x568 true)) (?v_1811 (and ?v_1481 true)) (?v_1813 (and x523 true)) (?v_1812 (= tmp263 6)) (?v_1815 (= tmp260 4)) (?v_1817 (and ?v_801 true)) (?v_1818 (and x496 true)) (?v_1820 (= tmp258 4)) (?v_1823 (= tmp256 2)) (?v_1825 (= tmp255 6)) (?v_1828 (and ?v_993 true)) (?v_1830 (and x490 true)) (?v_1829 (= tmp253 6)) (?v_1832 (= tmp252 4)) (?v_1834 (= tmp251 6)) (?v_1836 (= tmp250 6)) (?v_1837 (and ?v_1121 true)) (?v_1838 (and x486 true)) (?v_1840 (= tmp248 6)) (?v_1841 (and ?v_1185 true)) (?v_1842 (and x484 true)) (?v_1846 (= tmp244 6)) (?v_1851 (= tmp240 8)) (?v_1854 (and ?v_769 true)) (?v_1856 (and x451 true)) (?v_1855 (= tmp237 4)) (?v_1857 (and ?v_705 true)) (?v_1858 (and x453 true)) (?v_1859 (and ?v_833 true)) (?v_1861 (and x449 true)) (?v_1860 (= tmp235 4)) (?v_1862 (and ?v_609 true)) (?v_1863 (and x455 true)) (?v_1864 (and ?v_897 true)) (?v_1866 (and x447 true)) (?v_1865 (= tmp233 4)) (?v_1867 (and ?v_545 true)) (?v_1868 (and x457 true)) (?v_1870 (and ?v_961 true)) (?v_1872 (and x445 true)) (?v_1871 (= tmp231 4)) (?v_1873 (and ?v_481 true)) (?v_1875 (and x459 true)) (?v_1874 (= tmp230 6)) (?v_1876 (and ?v_1025 true)) (?v_1878 (and x443 true)) (?v_1877 (= tmp229 2)) (?v_1879 (and ?v_417 true)) (?v_1880 (and x461 true)) (?v_1882 (and ?v_1089 true)) (?v_1884 (and x441 true)) (?v_1883 (= tmp227 2)) (?v_1885 (and ?v_353 true)) (?v_1887 (and x463 true)) (?v_1886 (= tmp226 8)) (?v_1889 (= tmp225 4)) (?v_1890 (and ?v_289 true)) (?v_1892 (and x465 true)) (?v_1891 (= tmp224 8)) (?v_1893 (= tmp223 4)) (?v_1894 (and ?v_225 true)) (?v_1896 (and x467 true)) (?v_1895 (= tmp222 8)) (?v_1897 (and ?v_1281 true)) (?v_1899 (and x435 true)) (?v_1898 (= tmp221 4)) (?v_1900 (and ?v_161 true)) (?v_1902 (and x469 true)) (?v_1901 (= tmp220 6)) (?v_1903 (and ?v_1345 true)) (?v_1905 (and x433 true)) (?v_1904 (= tmp219 4)) (?v_1906 (and ?v_97 true)) (?v_1908 (and x471 true)) (?v_1907 (= tmp218 6)) (?v_1909 (and ?v_1409 true)) (?v_1910 (and x431 true)) (?v_1911 (and ?v_33 true)) (?v_1912 (and x473 true)) (?v_1913 (and ?v_1473 true)) (?v_1914 (and x429 true)) (?v_1917 (= tmp213 6)) (?v_1922 (= tmp209 4)) (?v_1924 (= tmp208 4)) (?v_1926 (= tmp207 4)) (?v_1928 (= tmp206 4)) (?v_1930 (= tmp205 4)) (?v_1932 (= tmp204 4)) (?v_1934 (= tmp203 2)) (?v_1937 (= tmp201 2)) (?v_1939 (= tmp200 6)) (?v_1941 (= tmp199 2)) (?v_1943 (= tmp198 6)) (?v_1945 (= tmp197 4)) (?v_1948 (= tmp195 6)) (?v_1950 (= tmp194 4)) (?v_1952 (= tmp193 6)) (?v_1954 (= tmp192 4)) (?v_1956 (= tmp191 4)) (?v_1958 (= tmp190 2)) (?v_1959 (= tmp189 2)) (?v_1961 (= tmp188 4)) (?v_1963 (= tmp187 4)) (?v_1965 (= tmp186 4)) (?v_1967 (= tmp185 6)) (?v_1969 (= tmp184 4)) (?v_1970 (= tmp183 6)) (?v_1973 (= tmp181 8)) (?v_1975 (= tmp180 6)) (?v_1976 (= tmp179 8)) (?v_1978 (= tmp178 6)) (?v_1979 (and ?v_1157 true)) (?v_1980 (and x343 true)) (?v_1982 (= tmp176 6)) (?v_1984 (and ?v_1221 true)) (?v_1986 (and x341 true)) (?v_1985 (= tmp175 6)) (?v_1988 (= tmp174 6)) (?v_1994 (= tmp169 4)) (?v_1996 (= tmp168 1)) (?v_1998 (= tmp167 4)) (?v_1999 (and ?v_741 true)) (?v_2001 (and x308 true)) (?v_2000 (= tmp166 4)) (?v_2003 (and ?v_773 true)) (?v_2005 (and x307 true)) (?v_2004 (= tmp165 4)) (?v_2006 (and ?v_677 true)) (?v_2008 (and x310 true)) (?v_2007 (= tmp164 4)) (?v_2009 (and ?v_837 true)) (?v_2010 (and x305 true)) (?v_2011 (and ?v_613 true)) (?v_2013 (and x312 true)) (?v_2012 (= tmp162 4)) (?v_2014 (and ?v_901 true)) (?v_2016 (and x303 true)) (?v_2015 (= tmp161 6)) (?v_2017 (and ?v_549 true)) (?v_2019 (and x314 true)) (?v_2018 (= tmp160 6)) (?v_2021 (and ?v_965 true)) (?v_2023 (and x301 true)) (?v_2022 (= tmp159 6)) (?v_2024 (and ?v_485 true)) (?v_2026 (and x316 true)) (?v_2025 (= tmp158 6)) (?v_2027 (and ?v_1029 true)) (?v_2028 (and x299 true)) (?v_2029 (and ?v_421 true)) (?v_2031 (and x318 true)) (?v_2030 (= tmp156 6)) (?v_2033 (and ?v_1093 true)) (?v_2035 (and x297 true)) (?v_2034 (= tmp155 4)) (?v_2036 (and ?v_357 true)) (?v_2038 (and x320 true)) (?v_2037 (= tmp154 6)) (?v_2040 (= tmp153 4)) (?v_2041 (and ?v_293 true)) (?v_2043 (and x322 true)) (?v_2042 (= tmp152 4)) (?v_2044 (and ?v_229 true)) (?v_2046 (and x324 true)) (?v_2045 (= tmp150 4)) (?v_2047 (and ?v_1285 true)) (?v_2048 (and x291 true)) (?v_2049 (and ?v_165 true)) (?v_2051 (and x326 true)) (?v_2050 (= tmp148 4)) (?v_2052 (and ?v_1349 true)) (?v_2053 (and x289 true)) (?v_2054 (and ?v_101 true)) (?v_2056 (and x328 true)) (?v_2055 (= tmp146 4)) (?v_2057 (and ?v_1413 true)) (?v_2059 (and x287 true)) (?v_2058 (= tmp145 4)) (?v_2060 (and ?v_37 true)) (?v_2062 (and x330 true)) (?v_2061 (= tmp144 4)) (?v_2063 (and ?v_1477 true)) (?v_2065 (and x285 true)) (?v_2064 (= tmp143 4)) (?v_2067 (= tmp142 2)) (?v_2069 (= tmp141 1)) (?v_2071 (= tmp140 4)) (?v_2072 (= tmp139 2)) (?v_2074 (= tmp138 4)) (?v_2076 (= tmp137 2)) (?v_2078 (= tmp136 4)) (?v_2080 (= tmp135 2)) (?v_2082 (= tmp134 4)) (?v_2083 (= tmp133 2)) (?v_2085 (= tmp132 4)) (?v_2087 (= tmp131 1)) (?v_2089 (= tmp130 2)) (?v_2091 (= tmp129 1)) (?v_2094 (= tmp127 1)) (?v_2096 (= tmp126 4)) (?v_2099 (= tmp124 6)) (?v_2101 (= tmp123 2)) (?v_2103 (= tmp122 6)) (?v_2105 (= tmp121 2)) (?v_2106 (and ?v_749 true)) (?v_2107 (and x216 true)) (?v_2109 (and ?v_781 true)) (?v_2111 (and x215 true)) (?v_2110 (= tmp119 2)) (?v_2112 (and ?v_685 true)) (?v_2113 (and x218 true)) (?v_2114 (and ?v_845 true)) (?v_2116 (and x213 true)) (?v_2115 (= tmp117 4)) (?v_2117 (and ?v_621 true)) (?v_2119 (and x220 true)) (?v_2118 (= tmp116 2)) (?v_2120 (and ?v_909 true)) (?v_2121 (and x211 true)) (?v_2122 (and ?v_557 true)) (?v_2124 (and x222 true)) (?v_2123 (= tmp114 2)) (?v_2126 (and ?v_973 true)) (?v_2128 (and x209 true)) (?v_2127 (= tmp113 6)) (?v_2129 (and ?v_493 true)) (?v_2131 (and x224 true)) (?v_2130 (= tmp112 2)) (?v_2132 (and ?v_1037 true)) (?v_2134 (and x207 true)) (?v_2133 (= tmp111 6)) (?v_2135 (and ?v_429 true)) (?v_2137 (and x226 true)) (?v_2136 (= tmp110 2)) (?v_2138 (and ?v_1101 true)) (?v_2140 (and x205 true)) (?v_2139 (= tmp109 6)) (?v_2141 (and ?v_365 true)) (?v_2143 (and x228 true)) (?v_2142 (= tmp108 2)) (?v_2144 (and ?v_1165 true)) (?v_2146 (and x203 true)) (?v_2145 (= tmp107 6)) (?v_2147 (and ?v_301 true)) (?v_2149 (and x230 true)) (?v_2148 (= tmp106 2)) (?v_2150 (and ?v_1229 true)) (?v_2152 (and x201 true)) (?v_2151 (= tmp105 4)) (?v_2153 (and ?v_237 true)) (?v_2155 (and x232 true)) (?v_2154 (= tmp104 2)) (?v_2156 (and ?v_1293 true)) (?v_2158 (and x199 true)) (?v_2157 (= tmp103 4)) (?v_2159 (and ?v_173 true)) (?v_2161 (and x234 true)) (?v_2160 (= tmp102 2)) (?v_2162 (and ?v_1357 true)) (?v_2164 (and x197 true)) (?v_2163 (= tmp101 4)) (?v_2165 (and ?v_109 true)) (?v_2167 (and x236 true)) (?v_2166 (= tmp100 2)) (?v_2168 (and ?v_1421 true)) (?v_2170 (and x195 true)) (?v_2169 (= tmp99 6)) (?v_2171 (and ?v_45 true)) (?v_2173 (and x238 true)) (?v_2172 (= tmp98 2)) (?v_2174 (and ?v_1485 true)) (?v_2176 (and x193 true)) (?v_2175 (= tmp97 6)) (?v_2178 (= tmp96 4)) (?v_2179 (= tmp95 4)) (?v_2182 (= tmp93 6)) (?v_2184 (= tmp92 4)) (?v_2186 (= tmp91 6)) (?v_2188 (= tmp90 2)) (?v_2189 (= tmp89 6)) (?v_2192 (= tmp87 6)) (?v_2194 (= tmp86 6)) (?v_2197 (= tmp84 6)) (?v_2199 (= tmp83 4)) (?v_2201 (= tmp82 4)) (?v_2203 (= tmp81 4)) (?v_2205 (= tmp80 6)) (?v_2208 (= tmp78 6)) (?v_2212 (= tmp75 4)) (?v_2214 (= tmp74 2)) (?v_2216 (= tmp73 4)) (?v_2217 (and ?v_757 true)) (?v_2218 (and x120 true)) (?v_2219 (and ?v_693 true)) (?v_2220 (and x122 true)) (?v_2221 (and ?v_853 true)) (?v_2222 (and x118 true)) (?v_2223 (and ?v_629 true)) (?v_2225 (and x124 true)) (?v_2224 (= tmp68 6)) (?v_2226 (and ?v_917 true)) (?v_2227 (and x116 true)) (?v_2228 (and ?v_565 true)) (?v_2230 (and x126 true)) (?v_2229 (= tmp66 4)) (?v_2232 (and ?v_981 true)) (?v_2234 (and x114 true)) (?v_2233 (= tmp65 4)) (?v_2235 (and ?v_501 true)) (?v_2237 (and x128 true)) (?v_2236 (= tmp64 2)) (?v_2238 (and ?v_1045 true)) (?v_2240 (and x112 true)) (?v_2239 (= tmp63 4)) (?v_2241 (and ?v_437 true)) (?v_2242 (and x130 true)) (?v_2243 (and ?v_1109 true)) (?v_2245 (and x110 true)) (?v_2244 (= tmp61 4)) (?v_2246 (and ?v_373 true)) (?v_2247 (and x132 true)) (?v_2248 (and ?v_1173 true)) (?v_2249 (and x108 true)) (?v_2250 (and ?v_309 true)) (?v_2251 (and x134 true)) (?v_2252 (and ?v_1237 true)) (?v_2254 (and x106 true)) (?v_2253 (= tmp57 6)) (?v_2255 (and ?v_245 true)) (?v_2257 (and x136 true)) (?v_2256 (= tmp56 4)) (?v_2258 (and ?v_1301 true)) (?v_2260 (and x104 true)) (?v_2259 (= tmp55 6)) (?v_2261 (and ?v_181 true)) (?v_2262 (and x138 true)) (?v_2263 (and ?v_1365 true)) (?v_2265 (and x102 true)) (?v_2264 (= tmp53 6)) (?v_2266 (and ?v_117 true)) (?v_2267 (and x140 true)) (?v_2268 (and ?v_1429 true)) (?v_2270 (and x100 true)) (?v_2269 (= tmp51 4)) (?v_2271 (and ?v_53 true)) (?v_2273 (and x142 true)) (?v_2272 (= tmp50 6)) (?v_2274 (and ?v_1493 true)) (?v_2275 (and x98 true)) (?v_2279 (= tmp46 2)) (?v_2281 (= tmp45 4)) (?v_2283 (= tmp44 4)) (?v_2285 (= tmp43 4)) (?v_2290 (= tmp38 4)) (?v_2292 (= tmp37 2)) (?v_2294 (= tmp36 4)) (?v_2296 (= tmp35 4)) (?v_2298 (= tmp34 4)) (?v_2301 (= tmp32 4)) (?v_2303 (= tmp31 4)) (?v_2306 (= tmp29 4)) (?v_2310 (= tmp26 4)) (?v_2312 (= tmp25 2)) (?v_2313 (and ?v_765 true)) (?v_2314 (and x25 true)) (?v_2315 (and ?v_701 true)) (?v_2317 (and x27 true)) (?v_2316 (= tmp22 4)) (?v_2318 (and ?v_829 true)) (?v_2320 (and x23 true)) (?v_2319 (= tmp21 2)) (?v_2321 (and ?v_637 true)) (?v_2322 (and x29 true)) (?v_2323 (and ?v_893 true)) (?v_2325 (and x21 true)) (?v_2324 (= tmp19 2)) (?v_2326 (and ?v_573 true)) (?v_2328 (and x31 true)) (?v_2327 (= tmp18 2)) (?v_2329 (and ?v_957 true)) (?v_2330 (and x19 true)) (?v_2331 (and ?v_509 true)) (?v_2333 (and x33 true)) (?v_2332 (= tmp16 4)) (?v_2334 (and ?v_1053 true)) (?v_2335 (and x17 true)) (?v_2336 (and ?v_445 true)) (?v_2338 (and x35 true)) (?v_2337 (= tmp14 6)) (?v_2339 (and ?v_1117 true)) (?v_2341 (and x15 true)) (?v_2340 (= tmp13 2)) (?v_2342 (and ?v_381 true)) (?v_2344 (and x37 true)) (?v_2343 (= tmp12 6)) (?v_2345 (and ?v_1181 true)) (?v_2347 (and x13 true)) (?v_2346 (= tmp11 2)) (?v_2348 (and ?v_317 true)) (?v_2349 (and x39 true)) (?v_2350 (and ?v_1245 true)) (?v_2352 (and x11 true)) (?v_2351 (= tmp9 2)) (?v_2353 (and ?v_253 true)) (?v_2355 (and x41 true)) (?v_2354 (= tmp8 6)) (?v_2356 (and ?v_1309 true)) (?v_2357 (and x9 true)) (?v_2358 (and ?v_189 true)) (?v_2359 (and x43 true)) (?v_2360 (and ?v_1373 true)) (?v_2362 (and x7 true)) (?v_2361 (= tmp5 4)) (?v_2363 (and ?v_125 true)) (?v_2365 (and x45 true)) (?v_2364 (= tmp4 4)) (?v_2366 (and ?v_1437 true)) (?v_2368 (and x5 true)) (?v_2367 (= tmp3 4)) (?v_2369 (and ?v_61 true)) (?v_2371 (and x47 true)) (?v_2370 (= tmp2 4)) (?v_2372 (and ?v_1501 true)) (?v_2374 (and x3 true)) (?v_2373 (= tmp1 4)) (?v_0 (* (- 1) x1))) (and (<= (+ 0 ?v_0) (- 27)) (= (+ (+ (* 1 tmp766) 0) (+ (* 1 tmp764) (+ (* 1 tmp762) (+ (* 1 tmp760) (+ (* 1 tmp759) (+ (* 1 tmp761) (+ (* 1 tmp763) (+ (* 1 tmp765) 0)))))))) 1) (= (+ (+ (* 1 tmp758) 0) (+ (* 1 tmp756) (+ (* 1 tmp754) (+ (* 1 tmp752) (+ (* 1 tmp751) (+ (* 1 tmp753) (+ (* 1 tmp755) (+ (* 1 tmp757) 0)))))))) 1) (= (+ (+ (* 1 tmp750) 0) (+ (* 1 tmp748) (+ (* 1 tmp746) (+ (* 1 tmp744) (+ (* 1 tmp743) (+ (* 1 tmp745) (+ (* 1 tmp747) (+ (* 1 tmp749) 0)))))))) 1) (= (+ (+ (* 1 tmp742) 0) (+ (* 1 tmp740) (+ (* 1 tmp738) (+ (* 1 tmp736) (+ (* 1 tmp735) (+ (* 1 tmp737) (+ (* 1 tmp739) (+ (* 1 tmp741) 0)))))))) 1) (= (+ (+ (* 1 tmp734) 0) (+ (* 1 tmp732) (+ (* 1 tmp730) (+ (* 1 tmp728) (+ (* 1 tmp727) (+ (* 1 tmp729) (+ (* 1 tmp731) (+ (* 1 tmp733) 0)))))))) 1) (= (+ (+ (* 1 tmp726) 0) (+ (* 1 tmp724) (+ (* 1 tmp722) (+ (* 1 tmp720) (+ (* 1 tmp719) (+ (* 1 tmp721) (+ (* 1 tmp723) (+ (* 1 tmp725) 0)))))))) 1) (= (+ (+ (* 1 tmp718) 0) (+ (* 1 tmp716) (+ (* 1 tmp714) (+ (* 1 tmp712) (+ (* 1 tmp711) (+ (* 1 tmp713) (+ (* 1 tmp715) (+ (* 1 tmp717) 0)))))))) 1) (= (+ (+ (* 1 tmp710) 0) (+ (* 1 tmp708) (+ (* 1 tmp706) (+ (* 1 tmp704) (+ (* 1 tmp703) (+ (* 1 tmp705) (+ (* 1 tmp707) (+ (* 1 tmp709) 0)))))))) 1) (= (+ (+ (* 1 tmp702) 0) (+ (* 1 tmp700) (+ (* 1 tmp698) (+ (* 1 tmp696) (+ (* 1 tmp695) (+ (* 1 tmp697) (+ (* 1 tmp699) (+ (* 1 tmp701) 0)))))))) 1) (= (+ (+ (* 1 tmp694) 0) (+ (* 1 tmp692) (+ (* 1 tmp690) (+ (* 1 tmp688) (+ (* 1 tmp687) (+ (* 1 tmp689) (+ (* 1 tmp691) (+ (* 1 tmp693) 0)))))))) 1) (= (+ (+ (* 1 tmp686) 0) (+ (* 1 tmp684) (+ (* 1 tmp682) (+ (* 1 tmp680) (+ (* 1 tmp679) (+ (* 1 tmp681) (+ (* 1 tmp683) (+ (* 1 tmp685) 0)))))))) 1) (= (+ (+ (* 1 tmp678) 0) (+ (* 1 tmp676) (+ (* 1 tmp674) (+ (* 1 tmp672) (+ (* 1 tmp671) (+ (* 1 tmp673) (+ (* 1 tmp675) (+ (* 1 tmp677) 0)))))))) 1) (= (+ (+ (* 1 tmp670) 0) (+ (* 1 tmp668) (+ (* 1 tmp666) (+ (* 1 tmp664) (+ (* 1 tmp663) (+ (* 1 tmp665) (+ (* 1 tmp667) (+ (* 1 tmp669) 0)))))))) 1) (= (+ (+ (* 1 tmp662) 0) (+ (* 1 tmp660) (+ (* 1 tmp658) (+ (* 1 tmp656) (+ (* 1 tmp655) (+ (* 1 tmp657) (+ (* 1 tmp659) (+ (* 1 tmp661) 0)))))))) 1) (= (+ (+ (* 1 tmp654) 0) (+ (* 1 tmp652) (+ (* 1 tmp650) (+ (* 1 tmp648) (+ (* 1 tmp647) (+ (* 1 tmp649) (+ (* 1 tmp651) (+ (* 1 tmp653) 0)))))))) 1) (= (+ (+ (* 1 tmp646) 0) (+ (* 1 tmp644) (+ (* 1 tmp642) (+ (* 1 tmp640) (+ (* 1 tmp639) (+ (* 1 tmp641) (+ (* 1 tmp643) (+ (* 1 tmp645) 0)))))))) 1) (= (+ (+ (* 1 tmp638) 0) (+ (* 1 tmp636) (+ (* 1 tmp634) (+ (* 1 tmp632) (+ (* 1 tmp631) (+ (* 1 tmp633) (+ (* 1 tmp635) (+ (* 1 tmp637) 0)))))))) 1) (= (+ (+ (* 1 tmp630) 0) (+ (* 1 tmp628) (+ (* 1 tmp626) (+ (* 1 tmp624) (+ (* 1 tmp623) (+ (* 1 tmp625) (+ (* 1 tmp627) (+ (* 1 tmp629) 0)))))))) 1) (= (+ (+ (* 1 tmp622) 0) (+ (* 1 tmp620) (+ (* 1 tmp618) (+ (* 1 tmp616) (+ (* 1 tmp615) (+ (* 1 tmp617) (+ (* 1 tmp619) (+ (* 1 tmp621) 0)))))))) 1) (= (+ (+ (* 1 tmp614) 0) (+ (* 1 tmp612) (+ (* 1 tmp610) (+ (* 1 tmp608) (+ (* 1 tmp607) (+ (* 1 tmp609) (+ (* 1 tmp611) (+ (* 1 tmp613) 0)))))))) 1) (= (+ (+ (* 1 tmp606) 0) (+ (* 1 tmp604) (+ (* 1 tmp602) (+ (* 1 tmp600) (+ (* 1 tmp599) (+ (* 1 tmp601) (+ (* 1 tmp603) (+ (* 1 tmp605) 0)))))))) 1) (= (+ (+ (* 1 tmp598) 0) (+ (* 1 tmp596) (+ (* 1 tmp594) (+ (* 1 tmp592) (+ (* 1 tmp591) (+ (* 1 tmp593) (+ (* 1 tmp595) (+ (* 1 tmp597) 0)))))))) 1) (= (+ (+ (* 1 tmp590) 0) (+ (* 1 tmp588) (+ (* 1 tmp586) (+ (* 1 tmp584) (+ (* 1 tmp583) (+ (* 1 tmp585) (+ (* 1 tmp587) (+ (* 1 tmp589) 0)))))))) 1) (= (+ (+ (* 1 tmp582) 0) (+ (* 1 tmp580) (+ (* 1 tmp578) (+ (* 1 tmp576) (+ (* 1 tmp575) (+ (* 1 tmp577) (+ (* 1 tmp579) (+ (* 1 tmp581) 0)))))))) 1) (= (+ (+ (* 1 tmp574) 0) (+ (* 1 tmp572) (+ (* 1 tmp570) (+ (* 1 tmp568) (+ (* 1 tmp567) (+ (* 1 tmp569) (+ (* 1 tmp571) (+ (* 1 tmp573) 0)))))))) 1) (= (+ (+ (* 1 tmp566) 0) (+ (* 1 tmp564) (+ (* 1 tmp562) (+ (* 1 tmp560) (+ (* 1 tmp559) (+ (* 1 tmp561) (+ (* 1 tmp563) (+ (* 1 tmp565) 0)))))))) 1) (= (+ (+ (* 1 tmp558) 0) (+ (* 1 tmp556) (+ (* 1 tmp554) (+ (* 1 tmp552) (+ (* 1 tmp551) (+ (* 1 tmp553) (+ (* 1 tmp555) (+ (* 1 tmp557) 0)))))))) 1) (= (+ (+ (* 1 tmp550) 0) (+ (* 1 tmp548) (+ (* 1 tmp546) (+ (* 1 tmp544) (+ (* 1 tmp543) (+ (* 1 tmp545) (+ (* 1 tmp547) (+ (* 1 tmp549) 0)))))))) 1) (= (+ (+ (* 1 tmp542) 0) (+ (* 1 tmp540) (+ (* 1 tmp538) (+ (* 1 tmp536) (+ (* 1 tmp535) (+ (* 1 tmp537) (+ (* 1 tmp539) (+ (* 1 tmp541) 0)))))))) 1) (= (+ (+ (* 1 tmp534) 0) (+ (* 1 tmp532) (+ (* 1 tmp530) (+ (* 1 tmp528) (+ (* 1 tmp527) (+ (* 1 tmp529) (+ (* 1 tmp531) (+ (* 1 tmp533) 0)))))))) 1) (= (+ (+ (* 1 tmp526) 0) (+ (* 1 tmp524) (+ (* 1 tmp522) (+ (* 1 tmp520) (+ (* 1 tmp519) (+ (* 1 tmp521) (+ (* 1 tmp523) (+ (* 1 tmp525) 0)))))))) 1) (= (+ (+ (* 1 tmp518) 0) (+ (* 1 tmp516) (+ (* 1 tmp514) (+ (* 1 tmp512) (+ (* 1 tmp511) (+ (* 1 tmp513) (+ (* 1 tmp515) (+ (* 1 tmp517) 0)))))))) 1) (= (+ (+ (* 1 tmp510) 0) (+ (* 1 tmp508) (+ (* 1 tmp506) (+ (* 1 tmp504) (+ (* 1 tmp503) (+ (* 1 tmp505) (+ (* 1 tmp507) (+ (* 1 tmp509) 0)))))))) 1) (= (+ (+ (* 1 tmp502) 0) (+ (* 1 tmp500) (+ (* 1 tmp498) (+ (* 1 tmp496) (+ (* 1 tmp495) (+ (* 1 tmp497) (+ (* 1 tmp499) (+ (* 1 tmp501) 0)))))))) 1) (= (+ (+ (* 1 tmp494) 0) (+ (* 1 tmp492) (+ (* 1 tmp490) (+ (* 1 tmp488) (+ (* 1 tmp487) (+ (* 1 tmp489) (+ (* 1 tmp491) (+ (* 1 tmp493) 0)))))))) 1) (= (+ (+ (* 1 tmp486) 0) (+ (* 1 tmp484) (+ (* 1 tmp482) (+ (* 1 tmp480) (+ (* 1 tmp479) (+ (* 1 tmp481) (+ (* 1 tmp483) (+ (* 1 tmp485) 0)))))))) 1) (= (+ (+ (* 1 tmp478) 0) (+ (* 1 tmp476) (+ (* 1 tmp474) (+ (* 1 tmp472) (+ (* 1 tmp471) (+ (* 1 tmp473) (+ (* 1 tmp475) (+ (* 1 tmp477) 0)))))))) 1) (= (+ (+ (* 1 tmp470) 0) (+ (* 1 tmp468) (+ (* 1 tmp466) (+ (* 1 tmp464) (+ (* 1 tmp463) (+ (* 1 tmp465) (+ (* 1 tmp467) (+ (* 1 tmp469) 0)))))))) 1) (= (+ (+ (* 1 tmp462) 0) (+ (* 1 tmp460) (+ (* 1 tmp458) (+ (* 1 tmp456) (+ (* 1 tmp455) (+ (* 1 tmp457) (+ (* 1 tmp459) (+ (* 1 tmp461) 0)))))))) 1) (= (+ (+ (* 1 tmp454) 0) (+ (* 1 tmp452) (+ (* 1 tmp450) (+ (* 1 tmp448) (+ (* 1 tmp447) (+ (* 1 tmp449) (+ (* 1 tmp451) (+ (* 1 tmp453) 0)))))))) 1) (= (+ (+ (* 1 tmp446) 0) (+ (* 1 tmp444) (+ (* 1 tmp442) (+ (* 1 tmp440) (+ (* 1 tmp439) (+ (* 1 tmp441) (+ (* 1 tmp443) (+ (* 1 tmp445) 0)))))))) 1) (= (+ (+ (* 1 tmp438) 0) (+ (* 1 tmp436) (+ (* 1 tmp434) (+ (* 1 tmp432) (+ (* 1 tmp431) (+ (* 1 tmp433) (+ (* 1 tmp435) (+ (* 1 tmp437) 0)))))))) 1) (= (+ (+ (* 1 tmp430) 0) (+ (* 1 tmp428) (+ (* 1 tmp426) (+ (* 1 tmp424) (+ (* 1 tmp423) (+ (* 1 tmp425) (+ (* 1 tmp427) (+ (* 1 tmp429) 0)))))))) 1) (= (+ (+ (* 1 tmp422) 0) (+ (* 1 tmp420) (+ (* 1 tmp418) (+ (* 1 tmp416) (+ (* 1 tmp415) (+ (* 1 tmp417) (+ (* 1 tmp419) (+ (* 1 tmp421) 0)))))))) 1) (= (+ (+ (* 1 tmp414) 0) (+ (* 1 tmp412) (+ (* 1 tmp410) (+ (* 1 tmp408) (+ (* 1 tmp407) (+ (* 1 tmp409) (+ (* 1 tmp411) (+ (* 1 tmp413) 0)))))))) 1) (= (+ (+ (* 1 tmp406) 0) (+ (* 1 tmp404) (+ (* 1 tmp402) (+ (* 1 tmp400) (+ (* 1 tmp399) (+ (* 1 tmp401) (+ (* 1 tmp403) (+ (* 1 tmp405) 0)))))))) 1) (= (+ (+ (* 1 tmp398) 0) (+ (* 1 tmp396) (+ (* 1 tmp394) (+ (* 1 tmp392) (+ (* 1 tmp391) (+ (* 1 tmp393) (+ (* 1 tmp395) (+ (* 1 tmp397) 0)))))))) 1) (= (+ (+ (* 1 tmp390) 0) (+ (* 1 tmp388) (+ (* 1 tmp386) (+ (* 1 tmp384) (+ (* 1 tmp383) (+ (* 1 tmp385) (+ (* 1 tmp387) (+ (* 1 tmp389) 0)))))))) 1) (>= (+ (+ (* 1 tmp382) 0) (+ (* 1 tmp380) (+ (* 1 tmp378) (+ (* 1 tmp376) (+ (* 1 tmp374) (+ (* 1 tmp372) (+ (* 1 tmp370) (+ (* 1 tmp368) (+ (* 1 tmp366) (+ (* 1 tmp364) (+ (* 1 tmp362) (+ (* 1 tmp360) (+ ?v_0 (+ (* 1 tmp359) (+ (* 1 tmp361) (+ (* 1 tmp363) (+ (* 1 tmp365) (+ (* 1 tmp367) (+ (* 1 tmp369) (+ (* 1 tmp371) (+ (* 1 tmp373) (+ (* 1 tmp375) (+ (* 1 tmp377) (+ (* 1 tmp379) (+ (* 1 tmp381) 0))))))))))))))))))))))))) 0) (>= (+ (+ (* 1 tmp358) 0) (+ (* 1 tmp356) (+ (* 1 tmp354) (+ (* 1 tmp352) (+ (* 1 tmp350) (+ (* 1 tmp348) (+ (* 1 tmp346) (+ (* 1 tmp344) (+ (* 1 tmp342) (+ (* 1 tmp340) (+ (* 1 tmp338) (+ (* 1 tmp336) (+ ?v_0 (+ (* 1 tmp335) (+ (* 1 tmp337) (+ (* 1 tmp339) (+ (* 1 tmp341) (+ (* 1 tmp343) (+ (* 1 tmp345) (+ (* 1 tmp347) (+ (* 1 tmp349) (+ (* 1 tmp351) (+ (* 1 tmp353) (+ (* 1 tmp355) (+ (* 1 tmp357) 0))))))))))))))))))))))))) 0) (>= (+ (+ (* 1 tmp334) 0) (+ (* 1 tmp332) (+ (* 1 tmp330) (+ (* 1 tmp328) (+ (* 1 tmp326) (+ (* 1 tmp324) (+ (* 1 tmp322) (+ (* 1 tmp320) (+ (* 1 tmp318) (+ (* 1 tmp316) (+ (* 1 tmp314) (+ (* 1 tmp312) (+ ?v_0 (+ (* 1 tmp311) (+ (* 1 tmp313) (+ (* 1 tmp315) (+ (* 1 tmp317) (+ (* 1 tmp319) (+ (* 1 tmp321) (+ (* 1 tmp323) (+ (* 1 tmp325) (+ (* 1 tmp327) (+ (* 1 tmp329) (+ (* 1 tmp331) (+ (* 1 tmp333) 0))))))))))))))))))))))))) 0) (>= (+ (+ (* 1 tmp310) 0) (+ (* 1 tmp308) (+ (* 1 tmp306) (+ (* 1 tmp304) (+ (* 1 tmp302) (+ (* 1 tmp300) (+ (* 1 tmp298) (+ (* 1 tmp296) (+ (* 1 tmp294) (+ (* 1 tmp292) (+ (* 1 tmp290) (+ (* 1 tmp288) (+ ?v_0 (+ (* 1 tmp287) (+ (* 1 tmp289) (+ (* 1 tmp291) (+ (* 1 tmp293) (+ (* 1 tmp295) (+ (* 1 tmp297) (+ (* 1 tmp299) (+ (* 1 tmp301) (+ (* 1 tmp303) (+ (* 1 tmp305) (+ (* 1 tmp307) (+ (* 1 tmp309) 0))))))))))))))))))))))))) 0) (>= (+ (+ (* 1 tmp286) 0) (+ (* 1 tmp284) (+ (* 1 tmp282) (+ (* 1 tmp280) (+ (* 1 tmp278) (+ (* 1 tmp276) (+ (* 1 tmp274) (+ (* 1 tmp272) (+ (* 1 tmp270) (+ (* 1 tmp268) (+ (* 1 tmp266) (+ (* 1 tmp264) (+ ?v_0 (+ (* 1 tmp263) (+ (* 1 tmp265) (+ (* 1 tmp267) (+ (* 1 tmp269) (+ (* 1 tmp271) (+ (* 1 tmp273) (+ (* 1 tmp275) (+ (* 1 tmp277) (+ (* 1 tmp279) (+ (* 1 tmp281) (+ (* 1 tmp283) (+ (* 1 tmp285) 0))))))))))))))))))))))))) 0) (>= (+ (+ (* 1 tmp262) 0) (+ (* 1 tmp260) (+ (* 1 tmp258) (+ (* 1 tmp256) (+ (* 1 tmp254) (+ (* 1 tmp252) (+ (* 1 tmp250) (+ (* 1 tmp248) (+ (* 1 tmp246) (+ (* 1 tmp244) (+ (* 1 tmp242) (+ (* 1 tmp240) (+ ?v_0 (+ (* 1 tmp239) (+ (* 1 tmp241) (+ (* 1 tmp243) (+ (* 1 tmp245) (+ (* 1 tmp247) (+ (* 1 tmp249) (+ (* 1 tmp251) (+ (* 1 tmp253) (+ (* 1 tmp255) (+ (* 1 tmp257) (+ (* 1 tmp259) (+ (* 1 tmp261) 0))))))))))))))))))))))))) 0) (>= (+ (+ (* 1 tmp238) 0) (+ (* 1 tmp236) (+ (* 1 tmp234) (+ (* 1 tmp232) (+ (* 1 tmp230) (+ (* 1 tmp228) (+ (* 1 tmp226) (+ (* 1 tmp224) (+ (* 1 tmp222) (+ (* 1 tmp220) (+ (* 1 tmp218) (+ (* 1 tmp216) (+ ?v_0 (+ (* 1 tmp215) (+ (* 1 tmp217) (+ (* 1 tmp219) (+ (* 1 tmp221) (+ (* 1 tmp223) (+ (* 1 tmp225) (+ (* 1 tmp227) (+ (* 1 tmp229) (+ (* 1 tmp231) (+ (* 1 tmp233) (+ (* 1 tmp235) (+ (* 1 tmp237) 0))))))))))))))))))))))))) 0) (>= (+ (+ (* 1 tmp214) 0) (+ (* 1 tmp212) (+ (* 1 tmp210) (+ (* 1 tmp208) (+ (* 1 tmp206) (+ (* 1 tmp204) (+ (* 1 tmp202) (+ (* 1 tmp200) (+ (* 1 tmp198) (+ (* 1 tmp196) (+ (* 1 tmp194) (+ (* 1 tmp192) (+ ?v_0 (+ (* 1 tmp191) (+ (* 1 tmp193) (+ (* 1 tmp195) (+ (* 1 tmp197) (+ (* 1 tmp199) (+ (* 1 tmp201) (+ (* 1 tmp203) (+ (* 1 tmp205) (+ (* 1 tmp207) (+ (* 1 tmp209) (+ (* 1 tmp211) (+ (* 1 tmp213) 0))))))))))))))))))))))))) 0) (>= (+ (+ (* 1 tmp190) 0) (+ (* 1 tmp188) (+ (* 1 tmp186) (+ (* 1 tmp184) (+ (* 1 tmp182) (+ (* 1 tmp180) (+ (* 1 tmp178) (+ (* 1 tmp176) (+ (* 1 tmp174) (+ (* 1 tmp172) (+ (* 1 tmp170) (+ (* 1 tmp168) (+ ?v_0 (+ (* 1 tmp167) (+ (* 1 tmp169) (+ (* 1 tmp171) (+ (* 1 tmp173) (+ (* 1 tmp175) (+ (* 1 tmp177) (+ (* 1 tmp179) (+ (* 1 tmp181) (+ (* 1 tmp183) (+ (* 1 tmp185) (+ (* 1 tmp187) (+ (* 1 tmp189) 0))))))))))))))))))))))))) 0) (>= (+ (+ (* 1 tmp166) 0) (+ (* 1 tmp164) (+ (* 1 tmp162) (+ (* 1 tmp160) (+ (* 1 tmp158) (+ (* 1 tmp156) (+ (* 1 tmp154) (+ (* 1 tmp152) (+ (* 1 tmp150) (+ (* 1 tmp148) (+ (* 1 tmp146) (+ (* 1 tmp144) (+ ?v_0 (+ (* 1 tmp143) (+ (* 1 tmp145) (+ (* 1 tmp147) (+ (* 1 tmp149) (+ (* 1 tmp151) (+ (* 1 tmp153) (+ (* 1 tmp155) (+ (* 1 tmp157) (+ (* 1 tmp159) (+ (* 1 tmp161) (+ (* 1 tmp163) (+ (* 1 tmp165) 0))))))))))))))))))))))))) 0) (>= (+ (+ (* 1 tmp142) 0) (+ (* 1 tmp140) (+ (* 1 tmp138) (+ (* 1 tmp136) (+ (* 1 tmp134) (+ (* 1 tmp132) (+ (* 1 tmp130) (+ (* 1 tmp128) (+ (* 1 tmp126) (+ (* 1 tmp124) (+ (* 1 tmp122) (+ ?v_0 (+ (* 1 tmp121) (+ (* 1 tmp123) (+ (* 1 tmp125) (+ (* 1 tmp127) (+ (* 1 tmp129) (+ (* 1 tmp131) (+ (* 1 tmp133) (+ (* 1 tmp135) (+ (* 1 tmp137) (+ (* 1 tmp139) (+ (* 1 tmp141) 0))))))))))))))))))))))) 0) (>= (+ (+ (* 1 tmp120) 0) (+ (* 1 tmp118) (+ (* 1 tmp116) (+ (* 1 tmp114) (+ (* 1 tmp112) (+ (* 1 tmp110) (+ (* 1 tmp108) (+ (* 1 tmp106) (+ (* 1 tmp104) (+ (* 1 tmp102) (+ (* 1 tmp100) (+ (* 1 tmp98) (+ ?v_0 (+ (* 1 tmp97) (+ (* 1 tmp99) (+ (* 1 tmp101) (+ (* 1 tmp103) (+ (* 1 tmp105) (+ (* 1 tmp107) (+ (* 1 tmp109) (+ (* 1 tmp111) (+ (* 1 tmp113) (+ (* 1 tmp115) (+ (* 1 tmp117) (+ (* 1 tmp119) 0))))))))))))))))))))))))) 0) (>= (+ (+ (* 1 tmp96) 0) (+ (* 1 tmp94) (+ (* 1 tmp92) (+ (* 1 tmp90) (+ (* 1 tmp88) (+ (* 1 tmp86) (+ (* 1 tmp84) (+ (* 1 tmp82) (+ (* 1 tmp80) (+ (* 1 tmp78) (+ (* 1 tmp76) (+ (* 1 tmp74) (+ ?v_0 (+ (* 1 tmp73) (+ (* 1 tmp75) (+ (* 1 tmp77) (+ (* 1 tmp79) (+ (* 1 tmp81) (+ (* 1 tmp83) (+ (* 1 tmp85) (+ (* 1 tmp87) (+ (* 1 tmp89) (+ (* 1 tmp91) (+ (* 1 tmp93) (+ (* 1 tmp95) 0))))))))))))))))))))))))) 0) (>= (+ (+ (* 1 tmp72) 0) (+ (* 1 tmp70) (+ (* 1 tmp68) (+ (* 1 tmp66) (+ (* 1 tmp64) (+ (* 1 tmp62) (+ (* 1 tmp60) (+ (* 1 tmp58) (+ (* 1 tmp56) (+ (* 1 tmp54) (+ (* 1 tmp52) (+ (* 1 tmp50) (+ ?v_0 (+ (* 1 tmp49) (+ (* 1 tmp51) (+ (* 1 tmp53) (+ (* 1 tmp55) (+ (* 1 tmp57) (+ (* 1 tmp59) (+ (* 1 tmp61) (+ (* 1 tmp63) (+ (* 1 tmp65) (+ (* 1 tmp67) (+ (* 1 tmp69) (+ (* 1 tmp71) 0))))))))))))))))))))))))) 0) (>= (+ (+ (* 1 tmp48) 0) (+ (* 1 tmp46) (+ (* 1 tmp44) (+ (* 1 tmp42) (+ (* 1 tmp40) (+ (* 1 tmp38) (+ (* 1 tmp36) (+ (* 1 tmp34) (+ (* 1 tmp32) (+ (* 1 tmp30) (+ (* 1 tmp28) (+ (* 1 tmp26) (+ ?v_0 (+ (* 1 tmp25) (+ (* 1 tmp27) (+ (* 1 tmp29) (+ (* 1 tmp31) (+ (* 1 tmp33) (+ (* 1 tmp35) (+ (* 1 tmp37) (+ (* 1 tmp39) (+ (* 1 tmp41) (+ (* 1 tmp43) (+ (* 1 tmp45) (+ (* 1 tmp47) 0))))))))))))))))))))))))) 0) (>= (+ (+ (* 1 tmp24) 0) (+ (* 1 tmp22) (+ (* 1 tmp20) (+ (* 1 tmp18) (+ (* 1 tmp16) (+ (* 1 tmp14) (+ (* 1 tmp12) (+ (* 1 tmp10) (+ (* 1 tmp8) (+ (* 1 tmp6) (+ (* 1 tmp4) (+ (* 1 tmp2) (+ ?v_0 (+ (* 1 tmp1) (+ (* 1 tmp3) (+ (* 1 tmp5) (+ (* 1 tmp7) (+ (* 1 tmp9) (+ (* 1 tmp11) (+ (* 1 tmp13) (+ (* 1 tmp15) (+ (* 1 tmp17) (+ (* 1 tmp19) (+ (* 1 tmp21) (+ (* 1 tmp23) 0))))))))))))))))))))))))) 0) (<= x1 384) (>= x1 0) (=> (and ?v_1 ?v_2) (= tmp766 0)) (=> (and ?v_1 ?v_4) ?v_3) (=> (and x474 ?v_2) ?v_3) (=> (and x474 ?v_4) (= tmp766 2)) (=> (and ?v_5 ?v_6) (= tmp765 0)) (=> (and ?v_5 ?v_8) ?v_7) (=> (and x331 ?v_6) ?v_7) (=> (and x331 ?v_8) (= tmp765 2)) (=> (and ?v_9 ?v_10) (= tmp764 0)) (=> (and ?v_9 ?v_12) ?v_11) (=> (and x569 ?v_10) ?v_11) (=> (and x569 ?v_12) (= tmp764 2)) (=> (and ?v_13 ?v_14) (= tmp763 0)) (=> (and ?v_13 ?v_16) ?v_15) (=> (and x239 ?v_14) ?v_15) (=> (and x239 ?v_16) (= tmp763 2)) (=> (and ?v_17 ?v_18) (= tmp762 0)) (=> (and ?v_17 ?v_20) ?v_19) (=> (and x664 ?v_18) ?v_19) (=> (and x664 ?v_20) (= tmp762 2)) (=> (and ?v_21 ?v_22) (= tmp761 0)) (=> (and ?v_21 ?v_24) ?v_23) (=> (and x143 ?v_22) ?v_23) (=> (and x143 ?v_24) (= tmp761 2)) (=> (and ?v_25 ?v_26) (= tmp760 0)) (=> (and ?v_25 ?v_28) ?v_27) (=> (and x759 ?v_26) ?v_27) (=> (and x759 ?v_28) (= tmp760 2)) (=> (and ?v_29 ?v_30) (= tmp759 0)) (=> (and ?v_29 ?v_32) ?v_31) (=> (and x48 ?v_30) ?v_31) (=> (and x48 ?v_32) (= tmp759 2)) (=> (and ?v_33 ?v_34) (= tmp758 0)) (=> (and ?v_33 ?v_36) ?v_35) (=> (and x473 ?v_34) ?v_35) (=> (and x473 ?v_36) (= tmp758 2)) (=> (and ?v_37 ?v_38) (= tmp757 0)) (=> (and ?v_37 ?v_40) ?v_39) (=> (and x330 ?v_38) ?v_39) (=> (and x330 ?v_40) (= tmp757 2)) (=> (and ?v_41 ?v_42) (= tmp756 0)) (=> (and ?v_41 ?v_44) ?v_43) (=> (and x568 ?v_42) ?v_43) (=> (and x568 ?v_44) (= tmp756 2)) (=> (and ?v_45 ?v_46) (= tmp755 0)) (=> (and ?v_45 ?v_48) ?v_47) (=> (and x238 ?v_46) ?v_47) (=> (and x238 ?v_48) (= tmp755 2)) (=> (and ?v_49 ?v_50) (= tmp754 0)) (=> (and ?v_49 ?v_52) ?v_51) (=> (and x663 ?v_50) ?v_51) (=> (and x663 ?v_52) (= tmp754 2)) (=> (and ?v_53 ?v_54) (= tmp753 0)) (=> (and ?v_53 ?v_56) ?v_55) (=> (and x142 ?v_54) ?v_55) (=> (and x142 ?v_56) (= tmp753 2)) (=> (and ?v_57 ?v_58) (= tmp752 0)) (=> (and ?v_57 ?v_60) ?v_59) (=> (and x758 ?v_58) ?v_59) (=> (and x758 ?v_60) (= tmp752 2)) (=> (and ?v_61 ?v_62) (= tmp751 0)) (=> (and ?v_61 ?v_64) ?v_63) (=> (and x47 ?v_62) ?v_63) (=> (and x47 ?v_64) (= tmp751 2)) (=> (and ?v_65 ?v_66) (= tmp750 0)) (=> (and ?v_65 ?v_68) ?v_67) (=> (and x472 ?v_66) ?v_67) (=> (and x472 ?v_68) (= tmp750 2)) (=> (and ?v_69 ?v_70) (= tmp749 0)) (=> (and ?v_69 ?v_72) ?v_71) (=> (and x329 ?v_70) ?v_71) (=> (and x329 ?v_72) (= tmp749 2)) (=> (and ?v_73 ?v_74) (= tmp748 0)) (=> (and ?v_73 ?v_76) ?v_75) (=> (and x567 ?v_74) ?v_75) (=> (and x567 ?v_76) (= tmp748 2)) (=> (and ?v_77 ?v_78) (= tmp747 0)) (=> (and ?v_77 ?v_80) ?v_79) (=> (and x237 ?v_78) ?v_79) (=> (and x237 ?v_80) (= tmp747 2)) (=> (and ?v_81 ?v_82) (= tmp746 0)) (=> (and ?v_81 ?v_84) ?v_83) (=> (and x662 ?v_82) ?v_83) (=> (and x662 ?v_84) (= tmp746 2)) (=> (and ?v_85 ?v_86) (= tmp745 0)) (=> (and ?v_85 ?v_88) ?v_87) (=> (and x141 ?v_86) ?v_87) (=> (and x141 ?v_88) (= tmp745 2)) (=> (and ?v_89 ?v_90) (= tmp744 0)) (=> (and ?v_89 ?v_92) ?v_91) (=> (and x757 ?v_90) ?v_91) (=> (and x757 ?v_92) (= tmp744 2)) (=> (and ?v_93 ?v_94) (= tmp743 0)) (=> (and ?v_93 ?v_96) ?v_95) (=> (and x46 ?v_94) ?v_95) (=> (and x46 ?v_96) (= tmp743 2)) (=> (and ?v_97 ?v_98) (= tmp742 0)) (=> (and ?v_97 ?v_100) ?v_99) (=> (and x471 ?v_98) ?v_99) (=> (and x471 ?v_100) (= tmp742 2)) (=> (and ?v_101 ?v_102) (= tmp741 0)) (=> (and ?v_101 ?v_104) ?v_103) (=> (and x328 ?v_102) ?v_103) (=> (and x328 ?v_104) (= tmp741 2)) (=> (and ?v_105 ?v_106) (= tmp740 0)) (=> (and ?v_105 ?v_108) ?v_107) (=> (and x566 ?v_106) ?v_107) (=> (and x566 ?v_108) (= tmp740 2)) (=> (and ?v_109 ?v_110) (= tmp739 0)) (=> (and ?v_109 ?v_112) ?v_111) (=> (and x236 ?v_110) ?v_111) (=> (and x236 ?v_112) (= tmp739 2)) (=> (and ?v_113 ?v_114) (= tmp738 0)) (=> (and ?v_113 ?v_116) ?v_115) (=> (and x661 ?v_114) ?v_115) (=> (and x661 ?v_116) (= tmp738 2)) (=> (and ?v_117 ?v_118) (= tmp737 0)) (=> (and ?v_117 ?v_120) ?v_119) (=> (and x140 ?v_118) ?v_119) (=> (and x140 ?v_120) (= tmp737 2)) (=> (and ?v_121 ?v_122) (= tmp736 0)) (=> (and ?v_121 ?v_124) ?v_123) (=> (and x756 ?v_122) ?v_123) (=> (and x756 ?v_124) (= tmp736 2)) (=> (and ?v_125 ?v_126) (= tmp735 0)) (=> (and ?v_125 ?v_128) ?v_127) (=> (and x45 ?v_126) ?v_127) (=> (and x45 ?v_128) (= tmp735 2)) (=> (and ?v_129 ?v_130) (= tmp734 0)) (=> (and ?v_129 ?v_132) ?v_131) (=> (and x470 ?v_130) ?v_131) (=> (and x470 ?v_132) (= tmp734 2)) (=> (and ?v_133 ?v_134) (= tmp733 0)) (=> (and ?v_133 ?v_136) ?v_135) (=> (and x327 ?v_134) ?v_135) (=> (and x327 ?v_136) (= tmp733 2)) (=> (and ?v_137 ?v_138) (= tmp732 0)) (=> (and ?v_137 ?v_140) ?v_139) (=> (and x565 ?v_138) ?v_139) (=> (and x565 ?v_140) (= tmp732 2)) (=> (and ?v_141 ?v_142) (= tmp731 0)) (=> (and ?v_141 ?v_144) ?v_143) (=> (and x235 ?v_142) ?v_143) (=> (and x235 ?v_144) (= tmp731 2)) (=> (and ?v_145 ?v_146) (= tmp730 0)) (=> (and ?v_145 ?v_148) ?v_147) (=> (and x660 ?v_146) ?v_147) (=> (and x660 ?v_148) (= tmp730 2)) (=> (and ?v_149 ?v_150) (= tmp729 0)) (=> (and ?v_149 ?v_152) ?v_151) (=> (and x139 ?v_150) ?v_151) (=> (and x139 ?v_152) (= tmp729 2)) (=> (and ?v_153 ?v_154) (= tmp728 0)) (=> (and ?v_153 ?v_156) ?v_155) (=> (and x755 ?v_154) ?v_155) (=> (and x755 ?v_156) (= tmp728 2)) (=> (and ?v_157 ?v_158) (= tmp727 0)) (=> (and ?v_157 ?v_160) ?v_159) (=> (and x44 ?v_158) ?v_159) (=> (and x44 ?v_160) (= tmp727 2)) (=> (and ?v_161 ?v_162) (= tmp726 0)) (=> (and ?v_161 ?v_164) ?v_163) (=> (and x469 ?v_162) ?v_163) (=> (and x469 ?v_164) (= tmp726 2)) (=> (and ?v_165 ?v_166) (= tmp725 0)) (=> (and ?v_165 ?v_168) ?v_167) (=> (and x326 ?v_166) ?v_167) (=> (and x326 ?v_168) (= tmp725 2)) (=> (and ?v_169 ?v_170) (= tmp724 0)) (=> (and ?v_169 ?v_172) ?v_171) (=> (and x564 ?v_170) ?v_171) (=> (and x564 ?v_172) (= tmp724 2)) (=> (and ?v_173 ?v_174) (= tmp723 0)) (=> (and ?v_173 ?v_176) ?v_175) (=> (and x234 ?v_174) ?v_175) (=> (and x234 ?v_176) (= tmp723 2)) (=> (and ?v_177 ?v_178) (= tmp722 0)) (=> (and ?v_177 ?v_180) ?v_179) (=> (and x659 ?v_178) ?v_179) (=> (and x659 ?v_180) (= tmp722 2)) (=> (and ?v_181 ?v_182) (= tmp721 0)) (=> (and ?v_181 ?v_184) ?v_183) (=> (and x138 ?v_182) ?v_183) (=> (and x138 ?v_184) (= tmp721 2)) (=> (and ?v_185 ?v_186) (= tmp720 0)) (=> (and ?v_185 ?v_188) ?v_187) (=> (and x754 ?v_186) ?v_187) (=> (and x754 ?v_188) (= tmp720 2)) (=> (and ?v_189 ?v_190) (= tmp719 0)) (=> (and ?v_189 ?v_192) ?v_191) (=> (and x43 ?v_190) ?v_191) (=> (and x43 ?v_192) (= tmp719 2)) (=> (and ?v_193 ?v_194) (= tmp718 0)) (=> (and ?v_193 ?v_196) ?v_195) (=> (and x468 ?v_194) ?v_195) (=> (and x468 ?v_196) (= tmp718 2)) (=> (and ?v_197 ?v_198) (= tmp717 0)) (=> (and ?v_197 ?v_200) ?v_199) (=> (and x325 ?v_198) ?v_199) (=> (and x325 ?v_200) (= tmp717 2)) (=> (and ?v_201 ?v_202) (= tmp716 0)) (=> (and ?v_201 ?v_204) ?v_203) (=> (and x563 ?v_202) ?v_203) (=> (and x563 ?v_204) (= tmp716 2)) (=> (and ?v_205 ?v_206) (= tmp715 0)) (=> (and ?v_205 ?v_208) ?v_207) (=> (and x233 ?v_206) ?v_207) (=> (and x233 ?v_208) (= tmp715 2)) (=> (and ?v_209 ?v_210) (= tmp714 0)) (=> (and ?v_209 ?v_212) ?v_211) (=> (and x658 ?v_210) ?v_211) (=> (and x658 ?v_212) (= tmp714 2)) (=> (and ?v_213 ?v_214) (= tmp713 0)) (=> (and ?v_213 ?v_216) ?v_215) (=> (and x137 ?v_214) ?v_215) (=> (and x137 ?v_216) (= tmp713 2)) (=> (and ?v_217 ?v_218) (= tmp712 0)) (=> (and ?v_217 ?v_220) ?v_219) (=> (and x753 ?v_218) ?v_219) (=> (and x753 ?v_220) (= tmp712 2)) (=> (and ?v_221 ?v_222) (= tmp711 0)) (=> (and ?v_221 ?v_224) ?v_223) (=> (and x42 ?v_222) ?v_223) (=> (and x42 ?v_224) (= tmp711 2)) (=> (and ?v_225 ?v_226) (= tmp710 0)) (=> (and ?v_225 ?v_228) ?v_227) (=> (and x467 ?v_226) ?v_227) (=> (and x467 ?v_228) (= tmp710 2)) (=> (and ?v_229 ?v_230) (= tmp709 0)) (=> (and ?v_229 ?v_232) ?v_231) (=> (and x324 ?v_230) ?v_231) (=> (and x324 ?v_232) (= tmp709 2)) (=> (and ?v_233 ?v_234) (= tmp708 0)) (=> (and ?v_233 ?v_236) ?v_235) (=> (and x562 ?v_234) ?v_235) (=> (and x562 ?v_236) (= tmp708 2)) (=> (and ?v_237 ?v_238) (= tmp707 0)) (=> (and ?v_237 ?v_240) ?v_239) (=> (and x232 ?v_238) ?v_239) (=> (and x232 ?v_240) (= tmp707 2)) (=> (and ?v_241 ?v_242) (= tmp706 0)) (=> (and ?v_241 ?v_244) ?v_243) (=> (and x704 ?v_242) ?v_243) (=> (and x704 ?v_244) (= tmp706 2)) (=> (and ?v_245 ?v_246) (= tmp705 0)) (=> (and ?v_245 ?v_248) ?v_247) (=> (and x136 ?v_246) ?v_247) (=> (and x136 ?v_248) (= tmp705 2)) (=> (and ?v_249 ?v_250) (= tmp704 0)) (=> (and ?v_249 ?v_252) ?v_251) (=> (and x769 ?v_250) ?v_251) (=> (and x769 ?v_252) (= tmp704 2)) (=> (and ?v_253 ?v_254) (= tmp703 0)) (=> (and ?v_253 ?v_256) ?v_255) (=> (and x41 ?v_254) ?v_255) (=> (and x41 ?v_256) (= tmp703 2)) (=> (and ?v_257 ?v_258) (= tmp702 0)) (=> (and ?v_257 ?v_260) ?v_259) (=> (and x466 ?v_258) ?v_259) (=> (and x466 ?v_260) (= tmp702 2)) (=> (and ?v_261 ?v_262) (= tmp701 0)) (=> (and ?v_261 ?v_264) ?v_263) (=> (and x323 ?v_262) ?v_263) (=> (and x323 ?v_264) (= tmp701 2)) (=> (and ?v_265 ?v_266) (= tmp700 0)) (=> (and ?v_265 ?v_268) ?v_267) (=> (and x561 ?v_266) ?v_267) (=> (and x561 ?v_268) (= tmp700 2)) (=> (and ?v_269 ?v_270) (= tmp699 0)) (=> (and ?v_269 ?v_272) ?v_271) (=> (and x231 ?v_270) ?v_271) (=> (and x231 ?v_272) (= tmp699 2)) (=> (and ?v_273 ?v_274) (= tmp698 0)) (=> (and ?v_273 ?v_276) ?v_275) (=> (and x656 ?v_274) ?v_275) (=> (and x656 ?v_276) (= tmp698 2)) (=> (and ?v_277 ?v_278) (= tmp697 0)) (=> (and ?v_277 ?v_280) ?v_279) (=> (and x135 ?v_278) ?v_279) (=> (and x135 ?v_280) (= tmp697 2)) (=> (and ?v_281 ?v_282) (= tmp696 0)) (=> (and ?v_281 ?v_284) ?v_283) (=> (and x751 ?v_282) ?v_283) (=> (and x751 ?v_284) (= tmp696 2)) (=> (and ?v_285 ?v_286) (= tmp695 0)) (=> (and ?v_285 ?v_288) ?v_287) (=> (and x40 ?v_286) ?v_287) (=> (and x40 ?v_288) (= tmp695 2)) (=> (and ?v_289 ?v_290) (= tmp694 0)) (=> (and ?v_289 ?v_292) ?v_291) (=> (and x465 ?v_290) ?v_291) (=> (and x465 ?v_292) (= tmp694 2)) (=> (and ?v_293 ?v_294) (= tmp693 0)) (=> (and ?v_293 ?v_296) ?v_295) (=> (and x322 ?v_294) ?v_295) (=> (and x322 ?v_296) (= tmp693 2)) (=> (and ?v_297 ?v_298) (= tmp692 0)) (=> (and ?v_297 ?v_300) ?v_299) (=> (and x560 ?v_298) ?v_299) (=> (and x560 ?v_300) (= tmp692 2)) (=> (and ?v_301 ?v_302) (= tmp691 0)) (=> (and ?v_301 ?v_304) ?v_303) (=> (and x230 ?v_302) ?v_303) (=> (and x230 ?v_304) (= tmp691 2)) (=> (and ?v_305 ?v_306) (= tmp690 0)) (=> (and ?v_305 ?v_308) ?v_307) (=> (and x655 ?v_306) ?v_307) (=> (and x655 ?v_308) (= tmp690 2)) (=> (and ?v_309 ?v_310) (= tmp689 0)) (=> (and ?v_309 ?v_312) ?v_311) (=> (and x134 ?v_310) ?v_311) (=> (and x134 ?v_312) (= tmp689 2)) (=> (and ?v_313 ?v_314) (= tmp688 0)) (=> (and ?v_313 ?v_316) ?v_315) (=> (and x750 ?v_314) ?v_315) (=> (and x750 ?v_316) (= tmp688 2)) (=> (and ?v_317 ?v_318) (= tmp687 0)) (=> (and ?v_317 ?v_320) ?v_319) (=> (and x39 ?v_318) ?v_319) (=> (and x39 ?v_320) (= tmp687 2)) (=> (and ?v_321 ?v_322) (= tmp686 0)) (=> (and ?v_321 ?v_324) ?v_323) (=> (and x464 ?v_322) ?v_323) (=> (and x464 ?v_324) (= tmp686 2)) (=> (and ?v_325 ?v_326) (= tmp685 0)) (=> (and ?v_325 ?v_328) ?v_327) (=> (and x321 ?v_326) ?v_327) (=> (and x321 ?v_328) (= tmp685 2)) (=> (and ?v_329 ?v_330) (= tmp684 0)) (=> (and ?v_329 ?v_332) ?v_331) (=> (and x559 ?v_330) ?v_331) (=> (and x559 ?v_332) (= tmp684 2)) (=> (and ?v_333 ?v_334) (= tmp683 0)) (=> (and ?v_333 ?v_336) ?v_335) (=> (and x229 ?v_334) ?v_335) (=> (and x229 ?v_336) (= tmp683 2)) (=> (and ?v_337 ?v_338) (= tmp682 0)) (=> (and ?v_337 ?v_340) ?v_339) (=> (and x654 ?v_338) ?v_339) (=> (and x654 ?v_340) (= tmp682 2)) (=> (and ?v_341 ?v_342) (= tmp681 0)) (=> (and ?v_341 ?v_344) ?v_343) (=> (and x133 ?v_342) ?v_343) (=> (and x133 ?v_344) (= tmp681 2)) (=> (and ?v_345 ?v_346) (= tmp680 0)) (=> (and ?v_345 ?v_348) ?v_347) (=> (and x749 ?v_346) ?v_347) (=> (and x749 ?v_348) (= tmp680 2)) (=> (and ?v_349 ?v_350) (= tmp679 0)) (=> (and ?v_349 ?v_352) ?v_351) (=> (and x38 ?v_350) ?v_351) (=> (and x38 ?v_352) (= tmp679 2)) (=> (and ?v_353 ?v_354) (= tmp678 0)) (=> (and ?v_353 ?v_356) ?v_355) (=> (and x463 ?v_354) ?v_355) (=> (and x463 ?v_356) (= tmp678 2)) (=> (and ?v_357 ?v_358) (= tmp677 0)) (=> (and ?v_357 ?v_360) ?v_359) (=> (and x320 ?v_358) ?v_359) (=> (and x320 ?v_360) (= tmp677 2)) (=> (and ?v_361 ?v_362) (= tmp676 0)) (=> (and ?v_361 ?v_364) ?v_363) (=> (and x558 ?v_362) ?v_363) (=> (and x558 ?v_364) (= tmp676 2)) (=> (and ?v_365 ?v_366) (= tmp675 0)) (=> (and ?v_365 ?v_368) ?v_367) (=> (and x228 ?v_366) ?v_367) (=> (and x228 ?v_368) (= tmp675 2)) (=> (and ?v_369 ?v_370) (= tmp674 0)) (=> (and ?v_369 ?v_372) ?v_371) (=> (and x653 ?v_370) ?v_371) (=> (and x653 ?v_372) (= tmp674 2)) (=> (and ?v_373 ?v_374) (= tmp673 0)) (=> (and ?v_373 ?v_376) ?v_375) (=> (and x132 ?v_374) ?v_375) (=> (and x132 ?v_376) (= tmp673 2)) (=> (and ?v_377 ?v_378) (= tmp672 0)) (=> (and ?v_377 ?v_380) ?v_379) (=> (and x748 ?v_378) ?v_379) (=> (and x748 ?v_380) (= tmp672 2)) (=> (and ?v_381 ?v_382) (= tmp671 0)) (=> (and ?v_381 ?v_384) ?v_383) (=> (and x37 ?v_382) ?v_383) (=> (and x37 ?v_384) (= tmp671 2)) (=> (and ?v_385 ?v_386) (= tmp670 0)) (=> (and ?v_385 ?v_388) ?v_387) (=> (and x462 ?v_386) ?v_387) (=> (and x462 ?v_388) (= tmp670 2)) (=> (and ?v_389 ?v_390) (= tmp669 0)) (=> (and ?v_389 ?v_392) ?v_391) (=> (and x319 ?v_390) ?v_391) (=> (and x319 ?v_392) (= tmp669 2)) (=> (and ?v_393 ?v_394) (= tmp668 0)) (=> (and ?v_393 ?v_396) ?v_395) (=> (and x557 ?v_394) ?v_395) (=> (and x557 ?v_396) (= tmp668 2)) (=> (and ?v_397 ?v_398) (= tmp667 0)) (=> (and ?v_397 ?v_400) ?v_399) (=> (and x227 ?v_398) ?v_399) (=> (and x227 ?v_400) (= tmp667 2)) (=> (and ?v_401 ?v_402) (= tmp666 0)) (=> (and ?v_401 ?v_404) ?v_403) (=> (and x652 ?v_402) ?v_403) (=> (and x652 ?v_404) (= tmp666 2)) (=> (and ?v_405 ?v_406) (= tmp665 0)) (=> (and ?v_405 ?v_408) ?v_407) (=> (and x131 ?v_406) ?v_407) (=> (and x131 ?v_408) (= tmp665 2)) (=> (and ?v_409 ?v_410) (= tmp664 0)) (=> (and ?v_409 ?v_412) ?v_411) (=> (and x747 ?v_410) ?v_411) (=> (and x747 ?v_412) (= tmp664 2)) (=> (and ?v_413 ?v_414) (= tmp663 0)) (=> (and ?v_413 ?v_416) ?v_415) (=> (and x36 ?v_414) ?v_415) (=> (and x36 ?v_416) (= tmp663 2)) (=> (and ?v_417 ?v_418) (= tmp662 0)) (=> (and ?v_417 ?v_420) ?v_419) (=> (and x461 ?v_418) ?v_419) (=> (and x461 ?v_420) (= tmp662 2)) (=> (and ?v_421 ?v_422) (= tmp661 0)) (=> (and ?v_421 ?v_424) ?v_423) (=> (and x318 ?v_422) ?v_423) (=> (and x318 ?v_424) (= tmp661 2)) (=> (and ?v_425 ?v_426) (= tmp660 0)) (=> (and ?v_425 ?v_428) ?v_427) (=> (and x556 ?v_426) ?v_427) (=> (and x556 ?v_428) (= tmp660 2)) (=> (and ?v_429 ?v_430) (= tmp659 0)) (=> (and ?v_429 ?v_432) ?v_431) (=> (and x226 ?v_430) ?v_431) (=> (and x226 ?v_432) (= tmp659 2)) (=> (and ?v_433 ?v_434) (= tmp658 0)) (=> (and ?v_433 ?v_436) ?v_435) (=> (and x651 ?v_434) ?v_435) (=> (and x651 ?v_436) (= tmp658 2)) (=> (and ?v_437 ?v_438) (= tmp657 0)) (=> (and ?v_437 ?v_440) ?v_439) (=> (and x130 ?v_438) ?v_439) (=> (and x130 ?v_440) (= tmp657 2)) (=> (and ?v_441 ?v_442) (= tmp656 0)) (=> (and ?v_441 ?v_444) ?v_443) (=> (and x746 ?v_442) ?v_443) (=> (and x746 ?v_444) (= tmp656 2)) (=> (and ?v_445 ?v_446) (= tmp655 0)) (=> (and ?v_445 ?v_448) ?v_447) (=> (and x35 ?v_446) ?v_447) (=> (and x35 ?v_448) (= tmp655 2)) (=> (and ?v_449 ?v_450) (= tmp654 0)) (=> (and ?v_449 ?v_452) ?v_451) (=> (and x460 ?v_450) ?v_451) (=> (and x460 ?v_452) (= tmp654 2)) (=> (and ?v_453 ?v_454) (= tmp653 0)) (=> (and ?v_453 ?v_456) ?v_455) (=> (and x317 ?v_454) ?v_455) (=> (and x317 ?v_456) (= tmp653 2)) (=> (and ?v_457 ?v_458) (= tmp652 0)) (=> (and ?v_457 ?v_460) ?v_459) (=> (and x555 ?v_458) ?v_459) (=> (and x555 ?v_460) (= tmp652 2)) (=> (and ?v_461 ?v_462) (= tmp651 0)) (=> (and ?v_461 ?v_464) ?v_463) (=> (and x225 ?v_462) ?v_463) (=> (and x225 ?v_464) (= tmp651 2)) (=> (and ?v_465 ?v_466) (= tmp650 0)) (=> (and ?v_465 ?v_468) ?v_467) (=> (and x650 ?v_466) ?v_467) (=> (and x650 ?v_468) (= tmp650 2)) (=> (and ?v_469 ?v_470) (= tmp649 0)) (=> (and ?v_469 ?v_472) ?v_471) (=> (and x129 ?v_470) ?v_471) (=> (and x129 ?v_472) (= tmp649 2)) (=> (and ?v_473 ?v_474) (= tmp648 0)) (=> (and ?v_473 ?v_476) ?v_475) (=> (and x745 ?v_474) ?v_475) (=> (and x745 ?v_476) (= tmp648 2)) (=> (and ?v_477 ?v_478) (= tmp647 0)) (=> (and ?v_477 ?v_480) ?v_479) (=> (and x34 ?v_478) ?v_479) (=> (and x34 ?v_480) (= tmp647 2)) (=> (and ?v_481 ?v_482) (= tmp646 0)) (=> (and ?v_481 ?v_484) ?v_483) (=> (and x459 ?v_482) ?v_483) (=> (and x459 ?v_484) (= tmp646 2)) (=> (and ?v_485 ?v_486) (= tmp645 0)) (=> (and ?v_485 ?v_488) ?v_487) (=> (and x316 ?v_486) ?v_487) (=> (and x316 ?v_488) (= tmp645 2)) (=> (and ?v_489 ?v_490) (= tmp644 0)) (=> (and ?v_489 ?v_492) ?v_491) (=> (and x554 ?v_490) ?v_491) (=> (and x554 ?v_492) (= tmp644 2)) (=> (and ?v_493 ?v_494) (= tmp643 0)) (=> (and ?v_493 ?v_496) ?v_495) (=> (and x224 ?v_494) ?v_495) (=> (and x224 ?v_496) (= tmp643 2)) (=> (and ?v_497 ?v_498) (= tmp642 0)) (=> (and ?v_497 ?v_500) ?v_499) (=> (and x649 ?v_498) ?v_499) (=> (and x649 ?v_500) (= tmp642 2)) (=> (and ?v_501 ?v_502) (= tmp641 0)) (=> (and ?v_501 ?v_504) ?v_503) (=> (and x128 ?v_502) ?v_503) (=> (and x128 ?v_504) (= tmp641 2)) (=> (and ?v_505 ?v_506) (= tmp640 0)) (=> (and ?v_505 ?v_508) ?v_507) (=> (and x744 ?v_506) ?v_507) (=> (and x744 ?v_508) (= tmp640 2)) (=> (and ?v_509 ?v_510) (= tmp639 0)) (=> (and ?v_509 ?v_512) ?v_511) (=> (and x33 ?v_510) ?v_511) (=> (and x33 ?v_512) (= tmp639 2)) (=> (and ?v_513 ?v_514) (= tmp638 0)) (=> (and ?v_513 ?v_516) ?v_515) (=> (and x458 ?v_514) ?v_515) (=> (and x458 ?v_516) (= tmp638 2)) (=> (and ?v_517 ?v_518) (= tmp637 0)) (=> (and ?v_517 ?v_520) ?v_519) (=> (and x315 ?v_518) ?v_519) (=> (and x315 ?v_520) (= tmp637 2)) (=> (and ?v_521 ?v_522) (= tmp636 0)) (=> (and ?v_521 ?v_524) ?v_523) (=> (and x553 ?v_522) ?v_523) (=> (and x553 ?v_524) (= tmp636 2)) (=> (and ?v_525 ?v_526) (= tmp635 0)) (=> (and ?v_525 ?v_528) ?v_527) (=> (and x223 ?v_526) ?v_527) (=> (and x223 ?v_528) (= tmp635 2)) (=> (and ?v_529 ?v_530) (= tmp634 0)) (=> (and ?v_529 ?v_532) ?v_531) (=> (and x648 ?v_530) ?v_531) (=> (and x648 ?v_532) (= tmp634 2)) (=> (and ?v_533 ?v_534) (= tmp633 0)) (=> (and ?v_533 ?v_536) ?v_535) (=> (and x127 ?v_534) ?v_535) (=> (and x127 ?v_536) (= tmp633 2)) (=> (and ?v_537 ?v_538) (= tmp632 0)) (=> (and ?v_537 ?v_540) ?v_539) (=> (and x743 ?v_538) ?v_539) (=> (and x743 ?v_540) (= tmp632 2)) (=> (and ?v_541 ?v_542) (= tmp631 0)) (=> (and ?v_541 ?v_544) ?v_543) (=> (and x32 ?v_542) ?v_543) (=> (and x32 ?v_544) (= tmp631 2)) (=> (and ?v_545 ?v_546) (= tmp630 0)) (=> (and ?v_545 ?v_548) ?v_547) (=> (and x457 ?v_546) ?v_547) (=> (and x457 ?v_548) (= tmp630 2)) (=> (and ?v_549 ?v_550) (= tmp629 0)) (=> (and ?v_549 ?v_552) ?v_551) (=> (and x314 ?v_550) ?v_551) (=> (and x314 ?v_552) (= tmp629 2)) (=> (and ?v_553 ?v_554) (= tmp628 0)) (=> (and ?v_553 ?v_556) ?v_555) (=> (and x552 ?v_554) ?v_555) (=> (and x552 ?v_556) (= tmp628 2)) (=> (and ?v_557 ?v_558) (= tmp627 0)) (=> (and ?v_557 ?v_560) ?v_559) (=> (and x222 ?v_558) ?v_559) (=> (and x222 ?v_560) (= tmp627 2)) (=> (and ?v_561 ?v_562) (= tmp626 0)) (=> (and ?v_561 ?v_564) ?v_563) (=> (and x647 ?v_562) ?v_563) (=> (and x647 ?v_564) (= tmp626 2)) (=> (and ?v_565 ?v_566) (= tmp625 0)) (=> (and ?v_565 ?v_568) ?v_567) (=> (and x126 ?v_566) ?v_567) (=> (and x126 ?v_568) (= tmp625 2)) (=> (and ?v_569 ?v_570) (= tmp624 0)) (=> (and ?v_569 ?v_572) ?v_571) (=> (and x742 ?v_570) ?v_571) (=> (and x742 ?v_572) (= tmp624 2)) (=> (and ?v_573 ?v_574) (= tmp623 0)) (=> (and ?v_573 ?v_576) ?v_575) (=> (and x31 ?v_574) ?v_575) (=> (and x31 ?v_576) (= tmp623 2)) (=> (and ?v_577 ?v_578) (= tmp622 0)) (=> (and ?v_577 ?v_580) ?v_579) (=> (and x456 ?v_578) ?v_579) (=> (and x456 ?v_580) (= tmp622 2)) (=> (and ?v_581 ?v_582) (= tmp621 0)) (=> (and ?v_581 ?v_584) ?v_583) (=> (and x313 ?v_582) ?v_583) (=> (and x313 ?v_584) (= tmp621 2)) (=> (and ?v_585 ?v_586) (= tmp620 0)) (=> (and ?v_585 ?v_588) ?v_587) (=> (and x551 ?v_586) ?v_587) (=> (and x551 ?v_588) (= tmp620 2)) (=> (and ?v_589 ?v_590) (= tmp619 0)) (=> (and ?v_589 ?v_592) ?v_591) (=> (and x221 ?v_590) ?v_591) (=> (and x221 ?v_592) (= tmp619 2)) (=> (and ?v_593 ?v_594) (= tmp618 0)) (=> (and ?v_593 ?v_596) ?v_595) (=> (and x646 ?v_594) ?v_595) (=> (and x646 ?v_596) (= tmp618 2)) (=> (and ?v_597 ?v_598) (= tmp617 0)) (=> (and ?v_597 ?v_600) ?v_599) (=> (and x125 ?v_598) ?v_599) (=> (and x125 ?v_600) (= tmp617 2)) (=> (and ?v_601 ?v_602) (= tmp616 0)) (=> (and ?v_601 ?v_604) ?v_603) (=> (and x741 ?v_602) ?v_603) (=> (and x741 ?v_604) (= tmp616 2)) (=> (and ?v_605 ?v_606) (= tmp615 0)) (=> (and ?v_605 ?v_608) ?v_607) (=> (and x30 ?v_606) ?v_607) (=> (and x30 ?v_608) (= tmp615 2)) (=> (and ?v_609 ?v_610) (= tmp614 0)) (=> (and ?v_609 ?v_612) ?v_611) (=> (and x455 ?v_610) ?v_611) (=> (and x455 ?v_612) (= tmp614 2)) (=> (and ?v_613 ?v_614) (= tmp613 0)) (=> (and ?v_613 ?v_616) ?v_615) (=> (and x312 ?v_614) ?v_615) (=> (and x312 ?v_616) (= tmp613 2)) (=> (and ?v_617 ?v_618) (= tmp612 0)) (=> (and ?v_617 ?v_620) ?v_619) (=> (and x550 ?v_618) ?v_619) (=> (and x550 ?v_620) (= tmp612 2)) (=> (and ?v_621 ?v_622) (= tmp611 0)) (=> (and ?v_621 ?v_624) ?v_623) (=> (and x220 ?v_622) ?v_623) (=> (and x220 ?v_624) (= tmp611 2)) (=> (and ?v_625 ?v_626) (= tmp610 0)) (=> (and ?v_625 ?v_628) ?v_627) (=> (and x645 ?v_626) ?v_627) (=> (and x645 ?v_628) (= tmp610 2)) (=> (and ?v_629 ?v_630) (= tmp609 0)) (=> (and ?v_629 ?v_632) ?v_631) (=> (and x124 ?v_630) ?v_631) (=> (and x124 ?v_632) (= tmp609 2)) (=> (and ?v_633 ?v_634) (= tmp608 0)) (=> (and ?v_633 ?v_636) ?v_635) (=> (and x740 ?v_634) ?v_635) (=> (and x740 ?v_636) (= tmp608 2)) (=> (and ?v_637 ?v_638) (= tmp607 0)) (=> (and ?v_637 ?v_640) ?v_639) (=> (and x29 ?v_638) ?v_639) (=> (and x29 ?v_640) (= tmp607 2)) (=> (and ?v_641 ?v_642) (= tmp606 0)) (=> (and ?v_641 ?v_644) ?v_643) (=> (and x501 ?v_642) ?v_643) (=> (and x501 ?v_644) (= tmp606 2)) (=> (and ?v_645 ?v_646) (= tmp605 0)) (=> (and ?v_645 ?v_648) ?v_647) (=> (and x311 ?v_646) ?v_647) (=> (and x311 ?v_648) (= tmp605 2)) (=> (and ?v_649 ?v_650) (= tmp604 0)) (=> (and ?v_649 ?v_652) ?v_651) (=> (and x597 ?v_650) ?v_651) (=> (and x597 ?v_652) (= tmp604 2)) (=> (and ?v_653 ?v_654) (= tmp603 0)) (=> (and ?v_653 ?v_656) ?v_655) (=> (and x219 ?v_654) ?v_655) (=> (and x219 ?v_656) (= tmp603 2)) (=> (and ?v_657 ?v_658) (= tmp602 0)) (=> (and ?v_657 ?v_660) ?v_659) (=> (and x691 ?v_658) ?v_659) (=> (and x691 ?v_660) (= tmp602 2)) (=> (and ?v_661 ?v_662) (= tmp601 0)) (=> (and ?v_661 ?v_664) ?v_663) (=> (and x123 ?v_662) ?v_663) (=> (and x123 ?v_664) (= tmp601 2)) (=> (and ?v_665 ?v_666) (= tmp600 0)) (=> (and ?v_665 ?v_668) ?v_667) (=> (and x768 ?v_666) ?v_667) (=> (and x768 ?v_668) (= tmp600 2)) (=> (and ?v_669 ?v_670) (= tmp599 0)) (=> (and ?v_669 ?v_672) ?v_671) (=> (and x28 ?v_670) ?v_671) (=> (and x28 ?v_672) (= tmp599 2)) (=> (and ?v_673 ?v_674) (= tmp598 0)) (=> (and ?v_673 ?v_676) ?v_675) (=> (and x454 ?v_674) ?v_675) (=> (and x454 ?v_676) (= tmp598 2)) (=> (and ?v_677 ?v_678) (= tmp597 0)) (=> (and ?v_677 ?v_680) ?v_679) (=> (and x310 ?v_678) ?v_679) (=> (and x310 ?v_680) (= tmp597 2)) (=> (and ?v_681 ?v_682) (= tmp596 0)) (=> (and ?v_681 ?v_684) ?v_683) (=> (and x548 ?v_682) ?v_683) (=> (and x548 ?v_684) (= tmp596 2)) (=> (and ?v_685 ?v_686) (= tmp595 0)) (=> (and ?v_685 ?v_688) ?v_687) (=> (and x218 ?v_686) ?v_687) (=> (and x218 ?v_688) (= tmp595 2)) (=> (and ?v_689 ?v_690) (= tmp594 0)) (=> (and ?v_689 ?v_692) ?v_691) (=> (and x643 ?v_690) ?v_691) (=> (and x643 ?v_692) (= tmp594 2)) (=> (and ?v_693 ?v_694) (= tmp593 0)) (=> (and ?v_693 ?v_696) ?v_695) (=> (and x122 ?v_694) ?v_695) (=> (and x122 ?v_696) (= tmp593 2)) (=> (and ?v_697 ?v_698) (= tmp592 0)) (=> (and ?v_697 ?v_700) ?v_699) (=> (and x738 ?v_698) ?v_699) (=> (and x738 ?v_700) (= tmp592 2)) (=> (and ?v_701 ?v_702) (= tmp591 0)) (=> (and ?v_701 ?v_704) ?v_703) (=> (and x27 ?v_702) ?v_703) (=> (and x27 ?v_704) (= tmp591 2)) (=> (and ?v_705 ?v_706) (= tmp590 0)) (=> (and ?v_705 ?v_708) ?v_707) (=> (and x453 ?v_706) ?v_707) (=> (and x453 ?v_708) (= tmp590 2)) (=> (and ?v_709 ?v_710) (= tmp589 0)) (=> (and ?v_709 ?v_712) ?v_711) (=> (and x309 ?v_710) ?v_711) (=> (and x309 ?v_712) (= tmp589 2)) (=> (and ?v_713 ?v_714) (= tmp588 0)) (=> (and ?v_713 ?v_716) ?v_715) (=> (and x547 ?v_714) ?v_715) (=> (and x547 ?v_716) (= tmp588 2)) (=> (and ?v_717 ?v_718) (= tmp587 0)) (=> (and ?v_717 ?v_720) ?v_719) (=> (and x217 ?v_718) ?v_719) (=> (and x217 ?v_720) (= tmp587 2)) (=> (and ?v_721 ?v_722) (= tmp586 0)) (=> (and ?v_721 ?v_724) ?v_723) (=> (and x642 ?v_722) ?v_723) (=> (and x642 ?v_724) (= tmp586 2)) (=> (and ?v_725 ?v_726) (= tmp585 0)) (=> (and ?v_725 ?v_728) ?v_727) (=> (and x121 ?v_726) ?v_727) (=> (and x121 ?v_728) (= tmp585 2)) (=> (and ?v_729 ?v_730) (= tmp584 0)) (=> (and ?v_729 ?v_732) ?v_731) (=> (and x737 ?v_730) ?v_731) (=> (and x737 ?v_732) (= tmp584 2)) (=> (and ?v_733 ?v_734) (= tmp583 0)) (=> (and ?v_733 ?v_736) ?v_735) (=> (and x26 ?v_734) ?v_735) (=> (and x26 ?v_736) (= tmp583 2)) (=> (and ?v_737 ?v_738) (= tmp582 0)) (=> (and ?v_737 ?v_740) ?v_739) (=> (and x452 ?v_738) ?v_739) (=> (and x452 ?v_740) (= tmp582 2)) (=> (and ?v_741 ?v_742) (= tmp581 0)) (=> (and ?v_741 ?v_744) ?v_743) (=> (and x308 ?v_742) ?v_743) (=> (and x308 ?v_744) (= tmp581 2)) (=> (and ?v_745 ?v_746) (= tmp580 0)) (=> (and ?v_745 ?v_748) ?v_747) (=> (and x546 ?v_746) ?v_747) (=> (and x546 ?v_748) (= tmp580 2)) (=> (and ?v_749 ?v_750) (= tmp579 0)) (=> (and ?v_749 ?v_752) ?v_751) (=> (and x216 ?v_750) ?v_751) (=> (and x216 ?v_752) (= tmp579 2)) (=> (and ?v_753 ?v_754) (= tmp578 0)) (=> (and ?v_753 ?v_756) ?v_755) (=> (and x641 ?v_754) ?v_755) (=> (and x641 ?v_756) (= tmp578 2)) (=> (and ?v_757 ?v_758) (= tmp577 0)) (=> (and ?v_757 ?v_760) ?v_759) (=> (and x120 ?v_758) ?v_759) (=> (and x120 ?v_760) (= tmp577 2)) (=> (and ?v_761 ?v_762) (= tmp576 0)) (=> (and ?v_761 ?v_764) ?v_763) (=> (and x736 ?v_762) ?v_763) (=> (and x736 ?v_764) (= tmp576 2)) (=> (and ?v_765 ?v_766) (= tmp575 0)) (=> (and ?v_765 ?v_768) ?v_767) (=> (and x25 ?v_766) ?v_767) (=> (and x25 ?v_768) (= tmp575 2)) (=> (and ?v_769 ?v_770) (= tmp574 0)) (=> (and ?v_769 ?v_772) ?v_771) (=> (and x451 ?v_770) ?v_771) (=> (and x451 ?v_772) (= tmp574 2)) (=> (and ?v_773 ?v_774) (= tmp573 0)) (=> (and ?v_773 ?v_776) ?v_775) (=> (and x307 ?v_774) ?v_775) (=> (and x307 ?v_776) (= tmp573 2)) (=> (and ?v_777 ?v_778) (= tmp572 0)) (=> (and ?v_777 ?v_780) ?v_779) (=> (and x545 ?v_778) ?v_779) (=> (and x545 ?v_780) (= tmp572 2)) (=> (and ?v_781 ?v_782) (= tmp571 0)) (=> (and ?v_781 ?v_784) ?v_783) (=> (and x215 ?v_782) ?v_783) (=> (and x215 ?v_784) (= tmp571 2)) (=> (and ?v_785 ?v_786) (= tmp570 0)) (=> (and ?v_785 ?v_788) ?v_787) (=> (and x640 ?v_786) ?v_787) (=> (and x640 ?v_788) (= tmp570 2)) (=> (and ?v_789 ?v_790) (= tmp569 0)) (=> (and ?v_789 ?v_792) ?v_791) (=> (and x119 ?v_790) ?v_791) (=> (and x119 ?v_792) (= tmp569 2)) (=> (and ?v_793 ?v_794) (= tmp568 0)) (=> (and ?v_793 ?v_796) ?v_795) (=> (and x735 ?v_794) ?v_795) (=> (and x735 ?v_796) (= tmp568 2)) (=> (and ?v_797 ?v_798) (= tmp567 0)) (=> (and ?v_797 ?v_800) ?v_799) (=> (and x24 ?v_798) ?v_799) (=> (and x24 ?v_800) (= tmp567 2)) (=> (and ?v_801 ?v_802) (= tmp566 0)) (=> (and ?v_801 ?v_804) ?v_803) (=> (and x496 ?v_802) ?v_803) (=> (and x496 ?v_804) (= tmp566 2)) (=> (and ?v_805 ?v_806) (= tmp565 0)) (=> (and ?v_805 ?v_808) ?v_807) (=> (and x354 ?v_806) ?v_807) (=> (and x354 ?v_808) (= tmp565 2)) (=> (and ?v_809 ?v_810) (= tmp564 0)) (=> (and ?v_809 ?v_812) ?v_811) (=> (and x592 ?v_810) ?v_811) (=> (and x592 ?v_812) (= tmp564 2)) (=> (and ?v_813 ?v_814) (= tmp563 0)) (=> (and ?v_813 ?v_816) ?v_815) (=> (and x258 ?v_814) ?v_815) (=> (and x258 ?v_816) (= tmp563 2)) (=> (and ?v_817 ?v_818) (= tmp562 0)) (=> (and ?v_817 ?v_820) ?v_819) (=> (and x734 ?v_818) ?v_819) (=> (and x734 ?v_820) (= tmp562 2)) (=> (and ?v_821 ?v_822) (= tmp561 0)) (=> (and ?v_821 ?v_824) ?v_823) (=> (and x166 ?v_822) ?v_823) (=> (and x166 ?v_824) (= tmp561 2)) (=> (and ?v_825 ?v_826) (= tmp560 0)) (=> (and ?v_825 ?v_828) ?v_827) (=> (and x767 ?v_826) ?v_827) (=> (and x767 ?v_828) (= tmp560 2)) (=> (and ?v_829 ?v_830) (= tmp559 0)) (=> (and ?v_829 ?v_832) ?v_831) (=> (and x23 ?v_830) ?v_831) (=> (and x23 ?v_832) (= tmp559 2)) (=> (and ?v_833 ?v_834) (= tmp558 0)) (=> (and ?v_833 ?v_836) ?v_835) (=> (and x449 ?v_834) ?v_835) (=> (and x449 ?v_836) (= tmp558 2)) (=> (and ?v_837 ?v_838) (= tmp557 0)) (=> (and ?v_837 ?v_840) ?v_839) (=> (and x305 ?v_838) ?v_839) (=> (and x305 ?v_840) (= tmp557 2)) (=> (and ?v_841 ?v_842) (= tmp556 0)) (=> (and ?v_841 ?v_844) ?v_843) (=> (and x543 ?v_842) ?v_843) (=> (and x543 ?v_844) (= tmp556 2)) (=> (and ?v_845 ?v_846) (= tmp555 0)) (=> (and ?v_845 ?v_848) ?v_847) (=> (and x213 ?v_846) ?v_847) (=> (and x213 ?v_848) (= tmp555 2)) (=> (and ?v_849 ?v_850) (= tmp554 0)) (=> (and ?v_849 ?v_852) ?v_851) (=> (and x638 ?v_850) ?v_851) (=> (and x638 ?v_852) (= tmp554 2)) (=> (and ?v_853 ?v_854) (= tmp553 0)) (=> (and ?v_853 ?v_856) ?v_855) (=> (and x118 ?v_854) ?v_855) (=> (and x118 ?v_856) (= tmp553 2)) (=> (and ?v_857 ?v_858) (= tmp552 0)) (=> (and ?v_857 ?v_860) ?v_859) (=> (and x733 ?v_858) ?v_859) (=> (and x733 ?v_860) (= tmp552 2)) (=> (and ?v_861 ?v_862) (= tmp551 0)) (=> (and ?v_861 ?v_864) ?v_863) (=> (and x22 ?v_862) ?v_863) (=> (and x22 ?v_864) (= tmp551 2)) (=> (and ?v_865 ?v_866) (= tmp550 0)) (=> (and ?v_865 ?v_868) ?v_867) (=> (and x448 ?v_866) ?v_867) (=> (and x448 ?v_868) (= tmp550 2)) (=> (and ?v_869 ?v_870) (= tmp549 0)) (=> (and ?v_869 ?v_872) ?v_871) (=> (and x304 ?v_870) ?v_871) (=> (and x304 ?v_872) (= tmp549 2)) (=> (and ?v_873 ?v_874) (= tmp548 0)) (=> (and ?v_873 ?v_876) ?v_875) (=> (and x542 ?v_874) ?v_875) (=> (and x542 ?v_876) (= tmp548 2)) (=> (and ?v_877 ?v_878) (= tmp547 0)) (=> (and ?v_877 ?v_880) ?v_879) (=> (and x212 ?v_878) ?v_879) (=> (and x212 ?v_880) (= tmp547 2)) (=> (and ?v_881 ?v_882) (= tmp546 0)) (=> (and ?v_881 ?v_884) ?v_883) (=> (and x637 ?v_882) ?v_883) (=> (and x637 ?v_884) (= tmp546 2)) (=> (and ?v_885 ?v_886) (= tmp545 0)) (=> (and ?v_885 ?v_888) ?v_887) (=> (and x117 ?v_886) ?v_887) (=> (and x117 ?v_888) (= tmp545 2)) (=> (and ?v_889 ?v_890) (= tmp544 0)) (=> (and ?v_889 ?v_892) ?v_891) (=> (and x732 ?v_890) ?v_891) (=> (and x732 ?v_892) (= tmp544 2)) (=> (and ?v_893 ?v_894) (= tmp543 0)) (=> (and ?v_893 ?v_896) ?v_895) (=> (and x21 ?v_894) ?v_895) (=> (and x21 ?v_896) (= tmp543 2)) (=> (and ?v_897 ?v_898) (= tmp542 0)) (=> (and ?v_897 ?v_900) ?v_899) (=> (and x447 ?v_898) ?v_899) (=> (and x447 ?v_900) (= tmp542 2)) (=> (and ?v_901 ?v_902) (= tmp541 0)) (=> (and ?v_901 ?v_904) ?v_903) (=> (and x303 ?v_902) ?v_903) (=> (and x303 ?v_904) (= tmp541 2)) (=> (and ?v_905 ?v_906) (= tmp540 0)) (=> (and ?v_905 ?v_908) ?v_907) (=> (and x541 ?v_906) ?v_907) (=> (and x541 ?v_908) (= tmp540 2)) (=> (and ?v_909 ?v_910) (= tmp539 0)) (=> (and ?v_909 ?v_912) ?v_911) (=> (and x211 ?v_910) ?v_911) (=> (and x211 ?v_912) (= tmp539 2)) (=> (and ?v_913 ?v_914) (= tmp538 0)) (=> (and ?v_913 ?v_916) ?v_915) (=> (and x636 ?v_914) ?v_915) (=> (and x636 ?v_916) (= tmp538 2)) (=> (and ?v_917 ?v_918) (= tmp537 0)) (=> (and ?v_917 ?v_920) ?v_919) (=> (and x116 ?v_918) ?v_919) (=> (and x116 ?v_920) (= tmp537 2)) (=> (and ?v_921 ?v_922) (= tmp536 0)) (=> (and ?v_921 ?v_924) ?v_923) (=> (and x731 ?v_922) ?v_923) (=> (and x731 ?v_924) (= tmp536 2)) (=> (and ?v_925 ?v_926) (= tmp535 0)) (=> (and ?v_925 ?v_928) ?v_927) (=> (and x20 ?v_926) ?v_927) (=> (and x20 ?v_928) (= tmp535 2)) (=> (and ?v_929 ?v_930) (= tmp534 0)) (=> (and ?v_929 ?v_932) ?v_931) (=> (and x446 ?v_930) ?v_931) (=> (and x446 ?v_932) (= tmp534 2)) (=> (and ?v_933 ?v_934) (= tmp533 0)) (=> (and ?v_933 ?v_936) ?v_935) (=> (and x302 ?v_934) ?v_935) (=> (and x302 ?v_936) (= tmp533 2)) (=> (and ?v_937 ?v_938) (= tmp532 0)) (=> (and ?v_937 ?v_940) ?v_939) (=> (and x540 ?v_938) ?v_939) (=> (and x540 ?v_940) (= tmp532 2)) (=> (and ?v_941 ?v_942) (= tmp531 0)) (=> (and ?v_941 ?v_944) ?v_943) (=> (and x210 ?v_942) ?v_943) (=> (and x210 ?v_944) (= tmp531 2)) (=> (and ?v_945 ?v_946) (= tmp530 0)) (=> (and ?v_945 ?v_948) ?v_947) (=> (and x635 ?v_946) ?v_947) (=> (and x635 ?v_948) (= tmp530 2)) (=> (and ?v_949 ?v_950) (= tmp529 0)) (=> (and ?v_949 ?v_952) ?v_951) (=> (and x115 ?v_950) ?v_951) (=> (and x115 ?v_952) (= tmp529 2)) (=> (and ?v_953 ?v_954) (= tmp528 0)) (=> (and ?v_953 ?v_956) ?v_955) (=> (and x730 ?v_954) ?v_955) (=> (and x730 ?v_956) (= tmp528 2)) (=> (and ?v_957 ?v_958) (= tmp527 0)) (=> (and ?v_957 ?v_960) ?v_959) (=> (and x19 ?v_958) ?v_959) (=> (and x19 ?v_960) (= tmp527 2)) (=> (and ?v_961 ?v_962) (= tmp526 0)) (=> (and ?v_961 ?v_964) ?v_963) (=> (and x445 ?v_962) ?v_963) (=> (and x445 ?v_964) (= tmp526 2)) (=> (and ?v_965 ?v_966) (= tmp525 0)) (=> (and ?v_965 ?v_968) ?v_967) (=> (and x301 ?v_966) ?v_967) (=> (and x301 ?v_968) (= tmp525 2)) (=> (and ?v_969 ?v_970) (= tmp524 0)) (=> (and ?v_969 ?v_972) ?v_971) (=> (and x539 ?v_970) ?v_971) (=> (and x539 ?v_972) (= tmp524 2)) (=> (and ?v_973 ?v_974) (= tmp523 0)) (=> (and ?v_973 ?v_976) ?v_975) (=> (and x209 ?v_974) ?v_975) (=> (and x209 ?v_976) (= tmp523 2)) (=> (and ?v_977 ?v_978) (= tmp522 0)) (=> (and ?v_977 ?v_980) ?v_979) (=> (and x634 ?v_978) ?v_979) (=> (and x634 ?v_980) (= tmp522 2)) (=> (and ?v_981 ?v_982) (= tmp521 0)) (=> (and ?v_981 ?v_984) ?v_983) (=> (and x114 ?v_982) ?v_983) (=> (and x114 ?v_984) (= tmp521 2)) (=> (and ?v_985 ?v_986) (= tmp520 0)) (=> (and ?v_985 ?v_988) ?v_987) (=> (and x729 ?v_986) ?v_987) (=> (and x729 ?v_988) (= tmp520 2)) (=> (and ?v_989 ?v_990) (= tmp519 0)) (=> (and ?v_989 ?v_992) ?v_991) (=> (and x18 ?v_990) ?v_991) (=> (and x18 ?v_992) (= tmp519 2)) (=> (and ?v_993 ?v_994) (= tmp518 0)) (=> (and ?v_993 ?v_996) ?v_995) (=> (and x490 ?v_994) ?v_995) (=> (and x490 ?v_996) (= tmp518 2)) (=> (and ?v_997 ?v_998) (= tmp517 0)) (=> (and ?v_997 ?v_1000) ?v_999) (=> (and x348 ?v_998) ?v_999) (=> (and x348 ?v_1000) (= tmp517 2)) (=> (and ?v_1001 ?v_1002) (= tmp516 0)) (=> (and ?v_1001 ?v_1004) ?v_1003) (=> (and x586 ?v_1002) ?v_1003) (=> (and x586 ?v_1004) (= tmp516 2)) (=> (and ?v_1005 ?v_1006) (= tmp515 0)) (=> (and ?v_1005 ?v_1008) ?v_1007) (=> (and x252 ?v_1006) ?v_1007) (=> (and x252 ?v_1008) (= tmp515 2)) (=> (and ?v_1009 ?v_1010) (= tmp514 0)) (=> (and ?v_1009 ?v_1012) ?v_1011) (=> (and x681 ?v_1010) ?v_1011) (=> (and x681 ?v_1012) (= tmp514 2)) (=> (and ?v_1013 ?v_1014) (= tmp513 0)) (=> (and ?v_1013 ?v_1016) ?v_1015) (=> (and x160 ?v_1014) ?v_1015) (=> (and x160 ?v_1016) (= tmp513 2)) (=> (and ?v_1017 ?v_1018) (= tmp512 0)) (=> (and ?v_1017 ?v_1020) ?v_1019) (=> (and x765 ?v_1018) ?v_1019) (=> (and x765 ?v_1020) (= tmp512 2)) (=> (and ?v_1021 ?v_1022) (= tmp511 0)) (=> (and ?v_1021 ?v_1024) ?v_1023) (=> (and x65 ?v_1022) ?v_1023) (=> (and x65 ?v_1024) (= tmp511 2)) (=> (and ?v_1025 ?v_1026) (= tmp510 0)) (=> (and ?v_1025 ?v_1028) ?v_1027) (=> (and x443 ?v_1026) ?v_1027) (=> (and x443 ?v_1028) (= tmp510 2)) (=> (and ?v_1029 ?v_1030) (= tmp509 0)) (=> (and ?v_1029 ?v_1032) ?v_1031) (=> (and x299 ?v_1030) ?v_1031) (=> (and x299 ?v_1032) (= tmp509 2)) (=> (and ?v_1033 ?v_1034) (= tmp508 0)) (=> (and ?v_1033 ?v_1036) ?v_1035) (=> (and x537 ?v_1034) ?v_1035) (=> (and x537 ?v_1036) (= tmp508 2)) (=> (and ?v_1037 ?v_1038) (= tmp507 0)) (=> (and ?v_1037 ?v_1040) ?v_1039) (=> (and x207 ?v_1038) ?v_1039) (=> (and x207 ?v_1040) (= tmp507 2)) (=> (and ?v_1041 ?v_1042) (= tmp506 0)) (=> (and ?v_1041 ?v_1044) ?v_1043) (=> (and x632 ?v_1042) ?v_1043) (=> (and x632 ?v_1044) (= tmp506 2)) (=> (and ?v_1045 ?v_1046) (= tmp505 0)) (=> (and ?v_1045 ?v_1048) ?v_1047) (=> (and x112 ?v_1046) ?v_1047) (=> (and x112 ?v_1048) (= tmp505 2)) (=> (and ?v_1049 ?v_1050) (= tmp504 0)) (=> (and ?v_1049 ?v_1052) ?v_1051) (=> (and x727 ?v_1050) ?v_1051) (=> (and x727 ?v_1052) (= tmp504 2)) (=> (and ?v_1053 ?v_1054) (= tmp503 0)) (=> (and ?v_1053 ?v_1056) ?v_1055) (=> (and x17 ?v_1054) ?v_1055) (=> (and x17 ?v_1056) (= tmp503 2)) (=> (and ?v_1057 ?v_1058) (= tmp502 0)) (=> (and ?v_1057 ?v_1060) ?v_1059) (=> (and x442 ?v_1058) ?v_1059) (=> (and x442 ?v_1060) (= tmp502 2)) (=> (and ?v_1061 ?v_1062) (= tmp501 0)) (=> (and ?v_1061 ?v_1064) ?v_1063) (=> (and x298 ?v_1062) ?v_1063) (=> (and x298 ?v_1064) (= tmp501 2)) (=> (and ?v_1065 ?v_1066) (= tmp500 0)) (=> (and ?v_1065 ?v_1068) ?v_1067) (=> (and x536 ?v_1066) ?v_1067) (=> (and x536 ?v_1068) (= tmp500 2)) (=> (and ?v_1069 ?v_1070) (= tmp499 0)) (=> (and ?v_1069 ?v_1072) ?v_1071) (=> (and x206 ?v_1070) ?v_1071) (=> (and x206 ?v_1072) (= tmp499 2)) (=> (and ?v_1073 ?v_1074) (= tmp498 0)) (=> (and ?v_1073 ?v_1076) ?v_1075) (=> (and x631 ?v_1074) ?v_1075) (=> (and x631 ?v_1076) (= tmp498 2)) (=> (and ?v_1077 ?v_1078) (= tmp497 0)) (=> (and ?v_1077 ?v_1080) ?v_1079) (=> (and x111 ?v_1078) ?v_1079) (=> (and x111 ?v_1080) (= tmp497 2)) (=> (and ?v_1081 ?v_1082) (= tmp496 0)) (=> (and ?v_1081 ?v_1084) ?v_1083) (=> (and x726 ?v_1082) ?v_1083) (=> (and x726 ?v_1084) (= tmp496 2)) (=> (and ?v_1085 ?v_1086) (= tmp495 0)) (=> (and ?v_1085 ?v_1088) ?v_1087) (=> (and x16 ?v_1086) ?v_1087) (=> (and x16 ?v_1088) (= tmp495 2)) (=> (and ?v_1089 ?v_1090) (= tmp494 0)) (=> (and ?v_1089 ?v_1092) ?v_1091) (=> (and x441 ?v_1090) ?v_1091) (=> (and x441 ?v_1092) (= tmp494 2)) (=> (and ?v_1093 ?v_1094) (= tmp493 0)) (=> (and ?v_1093 ?v_1096) ?v_1095) (=> (and x297 ?v_1094) ?v_1095) (=> (and x297 ?v_1096) (= tmp493 2)) (=> (and ?v_1097 ?v_1098) (= tmp492 0)) (=> (and ?v_1097 ?v_1100) ?v_1099) (=> (and x535 ?v_1098) ?v_1099) (=> (and x535 ?v_1100) (= tmp492 2)) (=> (and ?v_1101 ?v_1102) (= tmp491 0)) (=> (and ?v_1101 ?v_1104) ?v_1103) (=> (and x205 ?v_1102) ?v_1103) (=> (and x205 ?v_1104) (= tmp491 2)) (=> (and ?v_1105 ?v_1106) (= tmp490 0)) (=> (and ?v_1105 ?v_1108) ?v_1107) (=> (and x630 ?v_1106) ?v_1107) (=> (and x630 ?v_1108) (= tmp490 2)) (=> (and ?v_1109 ?v_1110) (= tmp489 0)) (=> (and ?v_1109 ?v_1112) ?v_1111) (=> (and x110 ?v_1110) ?v_1111) (=> (and x110 ?v_1112) (= tmp489 2)) (=> (and ?v_1113 ?v_1114) (= tmp488 0)) (=> (and ?v_1113 ?v_1116) ?v_1115) (=> (and x725 ?v_1114) ?v_1115) (=> (and x725 ?v_1116) (= tmp488 2)) (=> (and ?v_1117 ?v_1118) (= tmp487 0)) (=> (and ?v_1117 ?v_1120) ?v_1119) (=> (and x15 ?v_1118) ?v_1119) (=> (and x15 ?v_1120) (= tmp487 2)) (=> (and ?v_1121 ?v_1122) (= tmp486 0)) (=> (and ?v_1121 ?v_1124) ?v_1123) (=> (and x486 ?v_1122) ?v_1123) (=> (and x486 ?v_1124) (= tmp486 2)) (=> (and ?v_1125 ?v_1126) (= tmp485 0)) (=> (and ?v_1125 ?v_1128) ?v_1127) (=> (and x344 ?v_1126) ?v_1127) (=> (and x344 ?v_1128) (= tmp485 2)) (=> (and ?v_1129 ?v_1130) (= tmp484 0)) (=> (and ?v_1129 ?v_1132) ?v_1131) (=> (and x582 ?v_1130) ?v_1131) (=> (and x582 ?v_1132) (= tmp484 2)) (=> (and ?v_1133 ?v_1134) (= tmp483 0)) (=> (and ?v_1133 ?v_1136) ?v_1135) (=> (and x204 ?v_1134) ?v_1135) (=> (and x204 ?v_1136) (= tmp483 2)) (=> (and ?v_1137 ?v_1138) (= tmp482 0)) (=> (and ?v_1137 ?v_1140) ?v_1139) (=> (and x677 ?v_1138) ?v_1139) (=> (and x677 ?v_1140) (= tmp482 2)) (=> (and ?v_1141 ?v_1142) (= tmp481 0)) (=> (and ?v_1141 ?v_1144) ?v_1143) (=> (and x109 ?v_1142) ?v_1143) (=> (and x109 ?v_1144) (= tmp481 2)) (=> (and ?v_1145 ?v_1146) (= tmp480 0)) (=> (and ?v_1145 ?v_1148) ?v_1147) (=> (and x764 ?v_1146) ?v_1147) (=> (and x764 ?v_1148) (= tmp480 2)) (=> (and ?v_1149 ?v_1150) (= tmp479 0)) (=> (and ?v_1149 ?v_1152) ?v_1151) (=> (and x14 ?v_1150) ?v_1151) (=> (and x14 ?v_1152) (= tmp479 2)) (=> (and ?v_1153 ?v_1154) (= tmp478 0)) (=> (and ?v_1153 ?v_1156) ?v_1155) (=> (and x485 ?v_1154) ?v_1155) (=> (and x485 ?v_1156) (= tmp478 2)) (=> (and ?v_1157 ?v_1158) (= tmp477 0)) (=> (and ?v_1157 ?v_1160) ?v_1159) (=> (and x343 ?v_1158) ?v_1159) (=> (and x343 ?v_1160) (= tmp477 2)) (=> (and ?v_1161 ?v_1162) (= tmp476 0)) (=> (and ?v_1161 ?v_1164) ?v_1163) (=> (and x581 ?v_1162) ?v_1163) (=> (and x581 ?v_1164) (= tmp476 2)) (=> (and ?v_1165 ?v_1166) (= tmp475 0)) (=> (and ?v_1165 ?v_1168) ?v_1167) (=> (and x203 ?v_1166) ?v_1167) (=> (and x203 ?v_1168) (= tmp475 2)) (=> (and ?v_1169 ?v_1170) (= tmp474 0)) (=> (and ?v_1169 ?v_1172) ?v_1171) (=> (and x676 ?v_1170) ?v_1171) (=> (and x676 ?v_1172) (= tmp474 2)) (=> (and ?v_1173 ?v_1174) (= tmp473 0)) (=> (and ?v_1173 ?v_1176) ?v_1175) (=> (and x108 ?v_1174) ?v_1175) (=> (and x108 ?v_1176) (= tmp473 2)) (=> (and ?v_1177 ?v_1178) (= tmp472 0)) (=> (and ?v_1177 ?v_1180) ?v_1179) (=> (and x763 ?v_1178) ?v_1179) (=> (and x763 ?v_1180) (= tmp472 2)) (=> (and ?v_1181 ?v_1182) (= tmp471 0)) (=> (and ?v_1181 ?v_1184) ?v_1183) (=> (and x13 ?v_1182) ?v_1183) (=> (and x13 ?v_1184) (= tmp471 2)) (=> (and ?v_1185 ?v_1186) (= tmp470 0)) (=> (and ?v_1185 ?v_1188) ?v_1187) (=> (and x484 ?v_1186) ?v_1187) (=> (and x484 ?v_1188) (= tmp470 2)) (=> (and ?v_1189 ?v_1190) (= tmp469 0)) (=> (and ?v_1189 ?v_1192) ?v_1191) (=> (and x342 ?v_1190) ?v_1191) (=> (and x342 ?v_1192) (= tmp469 2)) (=> (and ?v_1193 ?v_1194) (= tmp468 0)) (=> (and ?v_1193 ?v_1196) ?v_1195) (=> (and x580 ?v_1194) ?v_1195) (=> (and x580 ?v_1196) (= tmp468 2)) (=> (and ?v_1197 ?v_1198) (= tmp467 0)) (=> (and ?v_1197 ?v_1200) ?v_1199) (=> (and x202 ?v_1198) ?v_1199) (=> (and x202 ?v_1200) (= tmp467 2)) (=> (and ?v_1201 ?v_1202) (= tmp466 0)) (=> (and ?v_1201 ?v_1204) ?v_1203) (=> (and x675 ?v_1202) ?v_1203) (=> (and x675 ?v_1204) (= tmp466 2)) (=> (and ?v_1205 ?v_1206) (= tmp465 0)) (=> (and ?v_1205 ?v_1208) ?v_1207) (=> (and x107 ?v_1206) ?v_1207) (=> (and x107 ?v_1208) (= tmp465 2)) (=> (and ?v_1209 ?v_1210) (= tmp464 0)) (=> (and ?v_1209 ?v_1212) ?v_1211) (=> (and x762 ?v_1210) ?v_1211) (=> (and x762 ?v_1212) (= tmp464 2)) (=> (and ?v_1213 ?v_1214) (= tmp463 0)) (=> (and ?v_1213 ?v_1216) ?v_1215) (=> (and x12 ?v_1214) ?v_1215) (=> (and x12 ?v_1216) (= tmp463 2)) (=> (and ?v_1217 ?v_1218) (= tmp462 0)) (=> (and ?v_1217 ?v_1220) ?v_1219) (=> (and x483 ?v_1218) ?v_1219) (=> (and x483 ?v_1220) (= tmp462 2)) (=> (and ?v_1221 ?v_1222) (= tmp461 0)) (=> (and ?v_1221 ?v_1224) ?v_1223) (=> (and x341 ?v_1222) ?v_1223) (=> (and x341 ?v_1224) (= tmp461 2)) (=> (and ?v_1225 ?v_1226) (= tmp460 0)) (=> (and ?v_1225 ?v_1228) ?v_1227) (=> (and x579 ?v_1226) ?v_1227) (=> (and x579 ?v_1228) (= tmp460 2)) (=> (and ?v_1229 ?v_1230) (= tmp459 0)) (=> (and ?v_1229 ?v_1232) ?v_1231) (=> (and x201 ?v_1230) ?v_1231) (=> (and x201 ?v_1232) (= tmp459 2)) (=> (and ?v_1233 ?v_1234) (= tmp458 0)) (=> (and ?v_1233 ?v_1236) ?v_1235) (=> (and x674 ?v_1234) ?v_1235) (=> (and x674 ?v_1236) (= tmp458 2)) (=> (and ?v_1237 ?v_1238) (= tmp457 0)) (=> (and ?v_1237 ?v_1240) ?v_1239) (=> (and x106 ?v_1238) ?v_1239) (=> (and x106 ?v_1240) (= tmp457 2)) (=> (and ?v_1241 ?v_1242) (= tmp456 0)) (=> (and ?v_1241 ?v_1244) ?v_1243) (=> (and x761 ?v_1242) ?v_1243) (=> (and x761 ?v_1244) (= tmp456 2)) (=> (and ?v_1245 ?v_1246) (= tmp455 0)) (=> (and ?v_1245 ?v_1248) ?v_1247) (=> (and x11 ?v_1246) ?v_1247) (=> (and x11 ?v_1248) (= tmp455 2)) (=> (and ?v_1249 ?v_1250) (= tmp454 0)) (=> (and ?v_1249 ?v_1252) ?v_1251) (=> (and x436 ?v_1250) ?v_1251) (=> (and x436 ?v_1252) (= tmp454 2)) (=> (and ?v_1253 ?v_1254) (= tmp453 0)) (=> (and ?v_1253 ?v_1256) ?v_1255) (=> (and x292 ?v_1254) ?v_1255) (=> (and x292 ?v_1256) (= tmp453 2)) (=> (and ?v_1257 ?v_1258) (= tmp452 0)) (=> (and ?v_1257 ?v_1260) ?v_1259) (=> (and x530 ?v_1258) ?v_1259) (=> (and x530 ?v_1260) (= tmp452 2)) (=> (and ?v_1261 ?v_1262) (= tmp451 0)) (=> (and ?v_1261 ?v_1264) ?v_1263) (=> (and x200 ?v_1262) ?v_1263) (=> (and x200 ?v_1264) (= tmp451 2)) (=> (and ?v_1265 ?v_1266) (= tmp450 0)) (=> (and ?v_1265 ?v_1268) ?v_1267) (=> (and x625 ?v_1266) ?v_1267) (=> (and x625 ?v_1268) (= tmp450 2)) (=> (and ?v_1269 ?v_1270) (= tmp449 0)) (=> (and ?v_1269 ?v_1272) ?v_1271) (=> (and x105 ?v_1270) ?v_1271) (=> (and x105 ?v_1272) (= tmp449 2)) (=> (and ?v_1273 ?v_1274) (= tmp448 0)) (=> (and ?v_1273 ?v_1276) ?v_1275) (=> (and x720 ?v_1274) ?v_1275) (=> (and x720 ?v_1276) (= tmp448 2)) (=> (and ?v_1277 ?v_1278) (= tmp447 0)) (=> (and ?v_1277 ?v_1280) ?v_1279) (=> (and x10 ?v_1278) ?v_1279) (=> (and x10 ?v_1280) (= tmp447 2)) (=> (and ?v_1281 ?v_1282) (= tmp446 0)) (=> (and ?v_1281 ?v_1284) ?v_1283) (=> (and x435 ?v_1282) ?v_1283) (=> (and x435 ?v_1284) (= tmp446 2)) (=> (and ?v_1285 ?v_1286) (= tmp445 0)) (=> (and ?v_1285 ?v_1288) ?v_1287) (=> (and x291 ?v_1286) ?v_1287) (=> (and x291 ?v_1288) (= tmp445 2)) (=> (and ?v_1289 ?v_1290) (= tmp444 0)) (=> (and ?v_1289 ?v_1292) ?v_1291) (=> (and x529 ?v_1290) ?v_1291) (=> (and x529 ?v_1292) (= tmp444 2)) (=> (and ?v_1293 ?v_1294) (= tmp443 0)) (=> (and ?v_1293 ?v_1296) ?v_1295) (=> (and x199 ?v_1294) ?v_1295) (=> (and x199 ?v_1296) (= tmp443 2)) (=> (and ?v_1297 ?v_1298) (= tmp442 0)) (=> (and ?v_1297 ?v_1300) ?v_1299) (=> (and x624 ?v_1298) ?v_1299) (=> (and x624 ?v_1300) (= tmp442 2)) (=> (and ?v_1301 ?v_1302) (= tmp441 0)) (=> (and ?v_1301 ?v_1304) ?v_1303) (=> (and x104 ?v_1302) ?v_1303) (=> (and x104 ?v_1304) (= tmp441 2)) (=> (and ?v_1305 ?v_1306) (= tmp440 0)) (=> (and ?v_1305 ?v_1308) ?v_1307) (=> (and x719 ?v_1306) ?v_1307) (=> (and x719 ?v_1308) (= tmp440 2)) (=> (and ?v_1309 ?v_1310) (= tmp439 0)) (=> (and ?v_1309 ?v_1312) ?v_1311) (=> (and x9 ?v_1310) ?v_1311) (=> (and x9 ?v_1312) (= tmp439 2)) (=> (and ?v_1313 ?v_1314) (= tmp438 0)) (=> (and ?v_1313 ?v_1316) ?v_1315) (=> (and x434 ?v_1314) ?v_1315) (=> (and x434 ?v_1316) (= tmp438 2)) (=> (and ?v_1317 ?v_1318) (= tmp437 0)) (=> (and ?v_1317 ?v_1320) ?v_1319) (=> (and x290 ?v_1318) ?v_1319) (=> (and x290 ?v_1320) (= tmp437 2)) (=> (and ?v_1321 ?v_1322) (= tmp436 0)) (=> (and ?v_1321 ?v_1324) ?v_1323) (=> (and x528 ?v_1322) ?v_1323) (=> (and x528 ?v_1324) (= tmp436 2)) (=> (and ?v_1325 ?v_1326) (= tmp435 0)) (=> (and ?v_1325 ?v_1328) ?v_1327) (=> (and x198 ?v_1326) ?v_1327) (=> (and x198 ?v_1328) (= tmp435 2)) (=> (and ?v_1329 ?v_1330) (= tmp434 0)) (=> (and ?v_1329 ?v_1332) ?v_1331) (=> (and x623 ?v_1330) ?v_1331) (=> (and x623 ?v_1332) (= tmp434 2)) (=> (and ?v_1333 ?v_1334) (= tmp433 0)) (=> (and ?v_1333 ?v_1336) ?v_1335) (=> (and x103 ?v_1334) ?v_1335) (=> (and x103 ?v_1336) (= tmp433 2)) (=> (and ?v_1337 ?v_1338) (= tmp432 0)) (=> (and ?v_1337 ?v_1340) ?v_1339) (=> (and x718 ?v_1338) ?v_1339) (=> (and x718 ?v_1340) (= tmp432 2)) (=> (and ?v_1341 ?v_1342) (= tmp431 0)) (=> (and ?v_1341 ?v_1344) ?v_1343) (=> (and x8 ?v_1342) ?v_1343) (=> (and x8 ?v_1344) (= tmp431 2)) (=> (and ?v_1345 ?v_1346) (= tmp430 0)) (=> (and ?v_1345 ?v_1348) ?v_1347) (=> (and x433 ?v_1346) ?v_1347) (=> (and x433 ?v_1348) (= tmp430 2)) (=> (and ?v_1349 ?v_1350) (= tmp429 0)) (=> (and ?v_1349 ?v_1352) ?v_1351) (=> (and x289 ?v_1350) ?v_1351) (=> (and x289 ?v_1352) (= tmp429 2)) (=> (and ?v_1353 ?v_1354) (= tmp428 0)) (=> (and ?v_1353 ?v_1356) ?v_1355) (=> (and x527 ?v_1354) ?v_1355) (=> (and x527 ?v_1356) (= tmp428 2)) (=> (and ?v_1357 ?v_1358) (= tmp427 0)) (=> (and ?v_1357 ?v_1360) ?v_1359) (=> (and x197 ?v_1358) ?v_1359) (=> (and x197 ?v_1360) (= tmp427 2)) (=> (and ?v_1361 ?v_1362) (= tmp426 0)) (=> (and ?v_1361 ?v_1364) ?v_1363) (=> (and x622 ?v_1362) ?v_1363) (=> (and x622 ?v_1364) (= tmp426 2)) (=> (and ?v_1365 ?v_1366) (= tmp425 0)) (=> (and ?v_1365 ?v_1368) ?v_1367) (=> (and x102 ?v_1366) ?v_1367) (=> (and x102 ?v_1368) (= tmp425 2)) (=> (and ?v_1369 ?v_1370) (= tmp424 0)) (=> (and ?v_1369 ?v_1372) ?v_1371) (=> (and x717 ?v_1370) ?v_1371) (=> (and x717 ?v_1372) (= tmp424 2)) (=> (and ?v_1373 ?v_1374) (= tmp423 0)) (=> (and ?v_1373 ?v_1376) ?v_1375) (=> (and x7 ?v_1374) ?v_1375) (=> (and x7 ?v_1376) (= tmp423 2)) (=> (and ?v_1377 ?v_1378) (= tmp422 0)) (=> (and ?v_1377 ?v_1380) ?v_1379) (=> (and x432 ?v_1378) ?v_1379) (=> (and x432 ?v_1380) (= tmp422 2)) (=> (and ?v_1381 ?v_1382) (= tmp421 0)) (=> (and ?v_1381 ?v_1384) ?v_1383) (=> (and x288 ?v_1382) ?v_1383) (=> (and x288 ?v_1384) (= tmp421 2)) (=> (and ?v_1385 ?v_1386) (= tmp420 0)) (=> (and ?v_1385 ?v_1388) ?v_1387) (=> (and x526 ?v_1386) ?v_1387) (=> (and x526 ?v_1388) (= tmp420 2)) (=> (and ?v_1389 ?v_1390) (= tmp419 0)) (=> (and ?v_1389 ?v_1392) ?v_1391) (=> (and x196 ?v_1390) ?v_1391) (=> (and x196 ?v_1392) (= tmp419 2)) (=> (and ?v_1393 ?v_1394) (= tmp418 0)) (=> (and ?v_1393 ?v_1396) ?v_1395) (=> (and x621 ?v_1394) ?v_1395) (=> (and x621 ?v_1396) (= tmp418 2)) (=> (and ?v_1397 ?v_1398) (= tmp417 0)) (=> (and ?v_1397 ?v_1400) ?v_1399) (=> (and x101 ?v_1398) ?v_1399) (=> (and x101 ?v_1400) (= tmp417 2)) (=> (and ?v_1401 ?v_1402) (= tmp416 0)) (=> (and ?v_1401 ?v_1404) ?v_1403) (=> (and x716 ?v_1402) ?v_1403) (=> (and x716 ?v_1404) (= tmp416 2)) (=> (and ?v_1405 ?v_1406) (= tmp415 0)) (=> (and ?v_1405 ?v_1408) ?v_1407) (=> (and x6 ?v_1406) ?v_1407) (=> (and x6 ?v_1408) (= tmp415 2)) (=> (and ?v_1409 ?v_1410) (= tmp414 0)) (=> (and ?v_1409 ?v_1412) ?v_1411) (=> (and x431 ?v_1410) ?v_1411) (=> (and x431 ?v_1412) (= tmp414 2)) (=> (and ?v_1413 ?v_1414) (= tmp413 0)) (=> (and ?v_1413 ?v_1416) ?v_1415) (=> (and x287 ?v_1414) ?v_1415) (=> (and x287 ?v_1416) (= tmp413 2)) (=> (and ?v_1417 ?v_1418) (= tmp412 0)) (=> (and ?v_1417 ?v_1420) ?v_1419) (=> (and x525 ?v_1418) ?v_1419) (=> (and x525 ?v_1420) (= tmp412 2)) (=> (and ?v_1421 ?v_1422) (= tmp411 0)) (=> (and ?v_1421 ?v_1424) ?v_1423) (=> (and x195 ?v_1422) ?v_1423) (=> (and x195 ?v_1424) (= tmp411 2)) (=> (and ?v_1425 ?v_1426) (= tmp410 0)) (=> (and ?v_1425 ?v_1428) ?v_1427) (=> (and x620 ?v_1426) ?v_1427) (=> (and x620 ?v_1428) (= tmp410 2)) (=> (and ?v_1429 ?v_1430) (= tmp409 0)) (=> (and ?v_1429 ?v_1432) ?v_1431) (=> (and x100 ?v_1430) ?v_1431) (=> (and x100 ?v_1432) (= tmp409 2)) (=> (and ?v_1433 ?v_1434) (= tmp408 0)) (=> (and ?v_1433 ?v_1436) ?v_1435) (=> (and x715 ?v_1434) ?v_1435) (=> (and x715 ?v_1436) (= tmp408 2)) (=> (and ?v_1437 ?v_1438) (= tmp407 0)) (=> (and ?v_1437 ?v_1440) ?v_1439) (=> (and x5 ?v_1438) ?v_1439) (=> (and x5 ?v_1440) (= tmp407 2)) (=> (and ?v_1441 ?v_1442) (= tmp406 0)) (=> (and ?v_1441 ?v_1444) ?v_1443) (=> (and x430 ?v_1442) ?v_1443) (=> (and x430 ?v_1444) (= tmp406 2)) (=> (and ?v_1445 ?v_1446) (= tmp405 0)) (=> (and ?v_1445 ?v_1448) ?v_1447) (=> (and x286 ?v_1446) ?v_1447) (=> (and x286 ?v_1448) (= tmp405 2)) (=> (and ?v_1449 ?v_1450) (= tmp404 0)) (=> (and ?v_1449 ?v_1452) ?v_1451) (=> (and x524 ?v_1450) ?v_1451) (=> (and x524 ?v_1452) (= tmp404 2)) (=> (and ?v_1453 ?v_1454) (= tmp403 0)) (=> (and ?v_1453 ?v_1456) ?v_1455) (=> (and x194 ?v_1454) ?v_1455) (=> (and x194 ?v_1456) (= tmp403 2)) (=> (and ?v_1457 ?v_1458) (= tmp402 0)) (=> (and ?v_1457 ?v_1460) ?v_1459) (=> (and x619 ?v_1458) ?v_1459) (=> (and x619 ?v_1460) (= tmp402 2)) (=> (and ?v_1461 ?v_1462) (= tmp401 0)) (=> (and ?v_1461 ?v_1464) ?v_1463) (=> (and x99 ?v_1462) ?v_1463) (=> (and x99 ?v_1464) (= tmp401 2)) (=> (and ?v_1465 ?v_1466) (= tmp400 0)) (=> (and ?v_1465 ?v_1468) ?v_1467) (=> (and x714 ?v_1466) ?v_1467) (=> (and x714 ?v_1468) (= tmp400 2)) (=> (and ?v_1469 ?v_1470) (= tmp399 0)) (=> (and ?v_1469 ?v_1472) ?v_1471) (=> (and x4 ?v_1470) ?v_1471) (=> (and x4 ?v_1472) (= tmp399 2)) (=> (and ?v_1473 ?v_1474) (= tmp398 0)) (=> (and ?v_1473 ?v_1476) ?v_1475) (=> (and x429 ?v_1474) ?v_1475) (=> (and x429 ?v_1476) (= tmp398 2)) (=> (and ?v_1477 ?v_1478) (= tmp397 0)) (=> (and ?v_1477 ?v_1480) ?v_1479) (=> (and x285 ?v_1478) ?v_1479) (=> (and x285 ?v_1480) (= tmp397 2)) (=> (and ?v_1481 ?v_1482) (= tmp396 0)) (=> (and ?v_1481 ?v_1484) ?v_1483) (=> (and x523 ?v_1482) ?v_1483) (=> (and x523 ?v_1484) (= tmp396 2)) (=> (and ?v_1485 ?v_1486) (= tmp395 0)) (=> (and ?v_1485 ?v_1488) ?v_1487) (=> (and x193 ?v_1486) ?v_1487) (=> (and x193 ?v_1488) (= tmp395 2)) (=> (and ?v_1489 ?v_1490) (= tmp394 0)) (=> (and ?v_1489 ?v_1492) ?v_1491) (=> (and x618 ?v_1490) ?v_1491) (=> (and x618 ?v_1492) (= tmp394 2)) (=> (and ?v_1493 ?v_1494) (= tmp393 0)) (=> (and ?v_1493 ?v_1496) ?v_1495) (=> (and x98 ?v_1494) ?v_1495) (=> (and x98 ?v_1496) (= tmp393 2)) (=> (and ?v_1497 ?v_1498) (= tmp392 0)) (=> (and ?v_1497 ?v_1500) ?v_1499) (=> (and x713 ?v_1498) ?v_1499) (=> (and x713 ?v_1500) (= tmp392 2)) (=> (and ?v_1501 ?v_1502) (= tmp391 0)) (=> (and ?v_1501 ?v_1504) ?v_1503) (=> (and x3 ?v_1502) ?v_1503) (=> (and x3 ?v_1504) (= tmp391 2)) (=> (and ?v_1505 ?v_1506) (= tmp390 0)) (=> (and ?v_1505 ?v_1508) ?v_1507) (=> (and x428 ?v_1506) ?v_1507) (=> (and x428 ?v_1508) (= tmp390 2)) (=> (and ?v_1509 ?v_1510) (= tmp389 0)) (=> (and ?v_1509 ?v_1512) ?v_1511) (=> (and x284 ?v_1510) ?v_1511) (=> (and x284 ?v_1512) (= tmp389 2)) (=> (and ?v_1513 ?v_1514) (= tmp388 0)) (=> (and ?v_1513 ?v_1516) ?v_1515) (=> (and x570 ?v_1514) ?v_1515) (=> (and x570 ?v_1516) (= tmp388 2)) (=> (and ?v_1517 ?v_1518) (= tmp387 0)) (=> (and ?v_1517 ?v_1520) ?v_1519) (=> (and x192 ?v_1518) ?v_1519) (=> (and x192 ?v_1520) (= tmp387 2)) (=> (and ?v_1521 ?v_1522) (= tmp386 0)) (=> (and ?v_1521 ?v_1524) ?v_1523) (=> (and x665 ?v_1522) ?v_1523) (=> (and x665 ?v_1524) (= tmp386 2)) (=> (and ?v_1525 ?v_1526) (= tmp385 0)) (=> (and ?v_1525 ?v_1528) ?v_1527) (=> (and x97 ?v_1526) ?v_1527) (=> (and x97 ?v_1528) (= tmp385 2)) (=> (and ?v_1529 ?v_1530) (= tmp384 0)) (=> (and ?v_1529 ?v_1532) ?v_1531) (=> (and x760 ?v_1530) ?v_1531) (=> (and x760 ?v_1532) (= tmp384 2)) (=> (and ?v_1533 ?v_1534) (= tmp383 0)) (=> (and ?v_1533 ?v_1536) ?v_1535) (=> (and x2 ?v_1534) ?v_1535) (=> (and x2 ?v_1536) (= tmp383 2)) (=> (and ?v_729 ?v_1537) (= tmp382 0)) (=> (and ?v_729 ?v_1539) ?v_1538) (=> (and x737 ?v_1537) ?v_1538) (=> (and x737 ?v_1539) (= tmp382 12)) (=> (and ?v_817 ?v_1540) (= tmp381 0)) (=> (and ?v_817 ?v_1542) ?v_1541) (=> (and x734 ?v_1540) ?v_1541) (=> (and x734 ?v_1542) (= tmp381 8)) (=> (and ?v_1543 ?v_1544) (= tmp380 0)) (=> (and ?v_1543 ?v_1546) ?v_1545) (=> (and x739 ?v_1544) ?v_1545) (=> (and x739 ?v_1546) (= tmp380 12)) (=> (and ?v_889 ?v_1547) (= tmp379 0)) (=> (and ?v_889 ?v_1549) ?v_1548) (=> (and x732 ?v_1547) ?v_1548) (=> (and x732 ?v_1549) (= tmp379 12)) (=> (and ?v_601 ?v_1550) (= tmp378 0)) (=> (and ?v_601 ?v_1551) (= tmp378 6)) (=> (and x741 ?v_1550) (= tmp378 8)) (=> (and x741 ?v_1551) (= tmp378 14)) (=> (and ?v_953 ?v_1552) (= tmp377 0)) (=> (and ?v_953 ?v_1554) ?v_1553) (=> (and x730 ?v_1552) ?v_1553) (=> (and x730 ?v_1554) (= tmp377 16)) (=> (and ?v_537 ?v_1555) (= tmp376 0)) (=> (and ?v_537 ?v_1557) ?v_1556) (=> (and x743 ?v_1555) ?v_1556) (=> (and x743 ?v_1557) (= tmp376 16)) (=> (and ?v_1558 ?v_1559) (= tmp375 0)) (=> (and ?v_1558 ?v_1561) ?v_1560) (=> (and x728 ?v_1559) ?v_1560) (=> (and x728 ?v_1561) (= tmp375 16)) (=> (and ?v_473 ?v_1562) (= tmp374 0)) (=> (and ?v_473 ?v_1564) ?v_1563) (=> (and x745 ?v_1562) ?v_1563) (=> (and x745 ?v_1564) (= tmp374 16)) (=> (and ?v_1081 ?v_1565) (= tmp373 0)) (=> (and ?v_1081 ?v_1567) ?v_1566) (=> (and x726 ?v_1565) ?v_1566) (=> (and x726 ?v_1567) (= tmp373 16)) (=> (and ?v_409 ?v_1568) (= tmp372 0)) (=> (and ?v_409 ?v_1570) ?v_1569) (=> (and x747 ?v_1568) ?v_1569) (=> (and x747 ?v_1570) (= tmp372 16)) (=> (and ?v_1571 ?v_1572) (= tmp371 0)) (=> (and ?v_1571 ?v_1574) ?v_1573) (=> (and x724 ?v_1572) ?v_1573) (=> (and x724 ?v_1574) (= tmp371 16)) (=> (and ?v_345 ?v_1575) (= tmp370 0)) (=> (and ?v_345 ?v_1577) ?v_1576) (=> (and x749 ?v_1575) ?v_1576) (=> (and x749 ?v_1577) (= tmp370 12)) (=> (and ?v_1578 ?v_1178) (= tmp369 0)) (=> (and ?v_1578 ?v_1180) ?v_1579) (=> (and x722 ?v_1178) ?v_1579) (=> (and x722 ?v_1180) (= tmp369 16)) (=> (and ?v_281 ?v_1580) (= tmp368 0)) (=> (and ?v_281 ?v_1581) (= tmp368 2)) (=> (and x751 ?v_1580) (= tmp368 6)) (=> (and x751 ?v_1581) (= tmp368 8)) (=> (and ?v_1273 ?v_1242) (= tmp367 0)) (=> (and ?v_1273 ?v_1244) ?v_1582) (=> (and x720 ?v_1242) ?v_1582) (=> (and x720 ?v_1244) (= tmp367 16)) (=> (and ?v_217 ?v_250) (= tmp366 0)) (=> (and ?v_217 ?v_252) ?v_1583) (=> (and x753 ?v_250) ?v_1583) (=> (and x753 ?v_252) (= tmp366 16)) (=> (and ?v_1337 ?v_1584) (= tmp365 0)) (=> (and ?v_1337 ?v_1585) (= tmp365 8)) (=> (and x718 ?v_1584) (= tmp365 6)) (=> (and x718 ?v_1585) (= tmp365 14)) (=> (and ?v_153 ?v_1586) (= tmp364 0)) (=> (and ?v_153 ?v_1588) ?v_1587) (=> (and x755 ?v_1586) ?v_1587) (=> (and x755 ?v_1588) (= tmp364 16)) (=> (and ?v_1401 ?v_1589) (= tmp363 0)) (=> (and ?v_1401 ?v_1590) (= tmp363 4)) (=> (and x716 ?v_1589) (= tmp363 6)) (=> (and x716 ?v_1590) (= tmp363 10)) (=> (and ?v_89 ?v_1591) (= tmp362 0)) (=> (and ?v_89 ?v_1593) ?v_1592) (=> (and x757 ?v_1591) ?v_1592) (=> (and x757 ?v_1593) (= tmp362 16)) (=> (and ?v_1465 ?v_1594) (= tmp361 0)) (=> (and ?v_1465 ?v_1596) ?v_1595) (=> (and x714 ?v_1594) ?v_1595) (=> (and x714 ?v_1596) (= tmp361 16)) (=> (and ?v_25 ?v_1597) (= tmp360 0)) (=> (and ?v_25 ?v_1598) (= tmp360 6)) (=> (and x759 ?v_1597) (= tmp360 8)) (=> (and x759 ?v_1598) (= tmp360 14)) (=> (and ?v_1599 ?v_1600) (= tmp359 0)) (=> (and ?v_1599 ?v_1602) ?v_1601) (=> (and x712 ?v_1600) ?v_1601) (=> (and x712 ?v_1602) (= tmp359 16)) (=> ?v_730 (= tmp358 0)) (=> ?v_732 (= tmp358 4)) (=> (and ?v_1603 ?v_762) (= tmp357 0)) (=> (and ?v_1603 ?v_764) (= tmp357 4)) (=> (and x687 ?v_762) (= tmp357 2)) (=> (and x687 ?v_764) (= tmp357 6)) (=> (and ?v_657 ?v_698) (= tmp356 0)) (=> (and ?v_657 ?v_700) ?v_1604) (=> (and x691 ?v_698) ?v_1604) (=> (and x691 ?v_700) (= tmp356 4)) (=> (and ?v_1605 ?v_858) (= tmp355 0)) (=> (and ?v_1605 ?v_860) (= tmp355 4)) (=> (and x685 ?v_858) (= tmp355 6)) (=> (and x685 ?v_860) (= tmp355 10)) (=> (and ?v_1606 ?v_634) (= tmp354 0)) (=> (and ?v_1606 ?v_636) ?v_1607) (=> (and x693 ?v_634) ?v_1607) (=> (and x693 ?v_636) (= tmp354 8)) (=> (and ?v_1608 ?v_922) (= tmp353 0)) (=> (and ?v_1608 ?v_924) (= tmp353 6)) (=> (and x683 ?v_922) (= tmp353 8)) (=> (and x683 ?v_924) (= tmp353 14)) (=> (and ?v_1609 ?v_570) (= tmp352 0)) (=> (and ?v_1609 ?v_572) ?v_1610) (=> (and x695 ?v_570) ?v_1610) (=> (and x695 ?v_572) (= tmp352 8)) (=> (and ?v_1009 ?v_986) (= tmp351 0)) (=> (and ?v_1009 ?v_988) (= tmp351 8)) (=> (and x681 ?v_986) (= tmp351 6)) (=> (and x681 ?v_988) (= tmp351 14)) (=> (and ?v_1611 ?v_506) (= tmp350 0)) (=> (and ?v_1611 ?v_508) ?v_1612) (=> (and x697 ?v_506) ?v_1612) (=> (and x697 ?v_508) (= tmp350 4)) (=> (and ?v_1613 ?v_1050) (= tmp349 0)) (=> (and ?v_1613 ?v_1052) ?v_1614) (=> (and x679 ?v_1050) ?v_1614) (=> (and x679 ?v_1052) (= tmp349 12)) (=> (and ?v_1615 ?v_442) (= tmp348 0)) (=> (and ?v_1615 ?v_444) (= tmp348 4)) (=> (and x699 ?v_442) (= tmp348 6)) (=> (and x699 ?v_444) (= tmp348 10)) (=> (and ?v_1137 ?v_1114) (= tmp347 0)) (=> (and ?v_1137 ?v_1116) (= tmp347 6)) (=> (and x677 ?v_1114) (= tmp347 8)) (=> (and x677 ?v_1116) (= tmp347 14)) (=> (and ?v_1616 ?v_378) (= tmp346 0)) (=> (and ?v_1616 ?v_380) (= tmp346 6)) (=> (and x701 ?v_378) (= tmp346 8)) (=> (and x701 ?v_380) (= tmp346 14)) (=> (and ?v_1201 ?v_1617) (= tmp345 0)) (=> (and ?v_1201 ?v_1619) ?v_1618) (=> (and x675 ?v_1617) ?v_1618) (=> (and x675 ?v_1619) (= tmp345 16)) (=> (and ?v_1620 ?v_314) (= tmp344 0)) (=> (and ?v_1620 ?v_316) ?v_1621) (=> (and x703 ?v_314) ?v_1621) (=> (and x703 ?v_316) (= tmp344 12)) (=> (and ?v_1622 ?v_1623) (= tmp343 0)) (=> (and ?v_1622 ?v_1625) ?v_1624) (=> (and x673 ?v_1623) ?v_1624) (=> (and x673 ?v_1625) (= tmp343 16)) (=> (and ?v_1626 ?v_1627) (= tmp342 0)) (=> (and ?v_1626 ?v_1628) (= tmp342 4)) (=> (and x705 ?v_1627) (= tmp342 2)) (=> (and x705 ?v_1628) (= tmp342 6)) (=> (and ?v_1629 ?v_1306) (= tmp341 0)) (=> (and ?v_1629 ?v_1308) ?v_1630) (=> (and x671 ?v_1306) ?v_1630) (=> (and x671 ?v_1308) (= tmp341 16)) (=> (and ?v_1631 ?v_186) (= tmp340 0)) (=> (and ?v_1631 ?v_188) (= tmp340 2)) (=> (and x707 ?v_186) (= tmp340 4)) (=> (and x707 ?v_188) (= tmp340 6)) (=> (and ?v_1632 ?v_1370) (= tmp339 0)) (=> (and ?v_1632 ?v_1372) ?v_1633) (=> (and x669 ?v_1370) ?v_1633) (=> (and x669 ?v_1372) (= tmp339 16)) (=> (and ?v_1634 ?v_122) (= tmp338 0)) (=> (and ?v_1634 ?v_124) ?v_1635) (=> (and x709 ?v_122) ?v_1635) (=> (and x709 ?v_124) (= tmp338 12)) (=> (and ?v_1636 ?v_1434) (= tmp337 0)) (=> (and ?v_1636 ?v_1436) ?v_1637) (=> (and x667 ?v_1434) ?v_1637) (=> (and x667 ?v_1436) (= tmp337 16)) (=> (and ?v_1638 ?v_58) (= tmp336 0)) (=> (and ?v_1638 ?v_60) ?v_1639) (=> (and x711 ?v_58) ?v_1639) (=> (and x711 ?v_60) (= tmp336 12)) (=> (and ?v_1521 ?v_1498) (= tmp335 0)) (=> (and ?v_1521 ?v_1500) ?v_1640) (=> (and x665 ?v_1498) ?v_1640) (=> (and x665 ?v_1500) (= tmp335 16)) (=> (and ?v_721 ?v_1641) (= tmp334 0)) (=> (and ?v_721 ?v_1642) (= tmp334 6)) (=> (and x642 ?v_1641) (= tmp334 8)) (=> (and x642 ?v_1642) (= tmp334 14)) (=> (and ?v_1643 ?v_1644) (= tmp333 0)) (=> (and ?v_1643 ?v_1646) ?v_1645) (=> (and x639 ?v_1644) ?v_1645) (=> (and x639 ?v_1646) (= tmp333 12)) (=> (and ?v_1647 ?v_1648) (= tmp332 0)) (=> (and ?v_1647 ?v_1650) ?v_1649) (=> (and x644 ?v_1648) ?v_1649) (=> (and x644 ?v_1650) (= tmp332 16)) (=> (and ?v_881 ?v_1651) (= tmp331 0)) (=> (and ?v_881 ?v_1653) ?v_1652) (=> (and x637 ?v_1651) ?v_1652) (=> (and x637 ?v_1653) (= tmp331 12)) (=> (and ?v_593 ?v_1654) (= tmp330 0)) (=> (and ?v_593 ?v_1656) ?v_1655) (=> (and x646 ?v_1654) ?v_1655) (=> (and x646 ?v_1656) (= tmp330 16)) (=> (and ?v_945 ?v_1657) (= tmp329 0)) (=> (and ?v_945 ?v_1658) (= tmp329 6)) (=> (and x635 ?v_1657) (= tmp329 8)) (=> (and x635 ?v_1658) (= tmp329 14)) (=> (and ?v_529 ?v_1659) (= tmp328 0)) (=> (and ?v_529 ?v_1660) (= tmp328 8)) (=> (and x648 ?v_1659) (= tmp328 6)) (=> (and x648 ?v_1660) (= tmp328 14)) (=> (and ?v_1661 ?v_1662) (= tmp327 0)) (=> (and ?v_1661 ?v_1664) ?v_1663) (=> (and x633 ?v_1662) ?v_1663) (=> (and x633 ?v_1664) (= tmp327 16)) (=> (and ?v_465 ?v_1665) (= tmp326 0)) (=> (and ?v_465 ?v_1667) ?v_1666) (=> (and x650 ?v_1665) ?v_1666) (=> (and x650 ?v_1667) (= tmp326 12)) (=> (and ?v_1073 ?v_1668) (= tmp325 0)) (=> (and ?v_1073 ?v_1670) ?v_1669) (=> (and x631 ?v_1668) ?v_1669) (=> (and x631 ?v_1670) (= tmp325 12)) (=> (and ?v_401 ?v_1671) (= tmp324 0)) (=> (and ?v_401 ?v_1672) (= tmp324 6)) (=> (and x652 ?v_1671) (= tmp324 2)) (=> (and x652 ?v_1672) (= tmp324 8)) (=> (and ?v_1673 ?v_1674) (= tmp323 0)) (=> (and ?v_1673 ?v_1675) (= tmp323 2)) (=> (and x629 ?v_1674) (= tmp323 4)) (=> (and x629 ?v_1675) (= tmp323 6)) (=> (and ?v_337 ?v_1676) (= tmp322 0)) (=> (and ?v_337 ?v_1678) ?v_1677) (=> (and x654 ?v_1676) ?v_1677) (=> (and x654 ?v_1678) (= tmp322 8)) (=> (and ?v_1679 ?v_1170) (= tmp321 0)) (=> (and ?v_1679 ?v_1172) ?v_1680) (=> (and x627 ?v_1170) ?v_1680) (=> (and x627 ?v_1172) (= tmp321 8)) (=> (and ?v_273 ?v_1681) (= tmp320 0)) (=> (and ?v_273 ?v_1682) (= tmp320 4)) (=> (and x656 ?v_1681) (= tmp320 2)) (=> (and x656 ?v_1682) (= tmp320 6)) (=> (and ?v_1265 ?v_1234) (= tmp319 0)) (=> (and ?v_1265 ?v_1236) (= tmp319 4)) (=> (and x625 ?v_1234) (= tmp319 6)) (=> (and x625 ?v_1236) (= tmp319 10)) (=> (and ?v_209 ?v_242) (= tmp318 0)) (=> (and ?v_209 ?v_244) (= tmp318 4)) (=> (and x658 ?v_242) (= tmp318 6)) (=> (and x658 ?v_244) (= tmp318 10)) (=> (and ?v_1329 ?v_1683) (= tmp317 0)) (=> (and ?v_1329 ?v_1684) (= tmp317 6)) (=> (and x623 ?v_1683) (= tmp317 8)) (=> (and x623 ?v_1684) (= tmp317 14)) (=> (and ?v_145 ?v_1685) (= tmp316 0)) (=> (and ?v_145 ?v_1686) (= tmp316 8)) (=> (and x660 ?v_1685) (= tmp316 6)) (=> (and x660 ?v_1686) (= tmp316 14)) (=> (and ?v_1393 ?v_1687) (= tmp315 0)) (=> (and ?v_1393 ?v_1689) ?v_1688) (=> (and x621 ?v_1687) ?v_1688) (=> (and x621 ?v_1689) (= tmp315 12)) (=> (and ?v_81 ?v_1690) (= tmp314 0)) (=> (and ?v_81 ?v_1692) ?v_1691) (=> (and x662 ?v_1690) ?v_1691) (=> (and x662 ?v_1692) (= tmp314 12)) (=> (and ?v_1457 ?v_1693) (= tmp313 0)) (=> (and ?v_1457 ?v_1694) (= tmp313 6)) (=> (and x619 ?v_1693) (= tmp313 8)) (=> (and x619 ?v_1694) (= tmp313 14)) (=> (and ?v_17 ?v_1695) (= tmp312 0)) (=> (and ?v_17 ?v_1697) ?v_1696) (=> (and x664 ?v_1695) ?v_1696) (=> (and x664 ?v_1697) (= tmp312 12)) (=> (and ?v_1698 ?v_1699) (= tmp311 0)) (=> (and ?v_1698 ?v_1701) ?v_1700) (=> (and x617 ?v_1699) ?v_1700) (=> (and x617 ?v_1701) (= tmp311 16)) (=> ?v_754 (= tmp310 0)) (=> ?v_756 (= tmp310 1)) (=> (and ?v_809 ?v_786) (= tmp309 0)) (=> (and ?v_809 ?v_788) (= tmp309 2)) (=> (and x592 ?v_786) (= tmp309 4)) (=> (and x592 ?v_788) (= tmp309 6)) (=> (and ?v_1702 ?v_722) (= tmp308 0)) (=> (and ?v_1702 ?v_724) (= tmp308 1)) (=> (and x596 ?v_722) (= tmp308 4)) (=> (and x596 ?v_724) (= tmp308 5)) (=> (and ?v_1703 ?v_850) (= tmp307 0)) (=> (and ?v_1703 ?v_852) ?v_1704) (=> (and x590 ?v_850) ?v_1704) (=> (and x590 ?v_852) (= tmp307 8)) (=> (and ?v_1705 ?v_1706) (= tmp306 0)) (=> (and ?v_1705 ?v_1708) ?v_1707) (=> (and x598 ?v_1706) ?v_1707) (=> (and x598 ?v_1708) (= tmp306 8)) (=> (and ?v_1709 ?v_914) (= tmp305 0)) (=> (and ?v_1709 ?v_916) (= tmp305 2)) (=> (and x588 ?v_914) (= tmp305 4)) (=> (and x588 ?v_916) (= tmp305 6)) (=> (and ?v_1710 ?v_594) (= tmp304 0)) (=> (and ?v_1710 ?v_596) ?v_1711) (=> (and x600 ?v_594) ?v_1711) (=> (and x600 ?v_596) (= tmp304 8)) (=> (and ?v_1001 ?v_978) (= tmp303 0)) (=> (and ?v_1001 ?v_980) ?v_1712) (=> (and x586 ?v_978) ?v_1712) (=> (and x586 ?v_980) (= tmp303 12)) (=> (and ?v_1713 ?v_530) (= tmp302 0)) (=> (and ?v_1713 ?v_532) ?v_1714) (=> (and x602 ?v_530) ?v_1714) (=> (and x602 ?v_532) (= tmp302 12)) (=> (and ?v_1715 ?v_1042) (= tmp301 0)) (=> (and ?v_1715 ?v_1044) (= tmp301 6)) (=> (and x584 ?v_1042) (= tmp301 8)) (=> (and x584 ?v_1044) (= tmp301 14)) (=> (and ?v_1716 ?v_466) (= tmp300 0)) (=> (and ?v_1716 ?v_468) ?v_1717) (=> (and x604 ?v_466) ?v_1717) (=> (and x604 ?v_468) (= tmp300 12)) (=> (and ?v_1129 ?v_1106) (= tmp299 0)) (=> (and ?v_1129 ?v_1108) ?v_1718) (=> (and x582 ?v_1106) ?v_1718) (=> (and x582 ?v_1108) (= tmp299 16)) (=> (and ?v_1719 ?v_402) (= tmp298 0)) (=> (and ?v_1719 ?v_404) ?v_1720) (=> (and x606 ?v_402) ?v_1720) (=> (and x606 ?v_404) (= tmp298 12)) (=> (and ?v_1193 ?v_1721) (= tmp297 0)) (=> (and ?v_1193 ?v_1723) ?v_1722) (=> (and x580 ?v_1721) ?v_1722) (=> (and x580 ?v_1723) (= tmp297 12)) (=> (and ?v_1724 ?v_338) (= tmp296 0)) (=> (and ?v_1724 ?v_340) (= tmp296 6)) (=> (and x608 ?v_338) (= tmp296 4)) (=> (and x608 ?v_340) (= tmp296 10)) (=> (and ?v_1725 ?v_1726) (= tmp295 0)) (=> (and ?v_1725 ?v_1728) ?v_1727) (=> (and x578 ?v_1726) ?v_1727) (=> (and x578 ?v_1728) (= tmp295 12)) (=> (and ?v_1729 ?v_274) (= tmp294 0)) (=> (and ?v_1729 ?v_276) ?v_1730) (=> (and x610 ?v_274) ?v_1730) (=> (and x610 ?v_276) (= tmp294 4)) (=> (and ?v_1731 ?v_1298) (= tmp293 0)) (=> (and ?v_1731 ?v_1300) ?v_1732) (=> (and x576 ?v_1298) ?v_1732) (=> (and x576 ?v_1300) (= tmp293 12)) (=> (and ?v_1733 ?v_178) (= tmp292 0)) (=> (and ?v_1733 ?v_180) ?v_1734) (=> (and x612 ?v_178) ?v_1734) (=> (and x612 ?v_180) (= tmp292 8)) (=> (and ?v_1735 ?v_1362) (= tmp291 0)) (=> (and ?v_1735 ?v_1364) ?v_1736) (=> (and x574 ?v_1362) ?v_1736) (=> (and x574 ?v_1364) (= tmp291 12)) (=> (and ?v_1737 ?v_114) (= tmp290 0)) (=> (and ?v_1737 ?v_116) ?v_1738) (=> (and x614 ?v_114) ?v_1738) (=> (and x614 ?v_116) (= tmp290 8)) (=> (and ?v_1739 ?v_1426) (= tmp289 0)) (=> (and ?v_1739 ?v_1428) ?v_1740) (=> (and x572 ?v_1426) ?v_1740) (=> (and x572 ?v_1428) (= tmp289 8)) (=> (and ?v_1741 ?v_50) (= tmp288 0)) (=> (and ?v_1741 ?v_52) ?v_1742) (=> (and x616 ?v_50) ?v_1742) (=> (and x616 ?v_52) (= tmp288 8)) (=> (and ?v_1513 ?v_1490) (= tmp287 0)) (=> (and ?v_1513 ?v_1492) ?v_1743) (=> (and x570 ?v_1490) ?v_1743) (=> (and x570 ?v_1492) (= tmp287 12)) (=> (and ?v_713 ?v_1744) (= tmp286 0)) (=> (and ?v_713 ?v_1746) ?v_1745) (=> (and x547 ?v_1744) ?v_1745) (=> (and x547 ?v_1746) (= tmp286 12)) (=> (and ?v_1747 ?v_1748) (= tmp285 0)) (=> (and ?v_1747 ?v_1749) (= tmp285 6)) (=> (and x544 ?v_1748) (= tmp285 4)) (=> (and x544 ?v_1749) (= tmp285 10)) (=> (and ?v_1750 ?v_1751) (= tmp284 0)) (=> (and ?v_1750 ?v_1753) ?v_1752) (=> (and x549 ?v_1751) ?v_1752) (=> (and x549 ?v_1753) (= tmp284 12)) (=> (and ?v_873 ?v_1754) (= tmp283 0)) (=> (and ?v_873 ?v_1756) ?v_1755) (=> (and x542 ?v_1754) ?v_1755) (=> (and x542 ?v_1756) (= tmp283 8)) (=> (and ?v_585 ?v_1757) (= tmp282 0)) (=> (and ?v_585 ?v_1759) ?v_1758) (=> (and x551 ?v_1757) ?v_1758) (=> (and x551 ?v_1759) (= tmp282 12)) (=> (and ?v_937 ?v_1760) (= tmp281 0)) (=> (and ?v_937 ?v_1762) ?v_1761) (=> (and x540 ?v_1760) ?v_1761) (=> (and x540 ?v_1762) (= tmp281 4)) (=> (and ?v_521 ?v_1763) (= tmp280 0)) (=> (and ?v_521 ?v_1765) ?v_1764) (=> (and x553 ?v_1763) ?v_1764) (=> (and x553 ?v_1765) (= tmp280 16)) (=> (and ?v_1766 ?v_1767) (= tmp279 0)) (=> (and ?v_1766 ?v_1769) ?v_1768) (=> (and x538 ?v_1767) ?v_1768) (=> (and x538 ?v_1769) (= tmp279 4)) (=> (and ?v_457 ?v_1770) (= tmp278 0)) (=> (and ?v_457 ?v_1771) (= tmp278 8)) (=> (and x555 ?v_1770) (= tmp278 6)) (=> (and x555 ?v_1771) (= tmp278 14)) (=> (and ?v_1065 ?v_1772) (= tmp277 0)) (=> (and ?v_1065 ?v_1774) ?v_1773) (=> (and x536 ?v_1772) ?v_1773) (=> (and x536 ?v_1774) (= tmp277 4)) (=> (and ?v_393 ?v_1775) (= tmp276 0)) (=> (and ?v_393 ?v_1777) ?v_1776) (=> (and x557 ?v_1775) ?v_1776) (=> (and x557 ?v_1777) (= tmp276 12)) (=> (and ?v_1778 ?v_1779) (= tmp275 0)) (=> (and ?v_1778 ?v_1781) ?v_1780) (=> (and x534 ?v_1779) ?v_1780) (=> (and x534 ?v_1781) (= tmp275 4)) (=> (and ?v_329 ?v_1782) (= tmp274 0)) (=> (and ?v_329 ?v_1784) ?v_1783) (=> (and x559 ?v_1782) ?v_1783) (=> (and x559 ?v_1784) (= tmp274 12)) (=> (and ?v_1785 ?v_1162) (= tmp273 0)) (=> (and ?v_1785 ?v_1164) ?v_1786) (=> (and x532 ?v_1162) ?v_1786) (=> (and x532 ?v_1164) (= tmp273 8)) (=> (and ?v_265 ?v_1787) (= tmp272 0)) (=> (and ?v_265 ?v_1789) ?v_1788) (=> (and x561 ?v_1787) ?v_1788) (=> (and x561 ?v_1789) (= tmp272 12)) (=> (and ?v_1257 ?v_1226) (= tmp271 0)) (=> (and ?v_1257 ?v_1228) ?v_1790) (=> (and x530 ?v_1226) ?v_1790) (=> (and x530 ?v_1228) (= tmp271 12)) (=> (and ?v_201 ?v_1791) (= tmp270 0)) (=> (and ?v_201 ?v_1793) ?v_1792) (=> (and x563 ?v_1791) ?v_1792) (=> (and x563 ?v_1793) (= tmp270 16)) (=> (and ?v_1321 ?v_1794) (= tmp269 0)) (=> (and ?v_1321 ?v_1795) (= tmp269 6)) (=> (and x528 ?v_1794) (= tmp269 8)) (=> (and x528 ?v_1795) (= tmp269 14)) (=> (and ?v_137 ?v_1796) (= tmp268 0)) (=> (and ?v_137 ?v_1798) ?v_1797) (=> (and x565 ?v_1796) ?v_1797) (=> (and x565 ?v_1798) (= tmp268 12)) (=> (and ?v_1385 ?v_1799) (= tmp267 0)) (=> (and ?v_1385 ?v_1801) ?v_1800) (=> (and x526 ?v_1799) ?v_1800) (=> (and x526 ?v_1801) (= tmp267 16)) (=> (and ?v_73 ?v_1802) (= tmp266 0)) (=> (and ?v_73 ?v_1804) ?v_1803) (=> (and x567 ?v_1802) ?v_1803) (=> (and x567 ?v_1804) (= tmp266 12)) (=> (and ?v_1449 ?v_1805) (= tmp265 0)) (=> (and ?v_1449 ?v_1807) ?v_1806) (=> (and x524 ?v_1805) ?v_1806) (=> (and x524 ?v_1807) (= tmp265 16)) (=> (and ?v_9 ?v_1808) (= tmp264 0)) (=> (and ?v_9 ?v_1809) (= tmp264 4)) (=> (and x569 ?v_1808) (= tmp264 6)) (=> (and x569 ?v_1809) (= tmp264 10)) (=> (and ?v_1810 ?v_1811) (= tmp263 0)) (=> (and ?v_1810 ?v_1813) ?v_1812) (=> (and x522 ?v_1811) ?v_1812) (=> (and x522 ?v_1813) (= tmp263 12)) (=> ?v_714 (= tmp262 0)) (=> ?v_716 (= tmp262 2)) (=> (and ?v_1814 ?v_746) (= tmp261 0)) (=> (and ?v_1814 ?v_748) (= tmp261 2)) (=> (and x497 ?v_746) (= tmp261 4)) (=> (and x497 ?v_748) (= tmp261 6)) (=> (and ?v_641 ?v_682) (= tmp260 0)) (=> (and ?v_641 ?v_684) ?v_1815) (=> (and x501 ?v_682) ?v_1815) (=> (and x501 ?v_684) (= tmp260 8)) (=> (and ?v_1816 ?v_1817) (= tmp259 0)) (=> (and ?v_1816 ?v_1818) (= tmp259 4)) (=> (and x495 ?v_1817) (= tmp259 2)) (=> (and x495 ?v_1818) (= tmp259 6)) (=> (and ?v_1819 ?v_618) (= tmp258 0)) (=> (and ?v_1819 ?v_620) ?v_1820) (=> (and x503 ?v_618) ?v_1820) (=> (and x503 ?v_620) (= tmp258 8)) (=> (and ?v_1821 ?v_874) (= tmp257 0)) (=> (and ?v_1821 ?v_876) (= tmp257 2)) (=> (and x493 ?v_874) (= tmp257 4)) (=> (and x493 ?v_876) (= tmp257 6)) (=> (and ?v_1822 ?v_554) (= tmp256 0)) (=> (and ?v_1822 ?v_556) ?v_1823) (=> (and x505 ?v_554) ?v_1823) (=> (and x505 ?v_556) (= tmp256 4)) (=> (and ?v_1824 ?v_938) (= tmp255 0)) (=> (and ?v_1824 ?v_940) ?v_1825) (=> (and x491 ?v_938) ?v_1825) (=> (and x491 ?v_940) (= tmp255 12)) (=> (and ?v_1826 ?v_490) (= tmp254 0)) (=> (and ?v_1826 ?v_492) (= tmp254 4)) (=> (and x507 ?v_490) (= tmp254 6)) (=> (and x507 ?v_492) (= tmp254 10)) (=> (and ?v_1827 ?v_1828) (= tmp253 0)) (=> (and ?v_1827 ?v_1830) ?v_1829) (=> (and x489 ?v_1828) ?v_1829) (=> (and x489 ?v_1830) (= tmp253 12)) (=> (and ?v_1831 ?v_426) (= tmp252 0)) (=> (and ?v_1831 ?v_428) ?v_1832) (=> (and x509 ?v_426) ?v_1832) (=> (and x509 ?v_428) (= tmp252 8)) (=> (and ?v_1833 ?v_1066) (= tmp251 0)) (=> (and ?v_1833 ?v_1068) ?v_1834) (=> (and x487 ?v_1066) ?v_1834) (=> (and x487 ?v_1068) (= tmp251 12)) (=> (and ?v_1835 ?v_362) (= tmp250 0)) (=> (and ?v_1835 ?v_364) ?v_1836) (=> (and x511 ?v_362) ?v_1836) (=> (and x511 ?v_364) (= tmp250 12)) (=> (and ?v_1153 ?v_1837) (= tmp249 0)) (=> (and ?v_1153 ?v_1838) (= tmp249 6)) (=> (and x485 ?v_1837) (= tmp249 4)) (=> (and x485 ?v_1838) (= tmp249 10)) (=> (and ?v_1839 ?v_298) (= tmp248 0)) (=> (and ?v_1839 ?v_300) ?v_1840) (=> (and x513 ?v_298) ?v_1840) (=> (and x513 ?v_300) (= tmp248 12)) (=> (and ?v_1217 ?v_1841) (= tmp247 0)) (=> (and ?v_1217 ?v_1842) (= tmp247 4)) (=> (and x483 ?v_1841) (= tmp247 2)) (=> (and x483 ?v_1842) (= tmp247 6)) (=> (and ?v_1843 ?v_234) (= tmp246 0)) (=> (and ?v_1843 ?v_236) (= tmp246 4)) (=> (and x515 ?v_234) (= tmp246 6)) (=> (and x515 ?v_236) (= tmp246 10)) (=> (and ?v_1844 ?v_1258) (= tmp245 0)) (=> (and ?v_1844 ?v_1260) (= tmp245 2)) (=> (and x481 ?v_1258) (= tmp245 4)) (=> (and x481 ?v_1260) (= tmp245 6)) (=> (and ?v_1845 ?v_170) (= tmp244 0)) (=> (and ?v_1845 ?v_172) ?v_1846) (=> (and x517 ?v_170) ?v_1846) (=> (and x517 ?v_172) (= tmp244 12)) (=> (and ?v_1847 ?v_1322) (= tmp243 0)) (=> (and ?v_1847 ?v_1324) (= tmp243 4)) (=> (and x479 ?v_1322) (= tmp243 2)) (=> (and x479 ?v_1324) (= tmp243 6)) (=> (and ?v_1848 ?v_106) (= tmp242 0)) (=> (and ?v_1848 ?v_108) (= tmp242 6)) (=> (and x519 ?v_106) (= tmp242 8)) (=> (and x519 ?v_108) (= tmp242 14)) (=> (and ?v_1849 ?v_1386) (= tmp241 0)) (=> (and ?v_1849 ?v_1388) (= tmp241 4)) (=> (and x477 ?v_1386) (= tmp241 6)) (=> (and x477 ?v_1388) (= tmp241 10)) (=> (and ?v_1850 ?v_42) (= tmp240 0)) (=> (and ?v_1850 ?v_44) ?v_1851) (=> (and x521 ?v_42) ?v_1851) (=> (and x521 ?v_44) (= tmp240 16)) (=> (and ?v_1852 ?v_1450) (= tmp239 0)) (=> (and ?v_1852 ?v_1452) (= tmp239 6)) (=> (and x475 ?v_1450) (= tmp239 4)) (=> (and x475 ?v_1452) (= tmp239 10)) (=> (and ?v_737 true) (= tmp238 0)) (=> (and x452 true) (= tmp238 4)) (=> (and ?v_1853 ?v_1854) (= tmp237 0)) (=> (and ?v_1853 ?v_1856) ?v_1855) (=> (and x450 ?v_1854) ?v_1855) (=> (and x450 ?v_1856) (= tmp237 8)) (=> (and ?v_673 ?v_1857) (= tmp236 0)) (=> (and ?v_673 ?v_1858) (= tmp236 2)) (=> (and x454 ?v_1857) (= tmp236 1)) (=> (and x454 ?v_1858) (= tmp236 3)) (=> (and ?v_865 ?v_1859) (= tmp235 0)) (=> (and ?v_865 ?v_1861) ?v_1860) (=> (and x448 ?v_1859) ?v_1860) (=> (and x448 ?v_1861) (= tmp235 8)) (=> (and ?v_577 ?v_1862) (= tmp234 0)) (=> (and ?v_577 ?v_1863) (= tmp234 2)) (=> (and x456 ?v_1862) (= tmp234 4)) (=> (and x456 ?v_1863) (= tmp234 6)) (=> (and ?v_929 ?v_1864) (= tmp233 0)) (=> (and ?v_929 ?v_1866) ?v_1865) (=> (and x446 ?v_1864) ?v_1865) (=> (and x446 ?v_1866) (= tmp233 8)) (=> (and ?v_513 ?v_1867) (= tmp232 0)) (=> (and ?v_513 ?v_1868) (= tmp232 4)) (=> (and x458 ?v_1867) (= tmp232 6)) (=> (and x458 ?v_1868) (= tmp232 10)) (=> (and ?v_1869 ?v_1870) (= tmp231 0)) (=> (and ?v_1869 ?v_1872) ?v_1871) (=> (and x444 ?v_1870) ?v_1871) (=> (and x444 ?v_1872) (= tmp231 8)) (=> (and ?v_449 ?v_1873) (= tmp230 0)) (=> (and ?v_449 ?v_1875) ?v_1874) (=> (and x460 ?v_1873) ?v_1874) (=> (and x460 ?v_1875) (= tmp230 12)) (=> (and ?v_1057 ?v_1876) (= tmp229 0)) (=> (and ?v_1057 ?v_1878) ?v_1877) (=> (and x442 ?v_1876) ?v_1877) (=> (and x442 ?v_1878) (= tmp229 4)) (=> (and ?v_385 ?v_1879) (= tmp228 0)) (=> (and ?v_385 ?v_1880) (= tmp228 6)) (=> (and x462 ?v_1879) (= tmp228 8)) (=> (and x462 ?v_1880) (= tmp228 14)) (=> (and ?v_1881 ?v_1882) (= tmp227 0)) (=> (and ?v_1881 ?v_1884) ?v_1883) (=> (and x440 ?v_1882) ?v_1883) (=> (and x440 ?v_1884) (= tmp227 4)) (=> (and ?v_321 ?v_1885) (= tmp226 0)) (=> (and ?v_321 ?v_1887) ?v_1886) (=> (and x464 ?v_1885) ?v_1886) (=> (and x464 ?v_1887) (= tmp226 16)) (=> (and ?v_1888 ?v_1154) (= tmp225 0)) (=> (and ?v_1888 ?v_1156) ?v_1889) (=> (and x438 ?v_1154) ?v_1889) (=> (and x438 ?v_1156) (= tmp225 8)) (=> (and ?v_257 ?v_1890) (= tmp224 0)) (=> (and ?v_257 ?v_1892) ?v_1891) (=> (and x466 ?v_1890) ?v_1891) (=> (and x466 ?v_1892) (= tmp224 16)) (=> (and ?v_1249 ?v_1218) (= tmp223 0)) (=> (and ?v_1249 ?v_1220) ?v_1893) (=> (and x436 ?v_1218) ?v_1893) (=> (and x436 ?v_1220) (= tmp223 8)) (=> (and ?v_193 ?v_1894) (= tmp222 0)) (=> (and ?v_193 ?v_1896) ?v_1895) (=> (and x468 ?v_1894) ?v_1895) (=> (and x468 ?v_1896) (= tmp222 16)) (=> (and ?v_1313 ?v_1897) (= tmp221 0)) (=> (and ?v_1313 ?v_1899) ?v_1898) (=> (and x434 ?v_1897) ?v_1898) (=> (and x434 ?v_1899) (= tmp221 8)) (=> (and ?v_129 ?v_1900) (= tmp220 0)) (=> (and ?v_129 ?v_1902) ?v_1901) (=> (and x470 ?v_1900) ?v_1901) (=> (and x470 ?v_1902) (= tmp220 12)) (=> (and ?v_1377 ?v_1903) (= tmp219 0)) (=> (and ?v_1377 ?v_1905) ?v_1904) (=> (and x432 ?v_1903) ?v_1904) (=> (and x432 ?v_1905) (= tmp219 8)) (=> (and ?v_65 ?v_1906) (= tmp218 0)) (=> (and ?v_65 ?v_1908) ?v_1907) (=> (and x472 ?v_1906) ?v_1907) (=> (and x472 ?v_1908) (= tmp218 12)) (=> (and ?v_1441 ?v_1909) (= tmp217 0)) (=> (and ?v_1441 ?v_1910) (= tmp217 4)) (=> (and x430 ?v_1909) (= tmp217 2)) (=> (and x430 ?v_1910) (= tmp217 6)) (=> (and ?v_1 ?v_1911) (= tmp216 0)) (=> (and ?v_1 ?v_1912) (= tmp216 6)) (=> (and x474 ?v_1911) (= tmp216 4)) (=> (and x474 ?v_1912) (= tmp216 10)) (=> (and ?v_1505 ?v_1913) (= tmp215 0)) (=> (and ?v_1505 ?v_1914) (= tmp215 2)) (=> (and x428 ?v_1913) (= tmp215 1)) (=> (and x428 ?v_1914) (= tmp215 3)) (=> (and ?v_1915 ?v_738) (= tmp214 0)) (=> (and ?v_1915 ?v_740) (= tmp214 6)) (=> (and x405 ?v_738) (= tmp214 4)) (=> (and x405 ?v_740) (= tmp214 10)) (=> (and ?v_1916 ?v_770) (= tmp213 0)) (=> (and ?v_1916 ?v_772) ?v_1917) (=> (and x402 ?v_770) ?v_1917) (=> (and x402 ?v_772) (= tmp213 12)) (=> (and ?v_1918 ?v_674) (= tmp212 0)) (=> (and ?v_1918 ?v_676) (= tmp212 4)) (=> (and x407 ?v_674) (= tmp212 2)) (=> (and x407 ?v_676) (= tmp212 6)) (=> (and ?v_1919 ?v_834) (= tmp211 0)) (=> (and ?v_1919 ?v_836) (= tmp211 6)) (=> (and x400 ?v_834) (= tmp211 4)) (=> (and x400 ?v_836) (= tmp211 10)) (=> (and ?v_1920 ?v_610) (= tmp210 0)) (=> (and ?v_1920 ?v_612) (= tmp210 2)) (=> (and x409 ?v_610) (= tmp210 4)) (=> (and x409 ?v_612) (= tmp210 6)) (=> (and ?v_1921 ?v_898) (= tmp209 0)) (=> (and ?v_1921 ?v_900) ?v_1922) (=> (and x398 ?v_898) ?v_1922) (=> (and x398 ?v_900) (= tmp209 8)) (=> (and ?v_1923 ?v_546) (= tmp208 0)) (=> (and ?v_1923 ?v_548) ?v_1924) (=> (and x411 ?v_546) ?v_1924) (=> (and x411 ?v_548) (= tmp208 8)) (=> (and ?v_1925 ?v_962) (= tmp207 0)) (=> (and ?v_1925 ?v_964) ?v_1926) (=> (and x396 ?v_962) ?v_1926) (=> (and x396 ?v_964) (= tmp207 8)) (=> (and ?v_1927 ?v_482) (= tmp206 0)) (=> (and ?v_1927 ?v_484) ?v_1928) (=> (and x413 ?v_482) ?v_1928) (=> (and x413 ?v_484) (= tmp206 8)) (=> (and ?v_1929 ?v_1026) (= tmp205 0)) (=> (and ?v_1929 ?v_1028) ?v_1930) (=> (and x394 ?v_1026) ?v_1930) (=> (and x394 ?v_1028) (= tmp205 8)) (=> (and ?v_1931 ?v_418) (= tmp204 0)) (=> (and ?v_1931 ?v_420) ?v_1932) (=> (and x415 ?v_418) ?v_1932) (=> (and x415 ?v_420) (= tmp204 8)) (=> (and ?v_1933 ?v_1090) (= tmp203 0)) (=> (and ?v_1933 ?v_1092) ?v_1934) (=> (and x392 ?v_1090) ?v_1934) (=> (and x392 ?v_1092) (= tmp203 4)) (=> (and ?v_1935 ?v_354) (= tmp202 0)) (=> (and ?v_1935 ?v_356) (= tmp202 4)) (=> (and x417 ?v_354) (= tmp202 6)) (=> (and x417 ?v_356) (= tmp202 10)) (=> (and ?v_1936 ?v_1158) (= tmp201 0)) (=> (and ?v_1936 ?v_1160) ?v_1937) (=> (and x390 ?v_1158) ?v_1937) (=> (and x390 ?v_1160) (= tmp201 4)) (=> (and ?v_1938 ?v_290) (= tmp200 0)) (=> (and ?v_1938 ?v_292) ?v_1939) (=> (and x419 ?v_290) ?v_1939) (=> (and x419 ?v_292) (= tmp200 12)) (=> (and ?v_1940 ?v_1222) (= tmp199 0)) (=> (and ?v_1940 ?v_1224) ?v_1941) (=> (and x388 ?v_1222) ?v_1941) (=> (and x388 ?v_1224) (= tmp199 4)) (=> (and ?v_1942 ?v_226) (= tmp198 0)) (=> (and ?v_1942 ?v_228) ?v_1943) (=> (and x421 ?v_226) ?v_1943) (=> (and x421 ?v_228) (= tmp198 12)) (=> (and ?v_1944 ?v_1282) (= tmp197 0)) (=> (and ?v_1944 ?v_1284) ?v_1945) (=> (and x386 ?v_1282) ?v_1945) (=> (and x386 ?v_1284) (= tmp197 8)) (=> (and ?v_1946 ?v_162) (= tmp196 0)) (=> (and ?v_1946 ?v_164) (= tmp196 6)) (=> (and x423 ?v_162) (= tmp196 4)) (=> (and x423 ?v_164) (= tmp196 10)) (=> (and ?v_1947 ?v_1346) (= tmp195 0)) (=> (and ?v_1947 ?v_1348) ?v_1948) (=> (and x384 ?v_1346) ?v_1948) (=> (and x384 ?v_1348) (= tmp195 12)) (=> (and ?v_1949 ?v_98) (= tmp194 0)) (=> (and ?v_1949 ?v_100) ?v_1950) (=> (and x425 ?v_98) ?v_1950) (=> (and x425 ?v_100) (= tmp194 8)) (=> (and ?v_1951 ?v_1410) (= tmp193 0)) (=> (and ?v_1951 ?v_1412) ?v_1952) (=> (and x382 ?v_1410) ?v_1952) (=> (and x382 ?v_1412) (= tmp193 12)) (=> (and ?v_1953 ?v_34) (= tmp192 0)) (=> (and ?v_1953 ?v_36) ?v_1954) (=> (and x427 ?v_34) ?v_1954) (=> (and x427 ?v_36) (= tmp192 8)) (=> (and ?v_1955 ?v_1474) (= tmp191 0)) (=> (and ?v_1955 ?v_1476) ?v_1956) (=> (and x380 ?v_1474) ?v_1956) (=> (and x380 ?v_1476) (= tmp191 8)) (=> (and ?v_1957 ?v_742) (= tmp190 0)) (=> (and ?v_1957 ?v_744) ?v_1958) (=> (and x357 ?v_742) ?v_1958) (=> (and x357 ?v_744) (= tmp190 4)) (=> (and ?v_805 ?v_774) (= tmp189 0)) (=> (and ?v_805 ?v_776) ?v_1959) (=> (and x354 ?v_774) ?v_1959) (=> (and x354 ?v_776) (= tmp189 4)) (=> (and ?v_1960 ?v_678) (= tmp188 0)) (=> (and ?v_1960 ?v_680) ?v_1961) (=> (and x359 ?v_678) ?v_1961) (=> (and x359 ?v_680) (= tmp188 8)) (=> (and ?v_1962 ?v_838) (= tmp187 0)) (=> (and ?v_1962 ?v_840) ?v_1963) (=> (and x352 ?v_838) ?v_1963) (=> (and x352 ?v_840) (= tmp187 8)) (=> (and ?v_1964 ?v_614) (= tmp186 0)) (=> (and ?v_1964 ?v_616) ?v_1965) (=> (and x361 ?v_614) ?v_1965) (=> (and x361 ?v_616) (= tmp186 8)) (=> (and ?v_1966 ?v_902) (= tmp185 0)) (=> (and ?v_1966 ?v_904) ?v_1967) (=> (and x350 ?v_902) ?v_1967) (=> (and x350 ?v_904) (= tmp185 12)) (=> (and ?v_1968 ?v_550) (= tmp184 0)) (=> (and ?v_1968 ?v_552) ?v_1969) (=> (and x363 ?v_550) ?v_1969) (=> (and x363 ?v_552) (= tmp184 8)) (=> (and ?v_997 ?v_966) (= tmp183 0)) (=> (and ?v_997 ?v_968) ?v_1970) (=> (and x348 ?v_966) ?v_1970) (=> (and x348 ?v_968) (= tmp183 12)) (=> (and ?v_1971 ?v_486) (= tmp182 0)) (=> (and ?v_1971 ?v_488) (= tmp182 4)) (=> (and x365 ?v_486) (= tmp182 6)) (=> (and x365 ?v_488) (= tmp182 10)) (=> (and ?v_1972 ?v_1030) (= tmp181 0)) (=> (and ?v_1972 ?v_1032) ?v_1973) (=> (and x346 ?v_1030) ?v_1973) (=> (and x346 ?v_1032) (= tmp181 16)) (=> (and ?v_1974 ?v_422) (= tmp180 0)) (=> (and ?v_1974 ?v_424) ?v_1975) (=> (and x367 ?v_422) ?v_1975) (=> (and x367 ?v_424) (= tmp180 12)) (=> (and ?v_1125 ?v_1094) (= tmp179 0)) (=> (and ?v_1125 ?v_1096) ?v_1976) (=> (and x344 ?v_1094) ?v_1976) (=> (and x344 ?v_1096) (= tmp179 16)) (=> (and ?v_1977 ?v_358) (= tmp178 0)) (=> (and ?v_1977 ?v_360) ?v_1978) (=> (and x369 ?v_358) ?v_1978) (=> (and x369 ?v_360) (= tmp178 12)) (=> (and ?v_1189 ?v_1979) (= tmp177 0)) (=> (and ?v_1189 ?v_1980) (= tmp177 8)) (=> (and x342 ?v_1979) (= tmp177 6)) (=> (and x342 ?v_1980) (= tmp177 14)) (=> (and ?v_1981 ?v_294) (= tmp176 0)) (=> (and ?v_1981 ?v_296) ?v_1982) (=> (and x371 ?v_294) ?v_1982) (=> (and x371 ?v_296) (= tmp176 12)) (=> (and ?v_1983 ?v_1984) (= tmp175 0)) (=> (and ?v_1983 ?v_1986) ?v_1985) (=> (and x340 ?v_1984) ?v_1985) (=> (and x340 ?v_1986) (= tmp175 12)) (=> (and ?v_1987 ?v_230) (= tmp174 0)) (=> (and ?v_1987 ?v_232) ?v_1988) (=> (and x373 ?v_230) ?v_1988) (=> (and x373 ?v_232) (= tmp174 12)) (=> (and ?v_1989 ?v_1286) (= tmp173 0)) (=> (and ?v_1989 ?v_1288) (= tmp173 6)) (=> (and x338 ?v_1286) (= tmp173 4)) (=> (and x338 ?v_1288) (= tmp173 10)) (=> (and ?v_1990 ?v_166) (= tmp172 0)) (=> (and ?v_1990 ?v_168) (= tmp172 6)) (=> (and x375 ?v_166) (= tmp172 4)) (=> (and x375 ?v_168) (= tmp172 10)) (=> (and ?v_1991 ?v_1350) (= tmp171 0)) (=> (and ?v_1991 ?v_1352) (= tmp171 4)) (=> (and x336 ?v_1350) (= tmp171 2)) (=> (and x336 ?v_1352) (= tmp171 6)) (=> (and ?v_1992 ?v_102) (= tmp170 0)) (=> (and ?v_1992 ?v_104) (= tmp170 4)) (=> (and x377 ?v_102) (= tmp170 2)) (=> (and x377 ?v_104) (= tmp170 6)) (=> (and ?v_1993 ?v_1414) (= tmp169 0)) (=> (and ?v_1993 ?v_1416) ?v_1994) (=> (and x334 ?v_1414) ?v_1994) (=> (and x334 ?v_1416) (= tmp169 8)) (=> (and ?v_1995 ?v_38) (= tmp168 0)) (=> (and ?v_1995 ?v_40) ?v_1996) (=> (and x379 ?v_38) ?v_1996) (=> (and x379 ?v_40) (= tmp168 2)) (=> (and ?v_1997 ?v_1478) (= tmp167 0)) (=> (and ?v_1997 ?v_1480) ?v_1998) (=> (and x332 ?v_1478) ?v_1998) (=> (and x332 ?v_1480) (= tmp167 8)) (=> (and ?v_709 ?v_1999) (= tmp166 0)) (=> (and ?v_709 ?v_2001) ?v_2000) (=> (and x309 ?v_1999) ?v_2000) (=> (and x309 ?v_2001) (= tmp166 8)) (=> (and ?v_2002 ?v_2003) (= tmp165 0)) (=> (and ?v_2002 ?v_2005) ?v_2004) (=> (and x306 ?v_2003) ?v_2004) (=> (and x306 ?v_2005) (= tmp165 8)) (=> (and ?v_645 ?v_2006) (= tmp164 0)) (=> (and ?v_645 ?v_2008) ?v_2007) (=> (and x311 ?v_2006) ?v_2007) (=> (and x311 ?v_2008) (= tmp164 8)) (=> (and ?v_869 ?v_2009) (= tmp163 0)) (=> (and ?v_869 ?v_2010) (= tmp163 4)) (=> (and x304 ?v_2009) (= tmp163 6)) (=> (and x304 ?v_2010) (= tmp163 10)) (=> (and ?v_581 ?v_2011) (= tmp162 0)) (=> (and ?v_581 ?v_2013) ?v_2012) (=> (and x313 ?v_2011) ?v_2012) (=> (and x313 ?v_2013) (= tmp162 8)) (=> (and ?v_933 ?v_2014) (= tmp161 0)) (=> (and ?v_933 ?v_2016) ?v_2015) (=> (and x302 ?v_2014) ?v_2015) (=> (and x302 ?v_2016) (= tmp161 12)) (=> (and ?v_517 ?v_2017) (= tmp160 0)) (=> (and ?v_517 ?v_2019) ?v_2018) (=> (and x315 ?v_2017) ?v_2018) (=> (and x315 ?v_2019) (= tmp160 12)) (=> (and ?v_2020 ?v_2021) (= tmp159 0)) (=> (and ?v_2020 ?v_2023) ?v_2022) (=> (and x300 ?v_2021) ?v_2022) (=> (and x300 ?v_2023) (= tmp159 12)) (=> (and ?v_453 ?v_2024) (= tmp158 0)) (=> (and ?v_453 ?v_2026) ?v_2025) (=> (and x317 ?v_2024) ?v_2025) (=> (and x317 ?v_2026) (= tmp158 12)) (=> (and ?v_1061 ?v_2027) (= tmp157 0)) (=> (and ?v_1061 ?v_2028) (= tmp157 6)) (=> (and x298 ?v_2027) (= tmp157 4)) (=> (and x298 ?v_2028) (= tmp157 10)) (=> (and ?v_389 ?v_2029) (= tmp156 0)) (=> (and ?v_389 ?v_2031) ?v_2030) (=> (and x319 ?v_2029) ?v_2030) (=> (and x319 ?v_2031) (= tmp156 12)) (=> (and ?v_2032 ?v_2033) (= tmp155 0)) (=> (and ?v_2032 ?v_2035) ?v_2034) (=> (and x296 ?v_2033) ?v_2034) (=> (and x296 ?v_2035) (= tmp155 8)) (=> (and ?v_325 ?v_2036) (= tmp154 0)) (=> (and ?v_325 ?v_2038) ?v_2037) (=> (and x321 ?v_2036) ?v_2037) (=> (and x321 ?v_2038) (= tmp154 12)) (=> (and ?v_2039 ?v_1166) (= tmp153 0)) (=> (and ?v_2039 ?v_1168) ?v_2040) (=> (and x294 ?v_1166) ?v_2040) (=> (and x294 ?v_1168) (= tmp153 8)) (=> (and ?v_261 ?v_2041) (= tmp152 0)) (=> (and ?v_261 ?v_2043) ?v_2042) (=> (and x323 ?v_2041) ?v_2042) (=> (and x323 ?v_2043) (= tmp152 8)) (=> (and ?v_1253 ?v_1230) (= tmp151 0)) (=> (and ?v_1253 ?v_1232) (= tmp151 6)) (=> (and x292 ?v_1230) (= tmp151 4)) (=> (and x292 ?v_1232) (= tmp151 10)) (=> (and ?v_197 ?v_2044) (= tmp150 0)) (=> (and ?v_197 ?v_2046) ?v_2045) (=> (and x325 ?v_2044) ?v_2045) (=> (and x325 ?v_2046) (= tmp150 8)) (=> (and ?v_1317 ?v_2047) (= tmp149 0)) (=> (and ?v_1317 ?v_2048) (= tmp149 4)) (=> (and x290 ?v_2047) (= tmp149 2)) (=> (and x290 ?v_2048) (= tmp149 6)) (=> (and ?v_133 ?v_2049) (= tmp148 0)) (=> (and ?v_133 ?v_2051) ?v_2050) (=> (and x327 ?v_2049) ?v_2050) (=> (and x327 ?v_2051) (= tmp148 8)) (=> (and ?v_1381 ?v_2052) (= tmp147 0)) (=> (and ?v_1381 ?v_2053) (= tmp147 1)) (=> (and x288 ?v_2052) (= tmp147 2)) (=> (and x288 ?v_2053) (= tmp147 3)) (=> (and ?v_69 ?v_2054) (= tmp146 0)) (=> (and ?v_69 ?v_2056) ?v_2055) (=> (and x329 ?v_2054) ?v_2055) (=> (and x329 ?v_2056) (= tmp146 8)) (=> (and ?v_1445 ?v_2057) (= tmp145 0)) (=> (and ?v_1445 ?v_2059) ?v_2058) (=> (and x286 ?v_2057) ?v_2058) (=> (and x286 ?v_2059) (= tmp145 8)) (=> (and ?v_5 ?v_2060) (= tmp144 0)) (=> (and ?v_5 ?v_2062) ?v_2061) (=> (and x331 ?v_2060) ?v_2061) (=> (and x331 ?v_2062) (= tmp144 8)) (=> (and ?v_1509 ?v_2063) (= tmp143 0)) (=> (and ?v_1509 ?v_2065) ?v_2064) (=> (and x284 ?v_2063) ?v_2064) (=> (and x284 ?v_2065) (= tmp143 8)) (=> (and ?v_2066 ?v_686) (= tmp142 0)) (=> (and ?v_2066 ?v_688) ?v_2067) (=> (and x263 ?v_686) ?v_2067) (=> (and x263 ?v_688) (= tmp142 4)) (=> (and ?v_2068 ?v_718) (= tmp141 0)) (=> (and ?v_2068 ?v_720) ?v_2069) (=> (and x260 ?v_718) ?v_2069) (=> (and x260 ?v_720) (= tmp141 2)) (=> (and ?v_2070 ?v_622) (= tmp140 0)) (=> (and ?v_2070 ?v_624) ?v_2071) (=> (and x265 ?v_622) ?v_2071) (=> (and x265 ?v_624) (= tmp140 8)) (=> (and ?v_813 ?v_782) (= tmp139 0)) (=> (and ?v_813 ?v_784) ?v_2072) (=> (and x258 ?v_782) ?v_2072) (=> (and x258 ?v_784) (= tmp139 4)) (=> (and ?v_2073 ?v_558) (= tmp138 0)) (=> (and ?v_2073 ?v_560) ?v_2074) (=> (and x267 ?v_558) ?v_2074) (=> (and x267 ?v_560) (= tmp138 8)) (=> (and ?v_2075 ?v_846) (= tmp137 0)) (=> (and ?v_2075 ?v_848) ?v_2076) (=> (and x256 ?v_846) ?v_2076) (=> (and x256 ?v_848) (= tmp137 4)) (=> (and ?v_2077 ?v_494) (= tmp136 0)) (=> (and ?v_2077 ?v_496) ?v_2078) (=> (and x269 ?v_494) ?v_2078) (=> (and x269 ?v_496) (= tmp136 8)) (=> (and ?v_2079 ?v_910) (= tmp135 0)) (=> (and ?v_2079 ?v_912) ?v_2080) (=> (and x254 ?v_910) ?v_2080) (=> (and x254 ?v_912) (= tmp135 4)) (=> (and ?v_2081 ?v_430) (= tmp134 0)) (=> (and ?v_2081 ?v_432) ?v_2082) (=> (and x271 ?v_430) ?v_2082) (=> (and x271 ?v_432) (= tmp134 8)) (=> (and ?v_1005 ?v_974) (= tmp133 0)) (=> (and ?v_1005 ?v_976) ?v_2083) (=> (and x252 ?v_974) ?v_2083) (=> (and x252 ?v_976) (= tmp133 4)) (=> (and ?v_2084 ?v_366) (= tmp132 0)) (=> (and ?v_2084 ?v_368) ?v_2085) (=> (and x273 ?v_366) ?v_2085) (=> (and x273 ?v_368) (= tmp132 8)) (=> (and ?v_2086 ?v_1038) (= tmp131 0)) (=> (and ?v_2086 ?v_1040) ?v_2087) (=> (and x250 ?v_1038) ?v_2087) (=> (and x250 ?v_1040) (= tmp131 2)) (=> (and ?v_2088 ?v_302) (= tmp130 0)) (=> (and ?v_2088 ?v_304) ?v_2089) (=> (and x275 ?v_302) ?v_2089) (=> (and x275 ?v_304) (= tmp130 4)) (=> (and ?v_2090 ?v_1102) (= tmp129 0)) (=> (and ?v_2090 ?v_1104) ?v_2091) (=> (and x248 ?v_1102) ?v_2091) (=> (and x248 ?v_1104) (= tmp129 2)) (=> (and ?v_2092 ?v_238) (= tmp128 0)) (=> (and ?v_2092 ?v_240) (= tmp128 2)) (=> (and x277 ?v_238) (= tmp128 4)) (=> (and x277 ?v_240) (= tmp128 6)) (=> (and ?v_2093 ?v_1294) (= tmp127 0)) (=> (and ?v_2093 ?v_1296) ?v_2094) (=> (and x246 ?v_1294) ?v_2094) (=> (and x246 ?v_1296) (= tmp127 2)) (=> (and ?v_2095 ?v_174) (= tmp126 0)) (=> (and ?v_2095 ?v_176) ?v_2096) (=> (and x279 ?v_174) ?v_2096) (=> (and x279 ?v_176) (= tmp126 8)) (=> (and ?v_2097 ?v_1358) (= tmp125 0)) (=> (and ?v_2097 ?v_1360) (= tmp125 1)) (=> (and x244 ?v_1358) (= tmp125 2)) (=> (and x244 ?v_1360) (= tmp125 3)) (=> (and ?v_2098 ?v_110) (= tmp124 0)) (=> (and ?v_2098 ?v_112) ?v_2099) (=> (and x281 ?v_110) ?v_2099) (=> (and x281 ?v_112) (= tmp124 12)) (=> (and ?v_2100 ?v_1422) (= tmp123 0)) (=> (and ?v_2100 ?v_1424) ?v_2101) (=> (and x242 ?v_1422) ?v_2101) (=> (and x242 ?v_1424) (= tmp123 4)) (=> (and ?v_2102 ?v_46) (= tmp122 0)) (=> (and ?v_2102 ?v_48) ?v_2103) (=> (and x283 ?v_46) ?v_2103) (=> (and x283 ?v_48) (= tmp122 12)) (=> (and ?v_2104 ?v_1486) (= tmp121 0)) (=> (and ?v_2104 ?v_1488) ?v_2105) (=> (and x240 ?v_1486) ?v_2105) (=> (and x240 ?v_1488) (= tmp121 4)) (=> (and ?v_717 ?v_2106) (= tmp120 0)) (=> (and ?v_717 ?v_2107) (= tmp120 2)) (=> (and x217 ?v_2106) (= tmp120 1)) (=> (and x217 ?v_2107) (= tmp120 3)) (=> (and ?v_2108 ?v_2109) (= tmp119 0)) (=> (and ?v_2108 ?v_2111) ?v_2110) (=> (and x214 ?v_2109) ?v_2110) (=> (and x214 ?v_2111) (= tmp119 4)) (=> (and ?v_653 ?v_2112) (= tmp118 0)) (=> (and ?v_653 ?v_2113) (= tmp118 1)) (=> (and x219 ?v_2112) (= tmp118 2)) (=> (and x219 ?v_2113) (= tmp118 3)) (=> (and ?v_877 ?v_2114) (= tmp117 0)) (=> (and ?v_877 ?v_2116) ?v_2115) (=> (and x212 ?v_2114) ?v_2115) (=> (and x212 ?v_2116) (= tmp117 8)) (=> (and ?v_589 ?v_2117) (= tmp116 0)) (=> (and ?v_589 ?v_2119) ?v_2118) (=> (and x221 ?v_2117) ?v_2118) (=> (and x221 ?v_2119) (= tmp116 4)) (=> (and ?v_941 ?v_2120) (= tmp115 0)) (=> (and ?v_941 ?v_2121) (= tmp115 4)) (=> (and x210 ?v_2120) (= tmp115 6)) (=> (and x210 ?v_2121) (= tmp115 10)) (=> (and ?v_525 ?v_2122) (= tmp114 0)) (=> (and ?v_525 ?v_2124) ?v_2123) (=> (and x223 ?v_2122) ?v_2123) (=> (and x223 ?v_2124) (= tmp114 4)) (=> (and ?v_2125 ?v_2126) (= tmp113 0)) (=> (and ?v_2125 ?v_2128) ?v_2127) (=> (and x208 ?v_2126) ?v_2127) (=> (and x208 ?v_2128) (= tmp113 12)) (=> (and ?v_461 ?v_2129) (= tmp112 0)) (=> (and ?v_461 ?v_2131) ?v_2130) (=> (and x225 ?v_2129) ?v_2130) (=> (and x225 ?v_2131) (= tmp112 4)) (=> (and ?v_1069 ?v_2132) (= tmp111 0)) (=> (and ?v_1069 ?v_2134) ?v_2133) (=> (and x206 ?v_2132) ?v_2133) (=> (and x206 ?v_2134) (= tmp111 12)) (=> (and ?v_397 ?v_2135) (= tmp110 0)) (=> (and ?v_397 ?v_2137) ?v_2136) (=> (and x227 ?v_2135) ?v_2136) (=> (and x227 ?v_2137) (= tmp110 4)) (=> (and ?v_1133 ?v_2138) (= tmp109 0)) (=> (and ?v_1133 ?v_2140) ?v_2139) (=> (and x204 ?v_2138) ?v_2139) (=> (and x204 ?v_2140) (= tmp109 12)) (=> (and ?v_333 ?v_2141) (= tmp108 0)) (=> (and ?v_333 ?v_2143) ?v_2142) (=> (and x229 ?v_2141) ?v_2142) (=> (and x229 ?v_2143) (= tmp108 4)) (=> (and ?v_1197 ?v_2144) (= tmp107 0)) (=> (and ?v_1197 ?v_2146) ?v_2145) (=> (and x202 ?v_2144) ?v_2145) (=> (and x202 ?v_2146) (= tmp107 12)) (=> (and ?v_269 ?v_2147) (= tmp106 0)) (=> (and ?v_269 ?v_2149) ?v_2148) (=> (and x231 ?v_2147) ?v_2148) (=> (and x231 ?v_2149) (= tmp106 4)) (=> (and ?v_1261 ?v_2150) (= tmp105 0)) (=> (and ?v_1261 ?v_2152) ?v_2151) (=> (and x200 ?v_2150) ?v_2151) (=> (and x200 ?v_2152) (= tmp105 8)) (=> (and ?v_205 ?v_2153) (= tmp104 0)) (=> (and ?v_205 ?v_2155) ?v_2154) (=> (and x233 ?v_2153) ?v_2154) (=> (and x233 ?v_2155) (= tmp104 4)) (=> (and ?v_1325 ?v_2156) (= tmp103 0)) (=> (and ?v_1325 ?v_2158) ?v_2157) (=> (and x198 ?v_2156) ?v_2157) (=> (and x198 ?v_2158) (= tmp103 8)) (=> (and ?v_141 ?v_2159) (= tmp102 0)) (=> (and ?v_141 ?v_2161) ?v_2160) (=> (and x235 ?v_2159) ?v_2160) (=> (and x235 ?v_2161) (= tmp102 4)) (=> (and ?v_1389 ?v_2162) (= tmp101 0)) (=> (and ?v_1389 ?v_2164) ?v_2163) (=> (and x196 ?v_2162) ?v_2163) (=> (and x196 ?v_2164) (= tmp101 8)) (=> (and ?v_77 ?v_2165) (= tmp100 0)) (=> (and ?v_77 ?v_2167) ?v_2166) (=> (and x237 ?v_2165) ?v_2166) (=> (and x237 ?v_2167) (= tmp100 4)) (=> (and ?v_1453 ?v_2168) (= tmp99 0)) (=> (and ?v_1453 ?v_2170) ?v_2169) (=> (and x194 ?v_2168) ?v_2169) (=> (and x194 ?v_2170) (= tmp99 12)) (=> (and ?v_13 ?v_2171) (= tmp98 0)) (=> (and ?v_13 ?v_2173) ?v_2172) (=> (and x239 ?v_2171) ?v_2172) (=> (and x239 ?v_2173) (= tmp98 4)) (=> (and ?v_1517 ?v_2174) (= tmp97 0)) (=> (and ?v_1517 ?v_2176) ?v_2175) (=> (and x192 ?v_2174) ?v_2175) (=> (and x192 ?v_2176) (= tmp97 12)) (=> (and ?v_2177 ?v_758) (= tmp96 0)) (=> (and ?v_2177 ?v_760) ?v_2178) (=> (and x169 ?v_758) ?v_2178) (=> (and x169 ?v_760) (= tmp96 8)) (=> (and ?v_821 ?v_790) (= tmp95 0)) (=> (and ?v_821 ?v_792) ?v_2179) (=> (and x166 ?v_790) ?v_2179) (=> (and x166 ?v_792) (= tmp95 8)) (=> (and ?v_2180 ?v_694) (= tmp94 0)) (=> (and ?v_2180 ?v_696) (= tmp94 6)) (=> (and x171 ?v_694) (= tmp94 4)) (=> (and x171 ?v_696) (= tmp94 10)) (=> (and ?v_2181 ?v_854) (= tmp93 0)) (=> (and ?v_2181 ?v_856) ?v_2182) (=> (and x164 ?v_854) ?v_2182) (=> (and x164 ?v_856) (= tmp93 12)) (=> (and ?v_2183 ?v_630) (= tmp92 0)) (=> (and ?v_2183 ?v_632) ?v_2184) (=> (and x173 ?v_630) ?v_2184) (=> (and x173 ?v_632) (= tmp92 8)) (=> (and ?v_2185 ?v_918) (= tmp91 0)) (=> (and ?v_2185 ?v_920) ?v_2186) (=> (and x162 ?v_918) ?v_2186) (=> (and x162 ?v_920) (= tmp91 12)) (=> (and ?v_2187 ?v_566) (= tmp90 0)) (=> (and ?v_2187 ?v_568) ?v_2188) (=> (and x175 ?v_566) ?v_2188) (=> (and x175 ?v_568) (= tmp90 4)) (=> (and ?v_1013 ?v_982) (= tmp89 0)) (=> (and ?v_1013 ?v_984) ?v_2189) (=> (and x160 ?v_982) ?v_2189) (=> (and x160 ?v_984) (= tmp89 12)) (=> (and ?v_2190 ?v_502) (= tmp88 0)) (=> (and ?v_2190 ?v_504) (= tmp88 4)) (=> (and x177 ?v_502) (= tmp88 6)) (=> (and x177 ?v_504) (= tmp88 10)) (=> (and ?v_2191 ?v_1046) (= tmp87 0)) (=> (and ?v_2191 ?v_1048) ?v_2192) (=> (and x158 ?v_1046) ?v_2192) (=> (and x158 ?v_1048) (= tmp87 12)) (=> (and ?v_2193 ?v_438) (= tmp86 0)) (=> (and ?v_2193 ?v_440) ?v_2194) (=> (and x179 ?v_438) ?v_2194) (=> (and x179 ?v_440) (= tmp86 12)) (=> (and ?v_2195 ?v_1110) (= tmp85 0)) (=> (and ?v_2195 ?v_1112) (= tmp85 6)) (=> (and x156 ?v_1110) (= tmp85 4)) (=> (and x156 ?v_1112) (= tmp85 10)) (=> (and ?v_2196 ?v_374) (= tmp84 0)) (=> (and ?v_2196 ?v_376) ?v_2197) (=> (and x181 ?v_374) ?v_2197) (=> (and x181 ?v_376) (= tmp84 12)) (=> (and ?v_2198 ?v_1174) (= tmp83 0)) (=> (and ?v_2198 ?v_1176) ?v_2199) (=> (and x154 ?v_1174) ?v_2199) (=> (and x154 ?v_1176) (= tmp83 8)) (=> (and ?v_2200 ?v_310) (= tmp82 0)) (=> (and ?v_2200 ?v_312) ?v_2201) (=> (and x183 ?v_310) ?v_2201) (=> (and x183 ?v_312) (= tmp82 8)) (=> (and ?v_2202 ?v_1238) (= tmp81 0)) (=> (and ?v_2202 ?v_1240) ?v_2203) (=> (and x152 ?v_1238) ?v_2203) (=> (and x152 ?v_1240) (= tmp81 8)) (=> (and ?v_2204 ?v_246) (= tmp80 0)) (=> (and ?v_2204 ?v_248) ?v_2205) (=> (and x185 ?v_246) ?v_2205) (=> (and x185 ?v_248) (= tmp80 12)) (=> (and ?v_2206 ?v_1302) (= tmp79 0)) (=> (and ?v_2206 ?v_1304) (= tmp79 2)) (=> (and x150 ?v_1302) (= tmp79 1)) (=> (and x150 ?v_1304) (= tmp79 3)) (=> (and ?v_2207 ?v_182) (= tmp78 0)) (=> (and ?v_2207 ?v_184) ?v_2208) (=> (and x187 ?v_182) ?v_2208) (=> (and x187 ?v_184) (= tmp78 12)) (=> (and ?v_2209 ?v_1366) (= tmp77 0)) (=> (and ?v_2209 ?v_1368) (= tmp77 2)) (=> (and x148 ?v_1366) (= tmp77 4)) (=> (and x148 ?v_1368) (= tmp77 6)) (=> (and ?v_2210 ?v_118) (= tmp76 0)) (=> (and ?v_2210 ?v_120) (= tmp76 4)) (=> (and x189 ?v_118) (= tmp76 2)) (=> (and x189 ?v_120) (= tmp76 6)) (=> (and ?v_2211 ?v_1430) (= tmp75 0)) (=> (and ?v_2211 ?v_1432) ?v_2212) (=> (and x146 ?v_1430) ?v_2212) (=> (and x146 ?v_1432) (= tmp75 8)) (=> (and ?v_2213 ?v_54) (= tmp74 0)) (=> (and ?v_2213 ?v_56) ?v_2214) (=> (and x191 ?v_54) ?v_2214) (=> (and x191 ?v_56) (= tmp74 4)) (=> (and ?v_2215 ?v_1494) (= tmp73 0)) (=> (and ?v_2215 ?v_1496) ?v_2216) (=> (and x144 ?v_1494) ?v_2216) (=> (and x144 ?v_1496) (= tmp73 8)) (=> (and ?v_725 true) (= tmp72 0)) (=> (and x121 true) (= tmp72 4)) (=> (and ?v_789 ?v_2217) (= tmp71 0)) (=> (and ?v_789 ?v_2218) (= tmp71 2)) (=> (and x119 ?v_2217) (= tmp71 1)) (=> (and x119 ?v_2218) (= tmp71 3)) (=> (and ?v_661 ?v_2219) (= tmp70 0)) (=> (and ?v_661 ?v_2220) (= tmp70 4)) (=> (and x123 ?v_2219) (= tmp70 6)) (=> (and x123 ?v_2220) (= tmp70 10)) (=> (and ?v_885 ?v_2221) (= tmp69 0)) (=> (and ?v_885 ?v_2222) (= tmp69 1)) (=> (and x117 ?v_2221) (= tmp69 2)) (=> (and x117 ?v_2222) (= tmp69 3)) (=> (and ?v_597 ?v_2223) (= tmp68 0)) (=> (and ?v_597 ?v_2225) ?v_2224) (=> (and x125 ?v_2223) ?v_2224) (=> (and x125 ?v_2225) (= tmp68 12)) (=> (and ?v_949 ?v_2226) (= tmp67 0)) (=> (and ?v_949 ?v_2227) (= tmp67 2)) (=> (and x115 ?v_2226) (= tmp67 4)) (=> (and x115 ?v_2227) (= tmp67 6)) (=> (and ?v_533 ?v_2228) (= tmp66 0)) (=> (and ?v_533 ?v_2230) ?v_2229) (=> (and x127 ?v_2228) ?v_2229) (=> (and x127 ?v_2230) (= tmp66 8)) (=> (and ?v_2231 ?v_2232) (= tmp65 0)) (=> (and ?v_2231 ?v_2234) ?v_2233) (=> (and x113 ?v_2232) ?v_2233) (=> (and x113 ?v_2234) (= tmp65 8)) (=> (and ?v_469 ?v_2235) (= tmp64 0)) (=> (and ?v_469 ?v_2237) ?v_2236) (=> (and x129 ?v_2235) ?v_2236) (=> (and x129 ?v_2237) (= tmp64 4)) (=> (and ?v_1077 ?v_2238) (= tmp63 0)) (=> (and ?v_1077 ?v_2240) ?v_2239) (=> (and x111 ?v_2238) ?v_2239) (=> (and x111 ?v_2240) (= tmp63 8)) (=> (and ?v_405 ?v_2241) (= tmp62 0)) (=> (and ?v_405 ?v_2242) (= tmp62 2)) (=> (and x131 ?v_2241) (= tmp62 4)) (=> (and x131 ?v_2242) (= tmp62 6)) (=> (and ?v_1141 ?v_2243) (= tmp61 0)) (=> (and ?v_1141 ?v_2245) ?v_2244) (=> (and x109 ?v_2243) ?v_2244) (=> (and x109 ?v_2245) (= tmp61 8)) (=> (and ?v_341 ?v_2246) (= tmp60 0)) (=> (and ?v_341 ?v_2247) (= tmp60 4)) (=> (and x133 ?v_2246) (= tmp60 2)) (=> (and x133 ?v_2247) (= tmp60 6)) (=> (and ?v_1205 ?v_2248) (= tmp59 0)) (=> (and ?v_1205 ?v_2249) (= tmp59 4)) (=> (and x107 ?v_2248) (= tmp59 6)) (=> (and x107 ?v_2249) (= tmp59 10)) (=> (and ?v_277 ?v_2250) (= tmp58 0)) (=> (and ?v_277 ?v_2251) (= tmp58 2)) (=> (and x135 ?v_2250) (= tmp58 4)) (=> (and x135 ?v_2251) (= tmp58 6)) (=> (and ?v_1269 ?v_2252) (= tmp57 0)) (=> (and ?v_1269 ?v_2254) ?v_2253) (=> (and x105 ?v_2252) ?v_2253) (=> (and x105 ?v_2254) (= tmp57 12)) (=> (and ?v_213 ?v_2255) (= tmp56 0)) (=> (and ?v_213 ?v_2257) ?v_2256) (=> (and x137 ?v_2255) ?v_2256) (=> (and x137 ?v_2257) (= tmp56 8)) (=> (and ?v_1333 ?v_2258) (= tmp55 0)) (=> (and ?v_1333 ?v_2260) ?v_2259) (=> (and x103 ?v_2258) ?v_2259) (=> (and x103 ?v_2260) (= tmp55 12)) (=> (and ?v_149 ?v_2261) (= tmp54 0)) (=> (and ?v_149 ?v_2262) (= tmp54 4)) (=> (and x139 ?v_2261) (= tmp54 1)) (=> (and x139 ?v_2262) (= tmp54 5)) (=> (and ?v_1397 ?v_2263) (= tmp53 0)) (=> (and ?v_1397 ?v_2265) ?v_2264) (=> (and x101 ?v_2263) ?v_2264) (=> (and x101 ?v_2265) (= tmp53 12)) (=> (and ?v_85 ?v_2266) (= tmp52 0)) (=> (and ?v_85 ?v_2267) (= tmp52 2)) (=> (and x141 ?v_2266) (= tmp52 4)) (=> (and x141 ?v_2267) (= tmp52 6)) (=> (and ?v_1461 ?v_2268) (= tmp51 0)) (=> (and ?v_1461 ?v_2270) ?v_2269) (=> (and x99 ?v_2268) ?v_2269) (=> (and x99 ?v_2270) (= tmp51 8)) (=> (and ?v_21 ?v_2271) (= tmp50 0)) (=> (and ?v_21 ?v_2273) ?v_2272) (=> (and x143 ?v_2271) ?v_2272) (=> (and x143 ?v_2273) (= tmp50 12)) (=> (and ?v_1525 ?v_2274) (= tmp49 0)) (=> (and ?v_1525 ?v_2275) (= tmp49 4)) (=> (and x97 ?v_2274) (= tmp49 2)) (=> (and x97 ?v_2275) (= tmp49 6)) (=> (and ?v_2276 ?v_766) (= tmp48 0)) (=> (and ?v_2276 ?v_768) (= tmp48 2)) (=> (and x74 ?v_766) (= tmp48 4)) (=> (and x74 ?v_768) (= tmp48 6)) (=> (and ?v_2277 ?v_798) (= tmp47 0)) (=> (and ?v_2277 ?v_800) (= tmp47 1)) (=> (and x71 ?v_798) (= tmp47 2)) (=> (and x71 ?v_800) (= tmp47 3)) (=> (and ?v_2278 ?v_702) (= tmp46 0)) (=> (and ?v_2278 ?v_704) ?v_2279) (=> (and x76 ?v_702) ?v_2279) (=> (and x76 ?v_704) (= tmp46 4)) (=> (and ?v_2280 ?v_862) (= tmp45 0)) (=> (and ?v_2280 ?v_864) ?v_2281) (=> (and x69 ?v_862) ?v_2281) (=> (and x69 ?v_864) (= tmp45 8)) (=> (and ?v_2282 ?v_638) (= tmp44 0)) (=> (and ?v_2282 ?v_640) ?v_2283) (=> (and x78 ?v_638) ?v_2283) (=> (and x78 ?v_640) (= tmp44 8)) (=> (and ?v_2284 ?v_926) (= tmp43 0)) (=> (and ?v_2284 ?v_928) ?v_2285) (=> (and x67 ?v_926) ?v_2285) (=> (and x67 ?v_928) (= tmp43 8)) (=> (and ?v_2286 ?v_574) (= tmp42 0)) (=> (and ?v_2286 ?v_576) (= tmp42 4)) (=> (and x80 ?v_574) (= tmp42 2)) (=> (and x80 ?v_576) (= tmp42 6)) (=> (and ?v_1021 ?v_990) (= tmp41 0)) (=> (and ?v_1021 ?v_992) (= tmp41 4)) (=> (and x65 ?v_990) (= tmp41 6)) (=> (and x65 ?v_992) (= tmp41 10)) (=> (and ?v_2287 ?v_510) (= tmp40 0)) (=> (and ?v_2287 ?v_512) (= tmp40 2)) (=> (and x82 ?v_510) (= tmp40 4)) (=> (and x82 ?v_512) (= tmp40 6)) (=> (and ?v_2288 ?v_1054) (= tmp39 0)) (=> (and ?v_2288 ?v_1056) (= tmp39 6)) (=> (and x63 ?v_1054) (= tmp39 4)) (=> (and x63 ?v_1056) (= tmp39 10)) (=> (and ?v_2289 ?v_446) (= tmp38 0)) (=> (and ?v_2289 ?v_448) ?v_2290) (=> (and x84 ?v_446) ?v_2290) (=> (and x84 ?v_448) (= tmp38 8)) (=> (and ?v_2291 ?v_1118) (= tmp37 0)) (=> (and ?v_2291 ?v_1120) ?v_2292) (=> (and x61 ?v_1118) ?v_2292) (=> (and x61 ?v_1120) (= tmp37 4)) (=> (and ?v_2293 ?v_382) (= tmp36 0)) (=> (and ?v_2293 ?v_384) ?v_2294) (=> (and x86 ?v_382) ?v_2294) (=> (and x86 ?v_384) (= tmp36 8)) (=> (and ?v_2295 ?v_1182) (= tmp35 0)) (=> (and ?v_2295 ?v_1184) ?v_2296) (=> (and x59 ?v_1182) ?v_2296) (=> (and x59 ?v_1184) (= tmp35 8)) (=> (and ?v_2297 ?v_318) (= tmp34 0)) (=> (and ?v_2297 ?v_320) ?v_2298) (=> (and x88 ?v_318) ?v_2298) (=> (and x88 ?v_320) (= tmp34 8)) (=> (and ?v_2299 ?v_1246) (= tmp33 0)) (=> (and ?v_2299 ?v_1248) (= tmp33 4)) (=> (and x57 ?v_1246) (= tmp33 2)) (=> (and x57 ?v_1248) (= tmp33 6)) (=> (and ?v_2300 ?v_254) (= tmp32 0)) (=> (and ?v_2300 ?v_256) ?v_2301) (=> (and x90 ?v_254) ?v_2301) (=> (and x90 ?v_256) (= tmp32 8)) (=> (and ?v_2302 ?v_1310) (= tmp31 0)) (=> (and ?v_2302 ?v_1312) ?v_2303) (=> (and x55 ?v_1310) ?v_2303) (=> (and x55 ?v_1312) (= tmp31 8)) (=> (and ?v_2304 ?v_190) (= tmp30 0)) (=> (and ?v_2304 ?v_192) (= tmp30 4)) (=> (and x92 ?v_190) (= tmp30 2)) (=> (and x92 ?v_192) (= tmp30 6)) (=> (and ?v_2305 ?v_1374) (= tmp29 0)) (=> (and ?v_2305 ?v_1376) ?v_2306) (=> (and x53 ?v_1374) ?v_2306) (=> (and x53 ?v_1376) (= tmp29 8)) (=> (and ?v_2307 ?v_126) (= tmp28 0)) (=> (and ?v_2307 ?v_128) (= tmp28 2)) (=> (and x94 ?v_126) (= tmp28 4)) (=> (and x94 ?v_128) (= tmp28 6)) (=> (and ?v_2308 ?v_1438) (= tmp27 0)) (=> (and ?v_2308 ?v_1440) (= tmp27 4)) (=> (and x51 ?v_1438) (= tmp27 2)) (=> (and x51 ?v_1440) (= tmp27 6)) (=> (and ?v_2309 ?v_62) (= tmp26 0)) (=> (and ?v_2309 ?v_64) ?v_2310) (=> (and x96 ?v_62) ?v_2310) (=> (and x96 ?v_64) (= tmp26 8)) (=> (and ?v_2311 ?v_1502) (= tmp25 0)) (=> (and ?v_2311 ?v_1504) ?v_2312) (=> (and x49 ?v_1502) ?v_2312) (=> (and x49 ?v_1504) (= tmp25 4)) (=> (and ?v_733 true) (= tmp24 0)) (=> (and x26 true) (= tmp24 4)) (=> (and ?v_797 ?v_2313) (= tmp23 0)) (=> (and ?v_797 ?v_2314) (= tmp23 4)) (=> (and x24 ?v_2313) (= tmp23 2)) (=> (and x24 ?v_2314) (= tmp23 6)) (=> (and ?v_669 ?v_2315) (= tmp22 0)) (=> (and ?v_669 ?v_2317) ?v_2316) (=> (and x28 ?v_2315) ?v_2316) (=> (and x28 ?v_2317) (= tmp22 8)) (=> (and ?v_861 ?v_2318) (= tmp21 0)) (=> (and ?v_861 ?v_2320) ?v_2319) (=> (and x22 ?v_2318) ?v_2319) (=> (and x22 ?v_2320) (= tmp21 4)) (=> (and ?v_605 ?v_2321) (= tmp20 0)) (=> (and ?v_605 ?v_2322) (= tmp20 4)) (=> (and x30 ?v_2321) (= tmp20 2)) (=> (and x30 ?v_2322) (= tmp20 6)) (=> (and ?v_925 ?v_2323) (= tmp19 0)) (=> (and ?v_925 ?v_2325) ?v_2324) (=> (and x20 ?v_2323) ?v_2324) (=> (and x20 ?v_2325) (= tmp19 4)) (=> (and ?v_541 ?v_2326) (= tmp18 0)) (=> (and ?v_541 ?v_2328) ?v_2327) (=> (and x32 ?v_2326) ?v_2327) (=> (and x32 ?v_2328) (= tmp18 4)) (=> (and ?v_989 ?v_2329) (= tmp17 0)) (=> (and ?v_989 ?v_2330) (= tmp17 2)) (=> (and x18 ?v_2329) (= tmp17 1)) (=> (and x18 ?v_2330) (= tmp17 3)) (=> (and ?v_477 ?v_2331) (= tmp16 0)) (=> (and ?v_477 ?v_2333) ?v_2332) (=> (and x34 ?v_2331) ?v_2332) (=> (and x34 ?v_2333) (= tmp16 8)) (=> (and ?v_1085 ?v_2334) (= tmp15 0)) (=> (and ?v_1085 ?v_2335) (= tmp15 1)) (=> (and x16 ?v_2334) (= tmp15 2)) (=> (and x16 ?v_2335) (= tmp15 3)) (=> (and ?v_413 ?v_2336) (= tmp14 0)) (=> (and ?v_413 ?v_2338) ?v_2337) (=> (and x36 ?v_2336) ?v_2337) (=> (and x36 ?v_2338) (= tmp14 12)) (=> (and ?v_1149 ?v_2339) (= tmp13 0)) (=> (and ?v_1149 ?v_2341) ?v_2340) (=> (and x14 ?v_2339) ?v_2340) (=> (and x14 ?v_2341) (= tmp13 4)) (=> (and ?v_349 ?v_2342) (= tmp12 0)) (=> (and ?v_349 ?v_2344) ?v_2343) (=> (and x38 ?v_2342) ?v_2343) (=> (and x38 ?v_2344) (= tmp12 12)) (=> (and ?v_1213 ?v_2345) (= tmp11 0)) (=> (and ?v_1213 ?v_2347) ?v_2346) (=> (and x12 ?v_2345) ?v_2346) (=> (and x12 ?v_2347) (= tmp11 4)) (=> (and ?v_285 ?v_2348) (= tmp10 0)) (=> (and ?v_285 ?v_2349) (= tmp10 8)) (=> (and x40 ?v_2348) (= tmp10 6)) (=> (and x40 ?v_2349) (= tmp10 14)) (=> (and ?v_1277 ?v_2350) (= tmp9 0)) (=> (and ?v_1277 ?v_2352) ?v_2351) (=> (and x10 ?v_2350) ?v_2351) (=> (and x10 ?v_2352) (= tmp9 4)) (=> (and ?v_221 ?v_2353) (= tmp8 0)) (=> (and ?v_221 ?v_2355) ?v_2354) (=> (and x42 ?v_2353) ?v_2354) (=> (and x42 ?v_2355) (= tmp8 12)) (=> (and ?v_1341 ?v_2356) (= tmp7 0)) (=> (and ?v_1341 ?v_2357) (= tmp7 2)) (=> (and x8 ?v_2356) (= tmp7 4)) (=> (and x8 ?v_2357) (= tmp7 6)) (=> (and ?v_157 ?v_2358) (= tmp6 0)) (=> (and ?v_157 ?v_2359) (= tmp6 6)) (=> (and x44 ?v_2358) (= tmp6 4)) (=> (and x44 ?v_2359) (= tmp6 10)) (=> (and ?v_1405 ?v_2360) (= tmp5 0)) (=> (and ?v_1405 ?v_2362) ?v_2361) (=> (and x6 ?v_2360) ?v_2361) (=> (and x6 ?v_2362) (= tmp5 8)) (=> (and ?v_93 ?v_2363) (= tmp4 0)) (=> (and ?v_93 ?v_2365) ?v_2364) (=> (and x46 ?v_2363) ?v_2364) (=> (and x46 ?v_2365) (= tmp4 8)) (=> (and ?v_1469 ?v_2366) (= tmp3 0)) (=> (and ?v_1469 ?v_2368) ?v_2367) (=> (and x4 ?v_2366) ?v_2367) (=> (and x4 ?v_2368) (= tmp3 8)) (=> (and ?v_29 ?v_2369) (= tmp2 0)) (=> (and ?v_29 ?v_2371) ?v_2370) (=> (and x48 ?v_2369) ?v_2370) (=> (and x48 ?v_2371) (= tmp2 8)) (=> (and ?v_1533 ?v_2372) (= tmp1 0)) (=> (and ?v_1533 ?v_2374) ?v_2373) (=> (and x2 ?v_2372) ?v_2373) (=> (and x2 ?v_2374) (= tmp1 8)))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) +(check-sat) +(exit) diff --git a/test/regress/regress0/arith/miplib-pp08a-3000.smt b/test/regress/regress0/arith/miplib-pp08a-3000.smt new file mode 100644 index 000000000..21c588ad3 --- /dev/null +++ b/test/regress/regress0/arith/miplib-pp08a-3000.smt @@ -0,0 +1,1427 @@ +(benchmark mip_pp08a +:source { +Relaxation of the Mixed-Integer Programming +optimization problem pp08a from the MIPLIB (http://miplib.zib.de/) +by Enric Rodriguez-Carbonell (erodri@lsi.upc.edu) +} + :status unsat + :category { industrial } + :difficulty { 2 } + :logic QF_LRA + + :extrafuns ((tmp75 Real)) + :extrafuns ((tmp74 Real)) + :extrafuns ((tmp73 Real)) + :extrafuns ((tmp72 Real)) + :extrafuns ((tmp71 Real)) + :extrafuns ((tmp70 Real)) + :extrafuns ((tmp69 Real)) + :extrafuns ((tmp68 Real)) + :extrafuns ((tmp67 Real)) + :extrafuns ((tmp66 Real)) + :extrafuns ((tmp65 Real)) + :extrafuns ((tmp64 Real)) + :extrafuns ((tmp63 Real)) + :extrafuns ((tmp62 Real)) + :extrafuns ((tmp61 Real)) + :extrafuns ((tmp60 Real)) + :extrafuns ((tmp59 Real)) + :extrafuns ((tmp58 Real)) + :extrafuns ((tmp57 Real)) + :extrafuns ((tmp56 Real)) + :extrafuns ((tmp55 Real)) + :extrafuns ((tmp54 Real)) + :extrafuns ((tmp53 Real)) + :extrafuns ((tmp52 Real)) + :extrafuns ((tmp51 Real)) + :extrafuns ((tmp50 Real)) + :extrafuns ((tmp49 Real)) + :extrafuns ((tmp48 Real)) + :extrafuns ((tmp47 Real)) + :extrafuns ((tmp46 Real)) + :extrafuns ((tmp45 Real)) + :extrafuns ((tmp44 Real)) + :extrafuns ((tmp43 Real)) + :extrafuns ((tmp42 Real)) + :extrafuns ((tmp41 Real)) + :extrafuns ((tmp40 Real)) + :extrafuns ((tmp39 Real)) + :extrafuns ((tmp38 Real)) + :extrafuns ((tmp37 Real)) + :extrafuns ((tmp36 Real)) + :extrafuns ((tmp35 Real)) + :extrafuns ((tmp34 Real)) + :extrafuns ((tmp33 Real)) + :extrafuns ((tmp32 Real)) + :extrafuns ((tmp31 Real)) + :extrafuns ((tmp30 Real)) + :extrafuns ((tmp29 Real)) + :extrafuns ((tmp28 Real)) + :extrafuns ((tmp27 Real)) + :extrafuns ((tmp26 Real)) + :extrafuns ((tmp25 Real)) + :extrafuns ((tmp24 Real)) + :extrafuns ((tmp23 Real)) + :extrafuns ((tmp22 Real)) + :extrafuns ((tmp21 Real)) + :extrafuns ((tmp20 Real)) + :extrafuns ((tmp19 Real)) + :extrafuns ((tmp18 Real)) + :extrafuns ((tmp17 Real)) + :extrafuns ((tmp16 Real)) + :extrafuns ((tmp15 Real)) + :extrafuns ((tmp14 Real)) + :extrafuns ((tmp13 Real)) + :extrafuns ((tmp12 Real)) + :extrafuns ((tmp11 Real)) + :extrafuns ((tmp10 Real)) + :extrafuns ((tmp9 Real)) + :extrafuns ((tmp8 Real)) + :extrafuns ((tmp7 Real)) + :extrafuns ((tmp6 Real)) + :extrafuns ((tmp5 Real)) + :extrafuns ((tmp4 Real)) + :extrafuns ((tmp3 Real)) + :extrafuns ((tmp2 Real)) + :extrafuns ((tmp1 Real)) + :extrafuns ((x113 Real)) + :extrafuns ((x114 Real)) + :extrafuns ((x115 Real)) + :extrafuns ((x116 Real)) + :extrafuns ((x117 Real)) + :extrafuns ((x118 Real)) + :extrafuns ((x119 Real)) + :extrafuns ((x120 Real)) + :extrafuns ((x121 Real)) + :extrafuns ((x122 Real)) + :extrafuns ((x123 Real)) + :extrafuns ((x124 Real)) + :extrafuns ((x125 Real)) + :extrafuns ((x126 Real)) + :extrafuns ((x127 Real)) + :extrafuns ((x128 Real)) + :extrafuns ((x129 Real)) + :extrafuns ((x130 Real)) + :extrafuns ((x131 Real)) + :extrafuns ((x132 Real)) + :extrafuns ((x133 Real)) + :extrafuns ((x134 Real)) + :extrafuns ((x135 Real)) + :extrafuns ((x136 Real)) + :extrafuns ((x137 Real)) + :extrafuns ((x138 Real)) + :extrafuns ((x139 Real)) + :extrafuns ((x140 Real)) + :extrafuns ((x141 Real)) + :extrafuns ((x142 Real)) + :extrafuns ((x143 Real)) + :extrafuns ((x144 Real)) + :extrafuns ((x145 Real)) + :extrafuns ((x146 Real)) + :extrafuns ((x147 Real)) + :extrafuns ((x148 Real)) + :extrafuns ((x149 Real)) + :extrafuns ((x150 Real)) + :extrafuns ((x151 Real)) + :extrafuns ((x152 Real)) + :extrafuns ((x153 Real)) + :extrafuns ((x154 Real)) + :extrafuns ((x155 Real)) + :extrafuns ((x156 Real)) + :extrafuns ((x157 Real)) + :extrafuns ((x158 Real)) + :extrafuns ((x159 Real)) + :extrafuns ((x160 Real)) + :extrafuns ((x161 Real)) + :extrafuns ((x162 Real)) + :extrafuns ((x163 Real)) + :extrafuns ((x164 Real)) + :extrafuns ((x165 Real)) + :extrafuns ((x166 Real)) + :extrafuns ((x167 Real)) + :extrafuns ((x168 Real)) + :extrafuns ((x169 Real)) + :extrafuns ((x170 Real)) + :extrafuns ((x171 Real)) + :extrafuns ((x172 Real)) + :extrafuns ((x173 Real)) + :extrafuns ((x174 Real)) + :extrafuns ((x175 Real)) + :extrafuns ((x176 Real)) + :extrafuns ((x112 Real)) + :extrafuns ((x111 Real)) + :extrafuns ((x110 Real)) + :extrafuns ((x109 Real)) + :extrafuns ((x108 Real)) + :extrafuns ((x107 Real)) + :extrafuns ((x106 Real)) + :extrafuns ((x105 Real)) + :extrafuns ((x104 Real)) + :extrafuns ((x103 Real)) + :extrafuns ((x102 Real)) + :extrafuns ((x101 Real)) + :extrafuns ((x100 Real)) + :extrafuns ((x99 Real)) + :extrafuns ((x98 Real)) + :extrafuns ((x97 Real)) + :extrafuns ((x96 Real)) + :extrafuns ((x95 Real)) + :extrafuns ((x94 Real)) + :extrafuns ((x93 Real)) + :extrafuns ((x92 Real)) + :extrafuns ((x91 Real)) + :extrafuns ((x90 Real)) + :extrafuns ((x89 Real)) + :extrafuns ((x88 Real)) + :extrafuns ((x87 Real)) + :extrafuns ((x86 Real)) + :extrafuns ((x85 Real)) + :extrafuns ((x84 Real)) + :extrafuns ((x83 Real)) + :extrafuns ((x82 Real)) + :extrafuns ((x81 Real)) + :extrafuns ((x80 Real)) + :extrafuns ((x79 Real)) + :extrafuns ((x78 Real)) + :extrafuns ((x77 Real)) + :extrafuns ((x76 Real)) + :extrafuns ((x75 Real)) + :extrafuns ((x74 Real)) + :extrafuns ((x73 Real)) + :extrafuns ((x72 Real)) + :extrafuns ((x71 Real)) + :extrafuns ((x70 Real)) + :extrafuns ((x69 Real)) + :extrafuns ((x68 Real)) + :extrafuns ((x67 Real)) + :extrafuns ((x66 Real)) + :extrafuns ((x65 Real)) + :extrafuns ((x64 Real)) + :extrafuns ((x63 Real)) + :extrafuns ((x62 Real)) + :extrafuns ((x61 Real)) + :extrafuns ((x60 Real)) + :extrafuns ((x59 Real)) + :extrafuns ((x58 Real)) + :extrafuns ((x57 Real)) + :extrafuns ((x56 Real)) + :extrafuns ((x55 Real)) + :extrafuns ((x54 Real)) + :extrafuns ((x53 Real)) + :extrafuns ((x52 Real)) + :extrafuns ((x51 Real)) + :extrafuns ((x50 Real)) + :extrafuns ((x49 Real)) + :extrafuns ((x48 Real)) + :extrafuns ((x47 Real)) + :extrafuns ((x46 Real)) + :extrafuns ((x45 Real)) + :extrafuns ((x44 Real)) + :extrafuns ((x43 Real)) + :extrafuns ((x42 Real)) + :extrafuns ((x41 Real)) + :extrafuns ((x40 Real)) + :extrafuns ((x39 Real)) + :extrafuns ((x38 Real)) + :extrafuns ((x37 Real)) + :extrafuns ((x36 Real)) + :extrafuns ((x35 Real)) + :extrafuns ((x34 Real)) + :extrafuns ((x33 Real)) + :extrafuns ((x32 Real)) + :extrafuns ((x31 Real)) + :extrafuns ((x30 Real)) + :extrafuns ((x29 Real)) + :extrafuns ((x28 Real)) + :extrafuns ((x27 Real)) + :extrafuns ((x26 Real)) + :extrafuns ((x25 Real)) + :extrafuns ((x24 Real)) + :extrafuns ((x23 Real)) + :extrafuns ((x22 Real)) + :extrafuns ((x21 Real)) + :extrafuns ((x20 Real)) + :extrafuns ((x19 Real)) + :extrafuns ((x18 Real)) + :extrafuns ((x17 Real)) + :extrafuns ((x16 Real)) + :extrafuns ((x15 Real)) + :extrafuns ((x14 Real)) + :extrafuns ((x13 Real)) + :extrafuns ((x12 Real)) + :extrafuns ((x11 Real)) + :extrafuns ((x10 Real)) + :extrafuns ((x9 Real)) + :extrafuns ((x8 Real)) + :extrafuns ((x7 Real)) + :extrafuns ((x6 Real)) + :extrafuns ((x5 Real)) + :extrafuns ((x4 Real)) + :extrafuns ((x3 Real)) + :extrafuns ((x2 Real)) + :extrafuns ((x1 Real)) + :extrapreds ((x177)) + :extrapreds ((x178)) + :extrapreds ((x179)) + :extrapreds ((x180)) + :extrapreds ((x181)) + :extrapreds ((x182)) + :extrapreds ((x183)) + :extrapreds ((x184)) + :extrapreds ((x185)) + :extrapreds ((x186)) + :extrapreds ((x187)) + :extrapreds ((x188)) + :extrapreds ((x189)) + :extrapreds ((x190)) + :extrapreds ((x191)) + :extrapreds ((x192)) + :extrapreds ((x193)) + :extrapreds ((x194)) + :extrapreds ((x195)) + :extrapreds ((x196)) + :extrapreds ((x197)) + :extrapreds ((x198)) + :extrapreds ((x199)) + :extrapreds ((x200)) + :extrapreds ((x201)) + :extrapreds ((x202)) + :extrapreds ((x203)) + :extrapreds ((x204)) + :extrapreds ((x205)) + :extrapreds ((x206)) + :extrapreds ((x207)) + :extrapreds ((x208)) + :extrapreds ((x209)) + :extrapreds ((x210)) + :extrapreds ((x211)) + :extrapreds ((x212)) + :extrapreds ((x213)) + :extrapreds ((x214)) + :extrapreds ((x215)) + :extrapreds ((x216)) + :extrapreds ((x217)) + :extrapreds ((x218)) + :extrapreds ((x219)) + :extrapreds ((x220)) + :extrapreds ((x221)) + :extrapreds ((x222)) + :extrapreds ((x223)) + :extrapreds ((x224)) + :extrapreds ((x225)) + :extrapreds ((x226)) + :extrapreds ((x227)) + :extrapreds ((x228)) + :extrapreds ((x229)) + :extrapreds ((x230)) + :extrapreds ((x231)) + :extrapreds ((x232)) + :extrapreds ((x233)) + :extrapreds ((x234)) + :extrapreds ((x235)) + :extrapreds ((x236)) + :extrapreds ((x237)) + :extrapreds ((x238)) + :extrapreds ((x239)) + :extrapreds ((x240)) + + :formula( and + ( <= ( + ( + ( * 1 tmp75 ) 0 ) ( + ( * 1 tmp73 ) ( + ( * 1 tmp71 ) ( + ( * 1 tmp69 ) ( + ( * 1 tmp67 ) ( + ( * 1 tmp65 ) ( + ( * 2 x112 ) ( + ( * 2 x111 ) ( + ( * 2 x110 ) ( + ( * 2 x109 ) ( + ( * 2 x108 ) ( + ( * 2 x107 ) ( + ( * 2 x106 ) ( + ( * 2 x105 ) ( + ( * 2 x104 ) ( + ( * 2 x103 ) ( + ( * 2 x102 ) ( + ( * 2 x101 ) ( + ( * 2 x100 ) ( + ( * 2 x99 ) ( + ( * 2 x98 ) ( + ( * 2 x97 ) ( + ( * 2 x96 ) ( + ( * 2 x95 ) ( + ( * 2 x94 ) ( + ( * 2 x93 ) ( + ( * 2 x92 ) ( + ( * 2 x91 ) ( + ( * 2 x90 ) ( + ( * 2 x89 ) ( + ( * 2 x88 ) ( + ( * 2 x87 ) ( + ( * 2 x86 ) ( + ( * 2 x85 ) ( + ( * 2 x84 ) ( + ( * 2 x83 ) ( + ( * 2 x82 ) ( + ( * 2 x81 ) ( + ( * 2 x80 ) ( + ( * 2 x79 ) ( + ( * 2 x78 ) ( + ( * 2 x77 ) ( + ( * 2 x76 ) ( + ( * 2 x75 ) ( + ( * 2 x74 ) ( + ( * 2 x73 ) ( + ( * 2 x72 ) ( + ( * 2 x71 ) ( + ( * 2 x70 ) ( + ( * 2 x69 ) ( + ( * 2 x68 ) ( + ( * 2 x67 ) ( + ( * 2 x66 ) ( + ( * 2 x65 ) ( + ( * 2 x64 ) ( + ( * 2 x63 ) ( + ( * 2 x62 ) ( + ( * 2 x61 ) ( + ( * 2 x60 ) ( + ( * 2 x59 ) ( + ( * 2 x58 ) ( + ( * 2 x57 ) ( + ( * 1 x56 ) ( + ( * 1 x55 ) ( + ( * 1 x54 ) ( + ( * 1 x53 ) ( + ( * 1 x52 ) ( + ( * 1 x51 ) ( + ( * 1 x50 ) ( + ( * 1 x49 ) ( + ( * 1 x48 ) ( + ( * 1 x47 ) ( + ( * 1 x46 ) ( + ( * 1 x45 ) ( + ( * 1 x44 ) ( + ( * 1 x43 ) ( + ( * 1 x42 ) ( + ( * 1 x41 ) ( + ( * 1 x40 ) ( + ( * 1 x39 ) ( + ( * 1 x38 ) ( + ( * 1 x37 ) ( + ( * 1 x36 ) ( + ( * 1 x35 ) ( + ( * 1 x34 ) ( + ( * 1 x33 ) ( + ( * 1 x32 ) ( + ( * 1 x31 ) ( + ( * 1 x30 ) ( + ( * 1 x29 ) ( + ( * 1 x28 ) ( + ( * 1 x27 ) ( + ( * 1 x26 ) ( + ( * 1 x25 ) ( + ( * 1 x24 ) ( + ( * 1 x23 ) ( + ( * 1 x22 ) ( + ( * 1 x21 ) ( + ( * 1 x20 ) ( + ( * 1 x19 ) ( + ( * 1 x18 ) ( + ( * 1 x17 ) ( + ( * 1 x16 ) ( + ( * 1 x15 ) ( + ( * 1 x14 ) ( + ( * 1 x13 ) ( + ( * 1 x12 ) ( + ( * 1 x11 ) ( + ( * 1 x10 ) ( + ( * 1 x9 ) ( + ( * 1 x8 ) ( + ( * 1 x7 ) ( + ( * 1 x6 ) ( + ( * 1 x5 ) ( + ( * 1 x4 ) ( + ( * 1 x3 ) ( + ( * 1 x2 ) ( + ( * 1 x1 ) ( + ( * 1 tmp66 ) ( + ( * 1 tmp68 ) ( + ( * 1 tmp70 ) ( + ( * 1 tmp72 ) ( + ( * 1 tmp74 ) 0 ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) 3000 ) + ( <= ( + ( + ( * 1 tmp64 ) 0 ) ( + ( * 1 x176 ) 0 ) ) 0 ) + ( <= ( + ( + ( * 1 tmp63 ) 0 ) ( + ( * 1 x175 ) 0 ) ) 0 ) + ( <= ( + ( + ( * 1 tmp62 ) 0 ) ( + ( * 1 x174 ) 0 ) ) 0 ) + ( <= ( + ( + ( * 1 tmp61 ) 0 ) ( + ( * 1 x173 ) 0 ) ) 0 ) + ( <= ( + ( + ( * 1 tmp60 ) 0 ) ( + ( * 1 x172 ) 0 ) ) 0 ) + ( <= ( + ( + ( * 1 tmp59 ) 0 ) ( + ( * 1 x171 ) 0 ) ) 0 ) + ( <= ( + ( + ( * 1 tmp58 ) 0 ) ( + ( * 1 x170 ) 0 ) ) 0 ) + ( <= ( + ( + ( * 1 tmp57 ) 0 ) ( + ( * 1 x169 ) 0 ) ) 0 ) + ( <= ( + ( + ( * 1 tmp56 ) 0 ) ( + ( * 1 x168 ) 0 ) ) 0 ) + ( <= ( + ( + ( * 1 tmp55 ) 0 ) ( + ( * 1 x167 ) 0 ) ) 0 ) + ( <= ( + ( + ( * 1 tmp54 ) 0 ) ( + ( * 1 x166 ) 0 ) ) 0 ) + ( <= ( + ( + ( * 1 tmp53 ) 0 ) ( + ( * 1 x165 ) 0 ) ) 0 ) + ( <= ( + ( + ( * 1 tmp52 ) 0 ) ( + ( * 1 x164 ) 0 ) ) 0 ) + ( <= ( + ( + ( * 1 tmp51 ) 0 ) ( + ( * 1 x163 ) 0 ) ) 0 ) + ( <= ( + ( + ( * 1 tmp50 ) 0 ) ( + ( * 1 x162 ) 0 ) ) 0 ) + ( <= ( + ( + ( * 1 tmp49 ) 0 ) ( + ( * 1 x161 ) 0 ) ) 0 ) + ( <= ( + ( + ( * 1 tmp48 ) 0 ) ( + ( * 1 x160 ) 0 ) ) 0 ) + ( <= ( + ( + ( * 1 tmp47 ) 0 ) ( + ( * 1 x159 ) 0 ) ) 0 ) + ( <= ( + ( + ( * 1 tmp46 ) 0 ) ( + ( * 1 x158 ) 0 ) ) 0 ) + ( <= ( + ( + ( * 1 tmp45 ) 0 ) ( + ( * 1 x157 ) 0 ) ) 0 ) + ( <= ( + ( + ( * 1 tmp44 ) 0 ) ( + ( * 1 x156 ) 0 ) ) 0 ) + ( <= ( + ( + ( * 1 tmp43 ) 0 ) ( + ( * 1 x155 ) 0 ) ) 0 ) + ( <= ( + ( + ( * 1 tmp42 ) 0 ) ( + ( * 1 x154 ) 0 ) ) 0 ) + ( <= ( + ( + ( * 1 tmp41 ) 0 ) ( + ( * 1 x153 ) 0 ) ) 0 ) + ( <= ( + ( + ( * 1 tmp40 ) 0 ) ( + ( * 1 x152 ) 0 ) ) 0 ) + ( <= ( + ( + ( * 1 tmp39 ) 0 ) ( + ( * 1 x151 ) 0 ) ) 0 ) + ( <= ( + ( + ( * 1 tmp38 ) 0 ) ( + ( * 1 x150 ) 0 ) ) 0 ) + ( <= ( + ( + ( * 1 tmp37 ) 0 ) ( + ( * 1 x149 ) 0 ) ) 0 ) + ( <= ( + ( + ( * 1 tmp36 ) 0 ) ( + ( * 1 x148 ) 0 ) ) 0 ) + ( <= ( + ( + ( * 1 tmp35 ) 0 ) ( + ( * 1 x147 ) 0 ) ) 0 ) + ( <= ( + ( + ( * 1 tmp34 ) 0 ) ( + ( * 1 x146 ) 0 ) ) 0 ) + ( <= ( + ( + ( * 1 tmp33 ) 0 ) ( + ( * 1 x145 ) 0 ) ) 0 ) + ( <= ( + ( + ( * 1 tmp32 ) 0 ) ( + ( * 1 x144 ) 0 ) ) 0 ) + ( <= ( + ( + ( * 1 tmp31 ) 0 ) ( + ( * 1 x143 ) 0 ) ) 0 ) + ( <= ( + ( + ( * 1 tmp30 ) 0 ) ( + ( * 1 x142 ) 0 ) ) 0 ) + ( <= ( + ( + ( * 1 tmp29 ) 0 ) ( + ( * 1 x141 ) 0 ) ) 0 ) + ( <= ( + ( + ( * 1 tmp28 ) 0 ) ( + ( * 1 x140 ) 0 ) ) 0 ) + ( <= ( + ( + ( * 1 tmp27 ) 0 ) ( + ( * 1 x139 ) 0 ) ) 0 ) + ( <= ( + ( + ( * 1 tmp26 ) 0 ) ( + ( * 1 x138 ) 0 ) ) 0 ) + ( <= ( + ( + ( * 1 tmp25 ) 0 ) ( + ( * 1 x137 ) 0 ) ) 0 ) + ( <= ( + ( + ( * 1 tmp24 ) 0 ) ( + ( * 1 x136 ) 0 ) ) 0 ) + ( <= ( + ( + ( * 1 tmp23 ) 0 ) ( + ( * 1 x135 ) 0 ) ) 0 ) + ( <= ( + ( + ( * 1 tmp22 ) 0 ) ( + ( * 1 x134 ) 0 ) ) 0 ) + ( <= ( + ( + ( * 1 tmp21 ) 0 ) ( + ( * 1 x133 ) 0 ) ) 0 ) + ( <= ( + ( + ( * 1 tmp20 ) 0 ) ( + ( * 1 x132 ) 0 ) ) 0 ) + ( <= ( + ( + ( * 1 tmp19 ) 0 ) ( + ( * 1 x131 ) 0 ) ) 0 ) + ( <= ( + ( + ( * 1 tmp18 ) 0 ) ( + ( * 1 x130 ) 0 ) ) 0 ) + ( <= ( + ( + ( * 1 tmp17 ) 0 ) ( + ( * 1 x129 ) 0 ) ) 0 ) + ( <= ( + ( + ( * 1 tmp16 ) 0 ) ( + ( * 1 x128 ) 0 ) ) 0 ) + ( <= ( + ( + ( * 1 tmp15 ) 0 ) ( + ( * 1 x127 ) 0 ) ) 0 ) + ( <= ( + ( + ( * 1 tmp14 ) 0 ) ( + ( * 1 x126 ) 0 ) ) 0 ) + ( <= ( + ( + ( * 1 tmp13 ) 0 ) ( + ( * 1 x125 ) 0 ) ) 0 ) + ( <= ( + ( + ( * 1 tmp12 ) 0 ) ( + ( * 1 x124 ) 0 ) ) 0 ) + ( <= ( + ( + ( * 1 tmp11 ) 0 ) ( + ( * 1 x123 ) 0 ) ) 0 ) + ( <= ( + ( + ( * 1 tmp10 ) 0 ) ( + ( * 1 x122 ) 0 ) ) 0 ) + ( <= ( + ( + ( * 1 tmp9 ) 0 ) ( + ( * 1 x121 ) 0 ) ) 0 ) + ( <= ( + ( + ( * 1 tmp8 ) 0 ) ( + ( * 1 x120 ) 0 ) ) 0 ) + ( <= ( + ( + ( * 1 tmp7 ) 0 ) ( + ( * 1 x119 ) 0 ) ) 0 ) + ( <= ( + ( + ( * 1 tmp6 ) 0 ) ( + ( * 1 x118 ) 0 ) ) 0 ) + ( <= ( + ( + ( * 1 tmp5 ) 0 ) ( + ( * 1 x117 ) 0 ) ) 0 ) + ( <= ( + ( + ( * 1 tmp4 ) 0 ) ( + ( * 1 x116 ) 0 ) ) 0 ) + ( <= ( + ( + ( * 1 tmp3 ) 0 ) ( + ( * 1 x115 ) 0 ) ) 0 ) + ( <= ( + ( + ( * 1 tmp2 ) 0 ) ( + ( * 1 x114 ) 0 ) ) 0 ) + ( <= ( + ( + ( * 1 tmp1 ) 0 ) ( + ( * 1 x113 ) 0 ) ) 0 ) + ( <= ( + ( + ( + ( + ( + ( + ( + ( + 0 ( * 1 x120 ) ) ( * 1 x128 ) ) ( * 1 x136 ) ) ( * 1 x144 ) ) ( * 1 x152 ) ) ( * 1 x160 ) ) ( * 1 x168 ) ) ( * 1 x176 ) ) 500 ) + ( <= ( + ( + ( + ( + ( + ( + ( + ( + 0 ( * 1 x119 ) ) ( * 1 x127 ) ) ( * 1 x135 ) ) ( * 1 x143 ) ) ( * 1 x151 ) ) ( * 1 x159 ) ) ( * 1 x167 ) ) ( * 1 x175 ) ) 400 ) + ( <= ( + ( + ( + ( + ( + ( + ( + ( + 0 ( * 1 x118 ) ) ( * 1 x126 ) ) ( * 1 x134 ) ) ( * 1 x142 ) ) ( * 1 x150 ) ) ( * 1 x158 ) ) ( * 1 x166 ) ) ( * 1 x174 ) ) 400 ) + ( <= ( + ( + ( + ( + ( + ( + ( + ( + 0 ( * 1 x117 ) ) ( * 1 x125 ) ) ( * 1 x133 ) ) ( * 1 x141 ) ) ( * 1 x149 ) ) ( * 1 x157 ) ) ( * 1 x165 ) ) ( * 1 x173 ) ) 400 ) + ( <= ( + ( + ( + ( + ( + ( + ( + ( + 0 ( * 1 x116 ) ) ( * 1 x124 ) ) ( * 1 x132 ) ) ( * 1 x140 ) ) ( * 1 x148 ) ) ( * 1 x156 ) ) ( * 1 x164 ) ) ( * 1 x172 ) ) 400 ) + ( <= ( + ( + ( + ( + ( + ( + ( + ( + 0 ( * 1 x115 ) ) ( * 1 x123 ) ) ( * 1 x131 ) ) ( * 1 x139 ) ) ( * 1 x147 ) ) ( * 1 x155 ) ) ( * 1 x163 ) ) ( * 1 x171 ) ) 350 ) + ( <= ( + ( + ( + ( + ( + ( + ( + ( + 0 ( * 1 x114 ) ) ( * 1 x122 ) ) ( * 1 x130 ) ) ( * 1 x138 ) ) ( * 1 x146 ) ) ( * 1 x154 ) ) ( * 1 x162 ) ) ( * 1 x170 ) ) 350 ) + ( <= ( + ( + ( + ( + ( + ( + ( + ( + 0 ( * 1 x113 ) ) ( * 1 x121 ) ) ( * 1 x129 ) ) ( * 1 x137 ) ) ( * 1 x145 ) ) ( * 1 x153 ) ) ( * 1 x161 ) ) ( * 1 x169 ) ) 350 ) + ( = ( + ( + ( + 0 ( * 1 x56 ) ) ( * (~ 1) x112 ) ) ( * 1 x176 ) ) 30 ) + ( = ( + ( + ( + ( + ( + 0 ( * 1 x55 ) ) ( * (~ 1) x56 ) ) ( * (~ 1) x111 ) ) ( * 1 x112 ) ) ( * 1 x175 ) ) 20 ) + ( = ( + ( + ( + ( + ( + 0 ( * 1 x54 ) ) ( * (~ 1) x55 ) ) ( * (~ 1) x110 ) ) ( * 1 x111 ) ) ( * 1 x174 ) ) 10 ) + ( = ( + ( + ( + ( + ( + 0 ( * 1 x53 ) ) ( * (~ 1) x54 ) ) ( * (~ 1) x109 ) ) ( * 1 x110 ) ) ( * 1 x173 ) ) 10 ) + ( = ( + ( + ( + ( + ( + 0 ( * 1 x52 ) ) ( * (~ 1) x53 ) ) ( * (~ 1) x108 ) ) ( * 1 x109 ) ) ( * 1 x172 ) ) 0 ) + ( = ( + ( + ( + ( + ( + 0 ( * 1 x51 ) ) ( * (~ 1) x52 ) ) ( * (~ 1) x107 ) ) ( * 1 x108 ) ) ( * 1 x171 ) ) 0 ) + ( = ( + ( + ( + ( + ( + 0 ( * 1 x50 ) ) ( * (~ 1) x51 ) ) ( * (~ 1) x106 ) ) ( * 1 x107 ) ) ( * 1 x170 ) ) 20 ) + ( = ( + ( + ( + 0 ( * (~ 1) x50 ) ) ( * 1 x106 ) ) ( * 1 x169 ) ) 10 ) + ( = ( + ( + ( + 0 ( * 1 x49 ) ) ( * (~ 1) x105 ) ) ( * 1 x168 ) ) 40 ) + ( = ( + ( + ( + ( + ( + 0 ( * 1 x48 ) ) ( * (~ 1) x49 ) ) ( * (~ 1) x104 ) ) ( * 1 x105 ) ) ( * 1 x167 ) ) 40 ) + ( = ( + ( + ( + ( + ( + 0 ( * 1 x47 ) ) ( * (~ 1) x48 ) ) ( * (~ 1) x103 ) ) ( * 1 x104 ) ) ( * 1 x166 ) ) 60 ) + ( = ( + ( + ( + ( + ( + 0 ( * 1 x46 ) ) ( * (~ 1) x47 ) ) ( * (~ 1) x102 ) ) ( * 1 x103 ) ) ( * 1 x165 ) ) 20 ) + ( = ( + ( + ( + ( + ( + 0 ( * 1 x45 ) ) ( * (~ 1) x46 ) ) ( * (~ 1) x101 ) ) ( * 1 x102 ) ) ( * 1 x164 ) ) 10 ) + ( = ( + ( + ( + ( + ( + 0 ( * 1 x44 ) ) ( * (~ 1) x45 ) ) ( * (~ 1) x100 ) ) ( * 1 x101 ) ) ( * 1 x163 ) ) 50 ) + ( = ( + ( + ( + ( + ( + 0 ( * 1 x43 ) ) ( * (~ 1) x44 ) ) ( * (~ 1) x99 ) ) ( * 1 x100 ) ) ( * 1 x162 ) ) 20 ) + ( = ( + ( + ( + 0 ( * (~ 1) x43 ) ) ( * 1 x99 ) ) ( * 1 x161 ) ) 0 ) + ( = ( + ( + ( + 0 ( * 1 x42 ) ) ( * (~ 1) x98 ) ) ( * 1 x160 ) ) 50 ) + ( = ( + ( + ( + ( + ( + 0 ( * 1 x41 ) ) ( * (~ 1) x42 ) ) ( * (~ 1) x97 ) ) ( * 1 x98 ) ) ( * 1 x159 ) ) 40 ) + ( = ( + ( + ( + ( + ( + 0 ( * 1 x40 ) ) ( * (~ 1) x41 ) ) ( * (~ 1) x96 ) ) ( * 1 x97 ) ) ( * 1 x158 ) ) 20 ) + ( = ( + ( + ( + ( + ( + 0 ( * 1 x39 ) ) ( * (~ 1) x40 ) ) ( * (~ 1) x95 ) ) ( * 1 x96 ) ) ( * 1 x157 ) ) 100 ) + ( = ( + ( + ( + ( + ( + 0 ( * 1 x38 ) ) ( * (~ 1) x39 ) ) ( * (~ 1) x94 ) ) ( * 1 x95 ) ) ( * 1 x156 ) ) 40 ) + ( = ( + ( + ( + ( + ( + 0 ( * 1 x37 ) ) ( * (~ 1) x38 ) ) ( * (~ 1) x93 ) ) ( * 1 x94 ) ) ( * 1 x155 ) ) 40 ) + ( = ( + ( + ( + ( + ( + 0 ( * 1 x36 ) ) ( * (~ 1) x37 ) ) ( * (~ 1) x92 ) ) ( * 1 x93 ) ) ( * 1 x154 ) ) 40 ) + ( = ( + ( + ( + 0 ( * (~ 1) x36 ) ) ( * 1 x92 ) ) ( * 1 x153 ) ) 70 ) + ( = ( + ( + ( + 0 ( * 1 x35 ) ) ( * (~ 1) x91 ) ) ( * 1 x152 ) ) 10 ) + ( = ( + ( + ( + ( + ( + 0 ( * 1 x34 ) ) ( * (~ 1) x35 ) ) ( * (~ 1) x90 ) ) ( * 1 x91 ) ) ( * 1 x151 ) ) 20 ) + ( = ( + ( + ( + ( + ( + 0 ( * 1 x33 ) ) ( * (~ 1) x34 ) ) ( * (~ 1) x89 ) ) ( * 1 x90 ) ) ( * 1 x150 ) ) 10 ) + ( = ( + ( + ( + ( + ( + 0 ( * 1 x32 ) ) ( * (~ 1) x33 ) ) ( * (~ 1) x88 ) ) ( * 1 x89 ) ) ( * 1 x149 ) ) 10 ) + ( = ( + ( + ( + ( + ( + 0 ( * 1 x31 ) ) ( * (~ 1) x32 ) ) ( * (~ 1) x87 ) ) ( * 1 x88 ) ) ( * 1 x148 ) ) 40 ) + ( = ( + ( + ( + ( + ( + 0 ( * 1 x30 ) ) ( * (~ 1) x31 ) ) ( * (~ 1) x86 ) ) ( * 1 x87 ) ) ( * 1 x147 ) ) 20 ) + ( = ( + ( + ( + ( + ( + 0 ( * 1 x29 ) ) ( * (~ 1) x30 ) ) ( * (~ 1) x85 ) ) ( * 1 x86 ) ) ( * 1 x146 ) ) 0 ) + ( = ( + ( + ( + 0 ( * (~ 1) x29 ) ) ( * 1 x85 ) ) ( * 1 x145 ) ) 50 ) + ( = ( + ( + ( + 0 ( * 1 x28 ) ) ( * (~ 1) x84 ) ) ( * 1 x144 ) ) 100 ) + ( = ( + ( + ( + ( + ( + 0 ( * 1 x27 ) ) ( * (~ 1) x28 ) ) ( * (~ 1) x83 ) ) ( * 1 x84 ) ) ( * 1 x143 ) ) 100 ) + ( = ( + ( + ( + ( + ( + 0 ( * 1 x26 ) ) ( * (~ 1) x27 ) ) ( * (~ 1) x82 ) ) ( * 1 x83 ) ) ( * 1 x142 ) ) 90 ) + ( = ( + ( + ( + ( + ( + 0 ( * 1 x25 ) ) ( * (~ 1) x26 ) ) ( * (~ 1) x81 ) ) ( * 1 x82 ) ) ( * 1 x141 ) ) 160 ) + ( = ( + ( + ( + ( + ( + 0 ( * 1 x24 ) ) ( * (~ 1) x25 ) ) ( * (~ 1) x80 ) ) ( * 1 x81 ) ) ( * 1 x140 ) ) 150 ) + ( = ( + ( + ( + ( + ( + 0 ( * 1 x23 ) ) ( * (~ 1) x24 ) ) ( * (~ 1) x79 ) ) ( * 1 x80 ) ) ( * 1 x139 ) ) 100 ) + ( = ( + ( + ( + ( + ( + 0 ( * 1 x22 ) ) ( * (~ 1) x23 ) ) ( * (~ 1) x78 ) ) ( * 1 x79 ) ) ( * 1 x138 ) ) 100 ) + ( = ( + ( + ( + 0 ( * (~ 1) x22 ) ) ( * 1 x78 ) ) ( * 1 x137 ) ) 0 ) + ( = ( + ( + ( + 0 ( * 1 x21 ) ) ( * (~ 1) x77 ) ) ( * 1 x136 ) ) 160 ) + ( = ( + ( + ( + ( + ( + 0 ( * 1 x20 ) ) ( * (~ 1) x21 ) ) ( * (~ 1) x76 ) ) ( * 1 x77 ) ) ( * 1 x135 ) ) 90 ) + ( = ( + ( + ( + ( + ( + 0 ( * 1 x19 ) ) ( * (~ 1) x20 ) ) ( * (~ 1) x75 ) ) ( * 1 x76 ) ) ( * 1 x134 ) ) 80 ) + ( = ( + ( + ( + ( + ( + 0 ( * 1 x18 ) ) ( * (~ 1) x19 ) ) ( * (~ 1) x74 ) ) ( * 1 x75 ) ) ( * 1 x133 ) ) 40 ) + ( = ( + ( + ( + ( + ( + 0 ( * 1 x17 ) ) ( * (~ 1) x18 ) ) ( * (~ 1) x73 ) ) ( * 1 x74 ) ) ( * 1 x132 ) ) 100 ) + ( = ( + ( + ( + ( + ( + 0 ( * 1 x16 ) ) ( * (~ 1) x17 ) ) ( * (~ 1) x72 ) ) ( * 1 x73 ) ) ( * 1 x131 ) ) 0 ) + ( = ( + ( + ( + ( + ( + 0 ( * 1 x15 ) ) ( * (~ 1) x16 ) ) ( * (~ 1) x71 ) ) ( * 1 x72 ) ) ( * 1 x130 ) ) 50 ) + ( = ( + ( + ( + 0 ( * (~ 1) x15 ) ) ( * 1 x71 ) ) ( * 1 x129 ) ) 40 ) + ( = ( + ( + ( + 0 ( * 1 x14 ) ) ( * (~ 1) x70 ) ) ( * 1 x128 ) ) 50 ) + ( = ( + ( + ( + ( + ( + 0 ( * 1 x13 ) ) ( * (~ 1) x14 ) ) ( * (~ 1) x69 ) ) ( * 1 x70 ) ) ( * 1 x127 ) ) 40 ) + ( = ( + ( + ( + ( + ( + 0 ( * 1 x12 ) ) ( * (~ 1) x13 ) ) ( * (~ 1) x68 ) ) ( * 1 x69 ) ) ( * 1 x126 ) ) 0 ) + ( = ( + ( + ( + ( + ( + 0 ( * 1 x11 ) ) ( * (~ 1) x12 ) ) ( * (~ 1) x67 ) ) ( * 1 x68 ) ) ( * 1 x125 ) ) 30 ) + ( = ( + ( + ( + ( + ( + 0 ( * 1 x10 ) ) ( * (~ 1) x11 ) ) ( * (~ 1) x66 ) ) ( * 1 x67 ) ) ( * 1 x124 ) ) 10 ) + ( = ( + ( + ( + ( + ( + 0 ( * 1 x9 ) ) ( * (~ 1) x10 ) ) ( * (~ 1) x65 ) ) ( * 1 x66 ) ) ( * 1 x123 ) ) 50 ) + ( = ( + ( + ( + ( + ( + 0 ( * 1 x8 ) ) ( * (~ 1) x9 ) ) ( * (~ 1) x64 ) ) ( * 1 x65 ) ) ( * 1 x122 ) ) 40 ) + ( = ( + ( + ( + 0 ( * (~ 1) x8 ) ) ( * 1 x64 ) ) ( * 1 x121 ) ) 20 ) + ( = ( + ( + ( + 0 ( * 1 x7 ) ) ( * (~ 1) x63 ) ) ( * 1 x120 ) ) 100 ) + ( = ( + ( + ( + ( + ( + 0 ( * 1 x6 ) ) ( * (~ 1) x7 ) ) ( * (~ 1) x62 ) ) ( * 1 x63 ) ) ( * 1 x119 ) ) 0 ) + ( = ( + ( + ( + ( + ( + 0 ( * 1 x5 ) ) ( * (~ 1) x6 ) ) ( * (~ 1) x61 ) ) ( * 1 x62 ) ) ( * 1 x118 ) ) 80 ) + ( = ( + ( + ( + ( + ( + 0 ( * 1 x4 ) ) ( * (~ 1) x5 ) ) ( * (~ 1) x60 ) ) ( * 1 x61 ) ) ( * 1 x117 ) ) 20 ) + ( = ( + ( + ( + ( + ( + 0 ( * 1 x3 ) ) ( * (~ 1) x4 ) ) ( * (~ 1) x59 ) ) ( * 1 x60 ) ) ( * 1 x116 ) ) 100 ) + ( = ( + ( + ( + ( + ( + 0 ( * 1 x2 ) ) ( * (~ 1) x3 ) ) ( * (~ 1) x58 ) ) ( * 1 x59 ) ) ( * 1 x115 ) ) 50 ) + ( = ( + ( + ( + ( + ( + 0 ( * 1 x1 ) ) ( * (~ 1) x2 ) ) ( * (~ 1) x57 ) ) ( * 1 x58 ) ) ( * 1 x114 ) ) 70 ) + ( = ( + ( + ( + 0 ( * (~ 1) x1 ) ) ( * 1 x57 ) ) ( * 1 x113 ) ) 0 ) + ( >= x1 0 ) + ( >= x2 0 ) + ( >= x3 0 ) + ( >= x4 0 ) + ( >= x5 0 ) + ( >= x6 0 ) + ( >= x7 0 ) + ( >= x8 0 ) + ( >= x9 0 ) + ( >= x10 0 ) + ( >= x11 0 ) + ( >= x12 0 ) + ( >= x13 0 ) + ( >= x14 0 ) + ( >= x15 0 ) + ( >= x16 0 ) + ( >= x17 0 ) + ( >= x18 0 ) + ( >= x19 0 ) + ( >= x20 0 ) + ( >= x21 0 ) + ( >= x22 0 ) + ( >= x23 0 ) + ( >= x24 0 ) + ( >= x25 0 ) + ( >= x26 0 ) + ( >= x27 0 ) + ( >= x28 0 ) + ( >= x29 0 ) + ( >= x30 0 ) + ( >= x31 0 ) + ( >= x32 0 ) + ( >= x33 0 ) + ( >= x34 0 ) + ( >= x35 0 ) + ( >= x36 0 ) + ( >= x37 0 ) + ( >= x38 0 ) + ( >= x39 0 ) + ( >= x40 0 ) + ( >= x41 0 ) + ( >= x42 0 ) + ( >= x43 0 ) + ( >= x44 0 ) + ( >= x45 0 ) + ( >= x46 0 ) + ( >= x47 0 ) + ( >= x48 0 ) + ( >= x49 0 ) + ( >= x50 0 ) + ( >= x51 0 ) + ( >= x52 0 ) + ( >= x53 0 ) + ( >= x54 0 ) + ( >= x55 0 ) + ( >= x56 0 ) + ( >= x57 0 ) + ( >= x58 0 ) + ( >= x59 0 ) + ( >= x60 0 ) + ( >= x61 0 ) + ( >= x62 0 ) + ( >= x63 0 ) + ( >= x64 0 ) + ( >= x65 0 ) + ( >= x66 0 ) + ( >= x67 0 ) + ( >= x68 0 ) + ( >= x69 0 ) + ( >= x70 0 ) + ( >= x71 0 ) + ( >= x72 0 ) + ( >= x73 0 ) + ( >= x74 0 ) + ( >= x75 0 ) + ( >= x76 0 ) + ( >= x77 0 ) + ( >= x78 0 ) + ( >= x79 0 ) + ( >= x80 0 ) + ( >= x81 0 ) + ( >= x82 0 ) + ( >= x83 0 ) + ( >= x84 0 ) + ( >= x85 0 ) + ( >= x86 0 ) + ( >= x87 0 ) + ( >= x88 0 ) + ( >= x89 0 ) + ( >= x90 0 ) + ( >= x91 0 ) + ( >= x92 0 ) + ( >= x93 0 ) + ( >= x94 0 ) + ( >= x95 0 ) + ( >= x96 0 ) + ( >= x97 0 ) + ( >= x98 0 ) + ( >= x99 0 ) + ( >= x100 0 ) + ( >= x101 0 ) + ( >= x102 0 ) + ( >= x103 0 ) + ( >= x104 0 ) + ( >= x105 0 ) + ( >= x106 0 ) + ( >= x107 0 ) + ( >= x108 0 ) + ( >= x109 0 ) + ( >= x110 0 ) + ( >= x111 0 ) + ( >= x112 0 ) + ( >= x176 0 ) + ( >= x175 0 ) + ( >= x174 0 ) + ( >= x173 0 ) + ( >= x172 0 ) + ( >= x171 0 ) + ( >= x170 0 ) + ( >= x169 0 ) + ( >= x168 0 ) + ( >= x167 0 ) + ( >= x166 0 ) + ( >= x165 0 ) + ( >= x164 0 ) + ( >= x163 0 ) + ( >= x162 0 ) + ( >= x161 0 ) + ( >= x160 0 ) + ( >= x159 0 ) + ( >= x158 0 ) + ( >= x157 0 ) + ( >= x156 0 ) + ( >= x155 0 ) + ( >= x154 0 ) + ( >= x153 0 ) + ( >= x152 0 ) + ( >= x151 0 ) + ( >= x150 0 ) + ( >= x149 0 ) + ( >= x148 0 ) + ( >= x147 0 ) + ( >= x146 0 ) + ( >= x145 0 ) + ( >= x144 0 ) + ( >= x143 0 ) + ( >= x142 0 ) + ( >= x141 0 ) + ( >= x140 0 ) + ( >= x139 0 ) + ( >= x138 0 ) + ( >= x137 0 ) + ( >= x136 0 ) + ( >= x135 0 ) + ( >= x134 0 ) + ( >= x133 0 ) + ( >= x132 0 ) + ( >= x131 0 ) + ( >= x130 0 ) + ( >= x129 0 ) + ( >= x128 0 ) + ( >= x127 0 ) + ( >= x126 0 ) + ( >= x125 0 ) + ( >= x124 0 ) + ( >= x123 0 ) + ( >= x122 0 ) + ( >= x121 0 ) + ( >= x120 0 ) + ( >= x119 0 ) + ( >= x118 0 ) + ( >= x117 0 ) + ( >= x116 0 ) + ( >= x115 0 ) + ( >= x114 0 ) + ( >= x113 0 ) + ( implies ( and ( not x207 ) ( and ( not x208 ) ( and ( not x209 ) ( and ( not x210 ) true ) ) ) ) ( = tmp75 0 ) ) + ( implies ( and ( not x207 ) ( and ( not x208 ) ( and ( not x209 ) ( and x210 true ) ) ) ) ( = tmp75 400 ) ) + ( implies ( and ( not x207 ) ( and ( not x208 ) ( and x209 ( and ( not x210 ) true ) ) ) ) ( = tmp75 400 ) ) + ( implies ( and ( not x207 ) ( and ( not x208 ) ( and x209 ( and x210 true ) ) ) ) ( = tmp75 800 ) ) + ( implies ( and ( not x207 ) ( and x208 ( and ( not x209 ) ( and ( not x210 ) true ) ) ) ) ( = tmp75 300 ) ) + ( implies ( and ( not x207 ) ( and x208 ( and ( not x209 ) ( and x210 true ) ) ) ) ( = tmp75 700 ) ) + ( implies ( and ( not x207 ) ( and x208 ( and x209 ( and ( not x210 ) true ) ) ) ) ( = tmp75 700 ) ) + ( implies ( and ( not x207 ) ( and x208 ( and x209 ( and x210 true ) ) ) ) ( = tmp75 1100 ) ) + ( implies ( and x207 ( and ( not x208 ) ( and ( not x209 ) ( and ( not x210 ) true ) ) ) ) ( = tmp75 300 ) ) + ( implies ( and x207 ( and ( not x208 ) ( and ( not x209 ) ( and x210 true ) ) ) ) ( = tmp75 700 ) ) + ( implies ( and x207 ( and ( not x208 ) ( and x209 ( and ( not x210 ) true ) ) ) ) ( = tmp75 700 ) ) + ( implies ( and x207 ( and ( not x208 ) ( and x209 ( and x210 true ) ) ) ) ( = tmp75 1100 ) ) + ( implies ( and x207 ( and x208 ( and ( not x209 ) ( and ( not x210 ) true ) ) ) ) ( = tmp75 600 ) ) + ( implies ( and x207 ( and x208 ( and ( not x209 ) ( and x210 true ) ) ) ) ( = tmp75 1000 ) ) + ( implies ( and x207 ( and x208 ( and x209 ( and ( not x210 ) true ) ) ) ) ( = tmp75 1000 ) ) + ( implies ( and x207 ( and x208 ( and x209 ( and x210 true ) ) ) ) ( = tmp75 1400 ) ) + ( implies ( and ( not x216 ) ( and ( not x215 ) ( and ( not x214 ) ( and ( not x213 ) ( and ( not x212 ) ( and ( not x211 ) true ) ) ) ) ) ) ( = tmp74 0 ) ) + ( implies ( and ( not x216 ) ( and ( not x215 ) ( and ( not x214 ) ( and ( not x213 ) ( and ( not x212 ) ( and x211 true ) ) ) ) ) ) ( = tmp74 400 ) ) + ( implies ( and ( not x216 ) ( and ( not x215 ) ( and ( not x214 ) ( and ( not x213 ) ( and x212 ( and ( not x211 ) true ) ) ) ) ) ) ( = tmp74 400 ) ) + ( implies ( and ( not x216 ) ( and ( not x215 ) ( and ( not x214 ) ( and ( not x213 ) ( and x212 ( and x211 true ) ) ) ) ) ) ( = tmp74 800 ) ) + ( implies ( and ( not x216 ) ( and ( not x215 ) ( and ( not x214 ) ( and x213 ( and ( not x212 ) ( and ( not x211 ) true ) ) ) ) ) ) ( = tmp74 400 ) ) + ( implies ( and ( not x216 ) ( and ( not x215 ) ( and ( not x214 ) ( and x213 ( and ( not x212 ) ( and x211 true ) ) ) ) ) ) ( = tmp74 800 ) ) + ( implies ( and ( not x216 ) ( and ( not x215 ) ( and ( not x214 ) ( and x213 ( and x212 ( and ( not x211 ) true ) ) ) ) ) ) ( = tmp74 800 ) ) + ( implies ( and ( not x216 ) ( and ( not x215 ) ( and ( not x214 ) ( and x213 ( and x212 ( and x211 true ) ) ) ) ) ) ( = tmp74 1200 ) ) + ( implies ( and ( not x216 ) ( and ( not x215 ) ( and x214 ( and ( not x213 ) ( and ( not x212 ) ( and ( not x211 ) true ) ) ) ) ) ) ( = tmp74 400 ) ) + ( implies ( and ( not x216 ) ( and ( not x215 ) ( and x214 ( and ( not x213 ) ( and ( not x212 ) ( and x211 true ) ) ) ) ) ) ( = tmp74 800 ) ) + ( implies ( and ( not x216 ) ( and ( not x215 ) ( and x214 ( and ( not x213 ) ( and x212 ( and ( not x211 ) true ) ) ) ) ) ) ( = tmp74 800 ) ) + ( implies ( and ( not x216 ) ( and ( not x215 ) ( and x214 ( and ( not x213 ) ( and x212 ( and x211 true ) ) ) ) ) ) ( = tmp74 1200 ) ) + ( implies ( and ( not x216 ) ( and ( not x215 ) ( and x214 ( and x213 ( and ( not x212 ) ( and ( not x211 ) true ) ) ) ) ) ) ( = tmp74 800 ) ) + ( implies ( and ( not x216 ) ( and ( not x215 ) ( and x214 ( and x213 ( and ( not x212 ) ( and x211 true ) ) ) ) ) ) ( = tmp74 1200 ) ) + ( implies ( and ( not x216 ) ( and ( not x215 ) ( and x214 ( and x213 ( and x212 ( and ( not x211 ) true ) ) ) ) ) ) ( = tmp74 1200 ) ) + ( implies ( and ( not x216 ) ( and ( not x215 ) ( and x214 ( and x213 ( and x212 ( and x211 true ) ) ) ) ) ) ( = tmp74 1600 ) ) + ( implies ( and ( not x216 ) ( and x215 ( and ( not x214 ) ( and ( not x213 ) ( and ( not x212 ) ( and ( not x211 ) true ) ) ) ) ) ) ( = tmp74 400 ) ) + ( implies ( and ( not x216 ) ( and x215 ( and ( not x214 ) ( and ( not x213 ) ( and ( not x212 ) ( and x211 true ) ) ) ) ) ) ( = tmp74 800 ) ) + ( implies ( and ( not x216 ) ( and x215 ( and ( not x214 ) ( and ( not x213 ) ( and x212 ( and ( not x211 ) true ) ) ) ) ) ) ( = tmp74 800 ) ) + ( implies ( and ( not x216 ) ( and x215 ( and ( not x214 ) ( and ( not x213 ) ( and x212 ( and x211 true ) ) ) ) ) ) ( = tmp74 1200 ) ) + ( implies ( and ( not x216 ) ( and x215 ( and ( not x214 ) ( and x213 ( and ( not x212 ) ( and ( not x211 ) true ) ) ) ) ) ) ( = tmp74 800 ) ) + ( implies ( and ( not x216 ) ( and x215 ( and ( not x214 ) ( and x213 ( and ( not x212 ) ( and x211 true ) ) ) ) ) ) ( = tmp74 1200 ) ) + ( implies ( and ( not x216 ) ( and x215 ( and ( not x214 ) ( and x213 ( and x212 ( and ( not x211 ) true ) ) ) ) ) ) ( = tmp74 1200 ) ) + ( implies ( and ( not x216 ) ( and x215 ( and ( not x214 ) ( and x213 ( and x212 ( and x211 true ) ) ) ) ) ) ( = tmp74 1600 ) ) + ( implies ( and ( not x216 ) ( and x215 ( and x214 ( and ( not x213 ) ( and ( not x212 ) ( and ( not x211 ) true ) ) ) ) ) ) ( = tmp74 800 ) ) + ( implies ( and ( not x216 ) ( and x215 ( and x214 ( and ( not x213 ) ( and ( not x212 ) ( and x211 true ) ) ) ) ) ) ( = tmp74 1200 ) ) + ( implies ( and ( not x216 ) ( and x215 ( and x214 ( and ( not x213 ) ( and x212 ( and ( not x211 ) true ) ) ) ) ) ) ( = tmp74 1200 ) ) + ( implies ( and ( not x216 ) ( and x215 ( and x214 ( and ( not x213 ) ( and x212 ( and x211 true ) ) ) ) ) ) ( = tmp74 1600 ) ) + ( implies ( and ( not x216 ) ( and x215 ( and x214 ( and x213 ( and ( not x212 ) ( and ( not x211 ) true ) ) ) ) ) ) ( = tmp74 1200 ) ) + ( implies ( and ( not x216 ) ( and x215 ( and x214 ( and x213 ( and ( not x212 ) ( and x211 true ) ) ) ) ) ) ( = tmp74 1600 ) ) + ( implies ( and ( not x216 ) ( and x215 ( and x214 ( and x213 ( and x212 ( and ( not x211 ) true ) ) ) ) ) ) ( = tmp74 1600 ) ) + ( implies ( and ( not x216 ) ( and x215 ( and x214 ( and x213 ( and x212 ( and x211 true ) ) ) ) ) ) ( = tmp74 2000 ) ) + ( implies ( and x216 ( and ( not x215 ) ( and ( not x214 ) ( and ( not x213 ) ( and ( not x212 ) ( and ( not x211 ) true ) ) ) ) ) ) ( = tmp74 400 ) ) + ( implies ( and x216 ( and ( not x215 ) ( and ( not x214 ) ( and ( not x213 ) ( and ( not x212 ) ( and x211 true ) ) ) ) ) ) ( = tmp74 800 ) ) + ( implies ( and x216 ( and ( not x215 ) ( and ( not x214 ) ( and ( not x213 ) ( and x212 ( and ( not x211 ) true ) ) ) ) ) ) ( = tmp74 800 ) ) + ( implies ( and x216 ( and ( not x215 ) ( and ( not x214 ) ( and ( not x213 ) ( and x212 ( and x211 true ) ) ) ) ) ) ( = tmp74 1200 ) ) + ( implies ( and x216 ( and ( not x215 ) ( and ( not x214 ) ( and x213 ( and ( not x212 ) ( and ( not x211 ) true ) ) ) ) ) ) ( = tmp74 800 ) ) + ( implies ( and x216 ( and ( not x215 ) ( and ( not x214 ) ( and x213 ( and ( not x212 ) ( and x211 true ) ) ) ) ) ) ( = tmp74 1200 ) ) + ( implies ( and x216 ( and ( not x215 ) ( and ( not x214 ) ( and x213 ( and x212 ( and ( not x211 ) true ) ) ) ) ) ) ( = tmp74 1200 ) ) + ( implies ( and x216 ( and ( not x215 ) ( and ( not x214 ) ( and x213 ( and x212 ( and x211 true ) ) ) ) ) ) ( = tmp74 1600 ) ) + ( implies ( and x216 ( and ( not x215 ) ( and x214 ( and ( not x213 ) ( and ( not x212 ) ( and ( not x211 ) true ) ) ) ) ) ) ( = tmp74 800 ) ) + ( implies ( and x216 ( and ( not x215 ) ( and x214 ( and ( not x213 ) ( and ( not x212 ) ( and x211 true ) ) ) ) ) ) ( = tmp74 1200 ) ) + ( implies ( and x216 ( and ( not x215 ) ( and x214 ( and ( not x213 ) ( and x212 ( and ( not x211 ) true ) ) ) ) ) ) ( = tmp74 1200 ) ) + ( implies ( and x216 ( and ( not x215 ) ( and x214 ( and ( not x213 ) ( and x212 ( and x211 true ) ) ) ) ) ) ( = tmp74 1600 ) ) + ( implies ( and x216 ( and ( not x215 ) ( and x214 ( and x213 ( and ( not x212 ) ( and ( not x211 ) true ) ) ) ) ) ) ( = tmp74 1200 ) ) + ( implies ( and x216 ( and ( not x215 ) ( and x214 ( and x213 ( and ( not x212 ) ( and x211 true ) ) ) ) ) ) ( = tmp74 1600 ) ) + ( implies ( and x216 ( and ( not x215 ) ( and x214 ( and x213 ( and x212 ( and ( not x211 ) true ) ) ) ) ) ) ( = tmp74 1600 ) ) + ( implies ( and x216 ( and ( not x215 ) ( and x214 ( and x213 ( and x212 ( and x211 true ) ) ) ) ) ) ( = tmp74 2000 ) ) + ( implies ( and x216 ( and x215 ( and ( not x214 ) ( and ( not x213 ) ( and ( not x212 ) ( and ( not x211 ) true ) ) ) ) ) ) ( = tmp74 800 ) ) + ( implies ( and x216 ( and x215 ( and ( not x214 ) ( and ( not x213 ) ( and ( not x212 ) ( and x211 true ) ) ) ) ) ) ( = tmp74 1200 ) ) + ( implies ( and x216 ( and x215 ( and ( not x214 ) ( and ( not x213 ) ( and x212 ( and ( not x211 ) true ) ) ) ) ) ) ( = tmp74 1200 ) ) + ( implies ( and x216 ( and x215 ( and ( not x214 ) ( and ( not x213 ) ( and x212 ( and x211 true ) ) ) ) ) ) ( = tmp74 1600 ) ) + ( implies ( and x216 ( and x215 ( and ( not x214 ) ( and x213 ( and ( not x212 ) ( and ( not x211 ) true ) ) ) ) ) ) ( = tmp74 1200 ) ) + ( implies ( and x216 ( and x215 ( and ( not x214 ) ( and x213 ( and ( not x212 ) ( and x211 true ) ) ) ) ) ) ( = tmp74 1600 ) ) + ( implies ( and x216 ( and x215 ( and ( not x214 ) ( and x213 ( and x212 ( and ( not x211 ) true ) ) ) ) ) ) ( = tmp74 1600 ) ) + ( implies ( and x216 ( and x215 ( and ( not x214 ) ( and x213 ( and x212 ( and x211 true ) ) ) ) ) ) ( = tmp74 2000 ) ) + ( implies ( and x216 ( and x215 ( and x214 ( and ( not x213 ) ( and ( not x212 ) ( and ( not x211 ) true ) ) ) ) ) ) ( = tmp74 1200 ) ) + ( implies ( and x216 ( and x215 ( and x214 ( and ( not x213 ) ( and ( not x212 ) ( and x211 true ) ) ) ) ) ) ( = tmp74 1600 ) ) + ( implies ( and x216 ( and x215 ( and x214 ( and ( not x213 ) ( and x212 ( and ( not x211 ) true ) ) ) ) ) ) ( = tmp74 1600 ) ) + ( implies ( and x216 ( and x215 ( and x214 ( and ( not x213 ) ( and x212 ( and x211 true ) ) ) ) ) ) ( = tmp74 2000 ) ) + ( implies ( and x216 ( and x215 ( and x214 ( and x213 ( and ( not x212 ) ( and ( not x211 ) true ) ) ) ) ) ) ( = tmp74 1600 ) ) + ( implies ( and x216 ( and x215 ( and x214 ( and x213 ( and ( not x212 ) ( and x211 true ) ) ) ) ) ) ( = tmp74 2000 ) ) + ( implies ( and x216 ( and x215 ( and x214 ( and x213 ( and x212 ( and ( not x211 ) true ) ) ) ) ) ) ( = tmp74 2000 ) ) + ( implies ( and x216 ( and x215 ( and x214 ( and x213 ( and x212 ( and x211 true ) ) ) ) ) ) ( = tmp74 2400 ) ) + ( implies ( and ( not x201 ) ( and ( not x202 ) ( and ( not x203 ) ( and ( not x204 ) ( and ( not x205 ) ( and ( not x206 ) true ) ) ) ) ) ) ( = tmp73 0 ) ) + ( implies ( and ( not x201 ) ( and ( not x202 ) ( and ( not x203 ) ( and ( not x204 ) ( and ( not x205 ) ( and x206 true ) ) ) ) ) ) ( = tmp73 300 ) ) + ( implies ( and ( not x201 ) ( and ( not x202 ) ( and ( not x203 ) ( and ( not x204 ) ( and x205 ( and ( not x206 ) true ) ) ) ) ) ) ( = tmp73 300 ) ) + ( implies ( and ( not x201 ) ( and ( not x202 ) ( and ( not x203 ) ( and ( not x204 ) ( and x205 ( and x206 true ) ) ) ) ) ) ( = tmp73 600 ) ) + ( implies ( and ( not x201 ) ( and ( not x202 ) ( and ( not x203 ) ( and x204 ( and ( not x205 ) ( and ( not x206 ) true ) ) ) ) ) ) ( = tmp73 300 ) ) + ( implies ( and ( not x201 ) ( and ( not x202 ) ( and ( not x203 ) ( and x204 ( and ( not x205 ) ( and x206 true ) ) ) ) ) ) ( = tmp73 600 ) ) + ( implies ( and ( not x201 ) ( and ( not x202 ) ( and ( not x203 ) ( and x204 ( and x205 ( and ( not x206 ) true ) ) ) ) ) ) ( = tmp73 600 ) ) + ( implies ( and ( not x201 ) ( and ( not x202 ) ( and ( not x203 ) ( and x204 ( and x205 ( and x206 true ) ) ) ) ) ) ( = tmp73 900 ) ) + ( implies ( and ( not x201 ) ( and ( not x202 ) ( and x203 ( and ( not x204 ) ( and ( not x205 ) ( and ( not x206 ) true ) ) ) ) ) ) ( = tmp73 300 ) ) + ( implies ( and ( not x201 ) ( and ( not x202 ) ( and x203 ( and ( not x204 ) ( and ( not x205 ) ( and x206 true ) ) ) ) ) ) ( = tmp73 600 ) ) + ( implies ( and ( not x201 ) ( and ( not x202 ) ( and x203 ( and ( not x204 ) ( and x205 ( and ( not x206 ) true ) ) ) ) ) ) ( = tmp73 600 ) ) + ( implies ( and ( not x201 ) ( and ( not x202 ) ( and x203 ( and ( not x204 ) ( and x205 ( and x206 true ) ) ) ) ) ) ( = tmp73 900 ) ) + ( implies ( and ( not x201 ) ( and ( not x202 ) ( and x203 ( and x204 ( and ( not x205 ) ( and ( not x206 ) true ) ) ) ) ) ) ( = tmp73 600 ) ) + ( implies ( and ( not x201 ) ( and ( not x202 ) ( and x203 ( and x204 ( and ( not x205 ) ( and x206 true ) ) ) ) ) ) ( = tmp73 900 ) ) + ( implies ( and ( not x201 ) ( and ( not x202 ) ( and x203 ( and x204 ( and x205 ( and ( not x206 ) true ) ) ) ) ) ) ( = tmp73 900 ) ) + ( implies ( and ( not x201 ) ( and ( not x202 ) ( and x203 ( and x204 ( and x205 ( and x206 true ) ) ) ) ) ) ( = tmp73 1200 ) ) + ( implies ( and ( not x201 ) ( and x202 ( and ( not x203 ) ( and ( not x204 ) ( and ( not x205 ) ( and ( not x206 ) true ) ) ) ) ) ) ( = tmp73 300 ) ) + ( implies ( and ( not x201 ) ( and x202 ( and ( not x203 ) ( and ( not x204 ) ( and ( not x205 ) ( and x206 true ) ) ) ) ) ) ( = tmp73 600 ) ) + ( implies ( and ( not x201 ) ( and x202 ( and ( not x203 ) ( and ( not x204 ) ( and x205 ( and ( not x206 ) true ) ) ) ) ) ) ( = tmp73 600 ) ) + ( implies ( and ( not x201 ) ( and x202 ( and ( not x203 ) ( and ( not x204 ) ( and x205 ( and x206 true ) ) ) ) ) ) ( = tmp73 900 ) ) + ( implies ( and ( not x201 ) ( and x202 ( and ( not x203 ) ( and x204 ( and ( not x205 ) ( and ( not x206 ) true ) ) ) ) ) ) ( = tmp73 600 ) ) + ( implies ( and ( not x201 ) ( and x202 ( and ( not x203 ) ( and x204 ( and ( not x205 ) ( and x206 true ) ) ) ) ) ) ( = tmp73 900 ) ) + ( implies ( and ( not x201 ) ( and x202 ( and ( not x203 ) ( and x204 ( and x205 ( and ( not x206 ) true ) ) ) ) ) ) ( = tmp73 900 ) ) + ( implies ( and ( not x201 ) ( and x202 ( and ( not x203 ) ( and x204 ( and x205 ( and x206 true ) ) ) ) ) ) ( = tmp73 1200 ) ) + ( implies ( and ( not x201 ) ( and x202 ( and x203 ( and ( not x204 ) ( and ( not x205 ) ( and ( not x206 ) true ) ) ) ) ) ) ( = tmp73 600 ) ) + ( implies ( and ( not x201 ) ( and x202 ( and x203 ( and ( not x204 ) ( and ( not x205 ) ( and x206 true ) ) ) ) ) ) ( = tmp73 900 ) ) + ( implies ( and ( not x201 ) ( and x202 ( and x203 ( and ( not x204 ) ( and x205 ( and ( not x206 ) true ) ) ) ) ) ) ( = tmp73 900 ) ) + ( implies ( and ( not x201 ) ( and x202 ( and x203 ( and ( not x204 ) ( and x205 ( and x206 true ) ) ) ) ) ) ( = tmp73 1200 ) ) + ( implies ( and ( not x201 ) ( and x202 ( and x203 ( and x204 ( and ( not x205 ) ( and ( not x206 ) true ) ) ) ) ) ) ( = tmp73 900 ) ) + ( implies ( and ( not x201 ) ( and x202 ( and x203 ( and x204 ( and ( not x205 ) ( and x206 true ) ) ) ) ) ) ( = tmp73 1200 ) ) + ( implies ( and ( not x201 ) ( and x202 ( and x203 ( and x204 ( and x205 ( and ( not x206 ) true ) ) ) ) ) ) ( = tmp73 1200 ) ) + ( implies ( and ( not x201 ) ( and x202 ( and x203 ( and x204 ( and x205 ( and x206 true ) ) ) ) ) ) ( = tmp73 1500 ) ) + ( implies ( and x201 ( and ( not x202 ) ( and ( not x203 ) ( and ( not x204 ) ( and ( not x205 ) ( and ( not x206 ) true ) ) ) ) ) ) ( = tmp73 300 ) ) + ( implies ( and x201 ( and ( not x202 ) ( and ( not x203 ) ( and ( not x204 ) ( and ( not x205 ) ( and x206 true ) ) ) ) ) ) ( = tmp73 600 ) ) + ( implies ( and x201 ( and ( not x202 ) ( and ( not x203 ) ( and ( not x204 ) ( and x205 ( and ( not x206 ) true ) ) ) ) ) ) ( = tmp73 600 ) ) + ( implies ( and x201 ( and ( not x202 ) ( and ( not x203 ) ( and ( not x204 ) ( and x205 ( and x206 true ) ) ) ) ) ) ( = tmp73 900 ) ) + ( implies ( and x201 ( and ( not x202 ) ( and ( not x203 ) ( and x204 ( and ( not x205 ) ( and ( not x206 ) true ) ) ) ) ) ) ( = tmp73 600 ) ) + ( implies ( and x201 ( and ( not x202 ) ( and ( not x203 ) ( and x204 ( and ( not x205 ) ( and x206 true ) ) ) ) ) ) ( = tmp73 900 ) ) + ( implies ( and x201 ( and ( not x202 ) ( and ( not x203 ) ( and x204 ( and x205 ( and ( not x206 ) true ) ) ) ) ) ) ( = tmp73 900 ) ) + ( implies ( and x201 ( and ( not x202 ) ( and ( not x203 ) ( and x204 ( and x205 ( and x206 true ) ) ) ) ) ) ( = tmp73 1200 ) ) + ( implies ( and x201 ( and ( not x202 ) ( and x203 ( and ( not x204 ) ( and ( not x205 ) ( and ( not x206 ) true ) ) ) ) ) ) ( = tmp73 600 ) ) + ( implies ( and x201 ( and ( not x202 ) ( and x203 ( and ( not x204 ) ( and ( not x205 ) ( and x206 true ) ) ) ) ) ) ( = tmp73 900 ) ) + ( implies ( and x201 ( and ( not x202 ) ( and x203 ( and ( not x204 ) ( and x205 ( and ( not x206 ) true ) ) ) ) ) ) ( = tmp73 900 ) ) + ( implies ( and x201 ( and ( not x202 ) ( and x203 ( and ( not x204 ) ( and x205 ( and x206 true ) ) ) ) ) ) ( = tmp73 1200 ) ) + ( implies ( and x201 ( and ( not x202 ) ( and x203 ( and x204 ( and ( not x205 ) ( and ( not x206 ) true ) ) ) ) ) ) ( = tmp73 900 ) ) + ( implies ( and x201 ( and ( not x202 ) ( and x203 ( and x204 ( and ( not x205 ) ( and x206 true ) ) ) ) ) ) ( = tmp73 1200 ) ) + ( implies ( and x201 ( and ( not x202 ) ( and x203 ( and x204 ( and x205 ( and ( not x206 ) true ) ) ) ) ) ) ( = tmp73 1200 ) ) + ( implies ( and x201 ( and ( not x202 ) ( and x203 ( and x204 ( and x205 ( and x206 true ) ) ) ) ) ) ( = tmp73 1500 ) ) + ( implies ( and x201 ( and x202 ( and ( not x203 ) ( and ( not x204 ) ( and ( not x205 ) ( and ( not x206 ) true ) ) ) ) ) ) ( = tmp73 600 ) ) + ( implies ( and x201 ( and x202 ( and ( not x203 ) ( and ( not x204 ) ( and ( not x205 ) ( and x206 true ) ) ) ) ) ) ( = tmp73 900 ) ) + ( implies ( and x201 ( and x202 ( and ( not x203 ) ( and ( not x204 ) ( and x205 ( and ( not x206 ) true ) ) ) ) ) ) ( = tmp73 900 ) ) + ( implies ( and x201 ( and x202 ( and ( not x203 ) ( and ( not x204 ) ( and x205 ( and x206 true ) ) ) ) ) ) ( = tmp73 1200 ) ) + ( implies ( and x201 ( and x202 ( and ( not x203 ) ( and x204 ( and ( not x205 ) ( and ( not x206 ) true ) ) ) ) ) ) ( = tmp73 900 ) ) + ( implies ( and x201 ( and x202 ( and ( not x203 ) ( and x204 ( and ( not x205 ) ( and x206 true ) ) ) ) ) ) ( = tmp73 1200 ) ) + ( implies ( and x201 ( and x202 ( and ( not x203 ) ( and x204 ( and x205 ( and ( not x206 ) true ) ) ) ) ) ) ( = tmp73 1200 ) ) + ( implies ( and x201 ( and x202 ( and ( not x203 ) ( and x204 ( and x205 ( and x206 true ) ) ) ) ) ) ( = tmp73 1500 ) ) + ( implies ( and x201 ( and x202 ( and x203 ( and ( not x204 ) ( and ( not x205 ) ( and ( not x206 ) true ) ) ) ) ) ) ( = tmp73 900 ) ) + ( implies ( and x201 ( and x202 ( and x203 ( and ( not x204 ) ( and ( not x205 ) ( and x206 true ) ) ) ) ) ) ( = tmp73 1200 ) ) + ( implies ( and x201 ( and x202 ( and x203 ( and ( not x204 ) ( and x205 ( and ( not x206 ) true ) ) ) ) ) ) ( = tmp73 1200 ) ) + ( implies ( and x201 ( and x202 ( and x203 ( and ( not x204 ) ( and x205 ( and x206 true ) ) ) ) ) ) ( = tmp73 1500 ) ) + ( implies ( and x201 ( and x202 ( and x203 ( and x204 ( and ( not x205 ) ( and ( not x206 ) true ) ) ) ) ) ) ( = tmp73 1200 ) ) + ( implies ( and x201 ( and x202 ( and x203 ( and x204 ( and ( not x205 ) ( and x206 true ) ) ) ) ) ) ( = tmp73 1500 ) ) + ( implies ( and x201 ( and x202 ( and x203 ( and x204 ( and x205 ( and ( not x206 ) true ) ) ) ) ) ) ( = tmp73 1500 ) ) + ( implies ( and x201 ( and x202 ( and x203 ( and x204 ( and x205 ( and x206 true ) ) ) ) ) ) ( = tmp73 1800 ) ) + ( implies ( and ( not x222 ) ( and ( not x221 ) ( and ( not x220 ) ( and ( not x219 ) ( and ( not x218 ) ( and ( not x217 ) true ) ) ) ) ) ) ( = tmp72 0 ) ) + ( implies ( and ( not x222 ) ( and ( not x221 ) ( and ( not x220 ) ( and ( not x219 ) ( and ( not x218 ) ( and x217 true ) ) ) ) ) ) ( = tmp72 250 ) ) + ( implies ( and ( not x222 ) ( and ( not x221 ) ( and ( not x220 ) ( and ( not x219 ) ( and x218 ( and ( not x217 ) true ) ) ) ) ) ) ( = tmp72 250 ) ) + ( implies ( and ( not x222 ) ( and ( not x221 ) ( and ( not x220 ) ( and ( not x219 ) ( and x218 ( and x217 true ) ) ) ) ) ) ( = tmp72 500 ) ) + ( implies ( and ( not x222 ) ( and ( not x221 ) ( and ( not x220 ) ( and x219 ( and ( not x218 ) ( and ( not x217 ) true ) ) ) ) ) ) ( = tmp72 250 ) ) + ( implies ( and ( not x222 ) ( and ( not x221 ) ( and ( not x220 ) ( and x219 ( and ( not x218 ) ( and x217 true ) ) ) ) ) ) ( = tmp72 500 ) ) + ( implies ( and ( not x222 ) ( and ( not x221 ) ( and ( not x220 ) ( and x219 ( and x218 ( and ( not x217 ) true ) ) ) ) ) ) ( = tmp72 500 ) ) + ( implies ( and ( not x222 ) ( and ( not x221 ) ( and ( not x220 ) ( and x219 ( and x218 ( and x217 true ) ) ) ) ) ) ( = tmp72 750 ) ) + ( implies ( and ( not x222 ) ( and ( not x221 ) ( and x220 ( and ( not x219 ) ( and ( not x218 ) ( and ( not x217 ) true ) ) ) ) ) ) ( = tmp72 250 ) ) + ( implies ( and ( not x222 ) ( and ( not x221 ) ( and x220 ( and ( not x219 ) ( and ( not x218 ) ( and x217 true ) ) ) ) ) ) ( = tmp72 500 ) ) + ( implies ( and ( not x222 ) ( and ( not x221 ) ( and x220 ( and ( not x219 ) ( and x218 ( and ( not x217 ) true ) ) ) ) ) ) ( = tmp72 500 ) ) + ( implies ( and ( not x222 ) ( and ( not x221 ) ( and x220 ( and ( not x219 ) ( and x218 ( and x217 true ) ) ) ) ) ) ( = tmp72 750 ) ) + ( implies ( and ( not x222 ) ( and ( not x221 ) ( and x220 ( and x219 ( and ( not x218 ) ( and ( not x217 ) true ) ) ) ) ) ) ( = tmp72 500 ) ) + ( implies ( and ( not x222 ) ( and ( not x221 ) ( and x220 ( and x219 ( and ( not x218 ) ( and x217 true ) ) ) ) ) ) ( = tmp72 750 ) ) + ( implies ( and ( not x222 ) ( and ( not x221 ) ( and x220 ( and x219 ( and x218 ( and ( not x217 ) true ) ) ) ) ) ) ( = tmp72 750 ) ) + ( implies ( and ( not x222 ) ( and ( not x221 ) ( and x220 ( and x219 ( and x218 ( and x217 true ) ) ) ) ) ) ( = tmp72 1000 ) ) + ( implies ( and ( not x222 ) ( and x221 ( and ( not x220 ) ( and ( not x219 ) ( and ( not x218 ) ( and ( not x217 ) true ) ) ) ) ) ) ( = tmp72 250 ) ) + ( implies ( and ( not x222 ) ( and x221 ( and ( not x220 ) ( and ( not x219 ) ( and ( not x218 ) ( and x217 true ) ) ) ) ) ) ( = tmp72 500 ) ) + ( implies ( and ( not x222 ) ( and x221 ( and ( not x220 ) ( and ( not x219 ) ( and x218 ( and ( not x217 ) true ) ) ) ) ) ) ( = tmp72 500 ) ) + ( implies ( and ( not x222 ) ( and x221 ( and ( not x220 ) ( and ( not x219 ) ( and x218 ( and x217 true ) ) ) ) ) ) ( = tmp72 750 ) ) + ( implies ( and ( not x222 ) ( and x221 ( and ( not x220 ) ( and x219 ( and ( not x218 ) ( and ( not x217 ) true ) ) ) ) ) ) ( = tmp72 500 ) ) + ( implies ( and ( not x222 ) ( and x221 ( and ( not x220 ) ( and x219 ( and ( not x218 ) ( and x217 true ) ) ) ) ) ) ( = tmp72 750 ) ) + ( implies ( and ( not x222 ) ( and x221 ( and ( not x220 ) ( and x219 ( and x218 ( and ( not x217 ) true ) ) ) ) ) ) ( = tmp72 750 ) ) + ( implies ( and ( not x222 ) ( and x221 ( and ( not x220 ) ( and x219 ( and x218 ( and x217 true ) ) ) ) ) ) ( = tmp72 1000 ) ) + ( implies ( and ( not x222 ) ( and x221 ( and x220 ( and ( not x219 ) ( and ( not x218 ) ( and ( not x217 ) true ) ) ) ) ) ) ( = tmp72 500 ) ) + ( implies ( and ( not x222 ) ( and x221 ( and x220 ( and ( not x219 ) ( and ( not x218 ) ( and x217 true ) ) ) ) ) ) ( = tmp72 750 ) ) + ( implies ( and ( not x222 ) ( and x221 ( and x220 ( and ( not x219 ) ( and x218 ( and ( not x217 ) true ) ) ) ) ) ) ( = tmp72 750 ) ) + ( implies ( and ( not x222 ) ( and x221 ( and x220 ( and ( not x219 ) ( and x218 ( and x217 true ) ) ) ) ) ) ( = tmp72 1000 ) ) + ( implies ( and ( not x222 ) ( and x221 ( and x220 ( and x219 ( and ( not x218 ) ( and ( not x217 ) true ) ) ) ) ) ) ( = tmp72 750 ) ) + ( implies ( and ( not x222 ) ( and x221 ( and x220 ( and x219 ( and ( not x218 ) ( and x217 true ) ) ) ) ) ) ( = tmp72 1000 ) ) + ( implies ( and ( not x222 ) ( and x221 ( and x220 ( and x219 ( and x218 ( and ( not x217 ) true ) ) ) ) ) ) ( = tmp72 1000 ) ) + ( implies ( and ( not x222 ) ( and x221 ( and x220 ( and x219 ( and x218 ( and x217 true ) ) ) ) ) ) ( = tmp72 1250 ) ) + ( implies ( and x222 ( and ( not x221 ) ( and ( not x220 ) ( and ( not x219 ) ( and ( not x218 ) ( and ( not x217 ) true ) ) ) ) ) ) ( = tmp72 250 ) ) + ( implies ( and x222 ( and ( not x221 ) ( and ( not x220 ) ( and ( not x219 ) ( and ( not x218 ) ( and x217 true ) ) ) ) ) ) ( = tmp72 500 ) ) + ( implies ( and x222 ( and ( not x221 ) ( and ( not x220 ) ( and ( not x219 ) ( and x218 ( and ( not x217 ) true ) ) ) ) ) ) ( = tmp72 500 ) ) + ( implies ( and x222 ( and ( not x221 ) ( and ( not x220 ) ( and ( not x219 ) ( and x218 ( and x217 true ) ) ) ) ) ) ( = tmp72 750 ) ) + ( implies ( and x222 ( and ( not x221 ) ( and ( not x220 ) ( and x219 ( and ( not x218 ) ( and ( not x217 ) true ) ) ) ) ) ) ( = tmp72 500 ) ) + ( implies ( and x222 ( and ( not x221 ) ( and ( not x220 ) ( and x219 ( and ( not x218 ) ( and x217 true ) ) ) ) ) ) ( = tmp72 750 ) ) + ( implies ( and x222 ( and ( not x221 ) ( and ( not x220 ) ( and x219 ( and x218 ( and ( not x217 ) true ) ) ) ) ) ) ( = tmp72 750 ) ) + ( implies ( and x222 ( and ( not x221 ) ( and ( not x220 ) ( and x219 ( and x218 ( and x217 true ) ) ) ) ) ) ( = tmp72 1000 ) ) + ( implies ( and x222 ( and ( not x221 ) ( and x220 ( and ( not x219 ) ( and ( not x218 ) ( and ( not x217 ) true ) ) ) ) ) ) ( = tmp72 500 ) ) + ( implies ( and x222 ( and ( not x221 ) ( and x220 ( and ( not x219 ) ( and ( not x218 ) ( and x217 true ) ) ) ) ) ) ( = tmp72 750 ) ) + ( implies ( and x222 ( and ( not x221 ) ( and x220 ( and ( not x219 ) ( and x218 ( and ( not x217 ) true ) ) ) ) ) ) ( = tmp72 750 ) ) + ( implies ( and x222 ( and ( not x221 ) ( and x220 ( and ( not x219 ) ( and x218 ( and x217 true ) ) ) ) ) ) ( = tmp72 1000 ) ) + ( implies ( and x222 ( and ( not x221 ) ( and x220 ( and x219 ( and ( not x218 ) ( and ( not x217 ) true ) ) ) ) ) ) ( = tmp72 750 ) ) + ( implies ( and x222 ( and ( not x221 ) ( and x220 ( and x219 ( and ( not x218 ) ( and x217 true ) ) ) ) ) ) ( = tmp72 1000 ) ) + ( implies ( and x222 ( and ( not x221 ) ( and x220 ( and x219 ( and x218 ( and ( not x217 ) true ) ) ) ) ) ) ( = tmp72 1000 ) ) + ( implies ( and x222 ( and ( not x221 ) ( and x220 ( and x219 ( and x218 ( and x217 true ) ) ) ) ) ) ( = tmp72 1250 ) ) + ( implies ( and x222 ( and x221 ( and ( not x220 ) ( and ( not x219 ) ( and ( not x218 ) ( and ( not x217 ) true ) ) ) ) ) ) ( = tmp72 500 ) ) + ( implies ( and x222 ( and x221 ( and ( not x220 ) ( and ( not x219 ) ( and ( not x218 ) ( and x217 true ) ) ) ) ) ) ( = tmp72 750 ) ) + ( implies ( and x222 ( and x221 ( and ( not x220 ) ( and ( not x219 ) ( and x218 ( and ( not x217 ) true ) ) ) ) ) ) ( = tmp72 750 ) ) + ( implies ( and x222 ( and x221 ( and ( not x220 ) ( and ( not x219 ) ( and x218 ( and x217 true ) ) ) ) ) ) ( = tmp72 1000 ) ) + ( implies ( and x222 ( and x221 ( and ( not x220 ) ( and x219 ( and ( not x218 ) ( and ( not x217 ) true ) ) ) ) ) ) ( = tmp72 750 ) ) + ( implies ( and x222 ( and x221 ( and ( not x220 ) ( and x219 ( and ( not x218 ) ( and x217 true ) ) ) ) ) ) ( = tmp72 1000 ) ) + ( implies ( and x222 ( and x221 ( and ( not x220 ) ( and x219 ( and x218 ( and ( not x217 ) true ) ) ) ) ) ) ( = tmp72 1000 ) ) + ( implies ( and x222 ( and x221 ( and ( not x220 ) ( and x219 ( and x218 ( and x217 true ) ) ) ) ) ) ( = tmp72 1250 ) ) + ( implies ( and x222 ( and x221 ( and x220 ( and ( not x219 ) ( and ( not x218 ) ( and ( not x217 ) true ) ) ) ) ) ) ( = tmp72 750 ) ) + ( implies ( and x222 ( and x221 ( and x220 ( and ( not x219 ) ( and ( not x218 ) ( and x217 true ) ) ) ) ) ) ( = tmp72 1000 ) ) + ( implies ( and x222 ( and x221 ( and x220 ( and ( not x219 ) ( and x218 ( and ( not x217 ) true ) ) ) ) ) ) ( = tmp72 1000 ) ) + ( implies ( and x222 ( and x221 ( and x220 ( and ( not x219 ) ( and x218 ( and x217 true ) ) ) ) ) ) ( = tmp72 1250 ) ) + ( implies ( and x222 ( and x221 ( and x220 ( and x219 ( and ( not x218 ) ( and ( not x217 ) true ) ) ) ) ) ) ( = tmp72 1000 ) ) + ( implies ( and x222 ( and x221 ( and x220 ( and x219 ( and ( not x218 ) ( and x217 true ) ) ) ) ) ) ( = tmp72 1250 ) ) + ( implies ( and x222 ( and x221 ( and x220 ( and x219 ( and x218 ( and ( not x217 ) true ) ) ) ) ) ) ( = tmp72 1250 ) ) + ( implies ( and x222 ( and x221 ( and x220 ( and x219 ( and x218 ( and x217 true ) ) ) ) ) ) ( = tmp72 1500 ) ) + ( implies ( and ( not x195 ) ( and ( not x196 ) ( and ( not x197 ) ( and ( not x198 ) ( and ( not x199 ) ( and ( not x200 ) true ) ) ) ) ) ) ( = tmp71 0 ) ) + ( implies ( and ( not x195 ) ( and ( not x196 ) ( and ( not x197 ) ( and ( not x198 ) ( and ( not x199 ) ( and x200 true ) ) ) ) ) ) ( = tmp71 200 ) ) + ( implies ( and ( not x195 ) ( and ( not x196 ) ( and ( not x197 ) ( and ( not x198 ) ( and x199 ( and ( not x200 ) true ) ) ) ) ) ) ( = tmp71 200 ) ) + ( implies ( and ( not x195 ) ( and ( not x196 ) ( and ( not x197 ) ( and ( not x198 ) ( and x199 ( and x200 true ) ) ) ) ) ) ( = tmp71 400 ) ) + ( implies ( and ( not x195 ) ( and ( not x196 ) ( and ( not x197 ) ( and x198 ( and ( not x199 ) ( and ( not x200 ) true ) ) ) ) ) ) ( = tmp71 200 ) ) + ( implies ( and ( not x195 ) ( and ( not x196 ) ( and ( not x197 ) ( and x198 ( and ( not x199 ) ( and x200 true ) ) ) ) ) ) ( = tmp71 400 ) ) + ( implies ( and ( not x195 ) ( and ( not x196 ) ( and ( not x197 ) ( and x198 ( and x199 ( and ( not x200 ) true ) ) ) ) ) ) ( = tmp71 400 ) ) + ( implies ( and ( not x195 ) ( and ( not x196 ) ( and ( not x197 ) ( and x198 ( and x199 ( and x200 true ) ) ) ) ) ) ( = tmp71 600 ) ) + ( implies ( and ( not x195 ) ( and ( not x196 ) ( and x197 ( and ( not x198 ) ( and ( not x199 ) ( and ( not x200 ) true ) ) ) ) ) ) ( = tmp71 200 ) ) + ( implies ( and ( not x195 ) ( and ( not x196 ) ( and x197 ( and ( not x198 ) ( and ( not x199 ) ( and x200 true ) ) ) ) ) ) ( = tmp71 400 ) ) + ( implies ( and ( not x195 ) ( and ( not x196 ) ( and x197 ( and ( not x198 ) ( and x199 ( and ( not x200 ) true ) ) ) ) ) ) ( = tmp71 400 ) ) + ( implies ( and ( not x195 ) ( and ( not x196 ) ( and x197 ( and ( not x198 ) ( and x199 ( and x200 true ) ) ) ) ) ) ( = tmp71 600 ) ) + ( implies ( and ( not x195 ) ( and ( not x196 ) ( and x197 ( and x198 ( and ( not x199 ) ( and ( not x200 ) true ) ) ) ) ) ) ( = tmp71 400 ) ) + ( implies ( and ( not x195 ) ( and ( not x196 ) ( and x197 ( and x198 ( and ( not x199 ) ( and x200 true ) ) ) ) ) ) ( = tmp71 600 ) ) + ( implies ( and ( not x195 ) ( and ( not x196 ) ( and x197 ( and x198 ( and x199 ( and ( not x200 ) true ) ) ) ) ) ) ( = tmp71 600 ) ) + ( implies ( and ( not x195 ) ( and ( not x196 ) ( and x197 ( and x198 ( and x199 ( and x200 true ) ) ) ) ) ) ( = tmp71 800 ) ) + ( implies ( and ( not x195 ) ( and x196 ( and ( not x197 ) ( and ( not x198 ) ( and ( not x199 ) ( and ( not x200 ) true ) ) ) ) ) ) ( = tmp71 200 ) ) + ( implies ( and ( not x195 ) ( and x196 ( and ( not x197 ) ( and ( not x198 ) ( and ( not x199 ) ( and x200 true ) ) ) ) ) ) ( = tmp71 400 ) ) + ( implies ( and ( not x195 ) ( and x196 ( and ( not x197 ) ( and ( not x198 ) ( and x199 ( and ( not x200 ) true ) ) ) ) ) ) ( = tmp71 400 ) ) + ( implies ( and ( not x195 ) ( and x196 ( and ( not x197 ) ( and ( not x198 ) ( and x199 ( and x200 true ) ) ) ) ) ) ( = tmp71 600 ) ) + ( implies ( and ( not x195 ) ( and x196 ( and ( not x197 ) ( and x198 ( and ( not x199 ) ( and ( not x200 ) true ) ) ) ) ) ) ( = tmp71 400 ) ) + ( implies ( and ( not x195 ) ( and x196 ( and ( not x197 ) ( and x198 ( and ( not x199 ) ( and x200 true ) ) ) ) ) ) ( = tmp71 600 ) ) + ( implies ( and ( not x195 ) ( and x196 ( and ( not x197 ) ( and x198 ( and x199 ( and ( not x200 ) true ) ) ) ) ) ) ( = tmp71 600 ) ) + ( implies ( and ( not x195 ) ( and x196 ( and ( not x197 ) ( and x198 ( and x199 ( and x200 true ) ) ) ) ) ) ( = tmp71 800 ) ) + ( implies ( and ( not x195 ) ( and x196 ( and x197 ( and ( not x198 ) ( and ( not x199 ) ( and ( not x200 ) true ) ) ) ) ) ) ( = tmp71 400 ) ) + ( implies ( and ( not x195 ) ( and x196 ( and x197 ( and ( not x198 ) ( and ( not x199 ) ( and x200 true ) ) ) ) ) ) ( = tmp71 600 ) ) + ( implies ( and ( not x195 ) ( and x196 ( and x197 ( and ( not x198 ) ( and x199 ( and ( not x200 ) true ) ) ) ) ) ) ( = tmp71 600 ) ) + ( implies ( and ( not x195 ) ( and x196 ( and x197 ( and ( not x198 ) ( and x199 ( and x200 true ) ) ) ) ) ) ( = tmp71 800 ) ) + ( implies ( and ( not x195 ) ( and x196 ( and x197 ( and x198 ( and ( not x199 ) ( and ( not x200 ) true ) ) ) ) ) ) ( = tmp71 600 ) ) + ( implies ( and ( not x195 ) ( and x196 ( and x197 ( and x198 ( and ( not x199 ) ( and x200 true ) ) ) ) ) ) ( = tmp71 800 ) ) + ( implies ( and ( not x195 ) ( and x196 ( and x197 ( and x198 ( and x199 ( and ( not x200 ) true ) ) ) ) ) ) ( = tmp71 800 ) ) + ( implies ( and ( not x195 ) ( and x196 ( and x197 ( and x198 ( and x199 ( and x200 true ) ) ) ) ) ) ( = tmp71 1000 ) ) + ( implies ( and x195 ( and ( not x196 ) ( and ( not x197 ) ( and ( not x198 ) ( and ( not x199 ) ( and ( not x200 ) true ) ) ) ) ) ) ( = tmp71 200 ) ) + ( implies ( and x195 ( and ( not x196 ) ( and ( not x197 ) ( and ( not x198 ) ( and ( not x199 ) ( and x200 true ) ) ) ) ) ) ( = tmp71 400 ) ) + ( implies ( and x195 ( and ( not x196 ) ( and ( not x197 ) ( and ( not x198 ) ( and x199 ( and ( not x200 ) true ) ) ) ) ) ) ( = tmp71 400 ) ) + ( implies ( and x195 ( and ( not x196 ) ( and ( not x197 ) ( and ( not x198 ) ( and x199 ( and x200 true ) ) ) ) ) ) ( = tmp71 600 ) ) + ( implies ( and x195 ( and ( not x196 ) ( and ( not x197 ) ( and x198 ( and ( not x199 ) ( and ( not x200 ) true ) ) ) ) ) ) ( = tmp71 400 ) ) + ( implies ( and x195 ( and ( not x196 ) ( and ( not x197 ) ( and x198 ( and ( not x199 ) ( and x200 true ) ) ) ) ) ) ( = tmp71 600 ) ) + ( implies ( and x195 ( and ( not x196 ) ( and ( not x197 ) ( and x198 ( and x199 ( and ( not x200 ) true ) ) ) ) ) ) ( = tmp71 600 ) ) + ( implies ( and x195 ( and ( not x196 ) ( and ( not x197 ) ( and x198 ( and x199 ( and x200 true ) ) ) ) ) ) ( = tmp71 800 ) ) + ( implies ( and x195 ( and ( not x196 ) ( and x197 ( and ( not x198 ) ( and ( not x199 ) ( and ( not x200 ) true ) ) ) ) ) ) ( = tmp71 400 ) ) + ( implies ( and x195 ( and ( not x196 ) ( and x197 ( and ( not x198 ) ( and ( not x199 ) ( and x200 true ) ) ) ) ) ) ( = tmp71 600 ) ) + ( implies ( and x195 ( and ( not x196 ) ( and x197 ( and ( not x198 ) ( and x199 ( and ( not x200 ) true ) ) ) ) ) ) ( = tmp71 600 ) ) + ( implies ( and x195 ( and ( not x196 ) ( and x197 ( and ( not x198 ) ( and x199 ( and x200 true ) ) ) ) ) ) ( = tmp71 800 ) ) + ( implies ( and x195 ( and ( not x196 ) ( and x197 ( and x198 ( and ( not x199 ) ( and ( not x200 ) true ) ) ) ) ) ) ( = tmp71 600 ) ) + ( implies ( and x195 ( and ( not x196 ) ( and x197 ( and x198 ( and ( not x199 ) ( and x200 true ) ) ) ) ) ) ( = tmp71 800 ) ) + ( implies ( and x195 ( and ( not x196 ) ( and x197 ( and x198 ( and x199 ( and ( not x200 ) true ) ) ) ) ) ) ( = tmp71 800 ) ) + ( implies ( and x195 ( and ( not x196 ) ( and x197 ( and x198 ( and x199 ( and x200 true ) ) ) ) ) ) ( = tmp71 1000 ) ) + ( implies ( and x195 ( and x196 ( and ( not x197 ) ( and ( not x198 ) ( and ( not x199 ) ( and ( not x200 ) true ) ) ) ) ) ) ( = tmp71 400 ) ) + ( implies ( and x195 ( and x196 ( and ( not x197 ) ( and ( not x198 ) ( and ( not x199 ) ( and x200 true ) ) ) ) ) ) ( = tmp71 600 ) ) + ( implies ( and x195 ( and x196 ( and ( not x197 ) ( and ( not x198 ) ( and x199 ( and ( not x200 ) true ) ) ) ) ) ) ( = tmp71 600 ) ) + ( implies ( and x195 ( and x196 ( and ( not x197 ) ( and ( not x198 ) ( and x199 ( and x200 true ) ) ) ) ) ) ( = tmp71 800 ) ) + ( implies ( and x195 ( and x196 ( and ( not x197 ) ( and x198 ( and ( not x199 ) ( and ( not x200 ) true ) ) ) ) ) ) ( = tmp71 600 ) ) + ( implies ( and x195 ( and x196 ( and ( not x197 ) ( and x198 ( and ( not x199 ) ( and x200 true ) ) ) ) ) ) ( = tmp71 800 ) ) + ( implies ( and x195 ( and x196 ( and ( not x197 ) ( and x198 ( and x199 ( and ( not x200 ) true ) ) ) ) ) ) ( = tmp71 800 ) ) + ( implies ( and x195 ( and x196 ( and ( not x197 ) ( and x198 ( and x199 ( and x200 true ) ) ) ) ) ) ( = tmp71 1000 ) ) + ( implies ( and x195 ( and x196 ( and x197 ( and ( not x198 ) ( and ( not x199 ) ( and ( not x200 ) true ) ) ) ) ) ) ( = tmp71 600 ) ) + ( implies ( and x195 ( and x196 ( and x197 ( and ( not x198 ) ( and ( not x199 ) ( and x200 true ) ) ) ) ) ) ( = tmp71 800 ) ) + ( implies ( and x195 ( and x196 ( and x197 ( and ( not x198 ) ( and x199 ( and ( not x200 ) true ) ) ) ) ) ) ( = tmp71 800 ) ) + ( implies ( and x195 ( and x196 ( and x197 ( and ( not x198 ) ( and x199 ( and x200 true ) ) ) ) ) ) ( = tmp71 1000 ) ) + ( implies ( and x195 ( and x196 ( and x197 ( and x198 ( and ( not x199 ) ( and ( not x200 ) true ) ) ) ) ) ) ( = tmp71 800 ) ) + ( implies ( and x195 ( and x196 ( and x197 ( and x198 ( and ( not x199 ) ( and x200 true ) ) ) ) ) ) ( = tmp71 1000 ) ) + ( implies ( and x195 ( and x196 ( and x197 ( and x198 ( and x199 ( and ( not x200 ) true ) ) ) ) ) ) ( = tmp71 1000 ) ) + ( implies ( and x195 ( and x196 ( and x197 ( and x198 ( and x199 ( and x200 true ) ) ) ) ) ) ( = tmp71 1200 ) ) + ( implies ( and ( not x228 ) ( and ( not x227 ) ( and ( not x226 ) ( and ( not x225 ) ( and ( not x224 ) ( and ( not x223 ) true ) ) ) ) ) ) ( = tmp70 0 ) ) + ( implies ( and ( not x228 ) ( and ( not x227 ) ( and ( not x226 ) ( and ( not x225 ) ( and ( not x224 ) ( and x223 true ) ) ) ) ) ) ( = tmp70 250 ) ) + ( implies ( and ( not x228 ) ( and ( not x227 ) ( and ( not x226 ) ( and ( not x225 ) ( and x224 ( and ( not x223 ) true ) ) ) ) ) ) ( = tmp70 250 ) ) + ( implies ( and ( not x228 ) ( and ( not x227 ) ( and ( not x226 ) ( and ( not x225 ) ( and x224 ( and x223 true ) ) ) ) ) ) ( = tmp70 500 ) ) + ( implies ( and ( not x228 ) ( and ( not x227 ) ( and ( not x226 ) ( and x225 ( and ( not x224 ) ( and ( not x223 ) true ) ) ) ) ) ) ( = tmp70 500 ) ) + ( implies ( and ( not x228 ) ( and ( not x227 ) ( and ( not x226 ) ( and x225 ( and ( not x224 ) ( and x223 true ) ) ) ) ) ) ( = tmp70 750 ) ) + ( implies ( and ( not x228 ) ( and ( not x227 ) ( and ( not x226 ) ( and x225 ( and x224 ( and ( not x223 ) true ) ) ) ) ) ) ( = tmp70 750 ) ) + ( implies ( and ( not x228 ) ( and ( not x227 ) ( and ( not x226 ) ( and x225 ( and x224 ( and x223 true ) ) ) ) ) ) ( = tmp70 1000 ) ) + ( implies ( and ( not x228 ) ( and ( not x227 ) ( and x226 ( and ( not x225 ) ( and ( not x224 ) ( and ( not x223 ) true ) ) ) ) ) ) ( = tmp70 500 ) ) + ( implies ( and ( not x228 ) ( and ( not x227 ) ( and x226 ( and ( not x225 ) ( and ( not x224 ) ( and x223 true ) ) ) ) ) ) ( = tmp70 750 ) ) + ( implies ( and ( not x228 ) ( and ( not x227 ) ( and x226 ( and ( not x225 ) ( and x224 ( and ( not x223 ) true ) ) ) ) ) ) ( = tmp70 750 ) ) + ( implies ( and ( not x228 ) ( and ( not x227 ) ( and x226 ( and ( not x225 ) ( and x224 ( and x223 true ) ) ) ) ) ) ( = tmp70 1000 ) ) + ( implies ( and ( not x228 ) ( and ( not x227 ) ( and x226 ( and x225 ( and ( not x224 ) ( and ( not x223 ) true ) ) ) ) ) ) ( = tmp70 1000 ) ) + ( implies ( and ( not x228 ) ( and ( not x227 ) ( and x226 ( and x225 ( and ( not x224 ) ( and x223 true ) ) ) ) ) ) ( = tmp70 1250 ) ) + ( implies ( and ( not x228 ) ( and ( not x227 ) ( and x226 ( and x225 ( and x224 ( and ( not x223 ) true ) ) ) ) ) ) ( = tmp70 1250 ) ) + ( implies ( and ( not x228 ) ( and ( not x227 ) ( and x226 ( and x225 ( and x224 ( and x223 true ) ) ) ) ) ) ( = tmp70 1500 ) ) + ( implies ( and ( not x228 ) ( and x227 ( and ( not x226 ) ( and ( not x225 ) ( and ( not x224 ) ( and ( not x223 ) true ) ) ) ) ) ) ( = tmp70 500 ) ) + ( implies ( and ( not x228 ) ( and x227 ( and ( not x226 ) ( and ( not x225 ) ( and ( not x224 ) ( and x223 true ) ) ) ) ) ) ( = tmp70 750 ) ) + ( implies ( and ( not x228 ) ( and x227 ( and ( not x226 ) ( and ( not x225 ) ( and x224 ( and ( not x223 ) true ) ) ) ) ) ) ( = tmp70 750 ) ) + ( implies ( and ( not x228 ) ( and x227 ( and ( not x226 ) ( and ( not x225 ) ( and x224 ( and x223 true ) ) ) ) ) ) ( = tmp70 1000 ) ) + ( implies ( and ( not x228 ) ( and x227 ( and ( not x226 ) ( and x225 ( and ( not x224 ) ( and ( not x223 ) true ) ) ) ) ) ) ( = tmp70 1000 ) ) + ( implies ( and ( not x228 ) ( and x227 ( and ( not x226 ) ( and x225 ( and ( not x224 ) ( and x223 true ) ) ) ) ) ) ( = tmp70 1250 ) ) + ( implies ( and ( not x228 ) ( and x227 ( and ( not x226 ) ( and x225 ( and x224 ( and ( not x223 ) true ) ) ) ) ) ) ( = tmp70 1250 ) ) + ( implies ( and ( not x228 ) ( and x227 ( and ( not x226 ) ( and x225 ( and x224 ( and x223 true ) ) ) ) ) ) ( = tmp70 1500 ) ) + ( implies ( and ( not x228 ) ( and x227 ( and x226 ( and ( not x225 ) ( and ( not x224 ) ( and ( not x223 ) true ) ) ) ) ) ) ( = tmp70 1000 ) ) + ( implies ( and ( not x228 ) ( and x227 ( and x226 ( and ( not x225 ) ( and ( not x224 ) ( and x223 true ) ) ) ) ) ) ( = tmp70 1250 ) ) + ( implies ( and ( not x228 ) ( and x227 ( and x226 ( and ( not x225 ) ( and x224 ( and ( not x223 ) true ) ) ) ) ) ) ( = tmp70 1250 ) ) + ( implies ( and ( not x228 ) ( and x227 ( and x226 ( and ( not x225 ) ( and x224 ( and x223 true ) ) ) ) ) ) ( = tmp70 1500 ) ) + ( implies ( and ( not x228 ) ( and x227 ( and x226 ( and x225 ( and ( not x224 ) ( and ( not x223 ) true ) ) ) ) ) ) ( = tmp70 1500 ) ) + ( implies ( and ( not x228 ) ( and x227 ( and x226 ( and x225 ( and ( not x224 ) ( and x223 true ) ) ) ) ) ) ( = tmp70 1750 ) ) + ( implies ( and ( not x228 ) ( and x227 ( and x226 ( and x225 ( and x224 ( and ( not x223 ) true ) ) ) ) ) ) ( = tmp70 1750 ) ) + ( implies ( and ( not x228 ) ( and x227 ( and x226 ( and x225 ( and x224 ( and x223 true ) ) ) ) ) ) ( = tmp70 2000 ) ) + ( implies ( and x228 ( and ( not x227 ) ( and ( not x226 ) ( and ( not x225 ) ( and ( not x224 ) ( and ( not x223 ) true ) ) ) ) ) ) ( = tmp70 500 ) ) + ( implies ( and x228 ( and ( not x227 ) ( and ( not x226 ) ( and ( not x225 ) ( and ( not x224 ) ( and x223 true ) ) ) ) ) ) ( = tmp70 750 ) ) + ( implies ( and x228 ( and ( not x227 ) ( and ( not x226 ) ( and ( not x225 ) ( and x224 ( and ( not x223 ) true ) ) ) ) ) ) ( = tmp70 750 ) ) + ( implies ( and x228 ( and ( not x227 ) ( and ( not x226 ) ( and ( not x225 ) ( and x224 ( and x223 true ) ) ) ) ) ) ( = tmp70 1000 ) ) + ( implies ( and x228 ( and ( not x227 ) ( and ( not x226 ) ( and x225 ( and ( not x224 ) ( and ( not x223 ) true ) ) ) ) ) ) ( = tmp70 1000 ) ) + ( implies ( and x228 ( and ( not x227 ) ( and ( not x226 ) ( and x225 ( and ( not x224 ) ( and x223 true ) ) ) ) ) ) ( = tmp70 1250 ) ) + ( implies ( and x228 ( and ( not x227 ) ( and ( not x226 ) ( and x225 ( and x224 ( and ( not x223 ) true ) ) ) ) ) ) ( = tmp70 1250 ) ) + ( implies ( and x228 ( and ( not x227 ) ( and ( not x226 ) ( and x225 ( and x224 ( and x223 true ) ) ) ) ) ) ( = tmp70 1500 ) ) + ( implies ( and x228 ( and ( not x227 ) ( and x226 ( and ( not x225 ) ( and ( not x224 ) ( and ( not x223 ) true ) ) ) ) ) ) ( = tmp70 1000 ) ) + ( implies ( and x228 ( and ( not x227 ) ( and x226 ( and ( not x225 ) ( and ( not x224 ) ( and x223 true ) ) ) ) ) ) ( = tmp70 1250 ) ) + ( implies ( and x228 ( and ( not x227 ) ( and x226 ( and ( not x225 ) ( and x224 ( and ( not x223 ) true ) ) ) ) ) ) ( = tmp70 1250 ) ) + ( implies ( and x228 ( and ( not x227 ) ( and x226 ( and ( not x225 ) ( and x224 ( and x223 true ) ) ) ) ) ) ( = tmp70 1500 ) ) + ( implies ( and x228 ( and ( not x227 ) ( and x226 ( and x225 ( and ( not x224 ) ( and ( not x223 ) true ) ) ) ) ) ) ( = tmp70 1500 ) ) + ( implies ( and x228 ( and ( not x227 ) ( and x226 ( and x225 ( and ( not x224 ) ( and x223 true ) ) ) ) ) ) ( = tmp70 1750 ) ) + ( implies ( and x228 ( and ( not x227 ) ( and x226 ( and x225 ( and x224 ( and ( not x223 ) true ) ) ) ) ) ) ( = tmp70 1750 ) ) + ( implies ( and x228 ( and ( not x227 ) ( and x226 ( and x225 ( and x224 ( and x223 true ) ) ) ) ) ) ( = tmp70 2000 ) ) + ( implies ( and x228 ( and x227 ( and ( not x226 ) ( and ( not x225 ) ( and ( not x224 ) ( and ( not x223 ) true ) ) ) ) ) ) ( = tmp70 1000 ) ) + ( implies ( and x228 ( and x227 ( and ( not x226 ) ( and ( not x225 ) ( and ( not x224 ) ( and x223 true ) ) ) ) ) ) ( = tmp70 1250 ) ) + ( implies ( and x228 ( and x227 ( and ( not x226 ) ( and ( not x225 ) ( and x224 ( and ( not x223 ) true ) ) ) ) ) ) ( = tmp70 1250 ) ) + ( implies ( and x228 ( and x227 ( and ( not x226 ) ( and ( not x225 ) ( and x224 ( and x223 true ) ) ) ) ) ) ( = tmp70 1500 ) ) + ( implies ( and x228 ( and x227 ( and ( not x226 ) ( and x225 ( and ( not x224 ) ( and ( not x223 ) true ) ) ) ) ) ) ( = tmp70 1500 ) ) + ( implies ( and x228 ( and x227 ( and ( not x226 ) ( and x225 ( and ( not x224 ) ( and x223 true ) ) ) ) ) ) ( = tmp70 1750 ) ) + ( implies ( and x228 ( and x227 ( and ( not x226 ) ( and x225 ( and x224 ( and ( not x223 ) true ) ) ) ) ) ) ( = tmp70 1750 ) ) + ( implies ( and x228 ( and x227 ( and ( not x226 ) ( and x225 ( and x224 ( and x223 true ) ) ) ) ) ) ( = tmp70 2000 ) ) + ( implies ( and x228 ( and x227 ( and x226 ( and ( not x225 ) ( and ( not x224 ) ( and ( not x223 ) true ) ) ) ) ) ) ( = tmp70 1500 ) ) + ( implies ( and x228 ( and x227 ( and x226 ( and ( not x225 ) ( and ( not x224 ) ( and x223 true ) ) ) ) ) ) ( = tmp70 1750 ) ) + ( implies ( and x228 ( and x227 ( and x226 ( and ( not x225 ) ( and x224 ( and ( not x223 ) true ) ) ) ) ) ) ( = tmp70 1750 ) ) + ( implies ( and x228 ( and x227 ( and x226 ( and ( not x225 ) ( and x224 ( and x223 true ) ) ) ) ) ) ( = tmp70 2000 ) ) + ( implies ( and x228 ( and x227 ( and x226 ( and x225 ( and ( not x224 ) ( and ( not x223 ) true ) ) ) ) ) ) ( = tmp70 2000 ) ) + ( implies ( and x228 ( and x227 ( and x226 ( and x225 ( and ( not x224 ) ( and x223 true ) ) ) ) ) ) ( = tmp70 2250 ) ) + ( implies ( and x228 ( and x227 ( and x226 ( and x225 ( and x224 ( and ( not x223 ) true ) ) ) ) ) ) ( = tmp70 2250 ) ) + ( implies ( and x228 ( and x227 ( and x226 ( and x225 ( and x224 ( and x223 true ) ) ) ) ) ) ( = tmp70 2500 ) ) + ( implies ( and ( not x189 ) ( and ( not x190 ) ( and ( not x191 ) ( and ( not x192 ) ( and ( not x193 ) ( and ( not x194 ) true ) ) ) ) ) ) ( = tmp69 0 ) ) + ( implies ( and ( not x189 ) ( and ( not x190 ) ( and ( not x191 ) ( and ( not x192 ) ( and ( not x193 ) ( and x194 true ) ) ) ) ) ) ( = tmp69 200 ) ) + ( implies ( and ( not x189 ) ( and ( not x190 ) ( and ( not x191 ) ( and ( not x192 ) ( and x193 ( and ( not x194 ) true ) ) ) ) ) ) ( = tmp69 200 ) ) + ( implies ( and ( not x189 ) ( and ( not x190 ) ( and ( not x191 ) ( and ( not x192 ) ( and x193 ( and x194 true ) ) ) ) ) ) ( = tmp69 400 ) ) + ( implies ( and ( not x189 ) ( and ( not x190 ) ( and ( not x191 ) ( and x192 ( and ( not x193 ) ( and ( not x194 ) true ) ) ) ) ) ) ( = tmp69 200 ) ) + ( implies ( and ( not x189 ) ( and ( not x190 ) ( and ( not x191 ) ( and x192 ( and ( not x193 ) ( and x194 true ) ) ) ) ) ) ( = tmp69 400 ) ) + ( implies ( and ( not x189 ) ( and ( not x190 ) ( and ( not x191 ) ( and x192 ( and x193 ( and ( not x194 ) true ) ) ) ) ) ) ( = tmp69 400 ) ) + ( implies ( and ( not x189 ) ( and ( not x190 ) ( and ( not x191 ) ( and x192 ( and x193 ( and x194 true ) ) ) ) ) ) ( = tmp69 600 ) ) + ( implies ( and ( not x189 ) ( and ( not x190 ) ( and x191 ( and ( not x192 ) ( and ( not x193 ) ( and ( not x194 ) true ) ) ) ) ) ) ( = tmp69 200 ) ) + ( implies ( and ( not x189 ) ( and ( not x190 ) ( and x191 ( and ( not x192 ) ( and ( not x193 ) ( and x194 true ) ) ) ) ) ) ( = tmp69 400 ) ) + ( implies ( and ( not x189 ) ( and ( not x190 ) ( and x191 ( and ( not x192 ) ( and x193 ( and ( not x194 ) true ) ) ) ) ) ) ( = tmp69 400 ) ) + ( implies ( and ( not x189 ) ( and ( not x190 ) ( and x191 ( and ( not x192 ) ( and x193 ( and x194 true ) ) ) ) ) ) ( = tmp69 600 ) ) + ( implies ( and ( not x189 ) ( and ( not x190 ) ( and x191 ( and x192 ( and ( not x193 ) ( and ( not x194 ) true ) ) ) ) ) ) ( = tmp69 400 ) ) + ( implies ( and ( not x189 ) ( and ( not x190 ) ( and x191 ( and x192 ( and ( not x193 ) ( and x194 true ) ) ) ) ) ) ( = tmp69 600 ) ) + ( implies ( and ( not x189 ) ( and ( not x190 ) ( and x191 ( and x192 ( and x193 ( and ( not x194 ) true ) ) ) ) ) ) ( = tmp69 600 ) ) + ( implies ( and ( not x189 ) ( and ( not x190 ) ( and x191 ( and x192 ( and x193 ( and x194 true ) ) ) ) ) ) ( = tmp69 800 ) ) + ( implies ( and ( not x189 ) ( and x190 ( and ( not x191 ) ( and ( not x192 ) ( and ( not x193 ) ( and ( not x194 ) true ) ) ) ) ) ) ( = tmp69 200 ) ) + ( implies ( and ( not x189 ) ( and x190 ( and ( not x191 ) ( and ( not x192 ) ( and ( not x193 ) ( and x194 true ) ) ) ) ) ) ( = tmp69 400 ) ) + ( implies ( and ( not x189 ) ( and x190 ( and ( not x191 ) ( and ( not x192 ) ( and x193 ( and ( not x194 ) true ) ) ) ) ) ) ( = tmp69 400 ) ) + ( implies ( and ( not x189 ) ( and x190 ( and ( not x191 ) ( and ( not x192 ) ( and x193 ( and x194 true ) ) ) ) ) ) ( = tmp69 600 ) ) + ( implies ( and ( not x189 ) ( and x190 ( and ( not x191 ) ( and x192 ( and ( not x193 ) ( and ( not x194 ) true ) ) ) ) ) ) ( = tmp69 400 ) ) + ( implies ( and ( not x189 ) ( and x190 ( and ( not x191 ) ( and x192 ( and ( not x193 ) ( and x194 true ) ) ) ) ) ) ( = tmp69 600 ) ) + ( implies ( and ( not x189 ) ( and x190 ( and ( not x191 ) ( and x192 ( and x193 ( and ( not x194 ) true ) ) ) ) ) ) ( = tmp69 600 ) ) + ( implies ( and ( not x189 ) ( and x190 ( and ( not x191 ) ( and x192 ( and x193 ( and x194 true ) ) ) ) ) ) ( = tmp69 800 ) ) + ( implies ( and ( not x189 ) ( and x190 ( and x191 ( and ( not x192 ) ( and ( not x193 ) ( and ( not x194 ) true ) ) ) ) ) ) ( = tmp69 400 ) ) + ( implies ( and ( not x189 ) ( and x190 ( and x191 ( and ( not x192 ) ( and ( not x193 ) ( and x194 true ) ) ) ) ) ) ( = tmp69 600 ) ) + ( implies ( and ( not x189 ) ( and x190 ( and x191 ( and ( not x192 ) ( and x193 ( and ( not x194 ) true ) ) ) ) ) ) ( = tmp69 600 ) ) + ( implies ( and ( not x189 ) ( and x190 ( and x191 ( and ( not x192 ) ( and x193 ( and x194 true ) ) ) ) ) ) ( = tmp69 800 ) ) + ( implies ( and ( not x189 ) ( and x190 ( and x191 ( and x192 ( and ( not x193 ) ( and ( not x194 ) true ) ) ) ) ) ) ( = tmp69 600 ) ) + ( implies ( and ( not x189 ) ( and x190 ( and x191 ( and x192 ( and ( not x193 ) ( and x194 true ) ) ) ) ) ) ( = tmp69 800 ) ) + ( implies ( and ( not x189 ) ( and x190 ( and x191 ( and x192 ( and x193 ( and ( not x194 ) true ) ) ) ) ) ) ( = tmp69 800 ) ) + ( implies ( and ( not x189 ) ( and x190 ( and x191 ( and x192 ( and x193 ( and x194 true ) ) ) ) ) ) ( = tmp69 1000 ) ) + ( implies ( and x189 ( and ( not x190 ) ( and ( not x191 ) ( and ( not x192 ) ( and ( not x193 ) ( and ( not x194 ) true ) ) ) ) ) ) ( = tmp69 200 ) ) + ( implies ( and x189 ( and ( not x190 ) ( and ( not x191 ) ( and ( not x192 ) ( and ( not x193 ) ( and x194 true ) ) ) ) ) ) ( = tmp69 400 ) ) + ( implies ( and x189 ( and ( not x190 ) ( and ( not x191 ) ( and ( not x192 ) ( and x193 ( and ( not x194 ) true ) ) ) ) ) ) ( = tmp69 400 ) ) + ( implies ( and x189 ( and ( not x190 ) ( and ( not x191 ) ( and ( not x192 ) ( and x193 ( and x194 true ) ) ) ) ) ) ( = tmp69 600 ) ) + ( implies ( and x189 ( and ( not x190 ) ( and ( not x191 ) ( and x192 ( and ( not x193 ) ( and ( not x194 ) true ) ) ) ) ) ) ( = tmp69 400 ) ) + ( implies ( and x189 ( and ( not x190 ) ( and ( not x191 ) ( and x192 ( and ( not x193 ) ( and x194 true ) ) ) ) ) ) ( = tmp69 600 ) ) + ( implies ( and x189 ( and ( not x190 ) ( and ( not x191 ) ( and x192 ( and x193 ( and ( not x194 ) true ) ) ) ) ) ) ( = tmp69 600 ) ) + ( implies ( and x189 ( and ( not x190 ) ( and ( not x191 ) ( and x192 ( and x193 ( and x194 true ) ) ) ) ) ) ( = tmp69 800 ) ) + ( implies ( and x189 ( and ( not x190 ) ( and x191 ( and ( not x192 ) ( and ( not x193 ) ( and ( not x194 ) true ) ) ) ) ) ) ( = tmp69 400 ) ) + ( implies ( and x189 ( and ( not x190 ) ( and x191 ( and ( not x192 ) ( and ( not x193 ) ( and x194 true ) ) ) ) ) ) ( = tmp69 600 ) ) + ( implies ( and x189 ( and ( not x190 ) ( and x191 ( and ( not x192 ) ( and x193 ( and ( not x194 ) true ) ) ) ) ) ) ( = tmp69 600 ) ) + ( implies ( and x189 ( and ( not x190 ) ( and x191 ( and ( not x192 ) ( and x193 ( and x194 true ) ) ) ) ) ) ( = tmp69 800 ) ) + ( implies ( and x189 ( and ( not x190 ) ( and x191 ( and x192 ( and ( not x193 ) ( and ( not x194 ) true ) ) ) ) ) ) ( = tmp69 600 ) ) + ( implies ( and x189 ( and ( not x190 ) ( and x191 ( and x192 ( and ( not x193 ) ( and x194 true ) ) ) ) ) ) ( = tmp69 800 ) ) + ( implies ( and x189 ( and ( not x190 ) ( and x191 ( and x192 ( and x193 ( and ( not x194 ) true ) ) ) ) ) ) ( = tmp69 800 ) ) + ( implies ( and x189 ( and ( not x190 ) ( and x191 ( and x192 ( and x193 ( and x194 true ) ) ) ) ) ) ( = tmp69 1000 ) ) + ( implies ( and x189 ( and x190 ( and ( not x191 ) ( and ( not x192 ) ( and ( not x193 ) ( and ( not x194 ) true ) ) ) ) ) ) ( = tmp69 400 ) ) + ( implies ( and x189 ( and x190 ( and ( not x191 ) ( and ( not x192 ) ( and ( not x193 ) ( and x194 true ) ) ) ) ) ) ( = tmp69 600 ) ) + ( implies ( and x189 ( and x190 ( and ( not x191 ) ( and ( not x192 ) ( and x193 ( and ( not x194 ) true ) ) ) ) ) ) ( = tmp69 600 ) ) + ( implies ( and x189 ( and x190 ( and ( not x191 ) ( and ( not x192 ) ( and x193 ( and x194 true ) ) ) ) ) ) ( = tmp69 800 ) ) + ( implies ( and x189 ( and x190 ( and ( not x191 ) ( and x192 ( and ( not x193 ) ( and ( not x194 ) true ) ) ) ) ) ) ( = tmp69 600 ) ) + ( implies ( and x189 ( and x190 ( and ( not x191 ) ( and x192 ( and ( not x193 ) ( and x194 true ) ) ) ) ) ) ( = tmp69 800 ) ) + ( implies ( and x189 ( and x190 ( and ( not x191 ) ( and x192 ( and x193 ( and ( not x194 ) true ) ) ) ) ) ) ( = tmp69 800 ) ) + ( implies ( and x189 ( and x190 ( and ( not x191 ) ( and x192 ( and x193 ( and x194 true ) ) ) ) ) ) ( = tmp69 1000 ) ) + ( implies ( and x189 ( and x190 ( and x191 ( and ( not x192 ) ( and ( not x193 ) ( and ( not x194 ) true ) ) ) ) ) ) ( = tmp69 600 ) ) + ( implies ( and x189 ( and x190 ( and x191 ( and ( not x192 ) ( and ( not x193 ) ( and x194 true ) ) ) ) ) ) ( = tmp69 800 ) ) + ( implies ( and x189 ( and x190 ( and x191 ( and ( not x192 ) ( and x193 ( and ( not x194 ) true ) ) ) ) ) ) ( = tmp69 800 ) ) + ( implies ( and x189 ( and x190 ( and x191 ( and ( not x192 ) ( and x193 ( and x194 true ) ) ) ) ) ) ( = tmp69 1000 ) ) + ( implies ( and x189 ( and x190 ( and x191 ( and x192 ( and ( not x193 ) ( and ( not x194 ) true ) ) ) ) ) ) ( = tmp69 800 ) ) + ( implies ( and x189 ( and x190 ( and x191 ( and x192 ( and ( not x193 ) ( and x194 true ) ) ) ) ) ) ( = tmp69 1000 ) ) + ( implies ( and x189 ( and x190 ( and x191 ( and x192 ( and x193 ( and ( not x194 ) true ) ) ) ) ) ) ( = tmp69 1000 ) ) + ( implies ( and x189 ( and x190 ( and x191 ( and x192 ( and x193 ( and x194 true ) ) ) ) ) ) ( = tmp69 1200 ) ) + ( implies ( and ( not x234 ) ( and ( not x233 ) ( and ( not x232 ) ( and ( not x231 ) ( and ( not x230 ) ( and ( not x229 ) true ) ) ) ) ) ) ( = tmp68 0 ) ) + ( implies ( and ( not x234 ) ( and ( not x233 ) ( and ( not x232 ) ( and ( not x231 ) ( and ( not x230 ) ( and x229 true ) ) ) ) ) ) ( = tmp68 500 ) ) + ( implies ( and ( not x234 ) ( and ( not x233 ) ( and ( not x232 ) ( and ( not x231 ) ( and x230 ( and ( not x229 ) true ) ) ) ) ) ) ( = tmp68 500 ) ) + ( implies ( and ( not x234 ) ( and ( not x233 ) ( and ( not x232 ) ( and ( not x231 ) ( and x230 ( and x229 true ) ) ) ) ) ) ( = tmp68 1000 ) ) + ( implies ( and ( not x234 ) ( and ( not x233 ) ( and ( not x232 ) ( and x231 ( and ( not x230 ) ( and ( not x229 ) true ) ) ) ) ) ) ( = tmp68 500 ) ) + ( implies ( and ( not x234 ) ( and ( not x233 ) ( and ( not x232 ) ( and x231 ( and ( not x230 ) ( and x229 true ) ) ) ) ) ) ( = tmp68 1000 ) ) + ( implies ( and ( not x234 ) ( and ( not x233 ) ( and ( not x232 ) ( and x231 ( and x230 ( and ( not x229 ) true ) ) ) ) ) ) ( = tmp68 1000 ) ) + ( implies ( and ( not x234 ) ( and ( not x233 ) ( and ( not x232 ) ( and x231 ( and x230 ( and x229 true ) ) ) ) ) ) ( = tmp68 1500 ) ) + ( implies ( and ( not x234 ) ( and ( not x233 ) ( and x232 ( and ( not x231 ) ( and ( not x230 ) ( and ( not x229 ) true ) ) ) ) ) ) ( = tmp68 500 ) ) + ( implies ( and ( not x234 ) ( and ( not x233 ) ( and x232 ( and ( not x231 ) ( and ( not x230 ) ( and x229 true ) ) ) ) ) ) ( = tmp68 1000 ) ) + ( implies ( and ( not x234 ) ( and ( not x233 ) ( and x232 ( and ( not x231 ) ( and x230 ( and ( not x229 ) true ) ) ) ) ) ) ( = tmp68 1000 ) ) + ( implies ( and ( not x234 ) ( and ( not x233 ) ( and x232 ( and ( not x231 ) ( and x230 ( and x229 true ) ) ) ) ) ) ( = tmp68 1500 ) ) + ( implies ( and ( not x234 ) ( and ( not x233 ) ( and x232 ( and x231 ( and ( not x230 ) ( and ( not x229 ) true ) ) ) ) ) ) ( = tmp68 1000 ) ) + ( implies ( and ( not x234 ) ( and ( not x233 ) ( and x232 ( and x231 ( and ( not x230 ) ( and x229 true ) ) ) ) ) ) ( = tmp68 1500 ) ) + ( implies ( and ( not x234 ) ( and ( not x233 ) ( and x232 ( and x231 ( and x230 ( and ( not x229 ) true ) ) ) ) ) ) ( = tmp68 1500 ) ) + ( implies ( and ( not x234 ) ( and ( not x233 ) ( and x232 ( and x231 ( and x230 ( and x229 true ) ) ) ) ) ) ( = tmp68 2000 ) ) + ( implies ( and ( not x234 ) ( and x233 ( and ( not x232 ) ( and ( not x231 ) ( and ( not x230 ) ( and ( not x229 ) true ) ) ) ) ) ) ( = tmp68 300 ) ) + ( implies ( and ( not x234 ) ( and x233 ( and ( not x232 ) ( and ( not x231 ) ( and ( not x230 ) ( and x229 true ) ) ) ) ) ) ( = tmp68 800 ) ) + ( implies ( and ( not x234 ) ( and x233 ( and ( not x232 ) ( and ( not x231 ) ( and x230 ( and ( not x229 ) true ) ) ) ) ) ) ( = tmp68 800 ) ) + ( implies ( and ( not x234 ) ( and x233 ( and ( not x232 ) ( and ( not x231 ) ( and x230 ( and x229 true ) ) ) ) ) ) ( = tmp68 1300 ) ) + ( implies ( and ( not x234 ) ( and x233 ( and ( not x232 ) ( and x231 ( and ( not x230 ) ( and ( not x229 ) true ) ) ) ) ) ) ( = tmp68 800 ) ) + ( implies ( and ( not x234 ) ( and x233 ( and ( not x232 ) ( and x231 ( and ( not x230 ) ( and x229 true ) ) ) ) ) ) ( = tmp68 1300 ) ) + ( implies ( and ( not x234 ) ( and x233 ( and ( not x232 ) ( and x231 ( and x230 ( and ( not x229 ) true ) ) ) ) ) ) ( = tmp68 1300 ) ) + ( implies ( and ( not x234 ) ( and x233 ( and ( not x232 ) ( and x231 ( and x230 ( and x229 true ) ) ) ) ) ) ( = tmp68 1800 ) ) + ( implies ( and ( not x234 ) ( and x233 ( and x232 ( and ( not x231 ) ( and ( not x230 ) ( and ( not x229 ) true ) ) ) ) ) ) ( = tmp68 800 ) ) + ( implies ( and ( not x234 ) ( and x233 ( and x232 ( and ( not x231 ) ( and ( not x230 ) ( and x229 true ) ) ) ) ) ) ( = tmp68 1300 ) ) + ( implies ( and ( not x234 ) ( and x233 ( and x232 ( and ( not x231 ) ( and x230 ( and ( not x229 ) true ) ) ) ) ) ) ( = tmp68 1300 ) ) + ( implies ( and ( not x234 ) ( and x233 ( and x232 ( and ( not x231 ) ( and x230 ( and x229 true ) ) ) ) ) ) ( = tmp68 1800 ) ) + ( implies ( and ( not x234 ) ( and x233 ( and x232 ( and x231 ( and ( not x230 ) ( and ( not x229 ) true ) ) ) ) ) ) ( = tmp68 1300 ) ) + ( implies ( and ( not x234 ) ( and x233 ( and x232 ( and x231 ( and ( not x230 ) ( and x229 true ) ) ) ) ) ) ( = tmp68 1800 ) ) + ( implies ( and ( not x234 ) ( and x233 ( and x232 ( and x231 ( and x230 ( and ( not x229 ) true ) ) ) ) ) ) ( = tmp68 1800 ) ) + ( implies ( and ( not x234 ) ( and x233 ( and x232 ( and x231 ( and x230 ( and x229 true ) ) ) ) ) ) ( = tmp68 2300 ) ) + ( implies ( and x234 ( and ( not x233 ) ( and ( not x232 ) ( and ( not x231 ) ( and ( not x230 ) ( and ( not x229 ) true ) ) ) ) ) ) ( = tmp68 300 ) ) + ( implies ( and x234 ( and ( not x233 ) ( and ( not x232 ) ( and ( not x231 ) ( and ( not x230 ) ( and x229 true ) ) ) ) ) ) ( = tmp68 800 ) ) + ( implies ( and x234 ( and ( not x233 ) ( and ( not x232 ) ( and ( not x231 ) ( and x230 ( and ( not x229 ) true ) ) ) ) ) ) ( = tmp68 800 ) ) + ( implies ( and x234 ( and ( not x233 ) ( and ( not x232 ) ( and ( not x231 ) ( and x230 ( and x229 true ) ) ) ) ) ) ( = tmp68 1300 ) ) + ( implies ( and x234 ( and ( not x233 ) ( and ( not x232 ) ( and x231 ( and ( not x230 ) ( and ( not x229 ) true ) ) ) ) ) ) ( = tmp68 800 ) ) + ( implies ( and x234 ( and ( not x233 ) ( and ( not x232 ) ( and x231 ( and ( not x230 ) ( and x229 true ) ) ) ) ) ) ( = tmp68 1300 ) ) + ( implies ( and x234 ( and ( not x233 ) ( and ( not x232 ) ( and x231 ( and x230 ( and ( not x229 ) true ) ) ) ) ) ) ( = tmp68 1300 ) ) + ( implies ( and x234 ( and ( not x233 ) ( and ( not x232 ) ( and x231 ( and x230 ( and x229 true ) ) ) ) ) ) ( = tmp68 1800 ) ) + ( implies ( and x234 ( and ( not x233 ) ( and x232 ( and ( not x231 ) ( and ( not x230 ) ( and ( not x229 ) true ) ) ) ) ) ) ( = tmp68 800 ) ) + ( implies ( and x234 ( and ( not x233 ) ( and x232 ( and ( not x231 ) ( and ( not x230 ) ( and x229 true ) ) ) ) ) ) ( = tmp68 1300 ) ) + ( implies ( and x234 ( and ( not x233 ) ( and x232 ( and ( not x231 ) ( and x230 ( and ( not x229 ) true ) ) ) ) ) ) ( = tmp68 1300 ) ) + ( implies ( and x234 ( and ( not x233 ) ( and x232 ( and ( not x231 ) ( and x230 ( and x229 true ) ) ) ) ) ) ( = tmp68 1800 ) ) + ( implies ( and x234 ( and ( not x233 ) ( and x232 ( and x231 ( and ( not x230 ) ( and ( not x229 ) true ) ) ) ) ) ) ( = tmp68 1300 ) ) + ( implies ( and x234 ( and ( not x233 ) ( and x232 ( and x231 ( and ( not x230 ) ( and x229 true ) ) ) ) ) ) ( = tmp68 1800 ) ) + ( implies ( and x234 ( and ( not x233 ) ( and x232 ( and x231 ( and x230 ( and ( not x229 ) true ) ) ) ) ) ) ( = tmp68 1800 ) ) + ( implies ( and x234 ( and ( not x233 ) ( and x232 ( and x231 ( and x230 ( and x229 true ) ) ) ) ) ) ( = tmp68 2300 ) ) + ( implies ( and x234 ( and x233 ( and ( not x232 ) ( and ( not x231 ) ( and ( not x230 ) ( and ( not x229 ) true ) ) ) ) ) ) ( = tmp68 600 ) ) + ( implies ( and x234 ( and x233 ( and ( not x232 ) ( and ( not x231 ) ( and ( not x230 ) ( and x229 true ) ) ) ) ) ) ( = tmp68 1100 ) ) + ( implies ( and x234 ( and x233 ( and ( not x232 ) ( and ( not x231 ) ( and x230 ( and ( not x229 ) true ) ) ) ) ) ) ( = tmp68 1100 ) ) + ( implies ( and x234 ( and x233 ( and ( not x232 ) ( and ( not x231 ) ( and x230 ( and x229 true ) ) ) ) ) ) ( = tmp68 1600 ) ) + ( implies ( and x234 ( and x233 ( and ( not x232 ) ( and x231 ( and ( not x230 ) ( and ( not x229 ) true ) ) ) ) ) ) ( = tmp68 1100 ) ) + ( implies ( and x234 ( and x233 ( and ( not x232 ) ( and x231 ( and ( not x230 ) ( and x229 true ) ) ) ) ) ) ( = tmp68 1600 ) ) + ( implies ( and x234 ( and x233 ( and ( not x232 ) ( and x231 ( and x230 ( and ( not x229 ) true ) ) ) ) ) ) ( = tmp68 1600 ) ) + ( implies ( and x234 ( and x233 ( and ( not x232 ) ( and x231 ( and x230 ( and x229 true ) ) ) ) ) ) ( = tmp68 2100 ) ) + ( implies ( and x234 ( and x233 ( and x232 ( and ( not x231 ) ( and ( not x230 ) ( and ( not x229 ) true ) ) ) ) ) ) ( = tmp68 1100 ) ) + ( implies ( and x234 ( and x233 ( and x232 ( and ( not x231 ) ( and ( not x230 ) ( and x229 true ) ) ) ) ) ) ( = tmp68 1600 ) ) + ( implies ( and x234 ( and x233 ( and x232 ( and ( not x231 ) ( and x230 ( and ( not x229 ) true ) ) ) ) ) ) ( = tmp68 1600 ) ) + ( implies ( and x234 ( and x233 ( and x232 ( and ( not x231 ) ( and x230 ( and x229 true ) ) ) ) ) ) ( = tmp68 2100 ) ) + ( implies ( and x234 ( and x233 ( and x232 ( and x231 ( and ( not x230 ) ( and ( not x229 ) true ) ) ) ) ) ) ( = tmp68 1600 ) ) + ( implies ( and x234 ( and x233 ( and x232 ( and x231 ( and ( not x230 ) ( and x229 true ) ) ) ) ) ) ( = tmp68 2100 ) ) + ( implies ( and x234 ( and x233 ( and x232 ( and x231 ( and x230 ( and ( not x229 ) true ) ) ) ) ) ) ( = tmp68 2100 ) ) + ( implies ( and x234 ( and x233 ( and x232 ( and x231 ( and x230 ( and x229 true ) ) ) ) ) ) ( = tmp68 2600 ) ) + ( implies ( and ( not x183 ) ( and ( not x184 ) ( and ( not x185 ) ( and ( not x186 ) ( and ( not x187 ) ( and ( not x188 ) true ) ) ) ) ) ) ( = tmp67 0 ) ) + ( implies ( and ( not x183 ) ( and ( not x184 ) ( and ( not x185 ) ( and ( not x186 ) ( and ( not x187 ) ( and x188 true ) ) ) ) ) ) ( = tmp67 200 ) ) + ( implies ( and ( not x183 ) ( and ( not x184 ) ( and ( not x185 ) ( and ( not x186 ) ( and x187 ( and ( not x188 ) true ) ) ) ) ) ) ( = tmp67 200 ) ) + ( implies ( and ( not x183 ) ( and ( not x184 ) ( and ( not x185 ) ( and ( not x186 ) ( and x187 ( and x188 true ) ) ) ) ) ) ( = tmp67 400 ) ) + ( implies ( and ( not x183 ) ( and ( not x184 ) ( and ( not x185 ) ( and x186 ( and ( not x187 ) ( and ( not x188 ) true ) ) ) ) ) ) ( = tmp67 200 ) ) + ( implies ( and ( not x183 ) ( and ( not x184 ) ( and ( not x185 ) ( and x186 ( and ( not x187 ) ( and x188 true ) ) ) ) ) ) ( = tmp67 400 ) ) + ( implies ( and ( not x183 ) ( and ( not x184 ) ( and ( not x185 ) ( and x186 ( and x187 ( and ( not x188 ) true ) ) ) ) ) ) ( = tmp67 400 ) ) + ( implies ( and ( not x183 ) ( and ( not x184 ) ( and ( not x185 ) ( and x186 ( and x187 ( and x188 true ) ) ) ) ) ) ( = tmp67 600 ) ) + ( implies ( and ( not x183 ) ( and ( not x184 ) ( and x185 ( and ( not x186 ) ( and ( not x187 ) ( and ( not x188 ) true ) ) ) ) ) ) ( = tmp67 200 ) ) + ( implies ( and ( not x183 ) ( and ( not x184 ) ( and x185 ( and ( not x186 ) ( and ( not x187 ) ( and x188 true ) ) ) ) ) ) ( = tmp67 400 ) ) + ( implies ( and ( not x183 ) ( and ( not x184 ) ( and x185 ( and ( not x186 ) ( and x187 ( and ( not x188 ) true ) ) ) ) ) ) ( = tmp67 400 ) ) + ( implies ( and ( not x183 ) ( and ( not x184 ) ( and x185 ( and ( not x186 ) ( and x187 ( and x188 true ) ) ) ) ) ) ( = tmp67 600 ) ) + ( implies ( and ( not x183 ) ( and ( not x184 ) ( and x185 ( and x186 ( and ( not x187 ) ( and ( not x188 ) true ) ) ) ) ) ) ( = tmp67 400 ) ) + ( implies ( and ( not x183 ) ( and ( not x184 ) ( and x185 ( and x186 ( and ( not x187 ) ( and x188 true ) ) ) ) ) ) ( = tmp67 600 ) ) + ( implies ( and ( not x183 ) ( and ( not x184 ) ( and x185 ( and x186 ( and x187 ( and ( not x188 ) true ) ) ) ) ) ) ( = tmp67 600 ) ) + ( implies ( and ( not x183 ) ( and ( not x184 ) ( and x185 ( and x186 ( and x187 ( and x188 true ) ) ) ) ) ) ( = tmp67 800 ) ) + ( implies ( and ( not x183 ) ( and x184 ( and ( not x185 ) ( and ( not x186 ) ( and ( not x187 ) ( and ( not x188 ) true ) ) ) ) ) ) ( = tmp67 100 ) ) + ( implies ( and ( not x183 ) ( and x184 ( and ( not x185 ) ( and ( not x186 ) ( and ( not x187 ) ( and x188 true ) ) ) ) ) ) ( = tmp67 300 ) ) + ( implies ( and ( not x183 ) ( and x184 ( and ( not x185 ) ( and ( not x186 ) ( and x187 ( and ( not x188 ) true ) ) ) ) ) ) ( = tmp67 300 ) ) + ( implies ( and ( not x183 ) ( and x184 ( and ( not x185 ) ( and ( not x186 ) ( and x187 ( and x188 true ) ) ) ) ) ) ( = tmp67 500 ) ) + ( implies ( and ( not x183 ) ( and x184 ( and ( not x185 ) ( and x186 ( and ( not x187 ) ( and ( not x188 ) true ) ) ) ) ) ) ( = tmp67 300 ) ) + ( implies ( and ( not x183 ) ( and x184 ( and ( not x185 ) ( and x186 ( and ( not x187 ) ( and x188 true ) ) ) ) ) ) ( = tmp67 500 ) ) + ( implies ( and ( not x183 ) ( and x184 ( and ( not x185 ) ( and x186 ( and x187 ( and ( not x188 ) true ) ) ) ) ) ) ( = tmp67 500 ) ) + ( implies ( and ( not x183 ) ( and x184 ( and ( not x185 ) ( and x186 ( and x187 ( and x188 true ) ) ) ) ) ) ( = tmp67 700 ) ) + ( implies ( and ( not x183 ) ( and x184 ( and x185 ( and ( not x186 ) ( and ( not x187 ) ( and ( not x188 ) true ) ) ) ) ) ) ( = tmp67 300 ) ) + ( implies ( and ( not x183 ) ( and x184 ( and x185 ( and ( not x186 ) ( and ( not x187 ) ( and x188 true ) ) ) ) ) ) ( = tmp67 500 ) ) + ( implies ( and ( not x183 ) ( and x184 ( and x185 ( and ( not x186 ) ( and x187 ( and ( not x188 ) true ) ) ) ) ) ) ( = tmp67 500 ) ) + ( implies ( and ( not x183 ) ( and x184 ( and x185 ( and ( not x186 ) ( and x187 ( and x188 true ) ) ) ) ) ) ( = tmp67 700 ) ) + ( implies ( and ( not x183 ) ( and x184 ( and x185 ( and x186 ( and ( not x187 ) ( and ( not x188 ) true ) ) ) ) ) ) ( = tmp67 500 ) ) + ( implies ( and ( not x183 ) ( and x184 ( and x185 ( and x186 ( and ( not x187 ) ( and x188 true ) ) ) ) ) ) ( = tmp67 700 ) ) + ( implies ( and ( not x183 ) ( and x184 ( and x185 ( and x186 ( and x187 ( and ( not x188 ) true ) ) ) ) ) ) ( = tmp67 700 ) ) + ( implies ( and ( not x183 ) ( and x184 ( and x185 ( and x186 ( and x187 ( and x188 true ) ) ) ) ) ) ( = tmp67 900 ) ) + ( implies ( and x183 ( and ( not x184 ) ( and ( not x185 ) ( and ( not x186 ) ( and ( not x187 ) ( and ( not x188 ) true ) ) ) ) ) ) ( = tmp67 100 ) ) + ( implies ( and x183 ( and ( not x184 ) ( and ( not x185 ) ( and ( not x186 ) ( and ( not x187 ) ( and x188 true ) ) ) ) ) ) ( = tmp67 300 ) ) + ( implies ( and x183 ( and ( not x184 ) ( and ( not x185 ) ( and ( not x186 ) ( and x187 ( and ( not x188 ) true ) ) ) ) ) ) ( = tmp67 300 ) ) + ( implies ( and x183 ( and ( not x184 ) ( and ( not x185 ) ( and ( not x186 ) ( and x187 ( and x188 true ) ) ) ) ) ) ( = tmp67 500 ) ) + ( implies ( and x183 ( and ( not x184 ) ( and ( not x185 ) ( and x186 ( and ( not x187 ) ( and ( not x188 ) true ) ) ) ) ) ) ( = tmp67 300 ) ) + ( implies ( and x183 ( and ( not x184 ) ( and ( not x185 ) ( and x186 ( and ( not x187 ) ( and x188 true ) ) ) ) ) ) ( = tmp67 500 ) ) + ( implies ( and x183 ( and ( not x184 ) ( and ( not x185 ) ( and x186 ( and x187 ( and ( not x188 ) true ) ) ) ) ) ) ( = tmp67 500 ) ) + ( implies ( and x183 ( and ( not x184 ) ( and ( not x185 ) ( and x186 ( and x187 ( and x188 true ) ) ) ) ) ) ( = tmp67 700 ) ) + ( implies ( and x183 ( and ( not x184 ) ( and x185 ( and ( not x186 ) ( and ( not x187 ) ( and ( not x188 ) true ) ) ) ) ) ) ( = tmp67 300 ) ) + ( implies ( and x183 ( and ( not x184 ) ( and x185 ( and ( not x186 ) ( and ( not x187 ) ( and x188 true ) ) ) ) ) ) ( = tmp67 500 ) ) + ( implies ( and x183 ( and ( not x184 ) ( and x185 ( and ( not x186 ) ( and x187 ( and ( not x188 ) true ) ) ) ) ) ) ( = tmp67 500 ) ) + ( implies ( and x183 ( and ( not x184 ) ( and x185 ( and ( not x186 ) ( and x187 ( and x188 true ) ) ) ) ) ) ( = tmp67 700 ) ) + ( implies ( and x183 ( and ( not x184 ) ( and x185 ( and x186 ( and ( not x187 ) ( and ( not x188 ) true ) ) ) ) ) ) ( = tmp67 500 ) ) + ( implies ( and x183 ( and ( not x184 ) ( and x185 ( and x186 ( and ( not x187 ) ( and x188 true ) ) ) ) ) ) ( = tmp67 700 ) ) + ( implies ( and x183 ( and ( not x184 ) ( and x185 ( and x186 ( and x187 ( and ( not x188 ) true ) ) ) ) ) ) ( = tmp67 700 ) ) + ( implies ( and x183 ( and ( not x184 ) ( and x185 ( and x186 ( and x187 ( and x188 true ) ) ) ) ) ) ( = tmp67 900 ) ) + ( implies ( and x183 ( and x184 ( and ( not x185 ) ( and ( not x186 ) ( and ( not x187 ) ( and ( not x188 ) true ) ) ) ) ) ) ( = tmp67 200 ) ) + ( implies ( and x183 ( and x184 ( and ( not x185 ) ( and ( not x186 ) ( and ( not x187 ) ( and x188 true ) ) ) ) ) ) ( = tmp67 400 ) ) + ( implies ( and x183 ( and x184 ( and ( not x185 ) ( and ( not x186 ) ( and x187 ( and ( not x188 ) true ) ) ) ) ) ) ( = tmp67 400 ) ) + ( implies ( and x183 ( and x184 ( and ( not x185 ) ( and ( not x186 ) ( and x187 ( and x188 true ) ) ) ) ) ) ( = tmp67 600 ) ) + ( implies ( and x183 ( and x184 ( and ( not x185 ) ( and x186 ( and ( not x187 ) ( and ( not x188 ) true ) ) ) ) ) ) ( = tmp67 400 ) ) + ( implies ( and x183 ( and x184 ( and ( not x185 ) ( and x186 ( and ( not x187 ) ( and x188 true ) ) ) ) ) ) ( = tmp67 600 ) ) + ( implies ( and x183 ( and x184 ( and ( not x185 ) ( and x186 ( and x187 ( and ( not x188 ) true ) ) ) ) ) ) ( = tmp67 600 ) ) + ( implies ( and x183 ( and x184 ( and ( not x185 ) ( and x186 ( and x187 ( and x188 true ) ) ) ) ) ) ( = tmp67 800 ) ) + ( implies ( and x183 ( and x184 ( and x185 ( and ( not x186 ) ( and ( not x187 ) ( and ( not x188 ) true ) ) ) ) ) ) ( = tmp67 400 ) ) + ( implies ( and x183 ( and x184 ( and x185 ( and ( not x186 ) ( and ( not x187 ) ( and x188 true ) ) ) ) ) ) ( = tmp67 600 ) ) + ( implies ( and x183 ( and x184 ( and x185 ( and ( not x186 ) ( and x187 ( and ( not x188 ) true ) ) ) ) ) ) ( = tmp67 600 ) ) + ( implies ( and x183 ( and x184 ( and x185 ( and ( not x186 ) ( and x187 ( and x188 true ) ) ) ) ) ) ( = tmp67 800 ) ) + ( implies ( and x183 ( and x184 ( and x185 ( and x186 ( and ( not x187 ) ( and ( not x188 ) true ) ) ) ) ) ) ( = tmp67 600 ) ) + ( implies ( and x183 ( and x184 ( and x185 ( and x186 ( and ( not x187 ) ( and x188 true ) ) ) ) ) ) ( = tmp67 800 ) ) + ( implies ( and x183 ( and x184 ( and x185 ( and x186 ( and x187 ( and ( not x188 ) true ) ) ) ) ) ) ( = tmp67 800 ) ) + ( implies ( and x183 ( and x184 ( and x185 ( and x186 ( and x187 ( and x188 true ) ) ) ) ) ) ( = tmp67 1000 ) ) + ( implies ( and ( not x240 ) ( and ( not x239 ) ( and ( not x238 ) ( and ( not x237 ) ( and ( not x236 ) ( and ( not x235 ) true ) ) ) ) ) ) ( = tmp66 0 ) ) + ( implies ( and ( not x240 ) ( and ( not x239 ) ( and ( not x238 ) ( and ( not x237 ) ( and ( not x236 ) ( and x235 true ) ) ) ) ) ) ( = tmp66 300 ) ) + ( implies ( and ( not x240 ) ( and ( not x239 ) ( and ( not x238 ) ( and ( not x237 ) ( and x236 ( and ( not x235 ) true ) ) ) ) ) ) ( = tmp66 300 ) ) + ( implies ( and ( not x240 ) ( and ( not x239 ) ( and ( not x238 ) ( and ( not x237 ) ( and x236 ( and x235 true ) ) ) ) ) ) ( = tmp66 600 ) ) + ( implies ( and ( not x240 ) ( and ( not x239 ) ( and ( not x238 ) ( and x237 ( and ( not x236 ) ( and ( not x235 ) true ) ) ) ) ) ) ( = tmp66 300 ) ) + ( implies ( and ( not x240 ) ( and ( not x239 ) ( and ( not x238 ) ( and x237 ( and ( not x236 ) ( and x235 true ) ) ) ) ) ) ( = tmp66 600 ) ) + ( implies ( and ( not x240 ) ( and ( not x239 ) ( and ( not x238 ) ( and x237 ( and x236 ( and ( not x235 ) true ) ) ) ) ) ) ( = tmp66 600 ) ) + ( implies ( and ( not x240 ) ( and ( not x239 ) ( and ( not x238 ) ( and x237 ( and x236 ( and x235 true ) ) ) ) ) ) ( = tmp66 900 ) ) + ( implies ( and ( not x240 ) ( and ( not x239 ) ( and x238 ( and ( not x237 ) ( and ( not x236 ) ( and ( not x235 ) true ) ) ) ) ) ) ( = tmp66 300 ) ) + ( implies ( and ( not x240 ) ( and ( not x239 ) ( and x238 ( and ( not x237 ) ( and ( not x236 ) ( and x235 true ) ) ) ) ) ) ( = tmp66 600 ) ) + ( implies ( and ( not x240 ) ( and ( not x239 ) ( and x238 ( and ( not x237 ) ( and x236 ( and ( not x235 ) true ) ) ) ) ) ) ( = tmp66 600 ) ) + ( implies ( and ( not x240 ) ( and ( not x239 ) ( and x238 ( and ( not x237 ) ( and x236 ( and x235 true ) ) ) ) ) ) ( = tmp66 900 ) ) + ( implies ( and ( not x240 ) ( and ( not x239 ) ( and x238 ( and x237 ( and ( not x236 ) ( and ( not x235 ) true ) ) ) ) ) ) ( = tmp66 600 ) ) + ( implies ( and ( not x240 ) ( and ( not x239 ) ( and x238 ( and x237 ( and ( not x236 ) ( and x235 true ) ) ) ) ) ) ( = tmp66 900 ) ) + ( implies ( and ( not x240 ) ( and ( not x239 ) ( and x238 ( and x237 ( and x236 ( and ( not x235 ) true ) ) ) ) ) ) ( = tmp66 900 ) ) + ( implies ( and ( not x240 ) ( and ( not x239 ) ( and x238 ( and x237 ( and x236 ( and x235 true ) ) ) ) ) ) ( = tmp66 1200 ) ) + ( implies ( and ( not x240 ) ( and x239 ( and ( not x238 ) ( and ( not x237 ) ( and ( not x236 ) ( and ( not x235 ) true ) ) ) ) ) ) ( = tmp66 300 ) ) + ( implies ( and ( not x240 ) ( and x239 ( and ( not x238 ) ( and ( not x237 ) ( and ( not x236 ) ( and x235 true ) ) ) ) ) ) ( = tmp66 600 ) ) + ( implies ( and ( not x240 ) ( and x239 ( and ( not x238 ) ( and ( not x237 ) ( and x236 ( and ( not x235 ) true ) ) ) ) ) ) ( = tmp66 600 ) ) + ( implies ( and ( not x240 ) ( and x239 ( and ( not x238 ) ( and ( not x237 ) ( and x236 ( and x235 true ) ) ) ) ) ) ( = tmp66 900 ) ) + ( implies ( and ( not x240 ) ( and x239 ( and ( not x238 ) ( and x237 ( and ( not x236 ) ( and ( not x235 ) true ) ) ) ) ) ) ( = tmp66 600 ) ) + ( implies ( and ( not x240 ) ( and x239 ( and ( not x238 ) ( and x237 ( and ( not x236 ) ( and x235 true ) ) ) ) ) ) ( = tmp66 900 ) ) + ( implies ( and ( not x240 ) ( and x239 ( and ( not x238 ) ( and x237 ( and x236 ( and ( not x235 ) true ) ) ) ) ) ) ( = tmp66 900 ) ) + ( implies ( and ( not x240 ) ( and x239 ( and ( not x238 ) ( and x237 ( and x236 ( and x235 true ) ) ) ) ) ) ( = tmp66 1200 ) ) + ( implies ( and ( not x240 ) ( and x239 ( and x238 ( and ( not x237 ) ( and ( not x236 ) ( and ( not x235 ) true ) ) ) ) ) ) ( = tmp66 600 ) ) + ( implies ( and ( not x240 ) ( and x239 ( and x238 ( and ( not x237 ) ( and ( not x236 ) ( and x235 true ) ) ) ) ) ) ( = tmp66 900 ) ) + ( implies ( and ( not x240 ) ( and x239 ( and x238 ( and ( not x237 ) ( and x236 ( and ( not x235 ) true ) ) ) ) ) ) ( = tmp66 900 ) ) + ( implies ( and ( not x240 ) ( and x239 ( and x238 ( and ( not x237 ) ( and x236 ( and x235 true ) ) ) ) ) ) ( = tmp66 1200 ) ) + ( implies ( and ( not x240 ) ( and x239 ( and x238 ( and x237 ( and ( not x236 ) ( and ( not x235 ) true ) ) ) ) ) ) ( = tmp66 900 ) ) + ( implies ( and ( not x240 ) ( and x239 ( and x238 ( and x237 ( and ( not x236 ) ( and x235 true ) ) ) ) ) ) ( = tmp66 1200 ) ) + ( implies ( and ( not x240 ) ( and x239 ( and x238 ( and x237 ( and x236 ( and ( not x235 ) true ) ) ) ) ) ) ( = tmp66 1200 ) ) + ( implies ( and ( not x240 ) ( and x239 ( and x238 ( and x237 ( and x236 ( and x235 true ) ) ) ) ) ) ( = tmp66 1500 ) ) + ( implies ( and x240 ( and ( not x239 ) ( and ( not x238 ) ( and ( not x237 ) ( and ( not x236 ) ( and ( not x235 ) true ) ) ) ) ) ) ( = tmp66 300 ) ) + ( implies ( and x240 ( and ( not x239 ) ( and ( not x238 ) ( and ( not x237 ) ( and ( not x236 ) ( and x235 true ) ) ) ) ) ) ( = tmp66 600 ) ) + ( implies ( and x240 ( and ( not x239 ) ( and ( not x238 ) ( and ( not x237 ) ( and x236 ( and ( not x235 ) true ) ) ) ) ) ) ( = tmp66 600 ) ) + ( implies ( and x240 ( and ( not x239 ) ( and ( not x238 ) ( and ( not x237 ) ( and x236 ( and x235 true ) ) ) ) ) ) ( = tmp66 900 ) ) + ( implies ( and x240 ( and ( not x239 ) ( and ( not x238 ) ( and x237 ( and ( not x236 ) ( and ( not x235 ) true ) ) ) ) ) ) ( = tmp66 600 ) ) + ( implies ( and x240 ( and ( not x239 ) ( and ( not x238 ) ( and x237 ( and ( not x236 ) ( and x235 true ) ) ) ) ) ) ( = tmp66 900 ) ) + ( implies ( and x240 ( and ( not x239 ) ( and ( not x238 ) ( and x237 ( and x236 ( and ( not x235 ) true ) ) ) ) ) ) ( = tmp66 900 ) ) + ( implies ( and x240 ( and ( not x239 ) ( and ( not x238 ) ( and x237 ( and x236 ( and x235 true ) ) ) ) ) ) ( = tmp66 1200 ) ) + ( implies ( and x240 ( and ( not x239 ) ( and x238 ( and ( not x237 ) ( and ( not x236 ) ( and ( not x235 ) true ) ) ) ) ) ) ( = tmp66 600 ) ) + ( implies ( and x240 ( and ( not x239 ) ( and x238 ( and ( not x237 ) ( and ( not x236 ) ( and x235 true ) ) ) ) ) ) ( = tmp66 900 ) ) + ( implies ( and x240 ( and ( not x239 ) ( and x238 ( and ( not x237 ) ( and x236 ( and ( not x235 ) true ) ) ) ) ) ) ( = tmp66 900 ) ) + ( implies ( and x240 ( and ( not x239 ) ( and x238 ( and ( not x237 ) ( and x236 ( and x235 true ) ) ) ) ) ) ( = tmp66 1200 ) ) + ( implies ( and x240 ( and ( not x239 ) ( and x238 ( and x237 ( and ( not x236 ) ( and ( not x235 ) true ) ) ) ) ) ) ( = tmp66 900 ) ) + ( implies ( and x240 ( and ( not x239 ) ( and x238 ( and x237 ( and ( not x236 ) ( and x235 true ) ) ) ) ) ) ( = tmp66 1200 ) ) + ( implies ( and x240 ( and ( not x239 ) ( and x238 ( and x237 ( and x236 ( and ( not x235 ) true ) ) ) ) ) ) ( = tmp66 1200 ) ) + ( implies ( and x240 ( and ( not x239 ) ( and x238 ( and x237 ( and x236 ( and x235 true ) ) ) ) ) ) ( = tmp66 1500 ) ) + ( implies ( and x240 ( and x239 ( and ( not x238 ) ( and ( not x237 ) ( and ( not x236 ) ( and ( not x235 ) true ) ) ) ) ) ) ( = tmp66 600 ) ) + ( implies ( and x240 ( and x239 ( and ( not x238 ) ( and ( not x237 ) ( and ( not x236 ) ( and x235 true ) ) ) ) ) ) ( = tmp66 900 ) ) + ( implies ( and x240 ( and x239 ( and ( not x238 ) ( and ( not x237 ) ( and x236 ( and ( not x235 ) true ) ) ) ) ) ) ( = tmp66 900 ) ) + ( implies ( and x240 ( and x239 ( and ( not x238 ) ( and ( not x237 ) ( and x236 ( and x235 true ) ) ) ) ) ) ( = tmp66 1200 ) ) + ( implies ( and x240 ( and x239 ( and ( not x238 ) ( and x237 ( and ( not x236 ) ( and ( not x235 ) true ) ) ) ) ) ) ( = tmp66 900 ) ) + ( implies ( and x240 ( and x239 ( and ( not x238 ) ( and x237 ( and ( not x236 ) ( and x235 true ) ) ) ) ) ) ( = tmp66 1200 ) ) + ( implies ( and x240 ( and x239 ( and ( not x238 ) ( and x237 ( and x236 ( and ( not x235 ) true ) ) ) ) ) ) ( = tmp66 1200 ) ) + ( implies ( and x240 ( and x239 ( and ( not x238 ) ( and x237 ( and x236 ( and x235 true ) ) ) ) ) ) ( = tmp66 1500 ) ) + ( implies ( and x240 ( and x239 ( and x238 ( and ( not x237 ) ( and ( not x236 ) ( and ( not x235 ) true ) ) ) ) ) ) ( = tmp66 900 ) ) + ( implies ( and x240 ( and x239 ( and x238 ( and ( not x237 ) ( and ( not x236 ) ( and x235 true ) ) ) ) ) ) ( = tmp66 1200 ) ) + ( implies ( and x240 ( and x239 ( and x238 ( and ( not x237 ) ( and x236 ( and ( not x235 ) true ) ) ) ) ) ) ( = tmp66 1200 ) ) + ( implies ( and x240 ( and x239 ( and x238 ( and ( not x237 ) ( and x236 ( and x235 true ) ) ) ) ) ) ( = tmp66 1500 ) ) + ( implies ( and x240 ( and x239 ( and x238 ( and x237 ( and ( not x236 ) ( and ( not x235 ) true ) ) ) ) ) ) ( = tmp66 1200 ) ) + ( implies ( and x240 ( and x239 ( and x238 ( and x237 ( and ( not x236 ) ( and x235 true ) ) ) ) ) ) ( = tmp66 1500 ) ) + ( implies ( and x240 ( and x239 ( and x238 ( and x237 ( and x236 ( and ( not x235 ) true ) ) ) ) ) ) ( = tmp66 1500 ) ) + ( implies ( and x240 ( and x239 ( and x238 ( and x237 ( and x236 ( and x235 true ) ) ) ) ) ) ( = tmp66 1800 ) ) + ( implies ( and ( not x177 ) ( and ( not x178 ) ( and ( not x179 ) ( and ( not x180 ) ( and ( not x181 ) ( and ( not x182 ) true ) ) ) ) ) ) ( = tmp65 0 ) ) + ( implies ( and ( not x177 ) ( and ( not x178 ) ( and ( not x179 ) ( and ( not x180 ) ( and ( not x181 ) ( and x182 true ) ) ) ) ) ) ( = tmp65 100 ) ) + ( implies ( and ( not x177 ) ( and ( not x178 ) ( and ( not x179 ) ( and ( not x180 ) ( and x181 ( and ( not x182 ) true ) ) ) ) ) ) ( = tmp65 100 ) ) + ( implies ( and ( not x177 ) ( and ( not x178 ) ( and ( not x179 ) ( and ( not x180 ) ( and x181 ( and x182 true ) ) ) ) ) ) ( = tmp65 200 ) ) + ( implies ( and ( not x177 ) ( and ( not x178 ) ( and ( not x179 ) ( and x180 ( and ( not x181 ) ( and ( not x182 ) true ) ) ) ) ) ) ( = tmp65 100 ) ) + ( implies ( and ( not x177 ) ( and ( not x178 ) ( and ( not x179 ) ( and x180 ( and ( not x181 ) ( and x182 true ) ) ) ) ) ) ( = tmp65 200 ) ) + ( implies ( and ( not x177 ) ( and ( not x178 ) ( and ( not x179 ) ( and x180 ( and x181 ( and ( not x182 ) true ) ) ) ) ) ) ( = tmp65 200 ) ) + ( implies ( and ( not x177 ) ( and ( not x178 ) ( and ( not x179 ) ( and x180 ( and x181 ( and x182 true ) ) ) ) ) ) ( = tmp65 300 ) ) + ( implies ( and ( not x177 ) ( and ( not x178 ) ( and x179 ( and ( not x180 ) ( and ( not x181 ) ( and ( not x182 ) true ) ) ) ) ) ) ( = tmp65 100 ) ) + ( implies ( and ( not x177 ) ( and ( not x178 ) ( and x179 ( and ( not x180 ) ( and ( not x181 ) ( and x182 true ) ) ) ) ) ) ( = tmp65 200 ) ) + ( implies ( and ( not x177 ) ( and ( not x178 ) ( and x179 ( and ( not x180 ) ( and x181 ( and ( not x182 ) true ) ) ) ) ) ) ( = tmp65 200 ) ) + ( implies ( and ( not x177 ) ( and ( not x178 ) ( and x179 ( and ( not x180 ) ( and x181 ( and x182 true ) ) ) ) ) ) ( = tmp65 300 ) ) + ( implies ( and ( not x177 ) ( and ( not x178 ) ( and x179 ( and x180 ( and ( not x181 ) ( and ( not x182 ) true ) ) ) ) ) ) ( = tmp65 200 ) ) + ( implies ( and ( not x177 ) ( and ( not x178 ) ( and x179 ( and x180 ( and ( not x181 ) ( and x182 true ) ) ) ) ) ) ( = tmp65 300 ) ) + ( implies ( and ( not x177 ) ( and ( not x178 ) ( and x179 ( and x180 ( and x181 ( and ( not x182 ) true ) ) ) ) ) ) ( = tmp65 300 ) ) + ( implies ( and ( not x177 ) ( and ( not x178 ) ( and x179 ( and x180 ( and x181 ( and x182 true ) ) ) ) ) ) ( = tmp65 400 ) ) + ( implies ( and ( not x177 ) ( and x178 ( and ( not x179 ) ( and ( not x180 ) ( and ( not x181 ) ( and ( not x182 ) true ) ) ) ) ) ) ( = tmp65 100 ) ) + ( implies ( and ( not x177 ) ( and x178 ( and ( not x179 ) ( and ( not x180 ) ( and ( not x181 ) ( and x182 true ) ) ) ) ) ) ( = tmp65 200 ) ) + ( implies ( and ( not x177 ) ( and x178 ( and ( not x179 ) ( and ( not x180 ) ( and x181 ( and ( not x182 ) true ) ) ) ) ) ) ( = tmp65 200 ) ) + ( implies ( and ( not x177 ) ( and x178 ( and ( not x179 ) ( and ( not x180 ) ( and x181 ( and x182 true ) ) ) ) ) ) ( = tmp65 300 ) ) + ( implies ( and ( not x177 ) ( and x178 ( and ( not x179 ) ( and x180 ( and ( not x181 ) ( and ( not x182 ) true ) ) ) ) ) ) ( = tmp65 200 ) ) + ( implies ( and ( not x177 ) ( and x178 ( and ( not x179 ) ( and x180 ( and ( not x181 ) ( and x182 true ) ) ) ) ) ) ( = tmp65 300 ) ) + ( implies ( and ( not x177 ) ( and x178 ( and ( not x179 ) ( and x180 ( and x181 ( and ( not x182 ) true ) ) ) ) ) ) ( = tmp65 300 ) ) + ( implies ( and ( not x177 ) ( and x178 ( and ( not x179 ) ( and x180 ( and x181 ( and x182 true ) ) ) ) ) ) ( = tmp65 400 ) ) + ( implies ( and ( not x177 ) ( and x178 ( and x179 ( and ( not x180 ) ( and ( not x181 ) ( and ( not x182 ) true ) ) ) ) ) ) ( = tmp65 200 ) ) + ( implies ( and ( not x177 ) ( and x178 ( and x179 ( and ( not x180 ) ( and ( not x181 ) ( and x182 true ) ) ) ) ) ) ( = tmp65 300 ) ) + ( implies ( and ( not x177 ) ( and x178 ( and x179 ( and ( not x180 ) ( and x181 ( and ( not x182 ) true ) ) ) ) ) ) ( = tmp65 300 ) ) + ( implies ( and ( not x177 ) ( and x178 ( and x179 ( and ( not x180 ) ( and x181 ( and x182 true ) ) ) ) ) ) ( = tmp65 400 ) ) + ( implies ( and ( not x177 ) ( and x178 ( and x179 ( and x180 ( and ( not x181 ) ( and ( not x182 ) true ) ) ) ) ) ) ( = tmp65 300 ) ) + ( implies ( and ( not x177 ) ( and x178 ( and x179 ( and x180 ( and ( not x181 ) ( and x182 true ) ) ) ) ) ) ( = tmp65 400 ) ) + ( implies ( and ( not x177 ) ( and x178 ( and x179 ( and x180 ( and x181 ( and ( not x182 ) true ) ) ) ) ) ) ( = tmp65 400 ) ) + ( implies ( and ( not x177 ) ( and x178 ( and x179 ( and x180 ( and x181 ( and x182 true ) ) ) ) ) ) ( = tmp65 500 ) ) + ( implies ( and x177 ( and ( not x178 ) ( and ( not x179 ) ( and ( not x180 ) ( and ( not x181 ) ( and ( not x182 ) true ) ) ) ) ) ) ( = tmp65 100 ) ) + ( implies ( and x177 ( and ( not x178 ) ( and ( not x179 ) ( and ( not x180 ) ( and ( not x181 ) ( and x182 true ) ) ) ) ) ) ( = tmp65 200 ) ) + ( implies ( and x177 ( and ( not x178 ) ( and ( not x179 ) ( and ( not x180 ) ( and x181 ( and ( not x182 ) true ) ) ) ) ) ) ( = tmp65 200 ) ) + ( implies ( and x177 ( and ( not x178 ) ( and ( not x179 ) ( and ( not x180 ) ( and x181 ( and x182 true ) ) ) ) ) ) ( = tmp65 300 ) ) + ( implies ( and x177 ( and ( not x178 ) ( and ( not x179 ) ( and x180 ( and ( not x181 ) ( and ( not x182 ) true ) ) ) ) ) ) ( = tmp65 200 ) ) + ( implies ( and x177 ( and ( not x178 ) ( and ( not x179 ) ( and x180 ( and ( not x181 ) ( and x182 true ) ) ) ) ) ) ( = tmp65 300 ) ) + ( implies ( and x177 ( and ( not x178 ) ( and ( not x179 ) ( and x180 ( and x181 ( and ( not x182 ) true ) ) ) ) ) ) ( = tmp65 300 ) ) + ( implies ( and x177 ( and ( not x178 ) ( and ( not x179 ) ( and x180 ( and x181 ( and x182 true ) ) ) ) ) ) ( = tmp65 400 ) ) + ( implies ( and x177 ( and ( not x178 ) ( and x179 ( and ( not x180 ) ( and ( not x181 ) ( and ( not x182 ) true ) ) ) ) ) ) ( = tmp65 200 ) ) + ( implies ( and x177 ( and ( not x178 ) ( and x179 ( and ( not x180 ) ( and ( not x181 ) ( and x182 true ) ) ) ) ) ) ( = tmp65 300 ) ) + ( implies ( and x177 ( and ( not x178 ) ( and x179 ( and ( not x180 ) ( and x181 ( and ( not x182 ) true ) ) ) ) ) ) ( = tmp65 300 ) ) + ( implies ( and x177 ( and ( not x178 ) ( and x179 ( and ( not x180 ) ( and x181 ( and x182 true ) ) ) ) ) ) ( = tmp65 400 ) ) + ( implies ( and x177 ( and ( not x178 ) ( and x179 ( and x180 ( and ( not x181 ) ( and ( not x182 ) true ) ) ) ) ) ) ( = tmp65 300 ) ) + ( implies ( and x177 ( and ( not x178 ) ( and x179 ( and x180 ( and ( not x181 ) ( and x182 true ) ) ) ) ) ) ( = tmp65 400 ) ) + ( implies ( and x177 ( and ( not x178 ) ( and x179 ( and x180 ( and x181 ( and ( not x182 ) true ) ) ) ) ) ) ( = tmp65 400 ) ) + ( implies ( and x177 ( and ( not x178 ) ( and x179 ( and x180 ( and x181 ( and x182 true ) ) ) ) ) ) ( = tmp65 500 ) ) + ( implies ( and x177 ( and x178 ( and ( not x179 ) ( and ( not x180 ) ( and ( not x181 ) ( and ( not x182 ) true ) ) ) ) ) ) ( = tmp65 200 ) ) + ( implies ( and x177 ( and x178 ( and ( not x179 ) ( and ( not x180 ) ( and ( not x181 ) ( and x182 true ) ) ) ) ) ) ( = tmp65 300 ) ) + ( implies ( and x177 ( and x178 ( and ( not x179 ) ( and ( not x180 ) ( and x181 ( and ( not x182 ) true ) ) ) ) ) ) ( = tmp65 300 ) ) + ( implies ( and x177 ( and x178 ( and ( not x179 ) ( and ( not x180 ) ( and x181 ( and x182 true ) ) ) ) ) ) ( = tmp65 400 ) ) + ( implies ( and x177 ( and x178 ( and ( not x179 ) ( and x180 ( and ( not x181 ) ( and ( not x182 ) true ) ) ) ) ) ) ( = tmp65 300 ) ) + ( implies ( and x177 ( and x178 ( and ( not x179 ) ( and x180 ( and ( not x181 ) ( and x182 true ) ) ) ) ) ) ( = tmp65 400 ) ) + ( implies ( and x177 ( and x178 ( and ( not x179 ) ( and x180 ( and x181 ( and ( not x182 ) true ) ) ) ) ) ) ( = tmp65 400 ) ) + ( implies ( and x177 ( and x178 ( and ( not x179 ) ( and x180 ( and x181 ( and x182 true ) ) ) ) ) ) ( = tmp65 500 ) ) + ( implies ( and x177 ( and x178 ( and x179 ( and ( not x180 ) ( and ( not x181 ) ( and ( not x182 ) true ) ) ) ) ) ) ( = tmp65 300 ) ) + ( implies ( and x177 ( and x178 ( and x179 ( and ( not x180 ) ( and ( not x181 ) ( and x182 true ) ) ) ) ) ) ( = tmp65 400 ) ) + ( implies ( and x177 ( and x178 ( and x179 ( and ( not x180 ) ( and x181 ( and ( not x182 ) true ) ) ) ) ) ) ( = tmp65 400 ) ) + ( implies ( and x177 ( and x178 ( and x179 ( and ( not x180 ) ( and x181 ( and x182 true ) ) ) ) ) ) ( = tmp65 500 ) ) + ( implies ( and x177 ( and x178 ( and x179 ( and x180 ( and ( not x181 ) ( and ( not x182 ) true ) ) ) ) ) ) ( = tmp65 400 ) ) + ( implies ( and x177 ( and x178 ( and x179 ( and x180 ( and ( not x181 ) ( and x182 true ) ) ) ) ) ) ( = tmp65 500 ) ) + ( implies ( and x177 ( and x178 ( and x179 ( and x180 ( and x181 ( and ( not x182 ) true ) ) ) ) ) ) ( = tmp65 500 ) ) + ( implies ( and x177 ( and x178 ( and x179 ( and x180 ( and x181 ( and x182 true ) ) ) ) ) ) ( = tmp65 600 ) ) + ( implies ( and ( not x240 ) true ) ( = tmp64 0 ) ) + ( implies ( and x240 true ) ( = tmp64 (~ 100) ) ) + ( implies ( and ( not x239 ) true ) ( = tmp63 0 ) ) + ( implies ( and x239 true ) ( = tmp63 (~ 100) ) ) + ( implies ( and ( not x238 ) true ) ( = tmp62 0 ) ) + ( implies ( and x238 true ) ( = tmp62 (~ 100) ) ) + ( implies ( and ( not x237 ) true ) ( = tmp61 0 ) ) + ( implies ( and x237 true ) ( = tmp61 (~ 100) ) ) + ( implies ( and ( not x236 ) true ) ( = tmp60 0 ) ) + ( implies ( and x236 true ) ( = tmp60 (~ 100) ) ) + ( implies ( and ( not x235 ) true ) ( = tmp59 0 ) ) + ( implies ( and x235 true ) ( = tmp59 (~ 100) ) ) + ( implies ( and ( not x234 ) true ) ( = tmp58 0 ) ) + ( implies ( and x234 true ) ( = tmp58 (~ 100) ) ) + ( implies ( and ( not x233 ) true ) ( = tmp57 0 ) ) + ( implies ( and x233 true ) ( = tmp57 (~ 100) ) ) + ( implies ( and ( not x232 ) true ) ( = tmp56 0 ) ) + ( implies ( and x232 true ) ( = tmp56 (~ 240) ) ) + ( implies ( and ( not x231 ) true ) ( = tmp55 0 ) ) + ( implies ( and x231 true ) ( = tmp55 (~ 240) ) ) + ( implies ( and ( not x230 ) true ) ( = tmp54 0 ) ) + ( implies ( and x230 true ) ( = tmp54 (~ 240) ) ) + ( implies ( and ( not x229 ) true ) ( = tmp53 0 ) ) + ( implies ( and x229 true ) ( = tmp53 (~ 240) ) ) + ( implies ( and ( not x228 ) true ) ( = tmp52 0 ) ) + ( implies ( and x228 true ) ( = tmp52 (~ 240) ) ) + ( implies ( and ( not x227 ) true ) ( = tmp51 0 ) ) + ( implies ( and x227 true ) ( = tmp51 (~ 240) ) ) + ( implies ( and ( not x226 ) true ) ( = tmp50 0 ) ) + ( implies ( and x226 true ) ( = tmp50 (~ 240) ) ) + ( implies ( and ( not x225 ) true ) ( = tmp49 0 ) ) + ( implies ( and x225 true ) ( = tmp49 (~ 240) ) ) + ( implies ( and ( not x224 ) true ) ( = tmp48 0 ) ) + ( implies ( and x224 true ) ( = tmp48 (~ 400) ) ) + ( implies ( and ( not x223 ) true ) ( = tmp47 0 ) ) + ( implies ( and x223 true ) ( = tmp47 (~ 400) ) ) + ( implies ( and ( not x222 ) true ) ( = tmp46 0 ) ) + ( implies ( and x222 true ) ( = tmp46 (~ 400) ) ) + ( implies ( and ( not x221 ) true ) ( = tmp45 0 ) ) + ( implies ( and x221 true ) ( = tmp45 (~ 400) ) ) + ( implies ( and ( not x220 ) true ) ( = tmp44 0 ) ) + ( implies ( and x220 true ) ( = tmp44 (~ 400) ) ) + ( implies ( and ( not x219 ) true ) ( = tmp43 0 ) ) + ( implies ( and x219 true ) ( = tmp43 (~ 350) ) ) + ( implies ( and ( not x218 ) true ) ( = tmp42 0 ) ) + ( implies ( and x218 true ) ( = tmp42 (~ 350) ) ) + ( implies ( and ( not x217 ) true ) ( = tmp41 0 ) ) + ( implies ( and x217 true ) ( = tmp41 (~ 350) ) ) + ( implies ( and ( not x216 ) true ) ( = tmp40 0 ) ) + ( implies ( and x216 true ) ( = tmp40 (~ 160) ) ) + ( implies ( and ( not x215 ) true ) ( = tmp39 0 ) ) + ( implies ( and x215 true ) ( = tmp39 (~ 160) ) ) + ( implies ( and ( not x214 ) true ) ( = tmp38 0 ) ) + ( implies ( and x214 true ) ( = tmp38 (~ 160) ) ) + ( implies ( and ( not x213 ) true ) ( = tmp37 0 ) ) + ( implies ( and x213 true ) ( = tmp37 (~ 160) ) ) + ( implies ( and ( not x212 ) true ) ( = tmp36 0 ) ) + ( implies ( and x212 true ) ( = tmp36 (~ 160) ) ) + ( implies ( and ( not x211 ) true ) ( = tmp35 0 ) ) + ( implies ( and x211 true ) ( = tmp35 (~ 160) ) ) + ( implies ( and ( not x210 ) true ) ( = tmp34 0 ) ) + ( implies ( and x210 true ) ( = tmp34 (~ 160) ) ) + ( implies ( and ( not x209 ) true ) ( = tmp33 0 ) ) + ( implies ( and x209 true ) ( = tmp33 (~ 160) ) ) + ( implies ( and ( not x208 ) true ) ( = tmp32 0 ) ) + ( implies ( and x208 true ) ( = tmp32 (~ 500) ) ) + ( implies ( and ( not x207 ) true ) ( = tmp31 0 ) ) + ( implies ( and x207 true ) ( = tmp31 (~ 400) ) ) + ( implies ( and ( not x206 ) true ) ( = tmp30 0 ) ) + ( implies ( and x206 true ) ( = tmp30 (~ 400) ) ) + ( implies ( and ( not x205 ) true ) ( = tmp29 0 ) ) + ( implies ( and x205 true ) ( = tmp29 (~ 400) ) ) + ( implies ( and ( not x204 ) true ) ( = tmp28 0 ) ) + ( implies ( and x204 true ) ( = tmp28 (~ 400) ) ) + ( implies ( and ( not x203 ) true ) ( = tmp27 0 ) ) + ( implies ( and x203 true ) ( = tmp27 (~ 350) ) ) + ( implies ( and ( not x202 ) true ) ( = tmp26 0 ) ) + ( implies ( and x202 true ) ( = tmp26 (~ 350) ) ) + ( implies ( and ( not x201 ) true ) ( = tmp25 0 ) ) + ( implies ( and x201 true ) ( = tmp25 (~ 350) ) ) + ( implies ( and ( not x200 ) true ) ( = tmp24 0 ) ) + ( implies ( and x200 true ) ( = tmp24 (~ 500) ) ) + ( implies ( and ( not x199 ) true ) ( = tmp23 0 ) ) + ( implies ( and x199 true ) ( = tmp23 (~ 400) ) ) + ( implies ( and ( not x198 ) true ) ( = tmp22 0 ) ) + ( implies ( and x198 true ) ( = tmp22 (~ 400) ) ) + ( implies ( and ( not x197 ) true ) ( = tmp21 0 ) ) + ( implies ( and x197 true ) ( = tmp21 (~ 400) ) ) + ( implies ( and ( not x196 ) true ) ( = tmp20 0 ) ) + ( implies ( and x196 true ) ( = tmp20 (~ 400) ) ) + ( implies ( and ( not x195 ) true ) ( = tmp19 0 ) ) + ( implies ( and x195 true ) ( = tmp19 (~ 350) ) ) + ( implies ( and ( not x194 ) true ) ( = tmp18 0 ) ) + ( implies ( and x194 true ) ( = tmp18 (~ 350) ) ) + ( implies ( and ( not x193 ) true ) ( = tmp17 0 ) ) + ( implies ( and x193 true ) ( = tmp17 (~ 350) ) ) + ( implies ( and ( not x192 ) true ) ( = tmp16 0 ) ) + ( implies ( and x192 true ) ( = tmp16 (~ 240) ) ) + ( implies ( and ( not x191 ) true ) ( = tmp15 0 ) ) + ( implies ( and x191 true ) ( = tmp15 (~ 240) ) ) + ( implies ( and ( not x190 ) true ) ( = tmp14 0 ) ) + ( implies ( and x190 true ) ( = tmp14 (~ 240) ) ) + ( implies ( and ( not x189 ) true ) ( = tmp13 0 ) ) + ( implies ( and x189 true ) ( = tmp13 (~ 240) ) ) + ( implies ( and ( not x188 ) true ) ( = tmp12 0 ) ) + ( implies ( and x188 true ) ( = tmp12 (~ 240) ) ) + ( implies ( and ( not x187 ) true ) ( = tmp11 0 ) ) + ( implies ( and x187 true ) ( = tmp11 (~ 240) ) ) + ( implies ( and ( not x186 ) true ) ( = tmp10 0 ) ) + ( implies ( and x186 true ) ( = tmp10 (~ 240) ) ) + ( implies ( and ( not x185 ) true ) ( = tmp9 0 ) ) + ( implies ( and x185 true ) ( = tmp9 (~ 240) ) ) + ( implies ( and ( not x184 ) true ) ( = tmp8 0 ) ) + ( implies ( and x184 true ) ( = tmp8 (~ 420) ) ) + ( implies ( and ( not x183 ) true ) ( = tmp7 0 ) ) + ( implies ( and x183 true ) ( = tmp7 (~ 400) ) ) + ( implies ( and ( not x182 ) true ) ( = tmp6 0 ) ) + ( implies ( and x182 true ) ( = tmp6 (~ 400) ) ) + ( implies ( and ( not x181 ) true ) ( = tmp5 0 ) ) + ( implies ( and x181 true ) ( = tmp5 (~ 400) ) ) + ( implies ( and ( not x180 ) true ) ( = tmp4 0 ) ) + ( implies ( and x180 true ) ( = tmp4 (~ 400) ) ) + ( implies ( and ( not x179 ) true ) ( = tmp3 0 ) ) + ( implies ( and x179 true ) ( = tmp3 (~ 350) ) ) + ( implies ( and ( not x178 ) true ) ( = tmp2 0 ) ) + ( implies ( and x178 true ) ( = tmp2 (~ 350) ) ) + ( implies ( and ( not x177 ) true ) ( = tmp1 0 ) ) + ( implies ( and x177 true ) ( = tmp1 (~ 350) ) ) + ) +) diff --git a/test/regress/regress0/arith/miplib-pp08a-3000.smt.expect b/test/regress/regress0/arith/miplib-pp08a-3000.smt.expect new file mode 100644 index 000000000..f6ae1d85b --- /dev/null +++ b/test/regress/regress0/arith/miplib-pp08a-3000.smt.expect @@ -0,0 +1,3 @@ +% COMMAND-LINE: --enable-miplib-trick +% EXPECT: unsat +% EXIT: 20 diff --git a/test/regress/regress0/arith/miplib-pp08a-3000.smt2 b/test/regress/regress0/arith/miplib-pp08a-3000.smt2 new file mode 100644 index 000000000..e94506a23 --- /dev/null +++ b/test/regress/regress0/arith/miplib-pp08a-3000.smt2 @@ -0,0 +1,330 @@ +; COMMAND-LINE: --enable-miplib-trick +; EXPECT: unsat +; EXIT: 10 +(set-logic QF_LRA) +(set-info :source | +Relaxation of the Mixed-Integer Programming +optimization problem pp08a from the MIPLIB (http://miplib.zib.de/) +by Enric Rodriguez-Carbonell (erodri@lsi.upc.edu) +|) +(set-info :smt-lib-version 2.0) +(set-info :category "industrial") +(set-info :status unsat) +(declare-fun tmp75 () Real) +(declare-fun tmp74 () Real) +(declare-fun tmp73 () Real) +(declare-fun tmp72 () Real) +(declare-fun tmp71 () Real) +(declare-fun tmp70 () Real) +(declare-fun tmp69 () Real) +(declare-fun tmp68 () Real) +(declare-fun tmp67 () Real) +(declare-fun tmp66 () Real) +(declare-fun tmp65 () Real) +(declare-fun tmp64 () Real) +(declare-fun tmp63 () Real) +(declare-fun tmp62 () Real) +(declare-fun tmp61 () Real) +(declare-fun tmp60 () Real) +(declare-fun tmp59 () Real) +(declare-fun tmp58 () Real) +(declare-fun tmp57 () Real) +(declare-fun tmp56 () Real) +(declare-fun tmp55 () Real) +(declare-fun tmp54 () Real) +(declare-fun tmp53 () Real) +(declare-fun tmp52 () Real) +(declare-fun tmp51 () Real) +(declare-fun tmp50 () Real) +(declare-fun tmp49 () Real) +(declare-fun tmp48 () Real) +(declare-fun tmp47 () Real) +(declare-fun tmp46 () Real) +(declare-fun tmp45 () Real) +(declare-fun tmp44 () Real) +(declare-fun tmp43 () Real) +(declare-fun tmp42 () Real) +(declare-fun tmp41 () Real) +(declare-fun tmp40 () Real) +(declare-fun tmp39 () Real) +(declare-fun tmp38 () Real) +(declare-fun tmp37 () Real) +(declare-fun tmp36 () Real) +(declare-fun tmp35 () Real) +(declare-fun tmp34 () Real) +(declare-fun tmp33 () Real) +(declare-fun tmp32 () Real) +(declare-fun tmp31 () Real) +(declare-fun tmp30 () Real) +(declare-fun tmp29 () Real) +(declare-fun tmp28 () Real) +(declare-fun tmp27 () Real) +(declare-fun tmp26 () Real) +(declare-fun tmp25 () Real) +(declare-fun tmp24 () Real) +(declare-fun tmp23 () Real) +(declare-fun tmp22 () Real) +(declare-fun tmp21 () Real) +(declare-fun tmp20 () Real) +(declare-fun tmp19 () Real) +(declare-fun tmp18 () Real) +(declare-fun tmp17 () Real) +(declare-fun tmp16 () Real) +(declare-fun tmp15 () Real) +(declare-fun tmp14 () Real) +(declare-fun tmp13 () Real) +(declare-fun tmp12 () Real) +(declare-fun tmp11 () Real) +(declare-fun tmp10 () Real) +(declare-fun tmp9 () Real) +(declare-fun tmp8 () Real) +(declare-fun tmp7 () Real) +(declare-fun tmp6 () Real) +(declare-fun tmp5 () Real) +(declare-fun tmp4 () Real) +(declare-fun tmp3 () Real) +(declare-fun tmp2 () Real) +(declare-fun tmp1 () Real) +(declare-fun x113 () Real) +(declare-fun x114 () Real) +(declare-fun x115 () Real) +(declare-fun x116 () Real) +(declare-fun x117 () Real) +(declare-fun x118 () Real) +(declare-fun x119 () Real) +(declare-fun x120 () Real) +(declare-fun x121 () Real) +(declare-fun x122 () Real) +(declare-fun x123 () Real) +(declare-fun x124 () Real) +(declare-fun x125 () Real) +(declare-fun x126 () Real) +(declare-fun x127 () Real) +(declare-fun x128 () Real) +(declare-fun x129 () Real) +(declare-fun x130 () Real) +(declare-fun x131 () Real) +(declare-fun x132 () Real) +(declare-fun x133 () Real) +(declare-fun x134 () Real) +(declare-fun x135 () Real) +(declare-fun x136 () Real) +(declare-fun x137 () Real) +(declare-fun x138 () Real) +(declare-fun x139 () Real) +(declare-fun x140 () Real) +(declare-fun x141 () Real) +(declare-fun x142 () Real) +(declare-fun x143 () Real) +(declare-fun x144 () Real) +(declare-fun x145 () Real) +(declare-fun x146 () Real) +(declare-fun x147 () Real) +(declare-fun x148 () Real) +(declare-fun x149 () Real) +(declare-fun x150 () Real) +(declare-fun x151 () Real) +(declare-fun x152 () Real) +(declare-fun x153 () Real) +(declare-fun x154 () Real) +(declare-fun x155 () Real) +(declare-fun x156 () Real) +(declare-fun x157 () Real) +(declare-fun x158 () Real) +(declare-fun x159 () Real) +(declare-fun x160 () Real) +(declare-fun x161 () Real) +(declare-fun x162 () Real) +(declare-fun x163 () Real) +(declare-fun x164 () Real) +(declare-fun x165 () Real) +(declare-fun x166 () Real) +(declare-fun x167 () Real) +(declare-fun x168 () Real) +(declare-fun x169 () Real) +(declare-fun x170 () Real) +(declare-fun x171 () Real) +(declare-fun x172 () Real) +(declare-fun x173 () Real) +(declare-fun x174 () Real) +(declare-fun x175 () Real) +(declare-fun x176 () Real) +(declare-fun x112 () Real) +(declare-fun x111 () Real) +(declare-fun x110 () Real) +(declare-fun x109 () Real) +(declare-fun x108 () Real) +(declare-fun x107 () Real) +(declare-fun x106 () Real) +(declare-fun x105 () Real) +(declare-fun x104 () Real) +(declare-fun x103 () Real) +(declare-fun x102 () Real) +(declare-fun x101 () Real) +(declare-fun x100 () Real) +(declare-fun x99 () Real) +(declare-fun x98 () Real) +(declare-fun x97 () Real) +(declare-fun x96 () Real) +(declare-fun x95 () Real) +(declare-fun x94 () Real) +(declare-fun x93 () Real) +(declare-fun x92 () Real) +(declare-fun x91 () Real) +(declare-fun x90 () Real) +(declare-fun x89 () Real) +(declare-fun x88 () Real) +(declare-fun x87 () Real) +(declare-fun x86 () Real) +(declare-fun x85 () Real) +(declare-fun x84 () Real) +(declare-fun x83 () Real) +(declare-fun x82 () Real) +(declare-fun x81 () Real) +(declare-fun x80 () Real) +(declare-fun x79 () Real) +(declare-fun x78 () Real) +(declare-fun x77 () Real) +(declare-fun x76 () Real) +(declare-fun x75 () Real) +(declare-fun x74 () Real) +(declare-fun x73 () Real) +(declare-fun x72 () Real) +(declare-fun x71 () Real) +(declare-fun x70 () Real) +(declare-fun x69 () Real) +(declare-fun x68 () Real) +(declare-fun x67 () Real) +(declare-fun x66 () Real) +(declare-fun x65 () Real) +(declare-fun x64 () Real) +(declare-fun x63 () Real) +(declare-fun x62 () Real) +(declare-fun x61 () Real) +(declare-fun x60 () Real) +(declare-fun x59 () Real) +(declare-fun x58 () Real) +(declare-fun x57 () Real) +(declare-fun x56 () Real) +(declare-fun x55 () Real) +(declare-fun x54 () Real) +(declare-fun x53 () Real) +(declare-fun x52 () Real) +(declare-fun x51 () Real) +(declare-fun x50 () Real) +(declare-fun x49 () Real) +(declare-fun x48 () Real) +(declare-fun x47 () Real) +(declare-fun x46 () Real) +(declare-fun x45 () Real) +(declare-fun x44 () Real) +(declare-fun x43 () Real) +(declare-fun x42 () Real) +(declare-fun x41 () Real) +(declare-fun x40 () Real) +(declare-fun x39 () Real) +(declare-fun x38 () Real) +(declare-fun x37 () Real) +(declare-fun x36 () Real) +(declare-fun x35 () Real) +(declare-fun x34 () Real) +(declare-fun x33 () Real) +(declare-fun x32 () Real) +(declare-fun x31 () Real) +(declare-fun x30 () Real) +(declare-fun x29 () Real) +(declare-fun x28 () Real) +(declare-fun x27 () Real) +(declare-fun x26 () Real) +(declare-fun x25 () Real) +(declare-fun x24 () Real) +(declare-fun x23 () Real) +(declare-fun x22 () Real) +(declare-fun x21 () Real) +(declare-fun x20 () Real) +(declare-fun x19 () Real) +(declare-fun x18 () Real) +(declare-fun x17 () Real) +(declare-fun x16 () Real) +(declare-fun x15 () Real) +(declare-fun x14 () Real) +(declare-fun x13 () Real) +(declare-fun x12 () Real) +(declare-fun x11 () Real) +(declare-fun x10 () Real) +(declare-fun x9 () Real) +(declare-fun x8 () Real) +(declare-fun x7 () Real) +(declare-fun x6 () Real) +(declare-fun x5 () Real) +(declare-fun x4 () Real) +(declare-fun x3 () Real) +(declare-fun x2 () Real) +(declare-fun x1 () Real) +(declare-fun x177 () Bool) +(declare-fun x178 () Bool) +(declare-fun x179 () Bool) +(declare-fun x180 () Bool) +(declare-fun x181 () Bool) +(declare-fun x182 () Bool) +(declare-fun x183 () Bool) +(declare-fun x184 () Bool) +(declare-fun x185 () Bool) +(declare-fun x186 () Bool) +(declare-fun x187 () Bool) +(declare-fun x188 () Bool) +(declare-fun x189 () Bool) +(declare-fun x190 () Bool) +(declare-fun x191 () Bool) +(declare-fun x192 () Bool) +(declare-fun x193 () Bool) +(declare-fun x194 () Bool) +(declare-fun x195 () Bool) +(declare-fun x196 () Bool) +(declare-fun x197 () Bool) +(declare-fun x198 () Bool) +(declare-fun x199 () Bool) +(declare-fun x200 () Bool) +(declare-fun x201 () Bool) +(declare-fun x202 () Bool) +(declare-fun x203 () Bool) +(declare-fun x204 () Bool) +(declare-fun x205 () Bool) +(declare-fun x206 () Bool) +(declare-fun x207 () Bool) +(declare-fun x208 () Bool) +(declare-fun x209 () Bool) +(declare-fun x210 () Bool) +(declare-fun x211 () Bool) +(declare-fun x212 () Bool) +(declare-fun x213 () Bool) +(declare-fun x214 () Bool) +(declare-fun x215 () Bool) +(declare-fun x216 () Bool) +(declare-fun x217 () Bool) +(declare-fun x218 () Bool) +(declare-fun x219 () Bool) +(declare-fun x220 () Bool) +(declare-fun x221 () Bool) +(declare-fun x222 () Bool) +(declare-fun x223 () Bool) +(declare-fun x224 () Bool) +(declare-fun x225 () Bool) +(declare-fun x226 () Bool) +(declare-fun x227 () Bool) +(declare-fun x228 () Bool) +(declare-fun x229 () Bool) +(declare-fun x230 () Bool) +(declare-fun x231 () Bool) +(declare-fun x232 () Bool) +(declare-fun x233 () Bool) +(declare-fun x234 () Bool) +(declare-fun x235 () Bool) +(declare-fun x236 () Bool) +(declare-fun x237 () Bool) +(declare-fun x238 () Bool) +(declare-fun x239 () Bool) +(declare-fun x240 () Bool) +(assert (let ((?v_64 (* 1 x56)) (?v_65 (* 1 x55)) (?v_66 (* 1 x54)) (?v_67 (* 1 x53)) (?v_68 (* 1 x52)) (?v_69 (* 1 x51)) (?v_70 (* 1 x50)) (?v_71 (* 1 x49)) (?v_72 (* 1 x48)) (?v_73 (* 1 x47)) (?v_74 (* 1 x46)) (?v_75 (* 1 x45)) (?v_76 (* 1 x44)) (?v_77 (* 1 x43)) (?v_78 (* 1 x42)) (?v_79 (* 1 x41)) (?v_80 (* 1 x40)) (?v_81 (* 1 x39)) (?v_82 (* 1 x38)) (?v_83 (* 1 x37)) (?v_84 (* 1 x36)) (?v_85 (* 1 x35)) (?v_86 (* 1 x34)) (?v_87 (* 1 x33)) (?v_88 (* 1 x32)) (?v_89 (* 1 x31)) (?v_90 (* 1 x30)) (?v_91 (* 1 x29)) (?v_92 (* 1 x28)) (?v_93 (* 1 x27)) (?v_94 (* 1 x26)) (?v_95 (* 1 x25)) (?v_96 (* 1 x24)) (?v_97 (* 1 x23)) (?v_98 (* 1 x22)) (?v_99 (* 1 x21)) (?v_100 (* 1 x20)) (?v_101 (* 1 x19)) (?v_102 (* 1 x18)) (?v_103 (* 1 x17)) (?v_104 (* 1 x16)) (?v_105 (* 1 x15)) (?v_106 (* 1 x14)) (?v_107 (* 1 x13)) (?v_108 (* 1 x12)) (?v_109 (* 1 x11)) (?v_110 (* 1 x10)) (?v_111 (* 1 x9)) (?v_112 (* 1 x8)) (?v_113 (* 1 x7)) (?v_114 (* 1 x6)) (?v_115 (* 1 x5)) (?v_116 (* 1 x4)) (?v_117 (* 1 x3)) (?v_118 (* 1 x2)) (?v_119 (* 1 x1)) (?v_7 (* 1 x176)) (?v_15 (* 1 x175)) (?v_23 (* 1 x174)) (?v_31 (* 1 x173)) (?v_39 (* 1 x172)) (?v_47 (* 1 x171)) (?v_55 (* 1 x170)) (?v_63 (* 1 x169)) (?v_6 (* 1 x168)) (?v_14 (* 1 x167)) (?v_22 (* 1 x166)) (?v_30 (* 1 x165)) (?v_38 (* 1 x164)) (?v_46 (* 1 x163)) (?v_54 (* 1 x162)) (?v_62 (* 1 x161)) (?v_5 (* 1 x160)) (?v_13 (* 1 x159)) (?v_21 (* 1 x158)) (?v_29 (* 1 x157)) (?v_37 (* 1 x156)) (?v_45 (* 1 x155)) (?v_53 (* 1 x154)) (?v_61 (* 1 x153)) (?v_4 (* 1 x152)) (?v_12 (* 1 x151)) (?v_20 (* 1 x150)) (?v_28 (* 1 x149)) (?v_36 (* 1 x148)) (?v_44 (* 1 x147)) (?v_52 (* 1 x146)) (?v_60 (* 1 x145)) (?v_3 (* 1 x144)) (?v_11 (* 1 x143)) (?v_19 (* 1 x142)) (?v_27 (* 1 x141)) (?v_35 (* 1 x140)) (?v_43 (* 1 x139)) (?v_51 (* 1 x138)) (?v_59 (* 1 x137)) (?v_2 (* 1 x136)) (?v_10 (* 1 x135)) (?v_18 (* 1 x134)) (?v_26 (* 1 x133)) (?v_34 (* 1 x132)) (?v_42 (* 1 x131)) (?v_50 (* 1 x130)) (?v_58 (* 1 x129)) (?v_1 (* 1 x128)) (?v_9 (* 1 x127)) (?v_17 (* 1 x126)) (?v_25 (* 1 x125)) (?v_33 (* 1 x124)) (?v_41 (* 1 x123)) (?v_49 (* 1 x122)) (?v_57 (* 1 x121)) (?v_0 (* 1 x120)) (?v_8 (* 1 x119)) (?v_16 (* 1 x118)) (?v_24 (* 1 x117)) (?v_32 (* 1 x116)) (?v_40 (* 1 x115)) (?v_48 (* 1 x114)) (?v_56 (* 1 x113)) (?v_120 (not x207)) (?v_121 (not x208)) (?v_122 (not x209)) (?v_123 (and (not x210) true))) (let ((?v_126 (and ?v_122 ?v_123))) (let ((?v_131 (and ?v_121 ?v_126)) (?v_125 (and x210 true))) (let ((?v_127 (and ?v_122 ?v_125))) (let ((?v_133 (and ?v_121 ?v_127)) (?v_124 (= tmp75 400)) (?v_128 (and x209 ?v_123))) (let ((?v_134 (and ?v_121 ?v_128)) (?v_130 (and x209 ?v_125))) (let ((?v_135 (and ?v_121 ?v_130)) (?v_137 (and x208 ?v_126)) (?v_132 (= tmp75 300)) (?v_138 (and x208 ?v_127)) (?v_129 (= tmp75 700)) (?v_139 (and x208 ?v_128)) (?v_141 (and x208 ?v_130)) (?v_136 (= tmp75 1100)) (?v_140 (= tmp75 1000)) (?v_142 (not x216)) (?v_143 (not x215)) (?v_144 (not x214)) (?v_145 (not x213)) (?v_146 (not x212)) (?v_147 (and (not x211) true))) (let ((?v_150 (and ?v_146 ?v_147))) (let ((?v_155 (and ?v_145 ?v_150))) (let ((?v_164 (and ?v_144 ?v_155))) (let ((?v_181 (and ?v_143 ?v_164)) (?v_149 (and x211 true))) (let ((?v_151 (and ?v_146 ?v_149))) (let ((?v_156 (and ?v_145 ?v_151))) (let ((?v_165 (and ?v_144 ?v_156))) (let ((?v_182 (and ?v_143 ?v_165)) (?v_148 (= tmp74 400)) (?v_153 (and x212 ?v_147))) (let ((?v_157 (and ?v_145 ?v_153))) (let ((?v_166 (and ?v_144 ?v_157))) (let ((?v_183 (and ?v_143 ?v_166)) (?v_154 (and x212 ?v_149))) (let ((?v_158 (and ?v_145 ?v_154))) (let ((?v_167 (and ?v_144 ?v_158))) (let ((?v_184 (and ?v_143 ?v_167)) (?v_152 (= tmp74 800)) (?v_160 (and x213 ?v_150))) (let ((?v_168 (and ?v_144 ?v_160))) (let ((?v_185 (and ?v_143 ?v_168)) (?v_161 (and x213 ?v_151))) (let ((?v_169 (and ?v_144 ?v_161))) (let ((?v_186 (and ?v_143 ?v_169)) (?v_162 (and x213 ?v_153))) (let ((?v_170 (and ?v_144 ?v_162))) (let ((?v_187 (and ?v_143 ?v_170)) (?v_163 (and x213 ?v_154))) (let ((?v_171 (and ?v_144 ?v_163))) (let ((?v_188 (and ?v_143 ?v_171)) (?v_159 (= tmp74 1200)) (?v_173 (and x214 ?v_155))) (let ((?v_189 (and ?v_143 ?v_173)) (?v_174 (and x214 ?v_156))) (let ((?v_190 (and ?v_143 ?v_174)) (?v_175 (and x214 ?v_157))) (let ((?v_191 (and ?v_143 ?v_175)) (?v_176 (and x214 ?v_158))) (let ((?v_192 (and ?v_143 ?v_176)) (?v_177 (and x214 ?v_160))) (let ((?v_193 (and ?v_143 ?v_177)) (?v_178 (and x214 ?v_161))) (let ((?v_194 (and ?v_143 ?v_178)) (?v_179 (and x214 ?v_162))) (let ((?v_195 (and ?v_143 ?v_179)) (?v_180 (and x214 ?v_163))) (let ((?v_196 (and ?v_143 ?v_180)) (?v_172 (= tmp74 1600)) (?v_198 (and x215 ?v_164)) (?v_199 (and x215 ?v_165)) (?v_200 (and x215 ?v_166)) (?v_201 (and x215 ?v_167)) (?v_202 (and x215 ?v_168)) (?v_203 (and x215 ?v_169)) (?v_204 (and x215 ?v_170)) (?v_205 (and x215 ?v_171)) (?v_206 (and x215 ?v_173)) (?v_207 (and x215 ?v_174)) (?v_208 (and x215 ?v_175)) (?v_209 (and x215 ?v_176)) (?v_210 (and x215 ?v_177)) (?v_211 (and x215 ?v_178)) (?v_212 (and x215 ?v_179)) (?v_213 (and x215 ?v_180)) (?v_197 (= tmp74 2000)) (?v_214 (not x201)) (?v_215 (not x202)) (?v_216 (not x203)) (?v_217 (not x204)) (?v_218 (not x205)) (?v_219 (and (not x206) true))) (let ((?v_222 (and ?v_218 ?v_219))) (let ((?v_227 (and ?v_217 ?v_222))) (let ((?v_236 (and ?v_216 ?v_227))) (let ((?v_253 (and ?v_215 ?v_236)) (?v_221 (and x206 true))) (let ((?v_223 (and ?v_218 ?v_221))) (let ((?v_228 (and ?v_217 ?v_223))) (let ((?v_237 (and ?v_216 ?v_228))) (let ((?v_254 (and ?v_215 ?v_237)) (?v_220 (= tmp73 300)) (?v_225 (and x205 ?v_219))) (let ((?v_229 (and ?v_217 ?v_225))) (let ((?v_238 (and ?v_216 ?v_229))) (let ((?v_255 (and ?v_215 ?v_238)) (?v_226 (and x205 ?v_221))) (let ((?v_230 (and ?v_217 ?v_226))) (let ((?v_239 (and ?v_216 ?v_230))) (let ((?v_256 (and ?v_215 ?v_239)) (?v_224 (= tmp73 600)) (?v_232 (and x204 ?v_222))) (let ((?v_240 (and ?v_216 ?v_232))) (let ((?v_257 (and ?v_215 ?v_240)) (?v_233 (and x204 ?v_223))) (let ((?v_241 (and ?v_216 ?v_233))) (let ((?v_258 (and ?v_215 ?v_241)) (?v_234 (and x204 ?v_225))) (let ((?v_242 (and ?v_216 ?v_234))) (let ((?v_259 (and ?v_215 ?v_242)) (?v_235 (and x204 ?v_226))) (let ((?v_243 (and ?v_216 ?v_235))) (let ((?v_260 (and ?v_215 ?v_243)) (?v_231 (= tmp73 900)) (?v_245 (and x203 ?v_227))) (let ((?v_261 (and ?v_215 ?v_245)) (?v_246 (and x203 ?v_228))) (let ((?v_262 (and ?v_215 ?v_246)) (?v_247 (and x203 ?v_229))) (let ((?v_263 (and ?v_215 ?v_247)) (?v_248 (and x203 ?v_230))) (let ((?v_264 (and ?v_215 ?v_248)) (?v_249 (and x203 ?v_232))) (let ((?v_265 (and ?v_215 ?v_249)) (?v_250 (and x203 ?v_233))) (let ((?v_266 (and ?v_215 ?v_250)) (?v_251 (and x203 ?v_234))) (let ((?v_267 (and ?v_215 ?v_251)) (?v_252 (and x203 ?v_235))) (let ((?v_268 (and ?v_215 ?v_252)) (?v_244 (= tmp73 1200)) (?v_270 (and x202 ?v_236)) (?v_271 (and x202 ?v_237)) (?v_272 (and x202 ?v_238)) (?v_273 (and x202 ?v_239)) (?v_274 (and x202 ?v_240)) (?v_275 (and x202 ?v_241)) (?v_276 (and x202 ?v_242)) (?v_277 (and x202 ?v_243)) (?v_278 (and x202 ?v_245)) (?v_279 (and x202 ?v_246)) (?v_280 (and x202 ?v_247)) (?v_281 (and x202 ?v_248)) (?v_282 (and x202 ?v_249)) (?v_283 (and x202 ?v_250)) (?v_284 (and x202 ?v_251)) (?v_285 (and x202 ?v_252)) (?v_269 (= tmp73 1500)) (?v_286 (not x222)) (?v_287 (not x221)) (?v_288 (not x220)) (?v_289 (not x219)) (?v_290 (not x218)) (?v_291 (and (not x217) true))) (let ((?v_294 (and ?v_290 ?v_291))) (let ((?v_299 (and ?v_289 ?v_294))) (let ((?v_308 (and ?v_288 ?v_299))) (let ((?v_325 (and ?v_287 ?v_308)) (?v_293 (and x217 true))) (let ((?v_295 (and ?v_290 ?v_293))) (let ((?v_300 (and ?v_289 ?v_295))) (let ((?v_309 (and ?v_288 ?v_300))) (let ((?v_326 (and ?v_287 ?v_309)) (?v_292 (= tmp72 250)) (?v_297 (and x218 ?v_291))) (let ((?v_301 (and ?v_289 ?v_297))) (let ((?v_310 (and ?v_288 ?v_301))) (let ((?v_327 (and ?v_287 ?v_310)) (?v_298 (and x218 ?v_293))) (let ((?v_302 (and ?v_289 ?v_298))) (let ((?v_311 (and ?v_288 ?v_302))) (let ((?v_328 (and ?v_287 ?v_311)) (?v_296 (= tmp72 500)) (?v_304 (and x219 ?v_294))) (let ((?v_312 (and ?v_288 ?v_304))) (let ((?v_329 (and ?v_287 ?v_312)) (?v_305 (and x219 ?v_295))) (let ((?v_313 (and ?v_288 ?v_305))) (let ((?v_330 (and ?v_287 ?v_313)) (?v_306 (and x219 ?v_297))) (let ((?v_314 (and ?v_288 ?v_306))) (let ((?v_331 (and ?v_287 ?v_314)) (?v_307 (and x219 ?v_298))) (let ((?v_315 (and ?v_288 ?v_307))) (let ((?v_332 (and ?v_287 ?v_315)) (?v_303 (= tmp72 750)) (?v_317 (and x220 ?v_299))) (let ((?v_333 (and ?v_287 ?v_317)) (?v_318 (and x220 ?v_300))) (let ((?v_334 (and ?v_287 ?v_318)) (?v_319 (and x220 ?v_301))) (let ((?v_335 (and ?v_287 ?v_319)) (?v_320 (and x220 ?v_302))) (let ((?v_336 (and ?v_287 ?v_320)) (?v_321 (and x220 ?v_304))) (let ((?v_337 (and ?v_287 ?v_321)) (?v_322 (and x220 ?v_305))) (let ((?v_338 (and ?v_287 ?v_322)) (?v_323 (and x220 ?v_306))) (let ((?v_339 (and ?v_287 ?v_323)) (?v_324 (and x220 ?v_307))) (let ((?v_340 (and ?v_287 ?v_324)) (?v_316 (= tmp72 1000)) (?v_342 (and x221 ?v_308)) (?v_343 (and x221 ?v_309)) (?v_344 (and x221 ?v_310)) (?v_345 (and x221 ?v_311)) (?v_346 (and x221 ?v_312)) (?v_347 (and x221 ?v_313)) (?v_348 (and x221 ?v_314)) (?v_349 (and x221 ?v_315)) (?v_350 (and x221 ?v_317)) (?v_351 (and x221 ?v_318)) (?v_352 (and x221 ?v_319)) (?v_353 (and x221 ?v_320)) (?v_354 (and x221 ?v_321)) (?v_355 (and x221 ?v_322)) (?v_356 (and x221 ?v_323)) (?v_357 (and x221 ?v_324)) (?v_341 (= tmp72 1250)) (?v_358 (not x195)) (?v_359 (not x196)) (?v_360 (not x197)) (?v_361 (not x198)) (?v_362 (not x199)) (?v_363 (and (not x200) true))) (let ((?v_366 (and ?v_362 ?v_363))) (let ((?v_371 (and ?v_361 ?v_366))) (let ((?v_380 (and ?v_360 ?v_371))) (let ((?v_397 (and ?v_359 ?v_380)) (?v_365 (and x200 true))) (let ((?v_367 (and ?v_362 ?v_365))) (let ((?v_372 (and ?v_361 ?v_367))) (let ((?v_381 (and ?v_360 ?v_372))) (let ((?v_398 (and ?v_359 ?v_381)) (?v_364 (= tmp71 200)) (?v_369 (and x199 ?v_363))) (let ((?v_373 (and ?v_361 ?v_369))) (let ((?v_382 (and ?v_360 ?v_373))) (let ((?v_399 (and ?v_359 ?v_382)) (?v_370 (and x199 ?v_365))) (let ((?v_374 (and ?v_361 ?v_370))) (let ((?v_383 (and ?v_360 ?v_374))) (let ((?v_400 (and ?v_359 ?v_383)) (?v_368 (= tmp71 400)) (?v_376 (and x198 ?v_366))) (let ((?v_384 (and ?v_360 ?v_376))) (let ((?v_401 (and ?v_359 ?v_384)) (?v_377 (and x198 ?v_367))) (let ((?v_385 (and ?v_360 ?v_377))) (let ((?v_402 (and ?v_359 ?v_385)) (?v_378 (and x198 ?v_369))) (let ((?v_386 (and ?v_360 ?v_378))) (let ((?v_403 (and ?v_359 ?v_386)) (?v_379 (and x198 ?v_370))) (let ((?v_387 (and ?v_360 ?v_379))) (let ((?v_404 (and ?v_359 ?v_387)) (?v_375 (= tmp71 600)) (?v_389 (and x197 ?v_371))) (let ((?v_405 (and ?v_359 ?v_389)) (?v_390 (and x197 ?v_372))) (let ((?v_406 (and ?v_359 ?v_390)) (?v_391 (and x197 ?v_373))) (let ((?v_407 (and ?v_359 ?v_391)) (?v_392 (and x197 ?v_374))) (let ((?v_408 (and ?v_359 ?v_392)) (?v_393 (and x197 ?v_376))) (let ((?v_409 (and ?v_359 ?v_393)) (?v_394 (and x197 ?v_377))) (let ((?v_410 (and ?v_359 ?v_394)) (?v_395 (and x197 ?v_378))) (let ((?v_411 (and ?v_359 ?v_395)) (?v_396 (and x197 ?v_379))) (let ((?v_412 (and ?v_359 ?v_396)) (?v_388 (= tmp71 800)) (?v_414 (and x196 ?v_380)) (?v_415 (and x196 ?v_381)) (?v_416 (and x196 ?v_382)) (?v_417 (and x196 ?v_383)) (?v_418 (and x196 ?v_384)) (?v_419 (and x196 ?v_385)) (?v_420 (and x196 ?v_386)) (?v_421 (and x196 ?v_387)) (?v_422 (and x196 ?v_389)) (?v_423 (and x196 ?v_390)) (?v_424 (and x196 ?v_391)) (?v_425 (and x196 ?v_392)) (?v_426 (and x196 ?v_393)) (?v_427 (and x196 ?v_394)) (?v_428 (and x196 ?v_395)) (?v_429 (and x196 ?v_396)) (?v_413 (= tmp71 1000)) (?v_430 (not x228)) (?v_431 (not x227)) (?v_432 (not x226)) (?v_433 (not x225)) (?v_434 (not x224)) (?v_435 (and (not x223) true))) (let ((?v_438 (and ?v_434 ?v_435))) (let ((?v_444 (and ?v_433 ?v_438))) (let ((?v_454 (and ?v_432 ?v_444))) (let ((?v_472 (and ?v_431 ?v_454)) (?v_437 (and x223 true))) (let ((?v_440 (and ?v_434 ?v_437))) (let ((?v_445 (and ?v_433 ?v_440))) (let ((?v_455 (and ?v_432 ?v_445))) (let ((?v_473 (and ?v_431 ?v_455)) (?v_436 (= tmp70 250)) (?v_441 (and x224 ?v_435))) (let ((?v_446 (and ?v_433 ?v_441))) (let ((?v_456 (and ?v_432 ?v_446))) (let ((?v_474 (and ?v_431 ?v_456)) (?v_443 (and x224 ?v_437))) (let ((?v_447 (and ?v_433 ?v_443))) (let ((?v_457 (and ?v_432 ?v_447))) (let ((?v_475 (and ?v_431 ?v_457)) (?v_439 (= tmp70 500)) (?v_449 (and x225 ?v_438))) (let ((?v_458 (and ?v_432 ?v_449))) (let ((?v_476 (and ?v_431 ?v_458)) (?v_450 (and x225 ?v_440))) (let ((?v_459 (and ?v_432 ?v_450))) (let ((?v_477 (and ?v_431 ?v_459)) (?v_442 (= tmp70 750)) (?v_451 (and x225 ?v_441))) (let ((?v_460 (and ?v_432 ?v_451))) (let ((?v_478 (and ?v_431 ?v_460)) (?v_453 (and x225 ?v_443))) (let ((?v_461 (and ?v_432 ?v_453))) (let ((?v_479 (and ?v_431 ?v_461)) (?v_448 (= tmp70 1000)) (?v_463 (and x226 ?v_444))) (let ((?v_480 (and ?v_431 ?v_463)) (?v_464 (and x226 ?v_445))) (let ((?v_481 (and ?v_431 ?v_464)) (?v_465 (and x226 ?v_446))) (let ((?v_482 (and ?v_431 ?v_465)) (?v_466 (and x226 ?v_447))) (let ((?v_483 (and ?v_431 ?v_466)) (?v_467 (and x226 ?v_449))) (let ((?v_484 (and ?v_431 ?v_467)) (?v_468 (and x226 ?v_450))) (let ((?v_485 (and ?v_431 ?v_468)) (?v_452 (= tmp70 1250)) (?v_469 (and x226 ?v_451))) (let ((?v_486 (and ?v_431 ?v_469)) (?v_471 (and x226 ?v_453))) (let ((?v_487 (and ?v_431 ?v_471)) (?v_462 (= tmp70 1500)) (?v_489 (and x227 ?v_454)) (?v_490 (and x227 ?v_455)) (?v_491 (and x227 ?v_456)) (?v_492 (and x227 ?v_457)) (?v_493 (and x227 ?v_458)) (?v_494 (and x227 ?v_459)) (?v_495 (and x227 ?v_460)) (?v_496 (and x227 ?v_461)) (?v_497 (and x227 ?v_463)) (?v_498 (and x227 ?v_464)) (?v_499 (and x227 ?v_465)) (?v_500 (and x227 ?v_466)) (?v_501 (and x227 ?v_467)) (?v_502 (and x227 ?v_468)) (?v_470 (= tmp70 1750)) (?v_503 (and x227 ?v_469)) (?v_505 (and x227 ?v_471)) (?v_488 (= tmp70 2000)) (?v_504 (= tmp70 2250)) (?v_506 (not x189)) (?v_507 (not x190)) (?v_508 (not x191)) (?v_509 (not x192)) (?v_510 (not x193)) (?v_511 (and (not x194) true))) (let ((?v_514 (and ?v_510 ?v_511))) (let ((?v_519 (and ?v_509 ?v_514))) (let ((?v_528 (and ?v_508 ?v_519))) (let ((?v_545 (and ?v_507 ?v_528)) (?v_513 (and x194 true))) (let ((?v_515 (and ?v_510 ?v_513))) (let ((?v_520 (and ?v_509 ?v_515))) (let ((?v_529 (and ?v_508 ?v_520))) (let ((?v_546 (and ?v_507 ?v_529)) (?v_512 (= tmp69 200)) (?v_517 (and x193 ?v_511))) (let ((?v_521 (and ?v_509 ?v_517))) (let ((?v_530 (and ?v_508 ?v_521))) (let ((?v_547 (and ?v_507 ?v_530)) (?v_518 (and x193 ?v_513))) (let ((?v_522 (and ?v_509 ?v_518))) (let ((?v_531 (and ?v_508 ?v_522))) (let ((?v_548 (and ?v_507 ?v_531)) (?v_516 (= tmp69 400)) (?v_524 (and x192 ?v_514))) (let ((?v_532 (and ?v_508 ?v_524))) (let ((?v_549 (and ?v_507 ?v_532)) (?v_525 (and x192 ?v_515))) (let ((?v_533 (and ?v_508 ?v_525))) (let ((?v_550 (and ?v_507 ?v_533)) (?v_526 (and x192 ?v_517))) (let ((?v_534 (and ?v_508 ?v_526))) (let ((?v_551 (and ?v_507 ?v_534)) (?v_527 (and x192 ?v_518))) (let ((?v_535 (and ?v_508 ?v_527))) (let ((?v_552 (and ?v_507 ?v_535)) (?v_523 (= tmp69 600)) (?v_537 (and x191 ?v_519))) (let ((?v_553 (and ?v_507 ?v_537)) (?v_538 (and x191 ?v_520))) (let ((?v_554 (and ?v_507 ?v_538)) (?v_539 (and x191 ?v_521))) (let ((?v_555 (and ?v_507 ?v_539)) (?v_540 (and x191 ?v_522))) (let ((?v_556 (and ?v_507 ?v_540)) (?v_541 (and x191 ?v_524))) (let ((?v_557 (and ?v_507 ?v_541)) (?v_542 (and x191 ?v_525))) (let ((?v_558 (and ?v_507 ?v_542)) (?v_543 (and x191 ?v_526))) (let ((?v_559 (and ?v_507 ?v_543)) (?v_544 (and x191 ?v_527))) (let ((?v_560 (and ?v_507 ?v_544)) (?v_536 (= tmp69 800)) (?v_562 (and x190 ?v_528)) (?v_563 (and x190 ?v_529)) (?v_564 (and x190 ?v_530)) (?v_565 (and x190 ?v_531)) (?v_566 (and x190 ?v_532)) (?v_567 (and x190 ?v_533)) (?v_568 (and x190 ?v_534)) (?v_569 (and x190 ?v_535)) (?v_570 (and x190 ?v_537)) (?v_571 (and x190 ?v_538)) (?v_572 (and x190 ?v_539)) (?v_573 (and x190 ?v_540)) (?v_574 (and x190 ?v_541)) (?v_575 (and x190 ?v_542)) (?v_576 (and x190 ?v_543)) (?v_577 (and x190 ?v_544)) (?v_561 (= tmp69 1000)) (?v_578 (not x234)) (?v_579 (not x233)) (?v_580 (not x232)) (?v_581 (not x231)) (?v_582 (not x230)) (?v_583 (and (not x229) true))) (let ((?v_586 (and ?v_582 ?v_583))) (let ((?v_591 (and ?v_581 ?v_586))) (let ((?v_600 (and ?v_580 ?v_591))) (let ((?v_619 (and ?v_579 ?v_600)) (?v_585 (and x229 true))) (let ((?v_587 (and ?v_582 ?v_585))) (let ((?v_592 (and ?v_581 ?v_587))) (let ((?v_601 (and ?v_580 ?v_592))) (let ((?v_621 (and ?v_579 ?v_601)) (?v_584 (= tmp68 500)) (?v_589 (and x230 ?v_583))) (let ((?v_593 (and ?v_581 ?v_589))) (let ((?v_602 (and ?v_580 ?v_593))) (let ((?v_622 (and ?v_579 ?v_602)) (?v_590 (and x230 ?v_585))) (let ((?v_594 (and ?v_581 ?v_590))) (let ((?v_604 (and ?v_580 ?v_594))) (let ((?v_623 (and ?v_579 ?v_604)) (?v_588 (= tmp68 1000)) (?v_596 (and x231 ?v_586))) (let ((?v_605 (and ?v_580 ?v_596))) (let ((?v_624 (and ?v_579 ?v_605)) (?v_597 (and x231 ?v_587))) (let ((?v_606 (and ?v_580 ?v_597))) (let ((?v_625 (and ?v_579 ?v_606)) (?v_598 (and x231 ?v_589))) (let ((?v_608 (and ?v_580 ?v_598))) (let ((?v_626 (and ?v_579 ?v_608)) (?v_599 (and x231 ?v_590))) (let ((?v_609 (and ?v_580 ?v_599))) (let ((?v_627 (and ?v_579 ?v_609)) (?v_595 (= tmp68 1500)) (?v_610 (and x232 ?v_591))) (let ((?v_628 (and ?v_579 ?v_610)) (?v_611 (and x232 ?v_592))) (let ((?v_629 (and ?v_579 ?v_611)) (?v_612 (and x232 ?v_593))) (let ((?v_630 (and ?v_579 ?v_612)) (?v_613 (and x232 ?v_594))) (let ((?v_631 (and ?v_579 ?v_613)) (?v_615 (and x232 ?v_596))) (let ((?v_632 (and ?v_579 ?v_615)) (?v_616 (and x232 ?v_597))) (let ((?v_633 (and ?v_579 ?v_616)) (?v_617 (and x232 ?v_598))) (let ((?v_634 (and ?v_579 ?v_617)) (?v_618 (and x232 ?v_599))) (let ((?v_635 (and ?v_579 ?v_618)) (?v_637 (and x233 ?v_600)) (?v_620 (= tmp68 300)) (?v_638 (and x233 ?v_601)) (?v_603 (= tmp68 800)) (?v_639 (and x233 ?v_602)) (?v_641 (and x233 ?v_604)) (?v_607 (= tmp68 1300)) (?v_642 (and x233 ?v_605)) (?v_643 (and x233 ?v_606)) (?v_645 (and x233 ?v_608)) (?v_646 (and x233 ?v_609)) (?v_614 (= tmp68 1800)) (?v_647 (and x233 ?v_610)) (?v_648 (and x233 ?v_611)) (?v_649 (and x233 ?v_612)) (?v_650 (and x233 ?v_613)) (?v_652 (and x233 ?v_615)) (?v_653 (and x233 ?v_616)) (?v_654 (and x233 ?v_617)) (?v_655 (and x233 ?v_618)) (?v_636 (= tmp68 2300)) (?v_640 (= tmp68 1100)) (?v_644 (= tmp68 1600)) (?v_651 (= tmp68 2100)) (?v_656 (not x183)) (?v_657 (not x184)) (?v_658 (not x185)) (?v_659 (not x186)) (?v_660 (not x187)) (?v_661 (and (not x188) true))) (let ((?v_664 (and ?v_660 ?v_661))) (let ((?v_669 (and ?v_659 ?v_664))) (let ((?v_678 (and ?v_658 ?v_669))) (let ((?v_697 (and ?v_657 ?v_678)) (?v_663 (and x188 true))) (let ((?v_665 (and ?v_660 ?v_663))) (let ((?v_670 (and ?v_659 ?v_665))) (let ((?v_679 (and ?v_658 ?v_670))) (let ((?v_699 (and ?v_657 ?v_679)) (?v_662 (= tmp67 200)) (?v_667 (and x187 ?v_661))) (let ((?v_671 (and ?v_659 ?v_667))) (let ((?v_680 (and ?v_658 ?v_671))) (let ((?v_700 (and ?v_657 ?v_680)) (?v_668 (and x187 ?v_663))) (let ((?v_672 (and ?v_659 ?v_668))) (let ((?v_682 (and ?v_658 ?v_672))) (let ((?v_701 (and ?v_657 ?v_682)) (?v_666 (= tmp67 400)) (?v_674 (and x186 ?v_664))) (let ((?v_683 (and ?v_658 ?v_674))) (let ((?v_702 (and ?v_657 ?v_683)) (?v_675 (and x186 ?v_665))) (let ((?v_684 (and ?v_658 ?v_675))) (let ((?v_703 (and ?v_657 ?v_684)) (?v_676 (and x186 ?v_667))) (let ((?v_686 (and ?v_658 ?v_676))) (let ((?v_704 (and ?v_657 ?v_686)) (?v_677 (and x186 ?v_668))) (let ((?v_687 (and ?v_658 ?v_677))) (let ((?v_705 (and ?v_657 ?v_687)) (?v_673 (= tmp67 600)) (?v_688 (and x185 ?v_669))) (let ((?v_706 (and ?v_657 ?v_688)) (?v_689 (and x185 ?v_670))) (let ((?v_707 (and ?v_657 ?v_689)) (?v_690 (and x185 ?v_671))) (let ((?v_708 (and ?v_657 ?v_690)) (?v_691 (and x185 ?v_672))) (let ((?v_709 (and ?v_657 ?v_691)) (?v_693 (and x185 ?v_674))) (let ((?v_710 (and ?v_657 ?v_693)) (?v_694 (and x185 ?v_675))) (let ((?v_711 (and ?v_657 ?v_694)) (?v_695 (and x185 ?v_676))) (let ((?v_712 (and ?v_657 ?v_695)) (?v_696 (and x185 ?v_677))) (let ((?v_713 (and ?v_657 ?v_696)) (?v_723 (= tmp67 800)) (?v_715 (and x184 ?v_678)) (?v_698 (= tmp67 100)) (?v_716 (and x184 ?v_679)) (?v_681 (= tmp67 300)) (?v_717 (and x184 ?v_680)) (?v_718 (and x184 ?v_682)) (?v_685 (= tmp67 500)) (?v_719 (and x184 ?v_683)) (?v_720 (and x184 ?v_684)) (?v_721 (and x184 ?v_686)) (?v_722 (and x184 ?v_687)) (?v_692 (= tmp67 700)) (?v_724 (and x184 ?v_688)) (?v_725 (and x184 ?v_689)) (?v_726 (and x184 ?v_690)) (?v_727 (and x184 ?v_691)) (?v_728 (and x184 ?v_693)) (?v_729 (and x184 ?v_694)) (?v_730 (and x184 ?v_695)) (?v_731 (and x184 ?v_696)) (?v_714 (= tmp67 900)) (?v_732 (not x240)) (?v_733 (not x239)) (?v_734 (not x238)) (?v_735 (not x237)) (?v_736 (not x236)) (?v_737 (and (not x235) true))) (let ((?v_740 (and ?v_736 ?v_737))) (let ((?v_745 (and ?v_735 ?v_740))) (let ((?v_754 (and ?v_734 ?v_745))) (let ((?v_771 (and ?v_733 ?v_754)) (?v_739 (and x235 true))) (let ((?v_741 (and ?v_736 ?v_739))) (let ((?v_746 (and ?v_735 ?v_741))) (let ((?v_755 (and ?v_734 ?v_746))) (let ((?v_772 (and ?v_733 ?v_755)) (?v_738 (= tmp66 300)) (?v_743 (and x236 ?v_737))) (let ((?v_747 (and ?v_735 ?v_743))) (let ((?v_756 (and ?v_734 ?v_747))) (let ((?v_773 (and ?v_733 ?v_756)) (?v_744 (and x236 ?v_739))) (let ((?v_748 (and ?v_735 ?v_744))) (let ((?v_757 (and ?v_734 ?v_748))) (let ((?v_774 (and ?v_733 ?v_757)) (?v_742 (= tmp66 600)) (?v_750 (and x237 ?v_740))) (let ((?v_758 (and ?v_734 ?v_750))) (let ((?v_775 (and ?v_733 ?v_758)) (?v_751 (and x237 ?v_741))) (let ((?v_759 (and ?v_734 ?v_751))) (let ((?v_776 (and ?v_733 ?v_759)) (?v_752 (and x237 ?v_743))) (let ((?v_760 (and ?v_734 ?v_752))) (let ((?v_777 (and ?v_733 ?v_760)) (?v_753 (and x237 ?v_744))) (let ((?v_761 (and ?v_734 ?v_753))) (let ((?v_778 (and ?v_733 ?v_761)) (?v_749 (= tmp66 900)) (?v_763 (and x238 ?v_745))) (let ((?v_779 (and ?v_733 ?v_763)) (?v_764 (and x238 ?v_746))) (let ((?v_780 (and ?v_733 ?v_764)) (?v_765 (and x238 ?v_747))) (let ((?v_781 (and ?v_733 ?v_765)) (?v_766 (and x238 ?v_748))) (let ((?v_782 (and ?v_733 ?v_766)) (?v_767 (and x238 ?v_750))) (let ((?v_783 (and ?v_733 ?v_767)) (?v_768 (and x238 ?v_751))) (let ((?v_784 (and ?v_733 ?v_768)) (?v_769 (and x238 ?v_752))) (let ((?v_785 (and ?v_733 ?v_769)) (?v_770 (and x238 ?v_753))) (let ((?v_786 (and ?v_733 ?v_770)) (?v_762 (= tmp66 1200)) (?v_788 (and x239 ?v_754)) (?v_789 (and x239 ?v_755)) (?v_790 (and x239 ?v_756)) (?v_791 (and x239 ?v_757)) (?v_792 (and x239 ?v_758)) (?v_793 (and x239 ?v_759)) (?v_794 (and x239 ?v_760)) (?v_795 (and x239 ?v_761)) (?v_796 (and x239 ?v_763)) (?v_797 (and x239 ?v_764)) (?v_798 (and x239 ?v_765)) (?v_799 (and x239 ?v_766)) (?v_800 (and x239 ?v_767)) (?v_801 (and x239 ?v_768)) (?v_802 (and x239 ?v_769)) (?v_803 (and x239 ?v_770)) (?v_787 (= tmp66 1500)) (?v_804 (not x177)) (?v_805 (not x178)) (?v_806 (not x179)) (?v_807 (not x180)) (?v_808 (not x181)) (?v_809 (and (not x182) true))) (let ((?v_812 (and ?v_808 ?v_809))) (let ((?v_817 (and ?v_807 ?v_812))) (let ((?v_826 (and ?v_806 ?v_817))) (let ((?v_843 (and ?v_805 ?v_826)) (?v_811 (and x182 true))) (let ((?v_813 (and ?v_808 ?v_811))) (let ((?v_818 (and ?v_807 ?v_813))) (let ((?v_827 (and ?v_806 ?v_818))) (let ((?v_844 (and ?v_805 ?v_827)) (?v_810 (= tmp65 100)) (?v_815 (and x181 ?v_809))) (let ((?v_819 (and ?v_807 ?v_815))) (let ((?v_828 (and ?v_806 ?v_819))) (let ((?v_845 (and ?v_805 ?v_828)) (?v_816 (and x181 ?v_811))) (let ((?v_820 (and ?v_807 ?v_816))) (let ((?v_829 (and ?v_806 ?v_820))) (let ((?v_846 (and ?v_805 ?v_829)) (?v_814 (= tmp65 200)) (?v_822 (and x180 ?v_812))) (let ((?v_830 (and ?v_806 ?v_822))) (let ((?v_847 (and ?v_805 ?v_830)) (?v_823 (and x180 ?v_813))) (let ((?v_831 (and ?v_806 ?v_823))) (let ((?v_848 (and ?v_805 ?v_831)) (?v_824 (and x180 ?v_815))) (let ((?v_832 (and ?v_806 ?v_824))) (let ((?v_849 (and ?v_805 ?v_832)) (?v_825 (and x180 ?v_816))) (let ((?v_833 (and ?v_806 ?v_825))) (let ((?v_850 (and ?v_805 ?v_833)) (?v_821 (= tmp65 300)) (?v_835 (and x179 ?v_817))) (let ((?v_851 (and ?v_805 ?v_835)) (?v_836 (and x179 ?v_818))) (let ((?v_852 (and ?v_805 ?v_836)) (?v_837 (and x179 ?v_819))) (let ((?v_853 (and ?v_805 ?v_837)) (?v_838 (and x179 ?v_820))) (let ((?v_854 (and ?v_805 ?v_838)) (?v_839 (and x179 ?v_822))) (let ((?v_855 (and ?v_805 ?v_839)) (?v_840 (and x179 ?v_823))) (let ((?v_856 (and ?v_805 ?v_840)) (?v_841 (and x179 ?v_824))) (let ((?v_857 (and ?v_805 ?v_841)) (?v_842 (and x179 ?v_825))) (let ((?v_858 (and ?v_805 ?v_842)) (?v_834 (= tmp65 400)) (?v_860 (and x178 ?v_826)) (?v_861 (and x178 ?v_827)) (?v_862 (and x178 ?v_828)) (?v_863 (and x178 ?v_829)) (?v_864 (and x178 ?v_830)) (?v_865 (and x178 ?v_831)) (?v_866 (and x178 ?v_832)) (?v_867 (and x178 ?v_833)) (?v_868 (and x178 ?v_835)) (?v_869 (and x178 ?v_836)) (?v_870 (and x178 ?v_837)) (?v_871 (and x178 ?v_838)) (?v_872 (and x178 ?v_839)) (?v_873 (and x178 ?v_840)) (?v_874 (and x178 ?v_841)) (?v_875 (and x178 ?v_842)) (?v_859 (= tmp65 500))) (and (<= (+ (+ (* 1 tmp75) 0) (+ (* 1 tmp73) (+ (* 1 tmp71) (+ (* 1 tmp69) (+ (* 1 tmp67) (+ (* 1 tmp65) (+ (* 2 x112) (+ (* 2 x111) (+ (* 2 x110) (+ (* 2 x109) (+ (* 2 x108) (+ (* 2 x107) (+ (* 2 x106) (+ (* 2 x105) (+ (* 2 x104) (+ (* 2 x103) (+ (* 2 x102) (+ (* 2 x101) (+ (* 2 x100) (+ (* 2 x99) (+ (* 2 x98) (+ (* 2 x97) (+ (* 2 x96) (+ (* 2 x95) (+ (* 2 x94) (+ (* 2 x93) (+ (* 2 x92) (+ (* 2 x91) (+ (* 2 x90) (+ (* 2 x89) (+ (* 2 x88) (+ (* 2 x87) (+ (* 2 x86) (+ (* 2 x85) (+ (* 2 x84) (+ (* 2 x83) (+ (* 2 x82) (+ (* 2 x81) (+ (* 2 x80) (+ (* 2 x79) (+ (* 2 x78) (+ (* 2 x77) (+ (* 2 x76) (+ (* 2 x75) (+ (* 2 x74) (+ (* 2 x73) (+ (* 2 x72) (+ (* 2 x71) (+ (* 2 x70) (+ (* 2 x69) (+ (* 2 x68) (+ (* 2 x67) (+ (* 2 x66) (+ (* 2 x65) (+ (* 2 x64) (+ (* 2 x63) (+ (* 2 x62) (+ (* 2 x61) (+ (* 2 x60) (+ (* 2 x59) (+ (* 2 x58) (+ (* 2 x57) (+ ?v_64 (+ ?v_65 (+ ?v_66 (+ ?v_67 (+ ?v_68 (+ ?v_69 (+ ?v_70 (+ ?v_71 (+ ?v_72 (+ ?v_73 (+ ?v_74 (+ ?v_75 (+ ?v_76 (+ ?v_77 (+ ?v_78 (+ ?v_79 (+ ?v_80 (+ ?v_81 (+ ?v_82 (+ ?v_83 (+ ?v_84 (+ ?v_85 (+ ?v_86 (+ ?v_87 (+ ?v_88 (+ ?v_89 (+ ?v_90 (+ ?v_91 (+ ?v_92 (+ ?v_93 (+ ?v_94 (+ ?v_95 (+ ?v_96 (+ ?v_97 (+ ?v_98 (+ ?v_99 (+ ?v_100 (+ ?v_101 (+ ?v_102 (+ ?v_103 (+ ?v_104 (+ ?v_105 (+ ?v_106 (+ ?v_107 (+ ?v_108 (+ ?v_109 (+ ?v_110 (+ ?v_111 (+ ?v_112 (+ ?v_113 (+ ?v_114 (+ ?v_115 (+ ?v_116 (+ ?v_117 (+ ?v_118 (+ ?v_119 (+ (* 1 tmp66) (+ (* 1 tmp68) (+ (* 1 tmp70) (+ (* 1 tmp72) (+ (* 1 tmp74) 0))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) 3000) (<= (+ (+ (* 1 tmp64) 0) (+ ?v_7 0)) 0) (<= (+ (+ (* 1 tmp63) 0) (+ ?v_15 0)) 0) (<= (+ (+ (* 1 tmp62) 0) (+ ?v_23 0)) 0) (<= (+ (+ (* 1 tmp61) 0) (+ ?v_31 0)) 0) (<= (+ (+ (* 1 tmp60) 0) (+ ?v_39 0)) 0) (<= (+ (+ (* 1 tmp59) 0) (+ ?v_47 0)) 0) (<= (+ (+ (* 1 tmp58) 0) (+ ?v_55 0)) 0) (<= (+ (+ (* 1 tmp57) 0) (+ ?v_63 0)) 0) (<= (+ (+ (* 1 tmp56) 0) (+ ?v_6 0)) 0) (<= (+ (+ (* 1 tmp55) 0) (+ ?v_14 0)) 0) (<= (+ (+ (* 1 tmp54) 0) (+ ?v_22 0)) 0) (<= (+ (+ (* 1 tmp53) 0) (+ ?v_30 0)) 0) (<= (+ (+ (* 1 tmp52) 0) (+ ?v_38 0)) 0) (<= (+ (+ (* 1 tmp51) 0) (+ ?v_46 0)) 0) (<= (+ (+ (* 1 tmp50) 0) (+ ?v_54 0)) 0) (<= (+ (+ (* 1 tmp49) 0) (+ ?v_62 0)) 0) (<= (+ (+ (* 1 tmp48) 0) (+ ?v_5 0)) 0) (<= (+ (+ (* 1 tmp47) 0) (+ ?v_13 0)) 0) (<= (+ (+ (* 1 tmp46) 0) (+ ?v_21 0)) 0) (<= (+ (+ (* 1 tmp45) 0) (+ ?v_29 0)) 0) (<= (+ (+ (* 1 tmp44) 0) (+ ?v_37 0)) 0) (<= (+ (+ (* 1 tmp43) 0) (+ ?v_45 0)) 0) (<= (+ (+ (* 1 tmp42) 0) (+ ?v_53 0)) 0) (<= (+ (+ (* 1 tmp41) 0) (+ ?v_61 0)) 0) (<= (+ (+ (* 1 tmp40) 0) (+ ?v_4 0)) 0) (<= (+ (+ (* 1 tmp39) 0) (+ ?v_12 0)) 0) (<= (+ (+ (* 1 tmp38) 0) (+ ?v_20 0)) 0) (<= (+ (+ (* 1 tmp37) 0) (+ ?v_28 0)) 0) (<= (+ (+ (* 1 tmp36) 0) (+ ?v_36 0)) 0) (<= (+ (+ (* 1 tmp35) 0) (+ ?v_44 0)) 0) (<= (+ (+ (* 1 tmp34) 0) (+ ?v_52 0)) 0) (<= (+ (+ (* 1 tmp33) 0) (+ ?v_60 0)) 0) (<= (+ (+ (* 1 tmp32) 0) (+ ?v_3 0)) 0) (<= (+ (+ (* 1 tmp31) 0) (+ ?v_11 0)) 0) (<= (+ (+ (* 1 tmp30) 0) (+ ?v_19 0)) 0) (<= (+ (+ (* 1 tmp29) 0) (+ ?v_27 0)) 0) (<= (+ (+ (* 1 tmp28) 0) (+ ?v_35 0)) 0) (<= (+ (+ (* 1 tmp27) 0) (+ ?v_43 0)) 0) (<= (+ (+ (* 1 tmp26) 0) (+ ?v_51 0)) 0) (<= (+ (+ (* 1 tmp25) 0) (+ ?v_59 0)) 0) (<= (+ (+ (* 1 tmp24) 0) (+ ?v_2 0)) 0) (<= (+ (+ (* 1 tmp23) 0) (+ ?v_10 0)) 0) (<= (+ (+ (* 1 tmp22) 0) (+ ?v_18 0)) 0) (<= (+ (+ (* 1 tmp21) 0) (+ ?v_26 0)) 0) (<= (+ (+ (* 1 tmp20) 0) (+ ?v_34 0)) 0) (<= (+ (+ (* 1 tmp19) 0) (+ ?v_42 0)) 0) (<= (+ (+ (* 1 tmp18) 0) (+ ?v_50 0)) 0) (<= (+ (+ (* 1 tmp17) 0) (+ ?v_58 0)) 0) (<= (+ (+ (* 1 tmp16) 0) (+ ?v_1 0)) 0) (<= (+ (+ (* 1 tmp15) 0) (+ ?v_9 0)) 0) (<= (+ (+ (* 1 tmp14) 0) (+ ?v_17 0)) 0) (<= (+ (+ (* 1 tmp13) 0) (+ ?v_25 0)) 0) (<= (+ (+ (* 1 tmp12) 0) (+ ?v_33 0)) 0) (<= (+ (+ (* 1 tmp11) 0) (+ ?v_41 0)) 0) (<= (+ (+ (* 1 tmp10) 0) (+ ?v_49 0)) 0) (<= (+ (+ (* 1 tmp9) 0) (+ ?v_57 0)) 0) (<= (+ (+ (* 1 tmp8) 0) (+ ?v_0 0)) 0) (<= (+ (+ (* 1 tmp7) 0) (+ ?v_8 0)) 0) (<= (+ (+ (* 1 tmp6) 0) (+ ?v_16 0)) 0) (<= (+ (+ (* 1 tmp5) 0) (+ ?v_24 0)) 0) (<= (+ (+ (* 1 tmp4) 0) (+ ?v_32 0)) 0) (<= (+ (+ (* 1 tmp3) 0) (+ ?v_40 0)) 0) (<= (+ (+ (* 1 tmp2) 0) (+ ?v_48 0)) 0) (<= (+ (+ (* 1 tmp1) 0) (+ ?v_56 0)) 0) (<= (+ (+ (+ (+ (+ (+ (+ (+ 0 ?v_0) ?v_1) ?v_2) ?v_3) ?v_4) ?v_5) ?v_6) ?v_7) 500) (<= (+ (+ (+ (+ (+ (+ (+ (+ 0 ?v_8) ?v_9) ?v_10) ?v_11) ?v_12) ?v_13) ?v_14) ?v_15) 400) (<= (+ (+ (+ (+ (+ (+ (+ (+ 0 ?v_16) ?v_17) ?v_18) ?v_19) ?v_20) ?v_21) ?v_22) ?v_23) 400) (<= (+ (+ (+ (+ (+ (+ (+ (+ 0 ?v_24) ?v_25) ?v_26) ?v_27) ?v_28) ?v_29) ?v_30) ?v_31) 400) (<= (+ (+ (+ (+ (+ (+ (+ (+ 0 ?v_32) ?v_33) ?v_34) ?v_35) ?v_36) ?v_37) ?v_38) ?v_39) 400) (<= (+ (+ (+ (+ (+ (+ (+ (+ 0 ?v_40) ?v_41) ?v_42) ?v_43) ?v_44) ?v_45) ?v_46) ?v_47) 350) (<= (+ (+ (+ (+ (+ (+ (+ (+ 0 ?v_48) ?v_49) ?v_50) ?v_51) ?v_52) ?v_53) ?v_54) ?v_55) 350) (<= (+ (+ (+ (+ (+ (+ (+ (+ 0 ?v_56) ?v_57) ?v_58) ?v_59) ?v_60) ?v_61) ?v_62) ?v_63) 350) (= (+ (+ (+ 0 ?v_64) (* (- 1) x112)) ?v_7) 30) (= (+ (+ (+ (+ (+ 0 ?v_65) (* (- 1) x56)) (* (- 1) x111)) (* 1 x112)) ?v_15) 20) (= (+ (+ (+ (+ (+ 0 ?v_66) (* (- 1) x55)) (* (- 1) x110)) (* 1 x111)) ?v_23) 10) (= (+ (+ (+ (+ (+ 0 ?v_67) (* (- 1) x54)) (* (- 1) x109)) (* 1 x110)) ?v_31) 10) (= (+ (+ (+ (+ (+ 0 ?v_68) (* (- 1) x53)) (* (- 1) x108)) (* 1 x109)) ?v_39) 0) (= (+ (+ (+ (+ (+ 0 ?v_69) (* (- 1) x52)) (* (- 1) x107)) (* 1 x108)) ?v_47) 0) (= (+ (+ (+ (+ (+ 0 ?v_70) (* (- 1) x51)) (* (- 1) x106)) (* 1 x107)) ?v_55) 20) (= (+ (+ (+ 0 (* (- 1) x50)) (* 1 x106)) ?v_63) 10) (= (+ (+ (+ 0 ?v_71) (* (- 1) x105)) ?v_6) 40) (= (+ (+ (+ (+ (+ 0 ?v_72) (* (- 1) x49)) (* (- 1) x104)) (* 1 x105)) ?v_14) 40) (= (+ (+ (+ (+ (+ 0 ?v_73) (* (- 1) x48)) (* (- 1) x103)) (* 1 x104)) ?v_22) 60) (= (+ (+ (+ (+ (+ 0 ?v_74) (* (- 1) x47)) (* (- 1) x102)) (* 1 x103)) ?v_30) 20) (= (+ (+ (+ (+ (+ 0 ?v_75) (* (- 1) x46)) (* (- 1) x101)) (* 1 x102)) ?v_38) 10) (= (+ (+ (+ (+ (+ 0 ?v_76) (* (- 1) x45)) (* (- 1) x100)) (* 1 x101)) ?v_46) 50) (= (+ (+ (+ (+ (+ 0 ?v_77) (* (- 1) x44)) (* (- 1) x99)) (* 1 x100)) ?v_54) 20) (= (+ (+ (+ 0 (* (- 1) x43)) (* 1 x99)) ?v_62) 0) (= (+ (+ (+ 0 ?v_78) (* (- 1) x98)) ?v_5) 50) (= (+ (+ (+ (+ (+ 0 ?v_79) (* (- 1) x42)) (* (- 1) x97)) (* 1 x98)) ?v_13) 40) (= (+ (+ (+ (+ (+ 0 ?v_80) (* (- 1) x41)) (* (- 1) x96)) (* 1 x97)) ?v_21) 20) (= (+ (+ (+ (+ (+ 0 ?v_81) (* (- 1) x40)) (* (- 1) x95)) (* 1 x96)) ?v_29) 100) (= (+ (+ (+ (+ (+ 0 ?v_82) (* (- 1) x39)) (* (- 1) x94)) (* 1 x95)) ?v_37) 40) (= (+ (+ (+ (+ (+ 0 ?v_83) (* (- 1) x38)) (* (- 1) x93)) (* 1 x94)) ?v_45) 40) (= (+ (+ (+ (+ (+ 0 ?v_84) (* (- 1) x37)) (* (- 1) x92)) (* 1 x93)) ?v_53) 40) (= (+ (+ (+ 0 (* (- 1) x36)) (* 1 x92)) ?v_61) 70) (= (+ (+ (+ 0 ?v_85) (* (- 1) x91)) ?v_4) 10) (= (+ (+ (+ (+ (+ 0 ?v_86) (* (- 1) x35)) (* (- 1) x90)) (* 1 x91)) ?v_12) 20) (= (+ (+ (+ (+ (+ 0 ?v_87) (* (- 1) x34)) (* (- 1) x89)) (* 1 x90)) ?v_20) 10) (= (+ (+ (+ (+ (+ 0 ?v_88) (* (- 1) x33)) (* (- 1) x88)) (* 1 x89)) ?v_28) 10) (= (+ (+ (+ (+ (+ 0 ?v_89) (* (- 1) x32)) (* (- 1) x87)) (* 1 x88)) ?v_36) 40) (= (+ (+ (+ (+ (+ 0 ?v_90) (* (- 1) x31)) (* (- 1) x86)) (* 1 x87)) ?v_44) 20) (= (+ (+ (+ (+ (+ 0 ?v_91) (* (- 1) x30)) (* (- 1) x85)) (* 1 x86)) ?v_52) 0) (= (+ (+ (+ 0 (* (- 1) x29)) (* 1 x85)) ?v_60) 50) (= (+ (+ (+ 0 ?v_92) (* (- 1) x84)) ?v_3) 100) (= (+ (+ (+ (+ (+ 0 ?v_93) (* (- 1) x28)) (* (- 1) x83)) (* 1 x84)) ?v_11) 100) (= (+ (+ (+ (+ (+ 0 ?v_94) (* (- 1) x27)) (* (- 1) x82)) (* 1 x83)) ?v_19) 90) (= (+ (+ (+ (+ (+ 0 ?v_95) (* (- 1) x26)) (* (- 1) x81)) (* 1 x82)) ?v_27) 160) (= (+ (+ (+ (+ (+ 0 ?v_96) (* (- 1) x25)) (* (- 1) x80)) (* 1 x81)) ?v_35) 150) (= (+ (+ (+ (+ (+ 0 ?v_97) (* (- 1) x24)) (* (- 1) x79)) (* 1 x80)) ?v_43) 100) (= (+ (+ (+ (+ (+ 0 ?v_98) (* (- 1) x23)) (* (- 1) x78)) (* 1 x79)) ?v_51) 100) (= (+ (+ (+ 0 (* (- 1) x22)) (* 1 x78)) ?v_59) 0) (= (+ (+ (+ 0 ?v_99) (* (- 1) x77)) ?v_2) 160) (= (+ (+ (+ (+ (+ 0 ?v_100) (* (- 1) x21)) (* (- 1) x76)) (* 1 x77)) ?v_10) 90) (= (+ (+ (+ (+ (+ 0 ?v_101) (* (- 1) x20)) (* (- 1) x75)) (* 1 x76)) ?v_18) 80) (= (+ (+ (+ (+ (+ 0 ?v_102) (* (- 1) x19)) (* (- 1) x74)) (* 1 x75)) ?v_26) 40) (= (+ (+ (+ (+ (+ 0 ?v_103) (* (- 1) x18)) (* (- 1) x73)) (* 1 x74)) ?v_34) 100) (= (+ (+ (+ (+ (+ 0 ?v_104) (* (- 1) x17)) (* (- 1) x72)) (* 1 x73)) ?v_42) 0) (= (+ (+ (+ (+ (+ 0 ?v_105) (* (- 1) x16)) (* (- 1) x71)) (* 1 x72)) ?v_50) 50) (= (+ (+ (+ 0 (* (- 1) x15)) (* 1 x71)) ?v_58) 40) (= (+ (+ (+ 0 ?v_106) (* (- 1) x70)) ?v_1) 50) (= (+ (+ (+ (+ (+ 0 ?v_107) (* (- 1) x14)) (* (- 1) x69)) (* 1 x70)) ?v_9) 40) (= (+ (+ (+ (+ (+ 0 ?v_108) (* (- 1) x13)) (* (- 1) x68)) (* 1 x69)) ?v_17) 0) (= (+ (+ (+ (+ (+ 0 ?v_109) (* (- 1) x12)) (* (- 1) x67)) (* 1 x68)) ?v_25) 30) (= (+ (+ (+ (+ (+ 0 ?v_110) (* (- 1) x11)) (* (- 1) x66)) (* 1 x67)) ?v_33) 10) (= (+ (+ (+ (+ (+ 0 ?v_111) (* (- 1) x10)) (* (- 1) x65)) (* 1 x66)) ?v_41) 50) (= (+ (+ (+ (+ (+ 0 ?v_112) (* (- 1) x9)) (* (- 1) x64)) (* 1 x65)) ?v_49) 40) (= (+ (+ (+ 0 (* (- 1) x8)) (* 1 x64)) ?v_57) 20) (= (+ (+ (+ 0 ?v_113) (* (- 1) x63)) ?v_0) 100) (= (+ (+ (+ (+ (+ 0 ?v_114) (* (- 1) x7)) (* (- 1) x62)) (* 1 x63)) ?v_8) 0) (= (+ (+ (+ (+ (+ 0 ?v_115) (* (- 1) x6)) (* (- 1) x61)) (* 1 x62)) ?v_16) 80) (= (+ (+ (+ (+ (+ 0 ?v_116) (* (- 1) x5)) (* (- 1) x60)) (* 1 x61)) ?v_24) 20) (= (+ (+ (+ (+ (+ 0 ?v_117) (* (- 1) x4)) (* (- 1) x59)) (* 1 x60)) ?v_32) 100) (= (+ (+ (+ (+ (+ 0 ?v_118) (* (- 1) x3)) (* (- 1) x58)) (* 1 x59)) ?v_40) 50) (= (+ (+ (+ (+ (+ 0 ?v_119) (* (- 1) x2)) (* (- 1) x57)) (* 1 x58)) ?v_48) 70) (= (+ (+ (+ 0 (* (- 1) x1)) (* 1 x57)) ?v_56) 0) (>= x1 0) (>= x2 0) (>= x3 0) (>= x4 0) (>= x5 0) (>= x6 0) (>= x7 0) (>= x8 0) (>= x9 0) (>= x10 0) (>= x11 0) (>= x12 0) (>= x13 0) (>= x14 0) (>= x15 0) (>= x16 0) (>= x17 0) (>= x18 0) (>= x19 0) (>= x20 0) (>= x21 0) (>= x22 0) (>= x23 0) (>= x24 0) (>= x25 0) (>= x26 0) (>= x27 0) (>= x28 0) (>= x29 0) (>= x30 0) (>= x31 0) (>= x32 0) (>= x33 0) (>= x34 0) (>= x35 0) (>= x36 0) (>= x37 0) (>= x38 0) (>= x39 0) (>= x40 0) (>= x41 0) (>= x42 0) (>= x43 0) (>= x44 0) (>= x45 0) (>= x46 0) (>= x47 0) (>= x48 0) (>= x49 0) (>= x50 0) (>= x51 0) (>= x52 0) (>= x53 0) (>= x54 0) (>= x55 0) (>= x56 0) (>= x57 0) (>= x58 0) (>= x59 0) (>= x60 0) (>= x61 0) (>= x62 0) (>= x63 0) (>= x64 0) (>= x65 0) (>= x66 0) (>= x67 0) (>= x68 0) (>= x69 0) (>= x70 0) (>= x71 0) (>= x72 0) (>= x73 0) (>= x74 0) (>= x75 0) (>= x76 0) (>= x77 0) (>= x78 0) (>= x79 0) (>= x80 0) (>= x81 0) (>= x82 0) (>= x83 0) (>= x84 0) (>= x85 0) (>= x86 0) (>= x87 0) (>= x88 0) (>= x89 0) (>= x90 0) (>= x91 0) (>= x92 0) (>= x93 0) (>= x94 0) (>= x95 0) (>= x96 0) (>= x97 0) (>= x98 0) (>= x99 0) (>= x100 0) (>= x101 0) (>= x102 0) (>= x103 0) (>= x104 0) (>= x105 0) (>= x106 0) (>= x107 0) (>= x108 0) (>= x109 0) (>= x110 0) (>= x111 0) (>= x112 0) (>= x176 0) (>= x175 0) (>= x174 0) (>= x173 0) (>= x172 0) (>= x171 0) (>= x170 0) (>= x169 0) (>= x168 0) (>= x167 0) (>= x166 0) (>= x165 0) (>= x164 0) (>= x163 0) (>= x162 0) (>= x161 0) (>= x160 0) (>= x159 0) (>= x158 0) (>= x157 0) (>= x156 0) (>= x155 0) (>= x154 0) (>= x153 0) (>= x152 0) (>= x151 0) (>= x150 0) (>= x149 0) (>= x148 0) (>= x147 0) (>= x146 0) (>= x145 0) (>= x144 0) (>= x143 0) (>= x142 0) (>= x141 0) (>= x140 0) (>= x139 0) (>= x138 0) (>= x137 0) (>= x136 0) (>= x135 0) (>= x134 0) (>= x133 0) (>= x132 0) (>= x131 0) (>= x130 0) (>= x129 0) (>= x128 0) (>= x127 0) (>= x126 0) (>= x125 0) (>= x124 0) (>= x123 0) (>= x122 0) (>= x121 0) (>= x120 0) (>= x119 0) (>= x118 0) (>= x117 0) (>= x116 0) (>= x115 0) (>= x114 0) (>= x113 0) (=> (and ?v_120 ?v_131) (= tmp75 0)) (=> (and ?v_120 ?v_133) ?v_124) (=> (and ?v_120 ?v_134) ?v_124) (=> (and ?v_120 ?v_135) (= tmp75 800)) (=> (and ?v_120 ?v_137) ?v_132) (=> (and ?v_120 ?v_138) ?v_129) (=> (and ?v_120 ?v_139) ?v_129) (=> (and ?v_120 ?v_141) ?v_136) (=> (and x207 ?v_131) ?v_132) (=> (and x207 ?v_133) ?v_129) (=> (and x207 ?v_134) ?v_129) (=> (and x207 ?v_135) ?v_136) (=> (and x207 ?v_137) (= tmp75 600)) (=> (and x207 ?v_138) ?v_140) (=> (and x207 ?v_139) ?v_140) (=> (and x207 ?v_141) (= tmp75 1400)) (=> (and ?v_142 ?v_181) (= tmp74 0)) (=> (and ?v_142 ?v_182) ?v_148) (=> (and ?v_142 ?v_183) ?v_148) (=> (and ?v_142 ?v_184) ?v_152) (=> (and ?v_142 ?v_185) ?v_148) (=> (and ?v_142 ?v_186) ?v_152) (=> (and ?v_142 ?v_187) ?v_152) (=> (and ?v_142 ?v_188) ?v_159) (=> (and ?v_142 ?v_189) ?v_148) (=> (and ?v_142 ?v_190) ?v_152) (=> (and ?v_142 ?v_191) ?v_152) (=> (and ?v_142 ?v_192) ?v_159) (=> (and ?v_142 ?v_193) ?v_152) (=> (and ?v_142 ?v_194) ?v_159) (=> (and ?v_142 ?v_195) ?v_159) (=> (and ?v_142 ?v_196) ?v_172) (=> (and ?v_142 ?v_198) ?v_148) (=> (and ?v_142 ?v_199) ?v_152) (=> (and ?v_142 ?v_200) ?v_152) (=> (and ?v_142 ?v_201) ?v_159) (=> (and ?v_142 ?v_202) ?v_152) (=> (and ?v_142 ?v_203) ?v_159) (=> (and ?v_142 ?v_204) ?v_159) (=> (and ?v_142 ?v_205) ?v_172) (=> (and ?v_142 ?v_206) ?v_152) (=> (and ?v_142 ?v_207) ?v_159) (=> (and ?v_142 ?v_208) ?v_159) (=> (and ?v_142 ?v_209) ?v_172) (=> (and ?v_142 ?v_210) ?v_159) (=> (and ?v_142 ?v_211) ?v_172) (=> (and ?v_142 ?v_212) ?v_172) (=> (and ?v_142 ?v_213) ?v_197) (=> (and x216 ?v_181) ?v_148) (=> (and x216 ?v_182) ?v_152) (=> (and x216 ?v_183) ?v_152) (=> (and x216 ?v_184) ?v_159) (=> (and x216 ?v_185) ?v_152) (=> (and x216 ?v_186) ?v_159) (=> (and x216 ?v_187) ?v_159) (=> (and x216 ?v_188) ?v_172) (=> (and x216 ?v_189) ?v_152) (=> (and x216 ?v_190) ?v_159) (=> (and x216 ?v_191) ?v_159) (=> (and x216 ?v_192) ?v_172) (=> (and x216 ?v_193) ?v_159) (=> (and x216 ?v_194) ?v_172) (=> (and x216 ?v_195) ?v_172) (=> (and x216 ?v_196) ?v_197) (=> (and x216 ?v_198) ?v_152) (=> (and x216 ?v_199) ?v_159) (=> (and x216 ?v_200) ?v_159) (=> (and x216 ?v_201) ?v_172) (=> (and x216 ?v_202) ?v_159) (=> (and x216 ?v_203) ?v_172) (=> (and x216 ?v_204) ?v_172) (=> (and x216 ?v_205) ?v_197) (=> (and x216 ?v_206) ?v_159) (=> (and x216 ?v_207) ?v_172) (=> (and x216 ?v_208) ?v_172) (=> (and x216 ?v_209) ?v_197) (=> (and x216 ?v_210) ?v_172) (=> (and x216 ?v_211) ?v_197) (=> (and x216 ?v_212) ?v_197) (=> (and x216 ?v_213) (= tmp74 2400)) (=> (and ?v_214 ?v_253) (= tmp73 0)) (=> (and ?v_214 ?v_254) ?v_220) (=> (and ?v_214 ?v_255) ?v_220) (=> (and ?v_214 ?v_256) ?v_224) (=> (and ?v_214 ?v_257) ?v_220) (=> (and ?v_214 ?v_258) ?v_224) (=> (and ?v_214 ?v_259) ?v_224) (=> (and ?v_214 ?v_260) ?v_231) (=> (and ?v_214 ?v_261) ?v_220) (=> (and ?v_214 ?v_262) ?v_224) (=> (and ?v_214 ?v_263) ?v_224) (=> (and ?v_214 ?v_264) ?v_231) (=> (and ?v_214 ?v_265) ?v_224) (=> (and ?v_214 ?v_266) ?v_231) (=> (and ?v_214 ?v_267) ?v_231) (=> (and ?v_214 ?v_268) ?v_244) (=> (and ?v_214 ?v_270) ?v_220) (=> (and ?v_214 ?v_271) ?v_224) (=> (and ?v_214 ?v_272) ?v_224) (=> (and ?v_214 ?v_273) ?v_231) (=> (and ?v_214 ?v_274) ?v_224) (=> (and ?v_214 ?v_275) ?v_231) (=> (and ?v_214 ?v_276) ?v_231) (=> (and ?v_214 ?v_277) ?v_244) (=> (and ?v_214 ?v_278) ?v_224) (=> (and ?v_214 ?v_279) ?v_231) (=> (and ?v_214 ?v_280) ?v_231) (=> (and ?v_214 ?v_281) ?v_244) (=> (and ?v_214 ?v_282) ?v_231) (=> (and ?v_214 ?v_283) ?v_244) (=> (and ?v_214 ?v_284) ?v_244) (=> (and ?v_214 ?v_285) ?v_269) (=> (and x201 ?v_253) ?v_220) (=> (and x201 ?v_254) ?v_224) (=> (and x201 ?v_255) ?v_224) (=> (and x201 ?v_256) ?v_231) (=> (and x201 ?v_257) ?v_224) (=> (and x201 ?v_258) ?v_231) (=> (and x201 ?v_259) ?v_231) (=> (and x201 ?v_260) ?v_244) (=> (and x201 ?v_261) ?v_224) (=> (and x201 ?v_262) ?v_231) (=> (and x201 ?v_263) ?v_231) (=> (and x201 ?v_264) ?v_244) (=> (and x201 ?v_265) ?v_231) (=> (and x201 ?v_266) ?v_244) (=> (and x201 ?v_267) ?v_244) (=> (and x201 ?v_268) ?v_269) (=> (and x201 ?v_270) ?v_224) (=> (and x201 ?v_271) ?v_231) (=> (and x201 ?v_272) ?v_231) (=> (and x201 ?v_273) ?v_244) (=> (and x201 ?v_274) ?v_231) (=> (and x201 ?v_275) ?v_244) (=> (and x201 ?v_276) ?v_244) (=> (and x201 ?v_277) ?v_269) (=> (and x201 ?v_278) ?v_231) (=> (and x201 ?v_279) ?v_244) (=> (and x201 ?v_280) ?v_244) (=> (and x201 ?v_281) ?v_269) (=> (and x201 ?v_282) ?v_244) (=> (and x201 ?v_283) ?v_269) (=> (and x201 ?v_284) ?v_269) (=> (and x201 ?v_285) (= tmp73 1800)) (=> (and ?v_286 ?v_325) (= tmp72 0)) (=> (and ?v_286 ?v_326) ?v_292) (=> (and ?v_286 ?v_327) ?v_292) (=> (and ?v_286 ?v_328) ?v_296) (=> (and ?v_286 ?v_329) ?v_292) (=> (and ?v_286 ?v_330) ?v_296) (=> (and ?v_286 ?v_331) ?v_296) (=> (and ?v_286 ?v_332) ?v_303) (=> (and ?v_286 ?v_333) ?v_292) (=> (and ?v_286 ?v_334) ?v_296) (=> (and ?v_286 ?v_335) ?v_296) (=> (and ?v_286 ?v_336) ?v_303) (=> (and ?v_286 ?v_337) ?v_296) (=> (and ?v_286 ?v_338) ?v_303) (=> (and ?v_286 ?v_339) ?v_303) (=> (and ?v_286 ?v_340) ?v_316) (=> (and ?v_286 ?v_342) ?v_292) (=> (and ?v_286 ?v_343) ?v_296) (=> (and ?v_286 ?v_344) ?v_296) (=> (and ?v_286 ?v_345) ?v_303) (=> (and ?v_286 ?v_346) ?v_296) (=> (and ?v_286 ?v_347) ?v_303) (=> (and ?v_286 ?v_348) ?v_303) (=> (and ?v_286 ?v_349) ?v_316) (=> (and ?v_286 ?v_350) ?v_296) (=> (and ?v_286 ?v_351) ?v_303) (=> (and ?v_286 ?v_352) ?v_303) (=> (and ?v_286 ?v_353) ?v_316) (=> (and ?v_286 ?v_354) ?v_303) (=> (and ?v_286 ?v_355) ?v_316) (=> (and ?v_286 ?v_356) ?v_316) (=> (and ?v_286 ?v_357) ?v_341) (=> (and x222 ?v_325) ?v_292) (=> (and x222 ?v_326) ?v_296) (=> (and x222 ?v_327) ?v_296) (=> (and x222 ?v_328) ?v_303) (=> (and x222 ?v_329) ?v_296) (=> (and x222 ?v_330) ?v_303) (=> (and x222 ?v_331) ?v_303) (=> (and x222 ?v_332) ?v_316) (=> (and x222 ?v_333) ?v_296) (=> (and x222 ?v_334) ?v_303) (=> (and x222 ?v_335) ?v_303) (=> (and x222 ?v_336) ?v_316) (=> (and x222 ?v_337) ?v_303) (=> (and x222 ?v_338) ?v_316) (=> (and x222 ?v_339) ?v_316) (=> (and x222 ?v_340) ?v_341) (=> (and x222 ?v_342) ?v_296) (=> (and x222 ?v_343) ?v_303) (=> (and x222 ?v_344) ?v_303) (=> (and x222 ?v_345) ?v_316) (=> (and x222 ?v_346) ?v_303) (=> (and x222 ?v_347) ?v_316) (=> (and x222 ?v_348) ?v_316) (=> (and x222 ?v_349) ?v_341) (=> (and x222 ?v_350) ?v_303) (=> (and x222 ?v_351) ?v_316) (=> (and x222 ?v_352) ?v_316) (=> (and x222 ?v_353) ?v_341) (=> (and x222 ?v_354) ?v_316) (=> (and x222 ?v_355) ?v_341) (=> (and x222 ?v_356) ?v_341) (=> (and x222 ?v_357) (= tmp72 1500)) (=> (and ?v_358 ?v_397) (= tmp71 0)) (=> (and ?v_358 ?v_398) ?v_364) (=> (and ?v_358 ?v_399) ?v_364) (=> (and ?v_358 ?v_400) ?v_368) (=> (and ?v_358 ?v_401) ?v_364) (=> (and ?v_358 ?v_402) ?v_368) (=> (and ?v_358 ?v_403) ?v_368) (=> (and ?v_358 ?v_404) ?v_375) (=> (and ?v_358 ?v_405) ?v_364) (=> (and ?v_358 ?v_406) ?v_368) (=> (and ?v_358 ?v_407) ?v_368) (=> (and ?v_358 ?v_408) ?v_375) (=> (and ?v_358 ?v_409) ?v_368) (=> (and ?v_358 ?v_410) ?v_375) (=> (and ?v_358 ?v_411) ?v_375) (=> (and ?v_358 ?v_412) ?v_388) (=> (and ?v_358 ?v_414) ?v_364) (=> (and ?v_358 ?v_415) ?v_368) (=> (and ?v_358 ?v_416) ?v_368) (=> (and ?v_358 ?v_417) ?v_375) (=> (and ?v_358 ?v_418) ?v_368) (=> (and ?v_358 ?v_419) ?v_375) (=> (and ?v_358 ?v_420) ?v_375) (=> (and ?v_358 ?v_421) ?v_388) (=> (and ?v_358 ?v_422) ?v_368) (=> (and ?v_358 ?v_423) ?v_375) (=> (and ?v_358 ?v_424) ?v_375) (=> (and ?v_358 ?v_425) ?v_388) (=> (and ?v_358 ?v_426) ?v_375) (=> (and ?v_358 ?v_427) ?v_388) (=> (and ?v_358 ?v_428) ?v_388) (=> (and ?v_358 ?v_429) ?v_413) (=> (and x195 ?v_397) ?v_364) (=> (and x195 ?v_398) ?v_368) (=> (and x195 ?v_399) ?v_368) (=> (and x195 ?v_400) ?v_375) (=> (and x195 ?v_401) ?v_368) (=> (and x195 ?v_402) ?v_375) (=> (and x195 ?v_403) ?v_375) (=> (and x195 ?v_404) ?v_388) (=> (and x195 ?v_405) ?v_368) (=> (and x195 ?v_406) ?v_375) (=> (and x195 ?v_407) ?v_375) (=> (and x195 ?v_408) ?v_388) (=> (and x195 ?v_409) ?v_375) (=> (and x195 ?v_410) ?v_388) (=> (and x195 ?v_411) ?v_388) (=> (and x195 ?v_412) ?v_413) (=> (and x195 ?v_414) ?v_368) (=> (and x195 ?v_415) ?v_375) (=> (and x195 ?v_416) ?v_375) (=> (and x195 ?v_417) ?v_388) (=> (and x195 ?v_418) ?v_375) (=> (and x195 ?v_419) ?v_388) (=> (and x195 ?v_420) ?v_388) (=> (and x195 ?v_421) ?v_413) (=> (and x195 ?v_422) ?v_375) (=> (and x195 ?v_423) ?v_388) (=> (and x195 ?v_424) ?v_388) (=> (and x195 ?v_425) ?v_413) (=> (and x195 ?v_426) ?v_388) (=> (and x195 ?v_427) ?v_413) (=> (and x195 ?v_428) ?v_413) (=> (and x195 ?v_429) (= tmp71 1200)) (=> (and ?v_430 ?v_472) (= tmp70 0)) (=> (and ?v_430 ?v_473) ?v_436) (=> (and ?v_430 ?v_474) ?v_436) (=> (and ?v_430 ?v_475) ?v_439) (=> (and ?v_430 ?v_476) ?v_439) (=> (and ?v_430 ?v_477) ?v_442) (=> (and ?v_430 ?v_478) ?v_442) (=> (and ?v_430 ?v_479) ?v_448) (=> (and ?v_430 ?v_480) ?v_439) (=> (and ?v_430 ?v_481) ?v_442) (=> (and ?v_430 ?v_482) ?v_442) (=> (and ?v_430 ?v_483) ?v_448) (=> (and ?v_430 ?v_484) ?v_448) (=> (and ?v_430 ?v_485) ?v_452) (=> (and ?v_430 ?v_486) ?v_452) (=> (and ?v_430 ?v_487) ?v_462) (=> (and ?v_430 ?v_489) ?v_439) (=> (and ?v_430 ?v_490) ?v_442) (=> (and ?v_430 ?v_491) ?v_442) (=> (and ?v_430 ?v_492) ?v_448) (=> (and ?v_430 ?v_493) ?v_448) (=> (and ?v_430 ?v_494) ?v_452) (=> (and ?v_430 ?v_495) ?v_452) (=> (and ?v_430 ?v_496) ?v_462) (=> (and ?v_430 ?v_497) ?v_448) (=> (and ?v_430 ?v_498) ?v_452) (=> (and ?v_430 ?v_499) ?v_452) (=> (and ?v_430 ?v_500) ?v_462) (=> (and ?v_430 ?v_501) ?v_462) (=> (and ?v_430 ?v_502) ?v_470) (=> (and ?v_430 ?v_503) ?v_470) (=> (and ?v_430 ?v_505) ?v_488) (=> (and x228 ?v_472) ?v_439) (=> (and x228 ?v_473) ?v_442) (=> (and x228 ?v_474) ?v_442) (=> (and x228 ?v_475) ?v_448) (=> (and x228 ?v_476) ?v_448) (=> (and x228 ?v_477) ?v_452) (=> (and x228 ?v_478) ?v_452) (=> (and x228 ?v_479) ?v_462) (=> (and x228 ?v_480) ?v_448) (=> (and x228 ?v_481) ?v_452) (=> (and x228 ?v_482) ?v_452) (=> (and x228 ?v_483) ?v_462) (=> (and x228 ?v_484) ?v_462) (=> (and x228 ?v_485) ?v_470) (=> (and x228 ?v_486) ?v_470) (=> (and x228 ?v_487) ?v_488) (=> (and x228 ?v_489) ?v_448) (=> (and x228 ?v_490) ?v_452) (=> (and x228 ?v_491) ?v_452) (=> (and x228 ?v_492) ?v_462) (=> (and x228 ?v_493) ?v_462) (=> (and x228 ?v_494) ?v_470) (=> (and x228 ?v_495) ?v_470) (=> (and x228 ?v_496) ?v_488) (=> (and x228 ?v_497) ?v_462) (=> (and x228 ?v_498) ?v_470) (=> (and x228 ?v_499) ?v_470) (=> (and x228 ?v_500) ?v_488) (=> (and x228 ?v_501) ?v_488) (=> (and x228 ?v_502) ?v_504) (=> (and x228 ?v_503) ?v_504) (=> (and x228 ?v_505) (= tmp70 2500)) (=> (and ?v_506 ?v_545) (= tmp69 0)) (=> (and ?v_506 ?v_546) ?v_512) (=> (and ?v_506 ?v_547) ?v_512) (=> (and ?v_506 ?v_548) ?v_516) (=> (and ?v_506 ?v_549) ?v_512) (=> (and ?v_506 ?v_550) ?v_516) (=> (and ?v_506 ?v_551) ?v_516) (=> (and ?v_506 ?v_552) ?v_523) (=> (and ?v_506 ?v_553) ?v_512) (=> (and ?v_506 ?v_554) ?v_516) (=> (and ?v_506 ?v_555) ?v_516) (=> (and ?v_506 ?v_556) ?v_523) (=> (and ?v_506 ?v_557) ?v_516) (=> (and ?v_506 ?v_558) ?v_523) (=> (and ?v_506 ?v_559) ?v_523) (=> (and ?v_506 ?v_560) ?v_536) (=> (and ?v_506 ?v_562) ?v_512) (=> (and ?v_506 ?v_563) ?v_516) (=> (and ?v_506 ?v_564) ?v_516) (=> (and ?v_506 ?v_565) ?v_523) (=> (and ?v_506 ?v_566) ?v_516) (=> (and ?v_506 ?v_567) ?v_523) (=> (and ?v_506 ?v_568) ?v_523) (=> (and ?v_506 ?v_569) ?v_536) (=> (and ?v_506 ?v_570) ?v_516) (=> (and ?v_506 ?v_571) ?v_523) (=> (and ?v_506 ?v_572) ?v_523) (=> (and ?v_506 ?v_573) ?v_536) (=> (and ?v_506 ?v_574) ?v_523) (=> (and ?v_506 ?v_575) ?v_536) (=> (and ?v_506 ?v_576) ?v_536) (=> (and ?v_506 ?v_577) ?v_561) (=> (and x189 ?v_545) ?v_512) (=> (and x189 ?v_546) ?v_516) (=> (and x189 ?v_547) ?v_516) (=> (and x189 ?v_548) ?v_523) (=> (and x189 ?v_549) ?v_516) (=> (and x189 ?v_550) ?v_523) (=> (and x189 ?v_551) ?v_523) (=> (and x189 ?v_552) ?v_536) (=> (and x189 ?v_553) ?v_516) (=> (and x189 ?v_554) ?v_523) (=> (and x189 ?v_555) ?v_523) (=> (and x189 ?v_556) ?v_536) (=> (and x189 ?v_557) ?v_523) (=> (and x189 ?v_558) ?v_536) (=> (and x189 ?v_559) ?v_536) (=> (and x189 ?v_560) ?v_561) (=> (and x189 ?v_562) ?v_516) (=> (and x189 ?v_563) ?v_523) (=> (and x189 ?v_564) ?v_523) (=> (and x189 ?v_565) ?v_536) (=> (and x189 ?v_566) ?v_523) (=> (and x189 ?v_567) ?v_536) (=> (and x189 ?v_568) ?v_536) (=> (and x189 ?v_569) ?v_561) (=> (and x189 ?v_570) ?v_523) (=> (and x189 ?v_571) ?v_536) (=> (and x189 ?v_572) ?v_536) (=> (and x189 ?v_573) ?v_561) (=> (and x189 ?v_574) ?v_536) (=> (and x189 ?v_575) ?v_561) (=> (and x189 ?v_576) ?v_561) (=> (and x189 ?v_577) (= tmp69 1200)) (=> (and ?v_578 ?v_619) (= tmp68 0)) (=> (and ?v_578 ?v_621) ?v_584) (=> (and ?v_578 ?v_622) ?v_584) (=> (and ?v_578 ?v_623) ?v_588) (=> (and ?v_578 ?v_624) ?v_584) (=> (and ?v_578 ?v_625) ?v_588) (=> (and ?v_578 ?v_626) ?v_588) (=> (and ?v_578 ?v_627) ?v_595) (=> (and ?v_578 ?v_628) ?v_584) (=> (and ?v_578 ?v_629) ?v_588) (=> (and ?v_578 ?v_630) ?v_588) (=> (and ?v_578 ?v_631) ?v_595) (=> (and ?v_578 ?v_632) ?v_588) (=> (and ?v_578 ?v_633) ?v_595) (=> (and ?v_578 ?v_634) ?v_595) (=> (and ?v_578 ?v_635) (= tmp68 2000)) (=> (and ?v_578 ?v_637) ?v_620) (=> (and ?v_578 ?v_638) ?v_603) (=> (and ?v_578 ?v_639) ?v_603) (=> (and ?v_578 ?v_641) ?v_607) (=> (and ?v_578 ?v_642) ?v_603) (=> (and ?v_578 ?v_643) ?v_607) (=> (and ?v_578 ?v_645) ?v_607) (=> (and ?v_578 ?v_646) ?v_614) (=> (and ?v_578 ?v_647) ?v_603) (=> (and ?v_578 ?v_648) ?v_607) (=> (and ?v_578 ?v_649) ?v_607) (=> (and ?v_578 ?v_650) ?v_614) (=> (and ?v_578 ?v_652) ?v_607) (=> (and ?v_578 ?v_653) ?v_614) (=> (and ?v_578 ?v_654) ?v_614) (=> (and ?v_578 ?v_655) ?v_636) (=> (and x234 ?v_619) ?v_620) (=> (and x234 ?v_621) ?v_603) (=> (and x234 ?v_622) ?v_603) (=> (and x234 ?v_623) ?v_607) (=> (and x234 ?v_624) ?v_603) (=> (and x234 ?v_625) ?v_607) (=> (and x234 ?v_626) ?v_607) (=> (and x234 ?v_627) ?v_614) (=> (and x234 ?v_628) ?v_603) (=> (and x234 ?v_629) ?v_607) (=> (and x234 ?v_630) ?v_607) (=> (and x234 ?v_631) ?v_614) (=> (and x234 ?v_632) ?v_607) (=> (and x234 ?v_633) ?v_614) (=> (and x234 ?v_634) ?v_614) (=> (and x234 ?v_635) ?v_636) (=> (and x234 ?v_637) (= tmp68 600)) (=> (and x234 ?v_638) ?v_640) (=> (and x234 ?v_639) ?v_640) (=> (and x234 ?v_641) ?v_644) (=> (and x234 ?v_642) ?v_640) (=> (and x234 ?v_643) ?v_644) (=> (and x234 ?v_645) ?v_644) (=> (and x234 ?v_646) ?v_651) (=> (and x234 ?v_647) ?v_640) (=> (and x234 ?v_648) ?v_644) (=> (and x234 ?v_649) ?v_644) (=> (and x234 ?v_650) ?v_651) (=> (and x234 ?v_652) ?v_644) (=> (and x234 ?v_653) ?v_651) (=> (and x234 ?v_654) ?v_651) (=> (and x234 ?v_655) (= tmp68 2600)) (=> (and ?v_656 ?v_697) (= tmp67 0)) (=> (and ?v_656 ?v_699) ?v_662) (=> (and ?v_656 ?v_700) ?v_662) (=> (and ?v_656 ?v_701) ?v_666) (=> (and ?v_656 ?v_702) ?v_662) (=> (and ?v_656 ?v_703) ?v_666) (=> (and ?v_656 ?v_704) ?v_666) (=> (and ?v_656 ?v_705) ?v_673) (=> (and ?v_656 ?v_706) ?v_662) (=> (and ?v_656 ?v_707) ?v_666) (=> (and ?v_656 ?v_708) ?v_666) (=> (and ?v_656 ?v_709) ?v_673) (=> (and ?v_656 ?v_710) ?v_666) (=> (and ?v_656 ?v_711) ?v_673) (=> (and ?v_656 ?v_712) ?v_673) (=> (and ?v_656 ?v_713) ?v_723) (=> (and ?v_656 ?v_715) ?v_698) (=> (and ?v_656 ?v_716) ?v_681) (=> (and ?v_656 ?v_717) ?v_681) (=> (and ?v_656 ?v_718) ?v_685) (=> (and ?v_656 ?v_719) ?v_681) (=> (and ?v_656 ?v_720) ?v_685) (=> (and ?v_656 ?v_721) ?v_685) (=> (and ?v_656 ?v_722) ?v_692) (=> (and ?v_656 ?v_724) ?v_681) (=> (and ?v_656 ?v_725) ?v_685) (=> (and ?v_656 ?v_726) ?v_685) (=> (and ?v_656 ?v_727) ?v_692) (=> (and ?v_656 ?v_728) ?v_685) (=> (and ?v_656 ?v_729) ?v_692) (=> (and ?v_656 ?v_730) ?v_692) (=> (and ?v_656 ?v_731) ?v_714) (=> (and x183 ?v_697) ?v_698) (=> (and x183 ?v_699) ?v_681) (=> (and x183 ?v_700) ?v_681) (=> (and x183 ?v_701) ?v_685) (=> (and x183 ?v_702) ?v_681) (=> (and x183 ?v_703) ?v_685) (=> (and x183 ?v_704) ?v_685) (=> (and x183 ?v_705) ?v_692) (=> (and x183 ?v_706) ?v_681) (=> (and x183 ?v_707) ?v_685) (=> (and x183 ?v_708) ?v_685) (=> (and x183 ?v_709) ?v_692) (=> (and x183 ?v_710) ?v_685) (=> (and x183 ?v_711) ?v_692) (=> (and x183 ?v_712) ?v_692) (=> (and x183 ?v_713) ?v_714) (=> (and x183 ?v_715) ?v_662) (=> (and x183 ?v_716) ?v_666) (=> (and x183 ?v_717) ?v_666) (=> (and x183 ?v_718) ?v_673) (=> (and x183 ?v_719) ?v_666) (=> (and x183 ?v_720) ?v_673) (=> (and x183 ?v_721) ?v_673) (=> (and x183 ?v_722) ?v_723) (=> (and x183 ?v_724) ?v_666) (=> (and x183 ?v_725) ?v_673) (=> (and x183 ?v_726) ?v_673) (=> (and x183 ?v_727) ?v_723) (=> (and x183 ?v_728) ?v_673) (=> (and x183 ?v_729) ?v_723) (=> (and x183 ?v_730) ?v_723) (=> (and x183 ?v_731) (= tmp67 1000)) (=> (and ?v_732 ?v_771) (= tmp66 0)) (=> (and ?v_732 ?v_772) ?v_738) (=> (and ?v_732 ?v_773) ?v_738) (=> (and ?v_732 ?v_774) ?v_742) (=> (and ?v_732 ?v_775) ?v_738) (=> (and ?v_732 ?v_776) ?v_742) (=> (and ?v_732 ?v_777) ?v_742) (=> (and ?v_732 ?v_778) ?v_749) (=> (and ?v_732 ?v_779) ?v_738) (=> (and ?v_732 ?v_780) ?v_742) (=> (and ?v_732 ?v_781) ?v_742) (=> (and ?v_732 ?v_782) ?v_749) (=> (and ?v_732 ?v_783) ?v_742) (=> (and ?v_732 ?v_784) ?v_749) (=> (and ?v_732 ?v_785) ?v_749) (=> (and ?v_732 ?v_786) ?v_762) (=> (and ?v_732 ?v_788) ?v_738) (=> (and ?v_732 ?v_789) ?v_742) (=> (and ?v_732 ?v_790) ?v_742) (=> (and ?v_732 ?v_791) ?v_749) (=> (and ?v_732 ?v_792) ?v_742) (=> (and ?v_732 ?v_793) ?v_749) (=> (and ?v_732 ?v_794) ?v_749) (=> (and ?v_732 ?v_795) ?v_762) (=> (and ?v_732 ?v_796) ?v_742) (=> (and ?v_732 ?v_797) ?v_749) (=> (and ?v_732 ?v_798) ?v_749) (=> (and ?v_732 ?v_799) ?v_762) (=> (and ?v_732 ?v_800) ?v_749) (=> (and ?v_732 ?v_801) ?v_762) (=> (and ?v_732 ?v_802) ?v_762) (=> (and ?v_732 ?v_803) ?v_787) (=> (and x240 ?v_771) ?v_738) (=> (and x240 ?v_772) ?v_742) (=> (and x240 ?v_773) ?v_742) (=> (and x240 ?v_774) ?v_749) (=> (and x240 ?v_775) ?v_742) (=> (and x240 ?v_776) ?v_749) (=> (and x240 ?v_777) ?v_749) (=> (and x240 ?v_778) ?v_762) (=> (and x240 ?v_779) ?v_742) (=> (and x240 ?v_780) ?v_749) (=> (and x240 ?v_781) ?v_749) (=> (and x240 ?v_782) ?v_762) (=> (and x240 ?v_783) ?v_749) (=> (and x240 ?v_784) ?v_762) (=> (and x240 ?v_785) ?v_762) (=> (and x240 ?v_786) ?v_787) (=> (and x240 ?v_788) ?v_742) (=> (and x240 ?v_789) ?v_749) (=> (and x240 ?v_790) ?v_749) (=> (and x240 ?v_791) ?v_762) (=> (and x240 ?v_792) ?v_749) (=> (and x240 ?v_793) ?v_762) (=> (and x240 ?v_794) ?v_762) (=> (and x240 ?v_795) ?v_787) (=> (and x240 ?v_796) ?v_749) (=> (and x240 ?v_797) ?v_762) (=> (and x240 ?v_798) ?v_762) (=> (and x240 ?v_799) ?v_787) (=> (and x240 ?v_800) ?v_762) (=> (and x240 ?v_801) ?v_787) (=> (and x240 ?v_802) ?v_787) (=> (and x240 ?v_803) (= tmp66 1800)) (=> (and ?v_804 ?v_843) (= tmp65 0)) (=> (and ?v_804 ?v_844) ?v_810) (=> (and ?v_804 ?v_845) ?v_810) (=> (and ?v_804 ?v_846) ?v_814) (=> (and ?v_804 ?v_847) ?v_810) (=> (and ?v_804 ?v_848) ?v_814) (=> (and ?v_804 ?v_849) ?v_814) (=> (and ?v_804 ?v_850) ?v_821) (=> (and ?v_804 ?v_851) ?v_810) (=> (and ?v_804 ?v_852) ?v_814) (=> (and ?v_804 ?v_853) ?v_814) (=> (and ?v_804 ?v_854) ?v_821) (=> (and ?v_804 ?v_855) ?v_814) (=> (and ?v_804 ?v_856) ?v_821) (=> (and ?v_804 ?v_857) ?v_821) (=> (and ?v_804 ?v_858) ?v_834) (=> (and ?v_804 ?v_860) ?v_810) (=> (and ?v_804 ?v_861) ?v_814) (=> (and ?v_804 ?v_862) ?v_814) (=> (and ?v_804 ?v_863) ?v_821) (=> (and ?v_804 ?v_864) ?v_814) (=> (and ?v_804 ?v_865) ?v_821) (=> (and ?v_804 ?v_866) ?v_821) (=> (and ?v_804 ?v_867) ?v_834) (=> (and ?v_804 ?v_868) ?v_814) (=> (and ?v_804 ?v_869) ?v_821) (=> (and ?v_804 ?v_870) ?v_821) (=> (and ?v_804 ?v_871) ?v_834) (=> (and ?v_804 ?v_872) ?v_821) (=> (and ?v_804 ?v_873) ?v_834) (=> (and ?v_804 ?v_874) ?v_834) (=> (and ?v_804 ?v_875) ?v_859) (=> (and x177 ?v_843) ?v_810) (=> (and x177 ?v_844) ?v_814) (=> (and x177 ?v_845) ?v_814) (=> (and x177 ?v_846) ?v_821) (=> (and x177 ?v_847) ?v_814) (=> (and x177 ?v_848) ?v_821) (=> (and x177 ?v_849) ?v_821) (=> (and x177 ?v_850) ?v_834) (=> (and x177 ?v_851) ?v_814) (=> (and x177 ?v_852) ?v_821) (=> (and x177 ?v_853) ?v_821) (=> (and x177 ?v_854) ?v_834) (=> (and x177 ?v_855) ?v_821) (=> (and x177 ?v_856) ?v_834) (=> (and x177 ?v_857) ?v_834) (=> (and x177 ?v_858) ?v_859) (=> (and x177 ?v_860) ?v_814) (=> (and x177 ?v_861) ?v_821) (=> (and x177 ?v_862) ?v_821) (=> (and x177 ?v_863) ?v_834) (=> (and x177 ?v_864) ?v_821) (=> (and x177 ?v_865) ?v_834) (=> (and x177 ?v_866) ?v_834) (=> (and x177 ?v_867) ?v_859) (=> (and x177 ?v_868) ?v_821) (=> (and x177 ?v_869) ?v_834) (=> (and x177 ?v_870) ?v_834) (=> (and x177 ?v_871) ?v_859) (=> (and x177 ?v_872) ?v_834) (=> (and x177 ?v_873) ?v_859) (=> (and x177 ?v_874) ?v_859) (=> (and x177 ?v_875) (= tmp65 600)) (=> (and ?v_732 true) (= tmp64 0)) (=> (and x240 true) (= tmp64 (- 100))) (=> (and ?v_733 true) (= tmp63 0)) (=> (and x239 true) (= tmp63 (- 100))) (=> (and ?v_734 true) (= tmp62 0)) (=> (and x238 true) (= tmp62 (- 100))) (=> (and ?v_735 true) (= tmp61 0)) (=> (and x237 true) (= tmp61 (- 100))) (=> (and ?v_736 true) (= tmp60 0)) (=> (and x236 true) (= tmp60 (- 100))) (=> ?v_737 (= tmp59 0)) (=> ?v_739 (= tmp59 (- 100))) (=> (and ?v_578 true) (= tmp58 0)) (=> (and x234 true) (= tmp58 (- 100))) (=> (and ?v_579 true) (= tmp57 0)) (=> (and x233 true) (= tmp57 (- 100))) (=> (and ?v_580 true) (= tmp56 0)) (=> (and x232 true) (= tmp56 (- 240))) (=> (and ?v_581 true) (= tmp55 0)) (=> (and x231 true) (= tmp55 (- 240))) (=> (and ?v_582 true) (= tmp54 0)) (=> (and x230 true) (= tmp54 (- 240))) (=> ?v_583 (= tmp53 0)) (=> ?v_585 (= tmp53 (- 240))) (=> (and ?v_430 true) (= tmp52 0)) (=> (and x228 true) (= tmp52 (- 240))) (=> (and ?v_431 true) (= tmp51 0)) (=> (and x227 true) (= tmp51 (- 240))) (=> (and ?v_432 true) (= tmp50 0)) (=> (and x226 true) (= tmp50 (- 240))) (=> (and ?v_433 true) (= tmp49 0)) (=> (and x225 true) (= tmp49 (- 240))) (=> (and ?v_434 true) (= tmp48 0)) (=> (and x224 true) (= tmp48 (- 400))) (=> ?v_435 (= tmp47 0)) (=> ?v_437 (= tmp47 (- 400))) (=> (and ?v_286 true) (= tmp46 0)) (=> (and x222 true) (= tmp46 (- 400))) (=> (and ?v_287 true) (= tmp45 0)) (=> (and x221 true) (= tmp45 (- 400))) (=> (and ?v_288 true) (= tmp44 0)) (=> (and x220 true) (= tmp44 (- 400))) (=> (and ?v_289 true) (= tmp43 0)) (=> (and x219 true) (= tmp43 (- 350))) (=> (and ?v_290 true) (= tmp42 0)) (=> (and x218 true) (= tmp42 (- 350))) (=> ?v_291 (= tmp41 0)) (=> ?v_293 (= tmp41 (- 350))) (=> (and ?v_142 true) (= tmp40 0)) (=> (and x216 true) (= tmp40 (- 160))) (=> (and ?v_143 true) (= tmp39 0)) (=> (and x215 true) (= tmp39 (- 160))) (=> (and ?v_144 true) (= tmp38 0)) (=> (and x214 true) (= tmp38 (- 160))) (=> (and ?v_145 true) (= tmp37 0)) (=> (and x213 true) (= tmp37 (- 160))) (=> (and ?v_146 true) (= tmp36 0)) (=> (and x212 true) (= tmp36 (- 160))) (=> ?v_147 (= tmp35 0)) (=> ?v_149 (= tmp35 (- 160))) (=> ?v_123 (= tmp34 0)) (=> ?v_125 (= tmp34 (- 160))) (=> (and ?v_122 true) (= tmp33 0)) (=> (and x209 true) (= tmp33 (- 160))) (=> (and ?v_121 true) (= tmp32 0)) (=> (and x208 true) (= tmp32 (- 500))) (=> (and ?v_120 true) (= tmp31 0)) (=> (and x207 true) (= tmp31 (- 400))) (=> ?v_219 (= tmp30 0)) (=> ?v_221 (= tmp30 (- 400))) (=> (and ?v_218 true) (= tmp29 0)) (=> (and x205 true) (= tmp29 (- 400))) (=> (and ?v_217 true) (= tmp28 0)) (=> (and x204 true) (= tmp28 (- 400))) (=> (and ?v_216 true) (= tmp27 0)) (=> (and x203 true) (= tmp27 (- 350))) (=> (and ?v_215 true) (= tmp26 0)) (=> (and x202 true) (= tmp26 (- 350))) (=> (and ?v_214 true) (= tmp25 0)) (=> (and x201 true) (= tmp25 (- 350))) (=> ?v_363 (= tmp24 0)) (=> ?v_365 (= tmp24 (- 500))) (=> (and ?v_362 true) (= tmp23 0)) (=> (and x199 true) (= tmp23 (- 400))) (=> (and ?v_361 true) (= tmp22 0)) (=> (and x198 true) (= tmp22 (- 400))) (=> (and ?v_360 true) (= tmp21 0)) (=> (and x197 true) (= tmp21 (- 400))) (=> (and ?v_359 true) (= tmp20 0)) (=> (and x196 true) (= tmp20 (- 400))) (=> (and ?v_358 true) (= tmp19 0)) (=> (and x195 true) (= tmp19 (- 350))) (=> ?v_511 (= tmp18 0)) (=> ?v_513 (= tmp18 (- 350))) (=> (and ?v_510 true) (= tmp17 0)) (=> (and x193 true) (= tmp17 (- 350))) (=> (and ?v_509 true) (= tmp16 0)) (=> (and x192 true) (= tmp16 (- 240))) (=> (and ?v_508 true) (= tmp15 0)) (=> (and x191 true) (= tmp15 (- 240))) (=> (and ?v_507 true) (= tmp14 0)) (=> (and x190 true) (= tmp14 (- 240))) (=> (and ?v_506 true) (= tmp13 0)) (=> (and x189 true) (= tmp13 (- 240))) (=> ?v_661 (= tmp12 0)) (=> ?v_663 (= tmp12 (- 240))) (=> (and ?v_660 true) (= tmp11 0)) (=> (and x187 true) (= tmp11 (- 240))) (=> (and ?v_659 true) (= tmp10 0)) (=> (and x186 true) (= tmp10 (- 240))) (=> (and ?v_658 true) (= tmp9 0)) (=> (and x185 true) (= tmp9 (- 240))) (=> (and ?v_657 true) (= tmp8 0)) (=> (and x184 true) (= tmp8 (- 420))) (=> (and ?v_656 true) (= tmp7 0)) (=> (and x183 true) (= tmp7 (- 400))) (=> ?v_809 (= tmp6 0)) (=> ?v_811 (= tmp6 (- 400))) (=> (and ?v_808 true) (= tmp5 0)) (=> (and x181 true) (= tmp5 (- 400))) (=> (and ?v_807 true) (= tmp4 0)) (=> (and x180 true) (= tmp4 (- 400))) (=> (and ?v_806 true) (= tmp3 0)) (=> (and x179 true) (= tmp3 (- 350))) (=> (and ?v_805 true) (= tmp2 0)) (=> (and x178 true) (= tmp2 (- 350))) (=> (and ?v_804 true) (= tmp1 0)) (=> (and x177 true) (= tmp1 (- 350)))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) +(check-sat) +(exit) diff --git a/test/regress/regress0/arith/miplib.cvc b/test/regress/regress0/arith/miplib.cvc new file mode 100644 index 000000000..db2aa2ac5 --- /dev/null +++ b/test/regress/regress0/arith/miplib.cvc @@ -0,0 +1,29 @@ +% COMMAND-LINE: --enable-miplib-trick +% EXPECT: sat +% EXIT: 10 + +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; diff --git a/test/regress/regress0/arith/miplib2.cvc b/test/regress/regress0/arith/miplib2.cvc new file mode 100644 index 000000000..84f17e848 --- /dev/null +++ b/test/regress/regress0/arith/miplib2.cvc @@ -0,0 +1,33 @@ +% COMMAND-LINE: --enable-miplib-trick +% EXPECT: sat +% EXIT: 10 + +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; diff --git a/test/regress/regress0/arith/miplib3.cvc b/test/regress/regress0/arith/miplib3.cvc new file mode 100644 index 000000000..009effb74 --- /dev/null +++ b/test/regress/regress0/arith/miplib3.cvc @@ -0,0 +1,34 @@ +% COMMAND-LINE: --enable-miplib-trick +% EXPECT: sat +% EXIT: 10 + +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; diff --git a/test/regress/regress0/arith/miplib4.cvc b/test/regress/regress0/arith/miplib4.cvc new file mode 100644 index 000000000..d56015222 --- /dev/null +++ b/test/regress/regress0/arith/miplib4.cvc @@ -0,0 +1,13 @@ +% COMMAND-LINE: --enable-miplib-trick +% EXPECT: sat +% EXIT: 10 + +tmp1 : INT; +x, y : BOOLEAN; + +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; + +CHECKSAT; diff --git a/test/regress/regress0/arrays/Makefile.am b/test/regress/regress0/arrays/Makefile.am index 3e6fe860d..e8642bc4f 100644 --- a/test/regress/regress0/arrays/Makefile.am +++ b/test/regress/regress0/arrays/Makefile.am @@ -1,6 +1,6 @@ BINARY = cvc4 LOG_COMPILER = @srcdir@/../../run_regression -AM_LOG_FLAGS = $(RUN_REGRESSION_ARGS) @top_builddir@/src/main/$(BINARY) +AM_LOG_FLAGS = $(RUN_REGRESSION_ARGS) @top_builddir@/src/main/$(BINARY)$(EXEEXT) if AUTOMAKE_1_11 # old-style (pre-automake 1.12) test harness diff --git a/test/regress/regress0/aufbv/Makefile.am b/test/regress/regress0/aufbv/Makefile.am index 23dabffcb..937123bf7 100644 --- a/test/regress/regress0/aufbv/Makefile.am +++ b/test/regress/regress0/aufbv/Makefile.am @@ -1,6 +1,6 @@ BINARY = cvc4 LOG_COMPILER = @srcdir@/../../run_regression -AM_LOG_FLAGS = $(RUN_REGRESSION_ARGS) @top_builddir@/src/main/$(BINARY) +AM_LOG_FLAGS = $(RUN_REGRESSION_ARGS) @top_builddir@/src/main/$(BINARY)$(EXEEXT) if AUTOMAKE_1_11 # old-style (pre-automake 1.12) test harness diff --git a/test/regress/regress0/auflia/Makefile.am b/test/regress/regress0/auflia/Makefile.am index 8ed9096c4..d58798b98 100644 --- a/test/regress/regress0/auflia/Makefile.am +++ b/test/regress/regress0/auflia/Makefile.am @@ -1,6 +1,6 @@ BINARY = cvc4 LOG_COMPILER = @srcdir@/../../run_regression -AM_LOG_FLAGS = $(RUN_REGRESSION_ARGS) @top_builddir@/src/main/$(BINARY) +AM_LOG_FLAGS = $(RUN_REGRESSION_ARGS) @top_builddir@/src/main/$(BINARY)$(EXEEXT) if AUTOMAKE_1_11 # old-style (pre-automake 1.12) test harness diff --git a/test/regress/regress0/bug411.smt2 b/test/regress/regress0/bug411.smt2 index af9acb97a..3e33c9cd5 100644 --- a/test/regress/regress0/bug411.smt2 +++ b/test/regress/regress0/bug411.smt2 @@ -1,5 +1,7 @@ ; EXPECT: sat +; EXPECT: (model ; EXPECT: (define-fun x () Int 5) +; EXPECT: ) ; EXIT: 10 (set-option :produce-models true) (set-logic QF_UFLIA) diff --git a/test/regress/regress0/bv/Makefile.am b/test/regress/regress0/bv/Makefile.am index 2b8b08207..5d3fe371e 100644 --- a/test/regress/regress0/bv/Makefile.am +++ b/test/regress/regress0/bv/Makefile.am @@ -2,7 +2,7 @@ SUBDIRS = . core BINARY = cvc4 LOG_COMPILER = @srcdir@/../../run_regression -AM_LOG_FLAGS = $(RUN_REGRESSION_ARGS) @top_builddir@/src/main/$(BINARY) +AM_LOG_FLAGS = $(RUN_REGRESSION_ARGS) @top_builddir@/src/main/$(BINARY)$(EXEEXT) if AUTOMAKE_1_11 # old-style (pre-automake 1.12) test harness diff --git a/test/regress/regress0/bv/core/Makefile.am b/test/regress/regress0/bv/core/Makefile.am index 7960c459a..53cdadc4f 100644 --- a/test/regress/regress0/bv/core/Makefile.am +++ b/test/regress/regress0/bv/core/Makefile.am @@ -1,6 +1,6 @@ BINARY = cvc4 LOG_COMPILER = @srcdir@/../../../run_regression -AM_LOG_FLAGS = $(RUN_REGRESSION_ARGS) @top_builddir@/src/main/$(BINARY) +AM_LOG_FLAGS = $(RUN_REGRESSION_ARGS) @top_builddir@/src/main/$(BINARY)$(EXEEXT) if AUTOMAKE_1_11 # old-style (pre-automake 1.12) test harness diff --git a/test/regress/regress0/datatypes/Makefile.am b/test/regress/regress0/datatypes/Makefile.am index 08b00a309..08462d51b 100644 --- a/test/regress/regress0/datatypes/Makefile.am +++ b/test/regress/regress0/datatypes/Makefile.am @@ -2,7 +2,7 @@ SUBDIRS = . BINARY = cvc4 LOG_COMPILER = @srcdir@/../../run_regression -AM_LOG_FLAGS = $(RUN_REGRESSION_ARGS) @top_builddir@/src/main/$(BINARY) +AM_LOG_FLAGS = $(RUN_REGRESSION_ARGS) @top_builddir@/src/main/$(BINARY)$(EXEEXT) if AUTOMAKE_1_11 # old-style (pre-automake 1.12) test harness diff --git a/test/regress/regress0/decision/Makefile.am b/test/regress/regress0/decision/Makefile.am index 1eeea55c1..4bba7b049 100644 --- a/test/regress/regress0/decision/Makefile.am +++ b/test/regress/regress0/decision/Makefile.am @@ -1,6 +1,6 @@ BINARY = cvc4 LOG_COMPILER = @srcdir@/../../run_regression -AM_LOG_FLAGS = $(RUN_REGRESSION_ARGS) @top_builddir@/src/main/$(BINARY) +AM_LOG_FLAGS = $(RUN_REGRESSION_ARGS) @top_builddir@/src/main/$(BINARY)$(EXEEXT) if AUTOMAKE_1_11 # old-style (pre-automake 1.12) test harness diff --git a/test/regress/regress0/lemmas/Makefile.am b/test/regress/regress0/lemmas/Makefile.am index 040c08959..126b206ab 100644 --- a/test/regress/regress0/lemmas/Makefile.am +++ b/test/regress/regress0/lemmas/Makefile.am @@ -2,7 +2,7 @@ SUBDIRS = . BINARY = cvc4 LOG_COMPILER = @srcdir@/../../run_regression -AM_LOG_FLAGS = $(RUN_REGRESSION_ARGS) @top_builddir@/src/main/$(BINARY) +AM_LOG_FLAGS = $(RUN_REGRESSION_ARGS) @top_builddir@/src/main/$(BINARY)$(EXEEXT) if AUTOMAKE_1_11 # old-style (pre-automake 1.12) test harness diff --git a/test/regress/regress0/precedence/Makefile.am b/test/regress/regress0/precedence/Makefile.am index 0e2e3937f..4b8b4a05d 100644 --- a/test/regress/regress0/precedence/Makefile.am +++ b/test/regress/regress0/precedence/Makefile.am @@ -1,6 +1,6 @@ BINARY = cvc4 LOG_COMPILER = @srcdir@/../../run_regression -AM_LOG_FLAGS = $(RUN_REGRESSION_ARGS) @top_builddir@/src/main/$(BINARY) +AM_LOG_FLAGS = $(RUN_REGRESSION_ARGS) @top_builddir@/src/main/$(BINARY)$(EXEEXT) if AUTOMAKE_1_11 # old-style (pre-automake 1.12) test harness diff --git a/test/regress/regress0/preprocess/Makefile.am b/test/regress/regress0/preprocess/Makefile.am index 8351132a0..96b5d2928 100644 --- a/test/regress/regress0/preprocess/Makefile.am +++ b/test/regress/regress0/preprocess/Makefile.am @@ -2,7 +2,7 @@ SUBDIRS = . BINARY = cvc4 LOG_COMPILER = @srcdir@/../../run_regression -AM_LOG_FLAGS = $(RUN_REGRESSION_ARGS) @top_builddir@/src/main/$(BINARY) +AM_LOG_FLAGS = $(RUN_REGRESSION_ARGS) @top_builddir@/src/main/$(BINARY)$(EXEEXT) if AUTOMAKE_1_11 # old-style (pre-automake 1.12) test harness diff --git a/test/regress/regress0/push-pop/Makefile.am b/test/regress/regress0/push-pop/Makefile.am index 5123eca44..409bef064 100644 --- a/test/regress/regress0/push-pop/Makefile.am +++ b/test/regress/regress0/push-pop/Makefile.am @@ -2,7 +2,7 @@ SUBDIRS = boolean arith . BINARY = cvc4 LOG_COMPILER = @srcdir@/../../run_regression -AM_LOG_FLAGS = $(RUN_REGRESSION_ARGS) @top_builddir@/src/main/$(BINARY) +AM_LOG_FLAGS = $(RUN_REGRESSION_ARGS) @top_builddir@/src/main/$(BINARY)$(EXEEXT) if AUTOMAKE_1_11 # old-style (pre-automake 1.12) test harness diff --git a/test/regress/regress0/push-pop/arith/Makefile.am b/test/regress/regress0/push-pop/arith/Makefile.am index 37a6e6c42..7171e6e21 100644 --- a/test/regress/regress0/push-pop/arith/Makefile.am +++ b/test/regress/regress0/push-pop/arith/Makefile.am @@ -2,7 +2,7 @@ SUBDIRS = . BINARY = cvc4 LOG_COMPILER = @srcdir@/../../../run_regression -AM_LOG_FLAGS = $(RUN_REGRESSION_ARGS) @top_builddir@/src/main/$(BINARY) +AM_LOG_FLAGS = $(RUN_REGRESSION_ARGS) @top_builddir@/src/main/$(BINARY)$(EXEEXT) if AUTOMAKE_1_11 # old-style (pre-automake 1.12) test harness diff --git a/test/regress/regress0/push-pop/boolean/Makefile.am b/test/regress/regress0/push-pop/boolean/Makefile.am index 63b791aed..5b12f59fa 100644 --- a/test/regress/regress0/push-pop/boolean/Makefile.am +++ b/test/regress/regress0/push-pop/boolean/Makefile.am @@ -2,7 +2,7 @@ SUBDIRS = . BINARY = cvc4 LOG_COMPILER = @srcdir@/../../../run_regression -AM_LOG_FLAGS = $(RUN_REGRESSION_ARGS) @top_builddir@/src/main/$(BINARY) +AM_LOG_FLAGS = $(RUN_REGRESSION_ARGS) @top_builddir@/src/main/$(BINARY)$(EXEEXT) if AUTOMAKE_1_11 # old-style (pre-automake 1.12) test harness diff --git a/test/regress/regress0/quantifiers/Makefile.am b/test/regress/regress0/quantifiers/Makefile.am index 914f596ae..3e04c8437 100644 --- a/test/regress/regress0/quantifiers/Makefile.am +++ b/test/regress/regress0/quantifiers/Makefile.am @@ -1,6 +1,6 @@ BINARY = cvc4 LOG_COMPILER = @srcdir@/../../run_regression -AM_LOG_FLAGS = $(RUN_REGRESSION_ARGS) @top_builddir@/src/main/$(BINARY) +AM_LOG_FLAGS = $(RUN_REGRESSION_ARGS) @top_builddir@/src/main/$(BINARY)$(EXEEXT) if AUTOMAKE_1_11 # old-style (pre-automake 1.12) test harness @@ -36,8 +36,10 @@ TESTS = \ smtlib46f14a.smt2 \ smtlibf957ea.smt2 \ gauss_init_0030.fof.smt2 \ - piVC_5581bd.smt2 \ - set3.smt2 + piVC_5581bd.smt2 + +# regression can be solved with --finite-model-find --fmf-inst-engine +# set3.smt2 # removed because it now reports unknown # symmetric_unsat_7.smt2 \ diff --git a/test/regress/regress0/rewriterules/Makefile.am b/test/regress/regress0/rewriterules/Makefile.am index f0d45c283..175088733 100644 --- a/test/regress/regress0/rewriterules/Makefile.am +++ b/test/regress/regress0/rewriterules/Makefile.am @@ -1,10 +1,9 @@ -BINARY = cvc4 - CVC4_REGRESSION_ARGS ?= --efficient-e-matching export CVC4_REGRESSION_ARGS +BINARY = cvc4 LOG_COMPILER = @srcdir@/../../run_regression -AM_LOG_FLAGS = $(RUN_REGRESSION_ARGS) @top_builddir@/src/main/$(BINARY) +AM_LOG_FLAGS = $(RUN_REGRESSION_ARGS) @top_builddir@/src/main/$(BINARY)$(EXEEXT) if AUTOMAKE_1_11 # old-style (pre-automake 1.12) test harness diff --git a/test/regress/regress0/uf/Makefile.am b/test/regress/regress0/uf/Makefile.am index 9af43f9a4..66ce8e3e6 100644 --- a/test/regress/regress0/uf/Makefile.am +++ b/test/regress/regress0/uf/Makefile.am @@ -1,6 +1,6 @@ BINARY = cvc4 LOG_COMPILER = @srcdir@/../../run_regression -AM_LOG_FLAGS = $(RUN_REGRESSION_ARGS) @top_builddir@/src/main/$(BINARY) +AM_LOG_FLAGS = $(RUN_REGRESSION_ARGS) @top_builddir@/src/main/$(BINARY)$(EXEEXT) if AUTOMAKE_1_11 # old-style (pre-automake 1.12) test harness diff --git a/test/regress/regress0/uflia/Makefile.am b/test/regress/regress0/uflia/Makefile.am index 27487b962..f5ded6b88 100644 --- a/test/regress/regress0/uflia/Makefile.am +++ b/test/regress/regress0/uflia/Makefile.am @@ -1,6 +1,6 @@ BINARY = cvc4 LOG_COMPILER = @srcdir@/../../run_regression -AM_LOG_FLAGS = $(RUN_REGRESSION_ARGS) @top_builddir@/src/main/$(BINARY) +AM_LOG_FLAGS = $(RUN_REGRESSION_ARGS) @top_builddir@/src/main/$(BINARY)$(EXEEXT) if AUTOMAKE_1_11 # old-style (pre-automake 1.12) test harness diff --git a/test/regress/regress0/uflra/Makefile.am b/test/regress/regress0/uflra/Makefile.am index 60b3109f1..3491909e3 100644 --- a/test/regress/regress0/uflra/Makefile.am +++ b/test/regress/regress0/uflra/Makefile.am @@ -1,6 +1,6 @@ BINARY = cvc4 LOG_COMPILER = @srcdir@/../../run_regression -AM_LOG_FLAGS = $(RUN_REGRESSION_ARGS) @top_builddir@/src/main/$(BINARY) +AM_LOG_FLAGS = $(RUN_REGRESSION_ARGS) @top_builddir@/src/main/$(BINARY)$(EXEEXT) if AUTOMAKE_1_11 # old-style (pre-automake 1.12) test harness diff --git a/test/regress/regress0/unconstrained/Makefile.am b/test/regress/regress0/unconstrained/Makefile.am index 7e5bcba8c..9a6ca29ba 100644 --- a/test/regress/regress0/unconstrained/Makefile.am +++ b/test/regress/regress0/unconstrained/Makefile.am @@ -1,6 +1,6 @@ BINARY = cvc4 LOG_COMPILER = @srcdir@/../../run_regression -AM_LOG_FLAGS = $(RUN_REGRESSION_ARGS) @top_builddir@/src/main/$(BINARY) +AM_LOG_FLAGS = $(RUN_REGRESSION_ARGS) @top_builddir@/src/main/$(BINARY)$(EXEEXT) if AUTOMAKE_1_11 # old-style (pre-automake 1.12) test harness diff --git a/test/regress/regress1/Makefile.am b/test/regress/regress1/Makefile.am index 3c88b0b0c..bcbb0a618 100644 --- a/test/regress/regress1/Makefile.am +++ b/test/regress/regress1/Makefile.am @@ -2,7 +2,7 @@ SUBDIRS = . arith BINARY = cvc4 LOG_COMPILER = @srcdir@/../run_regression -AM_LOG_FLAGS = $(RUN_REGRESSION_ARGS) @top_builddir@/src/main/$(BINARY) +AM_LOG_FLAGS = $(RUN_REGRESSION_ARGS) @top_builddir@/src/main/$(BINARY)$(EXEEXT) if AUTOMAKE_1_11 # old-style (pre-automake 1.12) test harness diff --git a/test/regress/regress1/arith/Makefile.am b/test/regress/regress1/arith/Makefile.am index 729dc5670..bfbafdd3a 100644 --- a/test/regress/regress1/arith/Makefile.am +++ b/test/regress/regress1/arith/Makefile.am @@ -1,6 +1,6 @@ BINARY = cvc4 LOG_COMPILER = @srcdir@/../../run_regression -AM_LOG_FLAGS = $(RUN_REGRESSION_ARGS) @top_builddir@/src/main/$(BINARY) +AM_LOG_FLAGS = $(RUN_REGRESSION_ARGS) @top_builddir@/src/main/$(BINARY)$(EXEEXT) if AUTOMAKE_1_11 # old-style (pre-automake 1.12) test harness diff --git a/test/regress/regress2/Makefile.am b/test/regress/regress2/Makefile.am index 95d6a3508..e0524b694 100644 --- a/test/regress/regress2/Makefile.am +++ b/test/regress/regress2/Makefile.am @@ -2,7 +2,7 @@ SUBDIRS = . BINARY = cvc4 LOG_COMPILER = @srcdir@/../run_regression -AM_LOG_FLAGS = $(RUN_REGRESSION_ARGS) @top_builddir@/src/main/$(BINARY) +AM_LOG_FLAGS = $(RUN_REGRESSION_ARGS) @top_builddir@/src/main/$(BINARY)$(EXEEXT) if AUTOMAKE_1_11 # old-style (pre-automake 1.12) test harness diff --git a/test/regress/regress3/Makefile.am b/test/regress/regress3/Makefile.am index 8bdbcec92..ed3e66b20 100644 --- a/test/regress/regress3/Makefile.am +++ b/test/regress/regress3/Makefile.am @@ -2,7 +2,7 @@ SUBDIRS = . BINARY = cvc4 LOG_COMPILER = @srcdir@/../run_regression -AM_LOG_FLAGS = $(RUN_REGRESSION_ARGS) @top_builddir@/src/main/$(BINARY) +AM_LOG_FLAGS = $(RUN_REGRESSION_ARGS) @top_builddir@/src/main/$(BINARY)$(EXEEXT) if AUTOMAKE_1_11 # old-style (pre-automake 1.12) test harness diff --git a/test/regress/run_regression b/test/regress/run_regression index 68c1e0677..475cce431 100755 --- a/test/regress/run_regression +++ b/test/regress/run_regression @@ -12,21 +12,32 @@ prog=`basename "$0"` -if [ $# -lt 2 -o $# -gt 3 ]; then - echo "usage: $prog [ --proof | --dump ] cvc4-binary [ benchmark.cvc | benchmark.smt | benchmark.smt2 | benchmark.p ]" >&2 +if [ $# -lt 2 ]; then + echo "usage: $prog [ --proof | --dump ] [ wrapper ] cvc4-binary [ benchmark.cvc | benchmark.smt | benchmark.smt2 | benchmark.p ]" >&2 exit 1 fi proof=no dump=no -if [ $1 = --proof ]; then +if [ x"$1" = x--proof ]; then proof=yes shift -elif [ $1 = --dump ]; then +elif [ x"$1" = x--dump ]; then dump=yes shift fi +if [ $# -lt 2 ]; then + echo "usage: $prog [ --proof | --dump ] [ wrapper ] cvc4-binary [ benchmark.cvc | benchmark.smt | benchmark.smt2 | benchmark.p ]" >&2 + exit 1 +fi + +wrapper= +while [ $# -gt 2 ]; do + wrapper="$wrapper$1 " + shift +done + cvc4=$1 benchmark_orig=$2 benchmark="$benchmark_orig" @@ -209,15 +220,15 @@ fi cvc4base=`basename "$cvc4"` cvc4full="$cvc4dirfull/$cvc4base" if [ $dump = no ]; then - echo running $cvc4full $CVC4_REGRESSION_ARGS $command_line --segv-nospin `basename "$benchmark"` [from working dir `dirname "$benchmark"`] + echo running $wrapper $cvc4full $CVC4_REGRESSION_ARGS $command_line --segv-nospin `basename "$benchmark"` [from working dir `dirname "$benchmark"`] ( cd `dirname "$benchmark"`; - "$cvc4full" $CVC4_REGRESSION_ARGS $command_line --segv-nospin `basename "$benchmark"`; + $wrapper "$cvc4full" $CVC4_REGRESSION_ARGS $command_line --segv-nospin `basename "$benchmark"`; echo $? >"$exitstatusfile" ) > "$outfile" 2> "$errfile" else - echo running $cvc4full $CVC4_REGRESSION_ARGS $command_line --preprocess-only --dump=clauses --output-lang=smt2 -q --segv-nospin `basename "$benchmark"` \| $cvc4full $CVC4_REGRESSION_ARGS $command_line --lang=smt2 - [from working dir `dirname "$benchmark"`] + echo running $wrapper $cvc4full $CVC4_REGRESSION_ARGS $command_line --preprocess-only --dump=clauses --output-lang=smt2 -q --segv-nospin `basename "$benchmark"` \| $wrapper $cvc4full $CVC4_REGRESSION_ARGS $command_line --lang=smt2 - [from working dir `dirname "$benchmark"`] ( cd `dirname "$benchmark"`; - "$cvc4full" $CVC4_REGRESSION_ARGS $command_line --preprocess-only --dump=clauses --output-lang=smt2 -q --segv-nospin `basename "$benchmark"` | $cvc4full $CVC4_REGRESSION_ARGS $command_line --lang=smt2 -; + $wrapper "$cvc4full" $CVC4_REGRESSION_ARGS $command_line --preprocess-only --dump=clauses --output-lang=smt2 -q --segv-nospin `basename "$benchmark"` | $wrapper "$cvc4full" $CVC4_REGRESSION_ARGS $command_line --lang=smt2 -; echo $? >"$exitstatusfile" ) > "$outfile" 2> "$errfile" fi @@ -249,9 +260,9 @@ if [ "$proof" = yes -a "$expected_proof" = yes ]; then gettemp pfbenchmark cvc4_pfbenchmark.$$.XXXXXXXXXX cp "$benchmark" "$pfbenchmark"; echo "$proof_command" >>"$pfbenchmark"; - echo running $cvc4full $CVC4_REGRESSION_ARGS $command_line --proof --segv-nospin `basename "$pfbenchmark"` [from working dir `dirname "$pfbenchmark"`] + echo running $wrapper $cvc4full $CVC4_REGRESSION_ARGS $command_line --proof --segv-nospin `basename "$pfbenchmark"` [from working dir `dirname "$pfbenchmark"`] ( cd `dirname "$pfbenchmark"`; - "$cvc4full" $CVC4_REGRESSION_ARGS $command_line --proof --segv-nospin `basename "$pfbenchmark"`; + $wrapper "$cvc4full" $CVC4_REGRESSION_ARGS $command_line --proof --segv-nospin `basename "$pfbenchmark"`; echo $? >"$exitstatusfile" ) > "$outfile" 2> "$errfile" @@ -276,7 +287,7 @@ fi if $check_models; then # at least one sat/invalid response: run an extra model-checking pass - if ! CVC4_REGRESSION_ARGS="$CVC4_REGRESSION_ARGS --check-models" "$0" "$cvc4" "$benchmark_orig"; then + if ! CVC4_REGRESSION_ARGS="$CVC4_REGRESSION_ARGS --check-models" "$0" $wrapper "$cvc4" "$benchmark_orig"; then exitcode=1 fi fi diff --git a/test/system/cvc3_main.cpp b/test/system/cvc3_main.cpp index 2afdc5ac6..e09a3f930 100644 --- a/test/system/cvc3_main.cpp +++ b/test/system/cvc3_main.cpp @@ -776,10 +776,10 @@ void test6() { newAssertion(vc1, ar_eq1); check(vc1, query1); - cout << "*** VC #2:" << endl; - newAssertion(vc2, vc2->importExpr(r1_eq)); - newAssertion(vc2, vc2->importExpr(ar_eq1)); - check(vc2, vc2->importExpr(query1)); + //cout << "*** VC #2:" << endl; + //newAssertion(vc2, vc2->importExpr(r1_eq)); + //newAssertion(vc2, vc2->importExpr(ar_eq1)); + //check(vc2, vc2->importExpr(query1)); } catch(const Exception& e) { exitStatus = 1; cout << "*** Exception caught in test6(): \n" << e << endl; @@ -2142,8 +2142,8 @@ int main(int argc, char** argv) cout << "\n}\n\ntest5(): {" << endl; test5(); } - //cout << "\n}\n\ntest6(): {" << endl; - //test6(); + cout << "\n}\n\ntest6(): {" << endl; + test6(); cout << "\n}\n\ntest7(): {" << endl; test7(); //cout << "\n}\n\ntest8(): {" << endl; |